From: Kevin A. <ka...@us...> - 2004-05-04 04:24:17
|
Update of /cvsroot/pythoncard/PythonCard/components In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19275/components Modified Files: multicolumnlist.py Log Message: switched to new style event binding and dispatch Index: multicolumnlist.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/components/multicolumnlist.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** multicolumnlist.py 1 May 2004 18:47:48 -0000 1.24 --- multicolumnlist.py 4 May 2004 04:24:09 -0000 1.25 *************** *** 7,26 **** import wx from wx.lib.mixins.listctrl import ColumnSorterMixin, ListCtrlAutoWidthMixin - - # KEA 2003-09-04 - # workaround typo bug in wxPython 2.4.1.2 controls2.py - #from wxPython.wx import controls2c - from types import TupleType, ListType, StringType, NoneType, IntType from PythonCard import event, widget class MultiColumnListSpec(widget.WidgetSpec): def __init__(self): ! events =[event.SelectEvent, ! event.ItemActivatedEvent, ! event.ItemFocusedEvent, ! event.MouseContextClickEvent, ! event.ListColumnClickEvent, ! event.KeyDownEvent] attributes ={ 'items' : { 'presence' : 'optional', 'default' : [] }, --- 7,72 ---- import wx from wx.lib.mixins.listctrl import ColumnSorterMixin, ListCtrlAutoWidthMixin from types import TupleType, ListType, StringType, NoneType, IntType from PythonCard import event, widget + class MultiColumnListEvent(event.Event): + def decorate(self, aWxEvent, source): + aWxEvent = event.Event.decorate(self, aWxEvent, source) + aWxEvent.item = aWxEvent.GetItem() + return aWxEvent + + class MultiColumnListSelectEvent(MultiColumnListEvent, event.CommandTypeEvent): + name = 'select' + binding = wx.EVT_LIST_ITEM_SELECTED + id = wx.wxEVT_COMMAND_LIST_ITEM_SELECTED + + class MultiColumnListItemActivatedEvent(MultiColumnListEvent): + name = 'itemActivated' + binding = wx.EVT_LIST_ITEM_ACTIVATED + id = wx.wxEVT_COMMAND_LIST_ITEM_ACTIVATED + + class MultiColumnListItemFocusedEvent(MultiColumnListEvent): + name = 'itemFocused' + binding = wx.EVT_LIST_ITEM_FOCUSED + id = wx.wxEVT_COMMAND_LIST_ITEM_FOCUSED + + class MultiColumnListMouseContextClickEvent(MultiColumnListEvent): + name = 'mouseContextClick' + binding = wx.EVT_LIST_ITEM_RIGHT_CLICK + id = wx.wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK + + class MultiColumnListKeyDownEvent(MultiColumnListEvent): + name = 'keyDown' + binding = wx.EVT_LIST_KEY_DOWN + id = wx.wxEVT_COMMAND_LIST_KEY_DOWN + + def decorate(self, aWxEvent, source): + aWxEvent = MultiColumnListEvent.decorate(self, aWxEvent, source) + + aWxEvent.keyCode = aWxEvent.GetKeyCode() + return aWxEvent + + class MultiColumnListColumnClickEvent(MultiColumnListEvent): + name = 'columnClick' + binding = wx.EVT_LIST_COL_CLICK + id = wx.wxEVT_COMMAND_LIST_COL_CLICK + + + MultiColumnListEvents =(MultiColumnListSelectEvent, + MultiColumnListItemActivatedEvent, + MultiColumnListItemFocusedEvent, + MultiColumnListMouseContextClickEvent, + MultiColumnListKeyDownEvent, + MultiColumnListColumnClickEvent) + class MultiColumnListSpec(widget.WidgetSpec): def __init__(self): ! ## events =[event.SelectEvent, ! ## event.ItemActivatedEvent, ! ## event.ItemFocusedEvent, ! ## event.MouseContextClickEvent, ! ## event.ListColumnClickEvent, ! ## event.KeyDownEvent] ! events = list(MultiColumnListEvents) attributes ={ 'items' : { 'presence' : 'optional', 'default' : [] }, *************** *** 83,89 **** self._setItems(aResource.items) ! # Bind the events. ! adapter = MultiColumnListEventBinding(self) ! adapter.bindEvents() # Emulate some listBox methods --- 129,133 ---- self._setItems(aResource.items) ! self._bindEvents(event.WIDGET_EVENTS + MultiColumnListEvents) # Emulate some listBox methods *************** *** 480,539 **** - class MultiColumnListEventBinding( event.DefaultEventBinding ) : - """ - Bind the Events supported by event.MultiColumnList to wxPython. - """ - def __init__( self, aComponent ) : - event.DefaultEventBinding.__init__(self, aComponent) - - """ - Bind an Event class that is supported by this objects peer Widget. - """ - def bindEvent(self, aEventClass): - parent = self._component._parent - id = self._component.GetId() - if aEventClass is event.SelectEvent: - wx.EVT_LIST_ITEM_SELECTED(parent, id, self._dispatch) - elif aEventClass is event.ItemActivatedEvent: - wx.EVT_LIST_ITEM_ACTIVATED(parent, id, self._dispatch) - elif aEventClass is event.ItemFocusedEvent: - wx.EVT_LIST_ITEM_FOCUSED(parent, id, self._dispatch) - elif aEventClass is event.MouseContextClickEvent: - wx.EVT_LIST_ITEM_RIGHT_CLICK(parent, id, self._dispatch) - elif aEventClass is event.KeyDownEvent: - wx.EVT_LIST_KEY_DOWN(parent, id, self._dispatch) - elif aEventClass is event.ListColumnClickEvent: - wx.EVT_LIST_COL_CLICK(parent, id, self._dispatch) - - - """ - Intercept all wxPyton events, convert them to PythonCard events, and - post them to the EventQueue. - """ - def _dispatch( self, aWxEvent ) : - # Call our superclass to dispatch the standard mouse - # events that every widget should get. - if event.DefaultEventBinding._dispatch(self, aWxEvent): - return - - evt = None - - if aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_ITEM_SELECTED: - evt = self._createEvent(event.SelectEvent, aWxEvent) - elif aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_ITEM_ACTIVATED: - evt = self._createEvent(event.ItemActivatedEvent, aWxEvent) - elif aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_ITEM_FOCUSED: - evt = self._createEvent(event.ItemFocusedEvent, aWxEvent) - elif aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK: - evt = self._createEvent(event.MouseContextClickEvent, aWxEvent) - elif aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_KEY_DOWN: - evt = self._createEvent(event.KeyDownEvent, aWxEvent) - elif aWxEvent.GetEventType() == wx.wxEVT_COMMAND_LIST_COL_CLICK: - evt = self._createEvent(event.ListColumnClickEvent, aWxEvent) - - if evt is not None: - self._component.notifyEventListeners(evt) - - import sys from PythonCard import registry --- 524,527 ---- |