]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/tests/test_evtHandler.py
Some random test apps that I've been playing with
[wxWidgets.git] / wxPython / tests / test_evtHandler.py
diff --git a/wxPython/tests/test_evtHandler.py b/wxPython/tests/test_evtHandler.py
new file mode 100644 (file)
index 0000000..3914da2
--- /dev/null
@@ -0,0 +1,81 @@
+
+import wx
+
+
+# This class is just an experiment to see how easy it would be to
+# handle simulating transfer of ownership of object to a 'parent'
+# object, and then automatically calling Destroy on those when the
+# parent is destroyed.  Conclusion: It's not too hard at all. Now,
+# what should I do with it...
+class DestroyWrapper(object):
+    def __init__(self):
+        import weakref
+        self.items = weakref.WeakValueDictionary()
+
+    def AddItem(self, obj):
+        self.items[len(self.items)+1] = obj
+
+    def __del__(self):
+        for item in self.items.values():
+            item.Destroy()
+
+
+
+            
+
+class MyEvtHandler(wx.EvtHandler):
+    instCount = 0
+    
+    def __init__(self):
+        wx.EvtHandler.__init__(self)
+        MyEvtHandler.instCount += 1
+        self.cnt = MyEvtHandler.instCount
+        self.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)
+
+    def __del__(self):
+        print "%02d: deleted" % self.cnt
+
+    def OnCheckBox(self, evt):
+        print "%02d: %s" % (self.cnt, evt.IsChecked())
+        evt.Skip()
+
+
+
+class MyFrame(wx.Frame):
+    def __init__(self):
+        wx.Frame.__init__(self, None, title="wx.EvtHandler Test")
+        p = wx.Panel(self)
+
+        pushBtn = wx.Button(p, -1, "Push EvtHandler", (20,20))
+        popBtn  = wx.Button(p, -1, "Pop EvtHandler", (20,60))
+
+        checkBox = wx.CheckBox(p, -1, "Test EvtHandler", (200, 25))
+
+        self.Bind(wx.EVT_BUTTON, self.OnPushBtn, pushBtn)
+        self.Bind(wx.EVT_BUTTON, self.OnPopBtn, popBtn)
+
+##        self.dw = DestroyWrapper()
+
+
+    def OnPushBtn(self, evt):
+        eh = MyEvtHandler()
+        self.PushEventHandler(eh)
+##        self.dw.AddItem(eh)
+        print "%02d: pushed" % eh.cnt
+
+
+    def OnPopBtn(self, evt):
+        eh = self.GetEventHandler()
+        if eh.this == self.this:
+            print "All already popped!"
+        else:
+            eh = self.PopEventHandler()
+            print "%02d: popped( %s )" % (eh.cnt, eh.__class__)
+            eh.Destroy()
+            
+    
+
+app = wx.App(False)
+frm = MyFrame()
+frm.Show()
+app.MainLoop()