X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f91cd3896917fc386a1f7ede095c6cdf5fcdf7e6..8bf5d46efb26ab22575ca9bc0d0ca5d32d6b77a3:/utils/wxPython/tests/popup.py diff --git a/utils/wxPython/tests/popup.py b/utils/wxPython/tests/popup.py new file mode 100644 index 0000000000..5cc08d4529 --- /dev/null +++ b/utils/wxPython/tests/popup.py @@ -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() + + + + +