X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/80f7e6500b3d8418d5a3305a8a4e2de4373717a7..59d04dff037f66e9e73b389de72835211f5f0bcd:/wxPython/demo/wxPopupWindow.py diff --git a/wxPython/demo/wxPopupWindow.py b/wxPython/demo/wxPopupWindow.py index c4d163e9ff..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): @@ -70,11 +77,6 @@ class TestTransientPopup(wxPopupTransientWindow): sz = st.GetBestSize() panel.SetSize( (sz.width+20, sz.height+20) ) self.SetSize(panel.GetSize()) -## self.SetBackgroundColour("#FFB6C1") -## b = wxButton(self, -1, "this is a Button", (10,10)) -## sz = b.GetBestSize() -## self.SetSize( (sz.width+20, sz.height+20) ) - def ProcessLeftDown(self, evt): self.log.write("ProcessLeftDown\n") @@ -84,6 +86,7 @@ class TestTransientPopup(wxPopupTransientWindow): self.log.write("OnDismiss\n") + class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) @@ -95,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) @@ -122,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() #--------------------------------------------------------------------------- @@ -136,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])]) +