summaryrefslogtreecommitdiffstats
path: root/Mac/Tools/IDE/Wmenus.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Tools/IDE/Wmenus.py')
-rw-r--r--Mac/Tools/IDE/Wmenus.py464
1 files changed, 232 insertions, 232 deletions
diff --git a/Mac/Tools/IDE/Wmenus.py b/Mac/Tools/IDE/Wmenus.py
index bd119a5..01a8e1c 100644
--- a/Mac/Tools/IDE/Wmenus.py
+++ b/Mac/Tools/IDE/Wmenus.py
@@ -8,252 +8,252 @@ import Wapplication
#_arrowdown = Qd.GetPicture(473)
_arrowright = Res.Resource(
- '\x00I\x00\x00\x00\x00\x00\n\x00\n\x11\x01\x01\x00\n\x00\x00\x00'
- '\x00\x00\n\x00\n\x90\x00\x02\x00\x00\x00\x00\x00\n\x00\n\x00\x00'
- '\x00\x00\x00\n\x00\n\x00\x00\x00\x00\x00\n\x00\n\x00\x00\x10\x00'
- '\x18\x00\x1c\x00\x1e\x00\x1f\x00\x1f\x00\x1e\x00\x1c\x00\x18\x00'
- '\x10\x00\xff')
+ '\x00I\x00\x00\x00\x00\x00\n\x00\n\x11\x01\x01\x00\n\x00\x00\x00'
+ '\x00\x00\n\x00\n\x90\x00\x02\x00\x00\x00\x00\x00\n\x00\n\x00\x00'
+ '\x00\x00\x00\n\x00\n\x00\x00\x00\x00\x00\n\x00\n\x00\x00\x10\x00'
+ '\x18\x00\x1c\x00\x1e\x00\x1f\x00\x1f\x00\x1e\x00\x1c\x00\x18\x00'
+ '\x10\x00\xff')
class PopupControl(Wcontrols.ControlWidget):
-
- def __init__(self, possize, items=None, callback=None):
- if items is None:
- items = []
- procID = Controls.popupMenuProc|Controls.popupFixedWidth|Controls.useWFont
- Wcontrols.ControlWidget.__init__(self, possize, "", procID, callback, 0, 0, 0)
- self._items = items[:]
-
- def set(self, value):
- self._control.SetControlValue(value+1)
-
- def get(self):
- return self._control.GetControlValue() - 1
-
- def open(self):
- self.menu = menu = FrameWork.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
-
- for i in range(len(self._items)):
- item = self._items[i]
- if type(item) == StringType:
- menuitemtext = object = item
- elif type(item) == TupleType and len(item) == 2:
- menuitemtext, object = item
- self._items[i] = object
- else:
- raise Wbase.WidgetsError, "illegal itemlist for popup menu"
- menuitem = FrameWork.MenuItem(menu, menuitemtext, None, None)
-
- self._calcbounds()
- self._control = Ctl.NewControl(self._parentwindow.wid,
- self._bounds,
- self._title,
- 1,
- self._value,
- self.menu.id,
- self._max,
- self._procID,
- 0)
- self.SetPort()
- self.enable(self._enabled)
-
- def close(self):
- self.menu.delete()
- return Wcontrols.ControlWidget.close(self)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- part = self._control.TrackControl(point, -1)
- if part:
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, self._items[self.get()])
+
+ def __init__(self, possize, items=None, callback=None):
+ if items is None:
+ items = []
+ procID = Controls.popupMenuProc|Controls.popupFixedWidth|Controls.useWFont
+ Wcontrols.ControlWidget.__init__(self, possize, "", procID, callback, 0, 0, 0)
+ self._items = items[:]
+
+ def set(self, value):
+ self._control.SetControlValue(value+1)
+
+ def get(self):
+ return self._control.GetControlValue() - 1
+
+ def open(self):
+ self.menu = menu = FrameWork.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
+
+ for i in range(len(self._items)):
+ item = self._items[i]
+ if type(item) == StringType:
+ menuitemtext = object = item
+ elif type(item) == TupleType and len(item) == 2:
+ menuitemtext, object = item
+ self._items[i] = object
+ else:
+ raise Wbase.WidgetsError, "illegal itemlist for popup menu"
+ menuitem = FrameWork.MenuItem(menu, menuitemtext, None, None)
+
+ self._calcbounds()
+ self._control = Ctl.NewControl(self._parentwindow.wid,
+ self._bounds,
+ self._title,
+ 1,
+ self._value,
+ self.menu.id,
+ self._max,
+ self._procID,
+ 0)
+ self.SetPort()
+ self.enable(self._enabled)
+
+ def close(self):
+ self.menu.delete()
+ return Wcontrols.ControlWidget.close(self)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ part = self._control.TrackControl(point, -1)
+ if part:
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, self._items[self.get()])
class PopupWidget(Wbase.ClickableWidget):
-
- """Simple title-less popup widget. Should be 16x16 pixels.
- Builds the menu items on the fly, good for dynamic popup menus."""
-
- def __init__(self, possize, items=None, callback=None):
- Wbase.ClickableWidget.__init__(self, possize)
- if items is None:
- items = []
- self._items = items
- self._itemsdict = {}
- self._callback = callback
- self._enabled = 1
-
- def close(self):
- Wbase.ClickableWidget.close(self)
- self._items = None
- self._itemsdict = {}
-
- def draw(self, visRgn = None):
- if self._visible:
- Qd.FrameRect(self._bounds)
- Qd.EraseRect(Qd.InsetRect(self._bounds, 1, 1))
- l, t, r, b = self._bounds
- l = l + 2
- t = t + 3
- pictframe = (l, t, l + 10, t + 10)
- Qd.DrawPicture(_arrowright, pictframe)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- self.menu = FrameWork.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
- self._additems(self._items, self.menu)
- self.SetPort()
- l, t, r, b = self._bounds
- l, t = Qd.LocalToGlobal((l+1, t+1))
- Wbase.SetCursor("arrow")
- self.menu.menu.EnableMenuItem(0)
- reply = self.menu.menu.PopUpMenuSelect(t, l, 1)
- if reply:
- id = reply >> 16
- item = reply & 0xffff
- self._menu_callback(id, item)
- self._emptymenu()
-
- def set(self, items):
- self._items = items
-
- def get(self):
- return self._items
-
- def _additems(self, items, menu):
- from FrameWork import SubMenu, MenuItem
- menu_id = menu.id
- for item in items:
- if item == "-":
- menu.addseparator()
- continue
- elif type(item) == ListType:
- submenu = SubMenu(menu, item[0])
- self._additems(item[1:], submenu)
- continue
- elif type(item) == StringType:
- menuitemtext = object = item
- elif type(item) == TupleType and len(item) == 2:
- menuitemtext, object = item
- else:
- raise Wbase.WidgetsError, "illegal itemlist for popup menu"
-
- if menuitemtext[:1] == '\0':
- check = ord(menuitemtext[1])
- menuitemtext = menuitemtext[2:]
- else:
- check = 0
- menuitem = MenuItem(menu, menuitemtext, None, None)
- if check:
- menuitem.check(1)
- self._itemsdict[(menu_id, menuitem.item)] = object
-
- def _emptymenu(self):
- menus = self._parentwindow.parent.menubar.menus
- for id, item in self._itemsdict.keys():
- if menus.has_key(id):
- self.menu = menus[id]
- self.menu.delete()
- self._itemsdict = {}
-
- def _menu_callback(self, id, item):
- thing = self._itemsdict[(id, item)]
- if callable(thing):
- thing()
- elif self._callback:
- Wbase.CallbackCall(self._callback, 0, thing)
+
+ """Simple title-less popup widget. Should be 16x16 pixels.
+ Builds the menu items on the fly, good for dynamic popup menus."""
+
+ def __init__(self, possize, items=None, callback=None):
+ Wbase.ClickableWidget.__init__(self, possize)
+ if items is None:
+ items = []
+ self._items = items
+ self._itemsdict = {}
+ self._callback = callback
+ self._enabled = 1
+
+ def close(self):
+ Wbase.ClickableWidget.close(self)
+ self._items = None
+ self._itemsdict = {}
+
+ def draw(self, visRgn = None):
+ if self._visible:
+ Qd.FrameRect(self._bounds)
+ Qd.EraseRect(Qd.InsetRect(self._bounds, 1, 1))
+ l, t, r, b = self._bounds
+ l = l + 2
+ t = t + 3
+ pictframe = (l, t, l + 10, t + 10)
+ Qd.DrawPicture(_arrowright, pictframe)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ self.menu = FrameWork.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
+ self._additems(self._items, self.menu)
+ self.SetPort()
+ l, t, r, b = self._bounds
+ l, t = Qd.LocalToGlobal((l+1, t+1))
+ Wbase.SetCursor("arrow")
+ self.menu.menu.EnableMenuItem(0)
+ reply = self.menu.menu.PopUpMenuSelect(t, l, 1)
+ if reply:
+ id = reply >> 16
+ item = reply & 0xffff
+ self._menu_callback(id, item)
+ self._emptymenu()
+
+ def set(self, items):
+ self._items = items
+
+ def get(self):
+ return self._items
+
+ def _additems(self, items, menu):
+ from FrameWork import SubMenu, MenuItem
+ menu_id = menu.id
+ for item in items:
+ if item == "-":
+ menu.addseparator()
+ continue
+ elif type(item) == ListType:
+ submenu = SubMenu(menu, item[0])
+ self._additems(item[1:], submenu)
+ continue
+ elif type(item) == StringType:
+ menuitemtext = object = item
+ elif type(item) == TupleType and len(item) == 2:
+ menuitemtext, object = item
+ else:
+ raise Wbase.WidgetsError, "illegal itemlist for popup menu"
+
+ if menuitemtext[:1] == '\0':
+ check = ord(menuitemtext[1])
+ menuitemtext = menuitemtext[2:]
+ else:
+ check = 0
+ menuitem = MenuItem(menu, menuitemtext, None, None)
+ if check:
+ menuitem.check(1)
+ self._itemsdict[(menu_id, menuitem.item)] = object
+
+ def _emptymenu(self):
+ menus = self._parentwindow.parent.menubar.menus
+ for id, item in self._itemsdict.keys():
+ if menus.has_key(id):
+ self.menu = menus[id]
+ self.menu.delete()
+ self._itemsdict = {}
+
+ def _menu_callback(self, id, item):
+ thing = self._itemsdict[(id, item)]
+ if callable(thing):
+ thing()
+ elif self._callback:
+ Wbase.CallbackCall(self._callback, 0, thing)
class PopupMenu(PopupWidget):
-
- """Simple title-less popup widget. Should be 16x16 pixels.
- Prebuilds the menu items, good for static (non changing) popup menus."""
-
- def open(self):
- self._calcbounds()
- self.menu = Wapplication.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
- self._additems(self._items, self.menu)
-
- def close(self):
- self._emptymenu()
- Wbase.Widget.close(self)
- self._items = None
- self._itemsdict = {}
- self.menu = None
-
- def set(self, items):
- if self._itemsdict:
- self._emptymenu()
- self.menu = Wapplication.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
- self._items = items
- self._additems(self._items, self.menu)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- self.SetPort()
- l, t, r, b = self._bounds
- l, t = Qd.LocalToGlobal((l+1, t+1))
- Wbase.SetCursor("arrow")
- self.menu.menu.EnableMenuItem(0)
- reply = self.menu.menu.PopUpMenuSelect(t, l, 1)
- if reply:
- id = reply >> 16
- item = reply & 0xffff
- self._menu_callback(id, item)
+
+ """Simple title-less popup widget. Should be 16x16 pixels.
+ Prebuilds the menu items, good for static (non changing) popup menus."""
+
+ def open(self):
+ self._calcbounds()
+ self.menu = Wapplication.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
+ self._additems(self._items, self.menu)
+
+ def close(self):
+ self._emptymenu()
+ Wbase.Widget.close(self)
+ self._items = None
+ self._itemsdict = {}
+ self.menu = None
+
+ def set(self, items):
+ if self._itemsdict:
+ self._emptymenu()
+ self.menu = Wapplication.Menu(self._parentwindow.parent.menubar, 'Foo', -1)
+ self._items = items
+ self._additems(self._items, self.menu)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ self.SetPort()
+ l, t, r, b = self._bounds
+ l, t = Qd.LocalToGlobal((l+1, t+1))
+ Wbase.SetCursor("arrow")
+ self.menu.menu.EnableMenuItem(0)
+ reply = self.menu.menu.PopUpMenuSelect(t, l, 1)
+ if reply:
+ id = reply >> 16
+ item = reply & 0xffff
+ self._menu_callback(id, item)
class FontMenu(PopupMenu):
-
- """A font popup menu."""
-
- menu = None
-
- def __init__(self, possize, callback):
- PopupMenu.__init__(self, possize)
- _makefontmenu()
- self._callback = callback
- self._enabled = 1
-
- def open(self):
- self._calcbounds()
-
- def close(self):
- del self._callback
-
- def set(self):
- raise Wbase.WidgetsError, "can't change font menu widget"
-
- def _menu_callback(self, id, item):
- fontname = self.menu.menu.GetMenuItemText(item)
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, fontname)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- _makefontmenu()
- return PopupMenu.click(self, point, modifiers)
-
+
+ """A font popup menu."""
+
+ menu = None
+
+ def __init__(self, possize, callback):
+ PopupMenu.__init__(self, possize)
+ _makefontmenu()
+ self._callback = callback
+ self._enabled = 1
+
+ def open(self):
+ self._calcbounds()
+
+ def close(self):
+ del self._callback
+
+ def set(self):
+ raise Wbase.WidgetsError, "can't change font menu widget"
+
+ def _menu_callback(self, id, item):
+ fontname = self.menu.menu.GetMenuItemText(item)
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, fontname)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ _makefontmenu()
+ return PopupMenu.click(self, point, modifiers)
+
def _makefontmenu():
- """helper for font menu"""
- if FontMenu.menu is not None:
- return
- import W
- FontMenu.menu = Wapplication.Menu(W.getapplication().menubar, 'Foo', -1)
- W.SetCursor('watch')
- for i in range(FontMenu.menu.menu.CountMenuItems(), 0, -1):
- FontMenu.menu.menu.DeleteMenuItem(i)
- FontMenu.menu.menu.AppendResMenu('FOND')
+ """helper for font menu"""
+ if FontMenu.menu is not None:
+ return
+ import W
+ FontMenu.menu = Wapplication.Menu(W.getapplication().menubar, 'Foo', -1)
+ W.SetCursor('watch')
+ for i in range(FontMenu.menu.menu.CountMenuItems(), 0, -1):
+ FontMenu.menu.menu.DeleteMenuItem(i)
+ FontMenu.menu.menu.AppendResMenu('FOND')
def _getfontlist():
- from Carbon import Res
- fontnames = []
- for i in range(1, Res.CountResources('FOND') + 1):
- r = Res.GetIndResource('FOND', i)
- fontnames.append(r.GetResInfo()[2])
- return fontnames
+ from Carbon import Res
+ fontnames = []
+ for i in range(1, Res.CountResources('FOND') + 1):
+ r = Res.GetIndResource('FOND', i)
+ fontnames.append(r.GetResInfo()[2])
+ return fontnames