diff --git a/wxPython/demo/wxPopupWindow.py b/wxPython/demo/wxPopupWindow.py index 5f6477804e..c9ac6d4c18 100644 --- a/wxPython/demo/wxPopupWindow.py +++ b/wxPython/demo/wxPopupWindow.py @@ -52,6 +52,30 @@ class TestPopup(wxPopupWindow): self.Destroy() +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() + + + class TestTransientPopup(wxPopupTransientWindow): """Adds a bit of text and mouse movement to the wxPopupWindow""" def __init__(self, parent, style, log): @@ -71,7 +95,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 +103,7 @@ class TestTransientPopup(wxPopupTransientWindow): self.log.write("OnDismiss\n") + class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) @@ -91,6 +115,9 @@ class TestPanel(wxPanel): b = wxButton(self, -1, "Show wxPopupTransientWindow", (25, 95)) EVT_BUTTON(self, b.GetId(), self.OnShowPopupTransient) + 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,6 +145,17 @@ 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) #---------------------------------------------------------------------------