]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/XMLtreeview.py
fix text scrolling in GTK2 (patch 703988)
[wxWidgets.git] / wxPython / demo / XMLtreeview.py
index c53e4010c930d05091c15d993e9d0ebd80d358e3..081ac5f0f6dc74d1941a87df12a18a9a50a86875 100644 (file)
@@ -1,5 +1,5 @@
 
-import string, sys
+import sys
 
 py2 = sys.version[0] == '2'
 
@@ -11,9 +11,9 @@ try:
     else:
         from xml.parsers import pyexpat
         parsermodule = pyexpat
-    haveXML = true
+    haveXML = True
 except ImportError:
-    haveXML = false
+    haveXML = False
 
 #----------------------------------------------------------------------
 
@@ -32,6 +32,39 @@ else:
             wxTreeCtrl.__init__(self, parent, ID)
             self.nodeStack = [self.AddRoot("Root")]
 
+            # Trees need an image list to do DnD...
+            self.il = wxImageList(16,16)
+            self.SetImageList(self.il)
+
+            # event handlers for DnD
+            EVT_TREE_BEGIN_DRAG(self, ID, self.OnBeginDrag)
+            EVT_TREE_END_DRAG(self, ID, self.OnEndDrag)
+
+
+        def OnBeginDrag(self, event):
+            item = event.GetItem()
+            if item != self.GetRootItem():
+                self.draggingItem = item
+                event.Allow()  # if DnD of this item is okay Allow it.
+
+
+        def OnEndDrag(self, evt):
+            itemSrc = self.draggingItem
+            itemDst = evt.GetItem()
+            self.draggingItem = None
+
+            if not itemDst.IsOk():
+                print "Can't drag to here..."
+                return
+
+            # For this simple example just take the text of the source item
+            # and append it to the destination item.  In real life you would
+            # possibly want to copy subtrees...
+            text = self.GetItemText(itemSrc)
+            self.AppendItem(itemDst, text)
+            self.Delete(itemSrc)
+
+
         # Define a handler for start element events
         def StartElement(self, name, attrs ):
             if py2:
@@ -43,7 +76,7 @@ else:
             self.nodeStack = self.nodeStack[:-1]
 
         def CharacterData(self, data ):
-            if string.strip(data):
+            if data.strip():
                 if py2:
                     data = data.encode()
                 self.AppendItem(self.nodeStack[-1], data)
@@ -77,3 +110,11 @@ else:
 overview = """\
 """
 
+
+
+
+
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])])