X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0c84fa0883bf4d80162c4f64550a076e0a54b82..64b397664d8d8c0acd2630ea239ab420fe7fe007:/wxPython/demo/wxPopupWindow.py?ds=sidebyside diff --git a/wxPython/demo/wxPopupWindow.py b/wxPython/demo/wxPopupWindow.py index 7973a417ea..055f1c25cc 100644 --- a/wxPython/demo/wxPopupWindow.py +++ b/wxPython/demo/wxPopupWindow.py @@ -34,7 +34,7 @@ class TestPopup(wxPopupWindow): def OnMouseLeftDown(self, evt): self.ldPos = evt.GetEventObject().ClientToScreen(evt.GetPosition()) - self.wPos = self.GetParent().ClientToScreen(self.GetPosition()) + self.wPos = self.GetPosition() self.CaptureMouse() def OnMouseMotion(self, evt): @@ -47,7 +47,6 @@ class TestPopup(wxPopupWindow): def OnMouseLeftUp(self, evt): self.ReleaseMouse() - def OnRightUp(self, evt): self.Show(false) self.Destroy() @@ -55,10 +54,12 @@ class TestPopup(wxPopupWindow): class TestTransientPopup(wxPopupTransientWindow): """Adds a bit of text and mouse movement to the wxPopupWindow""" - def __init__(self, parent, style): + def __init__(self, parent, style, log): wxPopupTransientWindow.__init__(self, parent, style) - self.SetBackgroundColour("#FFB6C1") - st = wxStaticText(self, -1, + self.log = log + panel = wxPanel(self, -1) + panel.SetBackgroundColour("#FFB6C1") + st = wxStaticText(panel, -1, "wxPopupTransientWindow is a\n" "wxPopupWindow which disappears\n" "automatically when the user\n" @@ -67,7 +68,15 @@ class TestTransientPopup(wxPopupTransientWindow): , pos=(10,10)) sz = st.GetBestSize() - self.SetSize( (sz.width+20, sz.height+20) ) + panel.SetSize( (sz.width+20, sz.height+20) ) + self.SetSize(panel.GetSize()) + + def ProcessLeftDown(self, evt): + self.log.write("ProcessLeftDown\n") + return false + + def OnDismiss(self): + self.log.write("OnDismiss\n") @@ -82,6 +91,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) @@ -97,15 +110,48 @@ class TestPanel(wxPanel): def OnShowPopupTransient(self, evt): - win = TestTransientPopup(self, wxSIMPLE_BORDER) + win = TestTransientPopup(self, wxSIMPLE_BORDER, self.log) - # show the popup right below or above the button + # 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.Popup(btn) + 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()