]> git.saurik.com Git - wxWidgets.git/commitdiff
test popup menus with checkable items
authorRobin Dunn <robin@alldunn.com>
Sun, 10 Dec 2006 01:50:05 +0000 (01:50 +0000)
committerRobin Dunn <robin@alldunn.com>
Sun, 10 Dec 2006 01:50:05 +0000 (01:50 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/tests/test_popupMenuChecks.py [new file with mode: 0644]

diff --git a/wxPython/tests/test_popupMenuChecks.py b/wxPython/tests/test_popupMenuChecks.py
new file mode 100644 (file)
index 0000000..e75a133
--- /dev/null
@@ -0,0 +1,97 @@
+import wx
+print wx.VERSION
+
+ID_ITEM1 = wx.NewId()
+ID_ITEM2 = wx.NewId()
+
+
+
+class TestPanelBase(wx.Panel):
+    def __init__(self, parent):
+        wx.Panel.__init__(self, parent, style=wx.BORDER_SUNKEN)
+        self.item1 = False
+        self.item2 = True
+        self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
+        self.Bind(wx.EVT_MENU, self.OnItem1, id=ID_ITEM1)
+        self.Bind(wx.EVT_MENU, self.OnItem2, id=ID_ITEM2)
+        wx.StaticText(self, -1, self.__doc__.strip(), (0,0))
+
+    def OnItem1(self, evt):
+        print "OnItem1"
+        self.item1 =  not self.item1
+        
+    def OnItem2(self, evt):
+        print "OnItem2"
+        self.item2 =  not self.item2
+
+
+class TestPanel1(TestPanelBase):
+    """
+    Pre-create and reuse the menu
+    """
+    def __init__(self, parent):
+        TestPanelBase.__init__(self, parent)
+        self.menu = wx.Menu()
+        self.menu.Append(ID_ITEM1, "Item 1", kind=wx.ITEM_CHECK)
+        self.menu.Append(ID_ITEM2, "Item 2", kind=wx.ITEM_CHECK)
+        self.menu.Check(ID_ITEM1, self.item1)
+        self.menu.Check(ID_ITEM2, self.item2)
+
+    def OnContextMenu(self, evt):
+        self.PopupMenu(self.menu)
+
+
+class TestPanel2(TestPanelBase):
+    """
+    This one recreates the menu and sets the checks each time
+    """
+    def __init__(self, parent):
+        TestPanelBase.__init__(self, parent)
+
+    def OnContextMenu(self, evt):
+        menu = wx.Menu()
+        menu.Append(ID_ITEM1, "Item 1", kind=wx.ITEM_CHECK)
+        menu.Append(ID_ITEM2, "Item 2", kind=wx.ITEM_CHECK)
+        menu.Check(ID_ITEM1, self.item1)
+        menu.Check(ID_ITEM2, self.item2)
+        self.PopupMenu(menu)
+        menu.Destroy()
+
+
+class TestPanel3(TestPanelBase):
+    """
+    Use an EVT_UPDATE_UI handler to set the checks
+    """
+    def __init__(self, parent):
+        TestPanelBase.__init__(self, parent)
+        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI_Item1, id=ID_ITEM1)
+        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI_Item2, id=ID_ITEM2)
+
+    def OnContextMenu(self, evt):
+        menu = wx.Menu()
+        menu.Append(ID_ITEM1, "Item 1", kind=wx.ITEM_CHECK)
+        menu.Append(ID_ITEM2, "Item 2", kind=wx.ITEM_CHECK)
+        self.PopupMenu(menu)
+        menu.Destroy()
+
+    def OnUpdateUI_Item1(self, evt):
+        print "OnUpdateUI_Item1"
+        evt.Check(self.item1)
+
+    def OnUpdateUI_Item2(self, evt):
+        print "OnUpdateUI_Item2"
+        evt.Check(self.item2)
+
+
+app = wx.App(False)
+frm = wx.Frame(None, title="Right-click on a panel...")
+pnl1 = TestPanel1(frm)
+pnl2 = TestPanel2(frm)
+pnl3 = TestPanel3(frm)
+sizer = wx.BoxSizer(wx.VERTICAL)
+frm.SetSizer(sizer)
+sizer.Add(pnl1, 1, wx.EXPAND)
+sizer.Add(pnl2, 1, wx.EXPAND)
+sizer.Add(pnl3, 1, wx.EXPAND)
+frm.Show()
+app.MainLoop()