main logo
Subject: [dabo-dev] dabo Commit 860
Author: Ed Leafe
Posted: 2005/02/28 15:52:10
 
View Entire Thread
New Search


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
<-- Prior Message New Search Next Message -->