X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4416b50837c52b62bd0e21c05bcc29a129e97631..59d04dff037f66e9e73b389de72835211f5f0bcd:/wxPython/demo/wxPopupWindow.py diff --git a/wxPython/demo/wxPopupWindow.py b/wxPython/demo/wxPopupWindow.py index 5f6477804e..014e21c8a2 100644 --- a/wxPython/demo/wxPopupWindow.py +++ b/wxPython/demo/wxPopupWindow.py @@ -1,5 +1,12 @@ from wxPython.wx import * +havePopupWindow = 1 +try: + wxPopupWindow +except NameError: + havePopupWindow = 0 + wxPopupWindow = wxPopupTransientWindow = wxWindow + #--------------------------------------------------------------------------- class TestPopup(wxPopupWindow): @@ -71,7 +78,6 @@ class TestTransientPopup(wxPopupTransientWindow): panel.SetSize( (sz.width+20, sz.height+20) ) self.SetSize(panel.GetSize()) - def ProcessLeftDown(self, evt): self.log.write("ProcessLeftDown\n") return false @@ -80,6 +86,7 @@ class TestTransientPopup(wxPopupTransientWindow): self.log.write("OnDismiss\n") + class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) @@ -91,6 +98,10 @@ class TestPanel(wxPanel): b = wxButton(self, -1, "Show wxPopupTransientWindow", (25, 95)) EVT_BUTTON(self, b.GetId(), self.OnShowPopupTransient) + if 0: + b = wxButton(self, -1, "Show wxPopupWindow with listbox", (25, 140)) + EVT_BUTTON(self, b.GetId(), self.OnShowPopupListbox) + def OnShowPopup(self, evt): win = TestPopup(self, wxSIMPLE_BORDER) @@ -118,12 +129,50 @@ class TestPanel(wxPanel): win.Popup() + def OnShowPopupListbox(self, evt): + win = TestPopupWithListbox(self, wxNO_BORDER, self.log) + + # Show the popup right below or above the button + # depending on available screen space... + btn = evt.GetEventObject() + pos = btn.ClientToScreen( (0,0) ) + sz = btn.GetSize() + win.Position(pos, (0, sz.height)) + + win.Show(true) + +class TestPopupWithListbox(wxPopupWindow): + def __init__(self, parent, style, log): + wxPopupWindow.__init__(self, parent, style) + import keyword + self.lb = wxListBox(self, -1, choices = keyword.kwlist) + #sz = self.lb.GetBestSize() + self.SetSize((150, 75)) #sz) + self.lb.SetSize(self.GetClientSize()) + self.lb.SetFocus() + EVT_LEFT_DOWN(self.lb, self.OnLeft) + EVT_LISTBOX(self, -1, self.OnListBox) + + def OnLeft(self, evt): + print "OnLeft", evt.GetEventObject() + evt.Skip() + def OnListBox(self, evt): + print "OnListBox", evt.GetEventObject() + evt.Skip() + + #--------------------------------------------------------------------------- def runTest(frame, nb, log): - win = TestPanel(nb, log) - return win + if havePopupWindow: + win = TestPanel(nb, log) + return win + else: + dlg = wxMessageDialog(frame, 'wxPopupWindow is not available on this platform.', + 'Sorry', wxOK | wxICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() #--------------------------------------------------------------------------- @@ -132,3 +181,12 @@ def runTest(frame, nb, log): overview = """\ """ + + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) +