dabo Commit Revision 860 Date: 2005-02-28 12:52:09 -0800 (Mon, 28 Feb 2005) Author: ed
Changed: U trunk/dEvents.py U trunk/ui/uiwx/__init__.py U trunk/ui/uiwx/dTreeView.py
Log: Added basic event handling for the dTreeView control. It will respond to the selection changing, as well as when items are collapsed or expanded.
Diff: Modified: trunk/dEvents.py =================================================================== --- trunk/dEvents.py 2005-02-28 05:51:03 UTC (rev 859) +++ trunk/dEvents.py 2005-02-28 20:52:09 UTC (rev 860) @@ -155,6 +155,11 @@ return issubclass(objectClass, dabo.ui.dSplitter) appliesToClass = classmethod(appliesToClass) +class TreeEvent(Event): + def appliesToClass(eventClass, objectClass): + return issubclass(objectClass, dabo.ui.dTreeView) + appliesToClass = classmethod(appliesToClass) + class Activate(Event): """Occurs when the form or application becomes active.""" @@ -333,6 +338,19 @@ """Occurs when a user double-clicks on the sash of a splitter window.""" pass + +class TreeSelection(TreeEvent): + """ Occurs when the selected item in a tree control changes.""" + pass + +class TreeItemCollapse(TreeEvent): + """ Occurs when an expanded item in a tree collapses.""" + pass + +class TreeItemExpand(TreeEvent): + """ Occurs when a collapsed item in a tree expands.""" + pass + class ValueChanged(Event): """Occurs when the control's value has changed, whether programmatically or interactively."""
Modified: trunk/ui/uiwx/__init__.py =================================================================== --- trunk/ui/uiwx/__init__.py 2005-02-28 05:51:03 UTC (rev 859) +++ trunk/ui/uiwx/__init__.py 2005-02-28 20:52:09 UTC (rev 860) @@ -164,7 +164,7 @@ def getEventData(wxEvt): ed = {} - if isinstance(wxEvt, (wx.KeyEvent, wx.MouseEvent, + if isinstance(wxEvt, (wx.KeyEvent, wx.MouseEvent, wx.TreeEvent, wx.CommandEvent, wx.CloseEvent) ): if dabo.allNativeEventInfo: @@ -213,4 +213,10 @@ if isinstance(wxEvt, wx.CloseEvent): ed["force"] = not wxEvt.CanVeto() + if isinstance(wxEvt, wx.TreeEvent): + tree = wxEvt.GetEventObject() + ed["selectedNode"] = tree.Selection + ed["selectedCaption"] = tree.Selection.Caption + + return ed
Modified: trunk/ui/uiwx/dTreeView.py =================================================================== --- trunk/ui/uiwx/dTreeView.py 2005-02-28 05:51:03 UTC (rev 859) +++ trunk/ui/uiwx/dTreeView.py 2005-02-28 20:52:09 UTC (rev 860) @@ -157,16 +157,32 @@ # Dictionary for tracking images by key value self.__imageList = {} + self.bindEvent(dEvents.Hit, self.onHit) + self.bindEvent(dEvents.TreeSelection, self.onSelection) + self.bindEvent(dEvents.TreeItemCollapse, self.onItemCollapse) + self.bindEvent(dEvents.TreeItemExpand, self.onItemExpand) + + + ### Only for testing! - self.Size = (300,400) +# self.Size = (300,400) # self.addDummyData() # self.expandAll() # self.addImage("edit") # self.addImage("browse") # self.addImage("checkMark") - + + + def _initEvents(self): + super(dTreeView, self)._initEvents() + self.Bind(wx.EVT_LEFT_UP, self._onWxHit) + self.Bind(wx.EVT_TREE_SEL_CHANGED, self._onTreeSel) + self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self._onTreeItemCollapse) + self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self._onTreeItemExpand) + + def setRootNode(self, txt): id = self.AddRoot(txt) ret = dNode(self, id, txt, None) @@ -356,9 +372,22 @@ os.path.walk(dirPath, sortNode, None) + # Event-handling code + def _onTreeSel(self, evt): + self.raiseEvent(dEvents.TreeSelection, evt) + def _onTreeItemCollapse(self, evt): + self.raiseEvent(dEvents.TreeItemCollapse, evt) + def _onTreeItemExpand(self, evt): + self.raiseEvent(dEvents.TreeItemExpand, evt) + def onSelection(self, evt): pass + def onHit(self, evt): pass + def onItemCollapse(self, evt): pass + def onItemExpand(self, evt): pass + def addDummyData(self): """ For testing purposes! """ + self.DeleteAllItems() r = self.setRootNode("This is the root") c1 = r.appendChild("First Child") c2 = r.appendChild("Second Child") @@ -395,6 +424,12 @@ class TestTree(dTreeView): def afterInit(self): self.addDummyData() + + def onSelection(self, evt): + print "Selected node caption:", evt.EventData["selectedCaption"] + def onItemCollapse(self, evt): + print "Collapsed node caption:", evt.EventData["selectedCaption"] + def onItemExpand(self, evt): + print "Expanded node caption:", evt.EventData["selectedCaption"] - test.Test().runTest(TestTree)
©2005 Ed Leafe |
|