X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95bfd958bda8955ac81277c78e5627c926154f39..b4eecebd423df0c6efe86d7658cd3df818d67ed8:/wxPython/demo/PopupWindow.py?ds=sidebyside diff --git a/wxPython/demo/PopupWindow.py b/wxPython/demo/PopupWindow.py index daea319286..cc2de54b36 100644 --- a/wxPython/demo/PopupWindow.py +++ b/wxPython/demo/PopupWindow.py @@ -9,9 +9,7 @@ import wx havePopupWindow = 1 -try: - wx.PopupWindow -except NameError: +if wx.Platform == '__WXMAC__': havePopupWindow = 0 wx.PopupWindow = wx.PopupTransientWindow = wx.Window @@ -50,7 +48,10 @@ class TestPopup(wx.PopupWindow): st.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp) st.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) + wx.CallAfter(self.Refresh) + def OnMouseLeftDown(self, evt): + self.Refresh() self.ldPos = evt.GetEventObject().ClientToScreen(evt.GetPosition()) self.wPos = self.ClientToScreen((0,0)) self.CaptureMouse() @@ -75,9 +76,8 @@ class TestTransientPopup(wx.PopupTransientWindow): def __init__(self, parent, style, log): wx.PopupTransientWindow.__init__(self, parent, style) self.log = log - panel = wx.Panel(self, -1) - panel.SetBackgroundColour("#FFB6C1") - st = wx.StaticText(panel, -1, + self.SetBackgroundColour("#FFB6C1") + st = wx.StaticText(self, -1, "wx.PopupTransientWindow is a\n" "wx.PopupWindow which disappears\n" "automatically when the user\n" @@ -87,8 +87,7 @@ class TestTransientPopup(wx.PopupTransientWindow): , pos=(10,10)) sz = st.GetBestSize() - panel.SetSize( (sz.width+20, sz.height+20) ) - self.SetSize(panel.GetSize()) + self.SetSize( (sz.width+20, sz.height+20) ) def ProcessLeftDown(self, evt): self.log.write("ProcessLeftDown\n") @@ -119,6 +118,7 @@ class TestPanel(wx.Panel): def OnShowPopup(self, evt): win = TestPopup(self, wx.SIMPLE_BORDER) + #win = TestPopupWithListbox(self, wx.SIMPLE_BORDER, self.log) # Show the popup right below or above the button # depending on available screen space... @@ -131,7 +131,9 @@ class TestPanel(wx.Panel): def OnShowPopupTransient(self, evt): - win = TestTransientPopup(self, wx.SIMPLE_BORDER, self.log) + win = TestTransientPopup(self, + wx.SIMPLE_BORDER, + self.log) # Show the popup right below or above the button # depending on available screen space... @@ -155,6 +157,8 @@ class TestPanel(wx.Panel): win.Show(True) + + # This class is currently not implemented in the demo. It does not # behave the way it should, so for the time being it's only here # for show. If you figure out how to make it work, please send @@ -162,31 +166,25 @@ class TestPanel(wx.Panel): class TestPopupWithListbox(wx.PopupWindow): def __init__(self, parent, style, log): wx.PopupWindow.__init__(self, parent, style) - + self.log = log import keyword - self.lb = wx.ListBox(self, -1, choices = keyword.kwlist) #sz = self.lb.GetBestSize() self.SetSize((150, 75)) #sz) self.lb.SetSize(self.GetClientSize()) self.lb.SetFocus() self.Bind(wx.EVT_LISTBOX, self.OnListBox) - self.lb.Bind(wx.EVT_LEFT_DOWN, self.OnLeft) - - def OnLeft(self, evt): - obj = evt.GetEventObject() - print "OnLeft", obj - print 'Selected: %s' % obj.GetStringSelection() - obj.Show(False) - evt.Skip() + self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnListBoxDClick) def OnListBox(self, evt): obj = evt.GetEventObject() - print "OnListBox", obj - print 'Selected: %s' % obj.GetString() + self.log.write("OnListBox: %s\n" % obj) + self.log.write('Selected: %s\n' % obj.GetString(evt.GetInt())) evt.Skip() - + def OnListBoxDClick(self, evt): + self.Hide() + self.Destroy() #--------------------------------------------------------------------------- @@ -195,13 +193,10 @@ def runTest(frame, nb, log): win = TestPanel(nb, log) return win else: - dlg = wx.MessageDialog( - frame, 'wx.PopupWindow is not available on this platform.', - 'Sorry', wx.OK | wx.ICON_INFORMATION - ) - - dlg.ShowModal() - dlg.Destroy() + from Main import MessagePanel + win = MessagePanel(nb, 'wx.PopupWindow is not available on this platform.', + 'Sorry', wx.ICON_WARNING) + return win #--------------------------------------------------------------------------- @@ -213,5 +208,5 @@ overview = """\ if __name__ == '__main__': import sys,os import run - run.main(['', os.path.basename(sys.argv[0])]) + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])