X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/346a9b8e1fcfe30629f0d1ee4675e9e8f89890cf..4c4732c6ed8cb0aaa70fb2d4c6e5a958868c5349:/src/pgu/gui/menus.py diff --git a/src/pgu/gui/menus.py b/src/pgu/gui/menus.py deleted file mode 100644 index b850b6c..0000000 --- a/src/pgu/gui/menus.py +++ /dev/null @@ -1,119 +0,0 @@ -""" -""" -from const import * -import table -import basic, button - -class _Menu_Options(table.Table): - def __init__(self,menu,**params): - table.Table.__init__(self,**params) - - self.menu = menu - - def event(self,e): - handled = False - arect = self.get_abs_rect() - - if e.type == MOUSEMOTION: - abspos = e.pos[0]+arect.x,e.pos[1]+arect.y - for w in self.menu.container.widgets: - if not w is self.menu: - mrect = w.get_abs_rect() - if mrect.collidepoint(abspos): - self.menu._close(None) - w._open(None) - handled = True - - if not handled: table.Table.event(self,e) - -class _Menu(button.Button): - def __init__(self,parent,widget=None,**params): #TODO widget= could conflict with module widget - params.setdefault('cls','menu') - button.Button.__init__(self,widget,**params) - - self.parent = parent - - self._cls = self.cls - self.options = _Menu_Options(self, cls=self.cls+".options") - - self.connect(CLICK,self._open,None) - - self.pos = 0 - - def _open(self,value): - self.parent.value = self - self.pcls = 'down' - - self.repaint() - self.container.open(self.options,self.rect.x,self.rect.bottom) - self.options.connect(BLUR,self._close,None) - self.options.focus() - self.repaint() - - def _pass(self,value): - pass - - def _close(self,value): - self.pcls = '' - self.parent.value = None - self.repaint() - self.options.close() - - def _value(self,value): - self._close(None) - if value['fnc'] != None: - value['fnc'](value['value']) - - def event(self,e): - button.Button.event(self,e) - - if self.parent.value == self: - self.pcls = 'down' - - def add(self,w,fnc=None,value=None): - w.style.align = -1 - b = button.Button(w,cls=self.cls+".option") - b.connect(CLICK,self._value,{'fnc':fnc,'value':value}) - - self.options.tr() - self.options.add(b) - - return b - -class Menus(table.Table): - """A drop down menu bar. - -
Menus(data)
- -
-
data
Menu data, a list of (path,fnc,value), see example below -
- - Example - - data = [ - ('File/Save',fnc_save,None), - ('File/New',fnc_new,None), - ('Edit/Copy',fnc_copy,None), - ('Edit/Cut',fnc_cut,None), - ('Help/About',fnc_help,help_about_content), - ('Help/Reference',fnc_help,help_reference_content), - ] - w = Menus(data) - """ - - def __init__(self,data,menu_cls='menu',**params): - params.setdefault('cls','menus') - table.Table.__init__(self,**params) - - self.value = None - - n,m,mt = 0,None,None - for path,cmd,value in data: - parts = path.split("/") - if parts[0] != mt: - mt = parts[0] - m = _Menu(self,basic.Label(mt,cls=menu_cls+".label"),cls=menu_cls) - self.add(m,n,0) - n += 1 - m.add(basic.Label(parts[1],cls=m.cls+".option.label"),cmd,value)