]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/PopupMenu.py
wxPython Merge #2 of 2.4 branch --> HEAD (branch tag: wxPy_2_4_merge_2)
[wxWidgets.git] / wxPython / demo / PopupMenu.py
diff --git a/wxPython/demo/PopupMenu.py b/wxPython/demo/PopupMenu.py
new file mode 100644 (file)
index 0000000..9796627
--- /dev/null
@@ -0,0 +1,148 @@
+
+from wxPython.wx import *
+import images
+
+#----------------------------------------------------------------------
+
+text = """\
+
+Right-click on the panel (or Ctrl-click on the Mac) to show a popup
+menu.  Then look at the code for this sample.  Notice how the
+PopupMenu method is similar to the ShowModal method of a wxDialog in
+that it doesn't return until the popup menu has been dismissed.  The
+event handlers for the popup menu items can either be attached to the
+menu itself, or to the window that invokes PopupMenu.
+"""
+
+#----------------------------------------------------------------------
+
+class TestPanel(wxPanel):
+    def __init__(self, parent, log):
+        self.log = log
+        wxPanel.__init__(self, parent, -1)
+        box = wxBoxSizer(wxVERTICAL)
+
+        # Make and layout the controls
+        fs = self.GetFont().GetPointSize()
+        bf = wxFont(fs+4, wxSWISS, wxNORMAL, wxBOLD)
+        nf = wxFont(fs+2, wxSWISS, wxNORMAL, wxNORMAL)
+
+        t = wxStaticText(self, -1, "PopupMenu")
+        t.SetFont(bf)
+        box.Add(t, 0, wxCENTER|wxALL, 5)
+
+        box.Add(wxStaticLine(self, -1), 0, wxEXPAND)
+        box.Add(10,20)
+
+        t = wxStaticText(self, -1, text)
+        t.SetFont(nf)
+        box.Add(t, 0, wxCENTER|wxALL, 5)
+
+        self.SetSizer(box)
+
+        EVT_RIGHT_UP(self, self.OnRightClick)
+
+
+    def OnRightClick(self, event):
+        self.log.WriteText("OnRightClick\n")
+
+        # only do this part the first time so the events are only bound once
+        if not hasattr(self, "popupID1"):
+            self.popupID1 = wxNewId()
+            self.popupID2 = wxNewId()
+            self.popupID3 = wxNewId()
+            self.popupID4 = wxNewId()
+            self.popupID5 = wxNewId()
+            self.popupID6 = wxNewId()
+            self.popupID7 = wxNewId()
+            self.popupID8 = wxNewId()
+            self.popupID9 = wxNewId()
+            EVT_MENU(self, self.popupID1, self.OnPopupOne)
+            EVT_MENU(self, self.popupID2, self.OnPopupTwo)
+            EVT_MENU(self, self.popupID3, self.OnPopupThree)
+            EVT_MENU(self, self.popupID4, self.OnPopupFour)
+            EVT_MENU(self, self.popupID5, self.OnPopupFive)
+            EVT_MENU(self, self.popupID6, self.OnPopupSix)
+            EVT_MENU(self, self.popupID7, self.OnPopupSeven)
+            EVT_MENU(self, self.popupID8, self.OnPopupEIght)
+            EVT_MENU(self, self.popupID9, self.OnPopupNine)
+
+        # make a menu
+        menu = wxMenu()
+        # Show how to put an icon in the menu
+        item = wxMenuItem(menu, self.popupID1,"One")
+        item.SetBitmap(images.getSmilesBitmap())
+        menu.AppendItem(item)
+        # add some other items
+        menu.Append(self.popupID2, "Two")
+        menu.Append(self.popupID3, "Three")
+        menu.Append(self.popupID4, "Four")
+        menu.Append(self.popupID5, "Five")
+        menu.Append(self.popupID6, "Six")
+        # make a submenu
+        sm = wxMenu()
+        sm.Append(self.popupID8, "sub item 1")
+        sm.Append(self.popupID9, "sub item 1")
+        menu.AppendMenu(self.popupID7, "Test Submenu", sm)
+
+
+        # Popup the menu.  If an item is selected then its handler
+        # will be called before PopupMenu returns.
+        self.PopupMenu(menu, event.GetPosition())
+        menu.Destroy()
+
+
+    def OnPopupOne(self, event):
+        self.log.WriteText("Popup one\n")
+
+    def OnPopupTwo(self, event):
+        self.log.WriteText("Popup two\n")
+
+    def OnPopupThree(self, event):
+        self.log.WriteText("Popup three\n")
+
+    def OnPopupFour(self, event):
+        self.log.WriteText("Popup four\n")
+
+    def OnPopupFive(self, event):
+        self.log.WriteText("Popup five\n")
+
+    def OnPopupSix(self, event):
+        self.log.WriteText("Popup six\n")
+
+    def OnPopupSeven(self, event):
+        self.log.WriteText("Popup seven\n")
+
+    def OnPopupEIght(self, event):
+        self.log.WriteText("Popup eight\n")
+
+    def OnPopupNine(self, event):
+        self.log.WriteText("Popup nine\n")
+
+
+
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = """<html><body>
+<h2><center>PopupMenu</center></h2>
+""" + text + """
+</body></html>
+"""
+
+
+
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])])
+