home *** CD-ROM | disk | FTP | other *** search
- # Define menu operations for GL stdwin
-
- import gl
- from glstdwin import key2code
-
- class MenuObject:
- #
- def _init(self, win, title):
- self._win = win
- self._title = title
- self._items = []
- return self
- #
- def close(self):
- self._win.remove(self)
- del self._win
- #
- def additem(self, *args):
- if len(args) == 2:
- text, shortcut = args
- elif len(args) == 1:
- text, shortcut = args[0], None
- else:
- raise TypeError, 'arg count'
- self._items.append([text, shortcut, 1, 0])
- #
- def setitem(self, i, text):
- self._items[i][0] = text
- #
- def enable(self, i, flag):
- self._items[i][2] = flag
- #
- def check(self, i, flag):
- self._items[i][3] = flag
- #
- def _makepup(self, firstitem):
- pup = gl.newpup()
- if self._title:
- gl.addtopup(pup, self._title + '%t', 0)
- for item in self._items:
- text = item[0]
- if not item[2]: # Disabled
- text = ' ( ' + text + ' )%x-1'
- else:
- if item[3]: # Check mark
- text = '-> ' + text
- else:
- text = ' ' + text
- if key2code.has_key(item[1]):
- text = text + ' [Alt-' + item[1] + ']'
- text = text + '%x' + `firstitem`
- gl.addtopup(pup, text, 0)
- firstitem = firstitem + 1
- return pup
- #
- def _checkshortcut(self, char):
- for i in range(len(self._items)):
- item = self._items[i]
- if item[2] and item[1] == char:
- return i
- return -1
- #
-