mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
added popup control (jvr)
This commit is contained in:
parent
7051e5263e
commit
d949b5cdba
1 changed files with 60 additions and 4 deletions
|
@ -1,6 +1,6 @@
|
||||||
import FrameWork
|
import FrameWork
|
||||||
import Qd
|
import Qd
|
||||||
import Wbase
|
import Wbase, Wcontrols, Ctl, Controls
|
||||||
from types import *
|
from types import *
|
||||||
import Wapplication
|
import Wapplication
|
||||||
|
|
||||||
|
@ -8,21 +8,77 @@ _arrowright = Qd.GetPicture(472)
|
||||||
_arrowdown = Qd.GetPicture(473)
|
_arrowdown = Qd.GetPicture(473)
|
||||||
|
|
||||||
|
|
||||||
|
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()])
|
||||||
|
|
||||||
|
|
||||||
class PopupWidget(Wbase.ClickableWidget):
|
class PopupWidget(Wbase.ClickableWidget):
|
||||||
|
|
||||||
"""Simple title-less popup widget. Should be 16x16 pixels.
|
"""Simple title-less popup widget. Should be 16x16 pixels.
|
||||||
Builds the menu items on the fly, good for dynamic popup menus."""
|
Builds the menu items on the fly, good for dynamic popup menus."""
|
||||||
|
|
||||||
def __init__(self, possize, items = [], callback = None):
|
def __init__(self, possize, items=None, callback=None):
|
||||||
Wbase.Widget.__init__(self, possize)
|
Wbase.ClickableWidget.__init__(self, possize)
|
||||||
|
if items is None:
|
||||||
|
items = []
|
||||||
self._items = items
|
self._items = items
|
||||||
self._itemsdict = {}
|
self._itemsdict = {}
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._enabled = 1
|
self._enabled = 1
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
Wbase.Widget.close(self)
|
Wbase.ClickableWidget.close(self)
|
||||||
self._items = None
|
self._items = None
|
||||||
self._itemsdict = {}
|
self._itemsdict = {}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue