]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/tests/popup.py
wxPython 2.1b1:
[wxWidgets.git] / utils / wxPython / tests / popup.py
diff --git a/utils/wxPython/tests/popup.py b/utils/wxPython/tests/popup.py
new file mode 100644 (file)
index 0000000..5cc08d4
--- /dev/null
@@ -0,0 +1,123 @@
+# popup.py:
+# Illustrates how to create a wxListCtrl with an associated pop-up menu, which is
+# activated when the right mouse button is clicked.
+
+from wxPython.wx import *
+
+
+class cPopupHandler(wxEvtHandler):
+
+    def __init__(self, this):
+        wxEvtHandler.__init__(self, this)
+
+
+    def ProcessEvent(self, event):
+        print "G"
+        #wxEvtHandler.ProcessEvent(self, event)
+
+        if event.GetEventClass() != wxTYPE_MOUSE_EVENT:
+            return
+
+        if not event.ButtonUp(3):
+            return
+
+        if event.ButtonDown(1):
+            print "left down"
+        elif event.ButtonUp(1):
+            print "left up"
+        elif event.ButtonDown(3):
+            print "right down"
+        elif event.ButtonUp(3):
+            print "right up"
+
+
+    def xProcessEvent(self, event):
+        # I tried to pass this one in as the Connect() handler,
+        # but all I got from that was that the icons disappeared
+        # from the wxListCtrl.
+        print "H"
+        pass
+
+
+
+class cMyFrame(wxFrame):
+
+    def __init__(self, parent, id, title):
+        wxFrame.__init__(self, parent, -1, title, wxDefaultPosition, wxSize(800, 600))
+
+        self.Centre(wxBOTH)
+
+        # create a dummy icon; can't seem to get the wxListCtrl to work without an icon
+        #self.imagelist = wxImageList(16, 16)
+        #self.image = self.imagelist.Add(wxNoRefBitmap('smile.bmp', wxBITMAP_TYPE_BMP))
+
+        # create a ListCtrl
+        id = NewId()
+        self.listctrl = wxListCtrl(self, id, wxDefaultPosition, wxDefaultSize, wxLC_REPORT)
+        #self.listctrl.SetImageList(self.imagelist, wxIMAGE_LIST_SMALL)
+
+        if 1:
+            # install a handler for mouse right button up events
+            #EVT_RIGHT_DOWN(self.listctrl, self.OnListMouseEvent)
+            #EVT_RIGHT_UP(self.listctrl, self.OnListMouseEvent)
+
+            #EVT_RIGHT_DOWN(self.listctrl, self.OnSaveMousePos)
+
+            EVT_LIST_ITEM_SELECTED(self, id, self.OnSaveSelection)
+            EVT_COMMAND_RIGHT_CLICK(self, id, self.OnListRightClick)
+        else:
+            # create an wxEvtHandler and connect it to the wxListCtrl
+            print "A"
+            self.listctrl.handler = cPopupHandler(self.listctrl)
+            print "B"
+            id = NewId()
+            self.listctrl.Connect(id, id, wxEVT_RIGHT_DOWN, self.OnListMouseEvent)
+            print "C"
+
+        # define the ListCtrl column
+        self.listctrl.InsertColumn(0, "Name")
+
+        # create a set of dummy ListCtrl entries
+        for Index in range(20):
+            self.listctrl.InsertStringItem(Index, "Item number %d" % Index)
+
+        # re-adjust the width of the column
+        self.listctrl.SetColumnWidth(0, wxLIST_AUTOSIZE_USEHEADER)
+
+
+    def OnSaveSelection(self, event):
+        self.lastSelection = event.m_itemIndex
+        print self.lastSelection
+
+
+    def OnListRightClick(self, event):
+        menu = wxPyMenu()
+        menu.Append(0, "One")
+        menu.Append(1, "Two")
+        menu.Append(2, "Three")
+
+        pos = self.listctrl.GetItemPosition(self.lastSelection)
+        self.listctrl.PopupMenu(menu, pos.x, pos.y)
+
+
+class cMyApp(wxApp):
+
+    def OnInit(self):
+        frame = cMyFrame(NULL, -1, "Popup Sample")
+        frame.Show(true)
+        self.SetTopWindow(frame)
+        return true
+
+
+def main():
+    App = cMyApp(0)
+    App.MainLoop()
+
+
+if __name__ == "__main__":
+    main()
+
+
+
+
+