]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxPopupWindow.py
synthetize 'button up' event before doubleclick, too
[wxWidgets.git] / wxPython / demo / wxPopupWindow.py
CommitLineData
0122b7e3
RD
1from wxPython.wx import *
2
3#---------------------------------------------------------------------------
4
5class TestPopup(wxPopupWindow):
c0c84fa0 6 """Adds a bit of text and mouse movement to the wxPopupWindow"""
0122b7e3
RD
7 def __init__(self, parent, style):
8 wxPopupWindow.__init__(self, parent, style)
c0c84fa0
RD
9 self.SetBackgroundColour("CADET BLUE")
10 st = wxStaticText(self, -1,
11 "This is a special kind of top level\n"
12 "window that can be used for\n"
13 "popup menus, combobox popups\n"
14 "and such.\n\n"
15 "Try positioning the demo near\n"
16 "the bottom of the screen and \n"
17 "hit the button again.\n\n"
18 "In this demo this window can\n"
19 "be dragged with the left button\n"
20 "and closed with the right."
21 ,
22 pos=(10,10))
23 sz = st.GetBestSize()
24 self.SetSize( (sz.width+20, sz.height+20) )
0122b7e3
RD
25
26 EVT_LEFT_DOWN(self, self.OnMouseLeftDown)
27 EVT_MOTION(self, self.OnMouseMotion)
28 EVT_LEFT_UP(self, self.OnMouseLeftUp)
c0c84fa0
RD
29 EVT_RIGHT_UP(self, self.OnRightUp)
30 EVT_LEFT_DOWN(st, self.OnMouseLeftDown)
31 EVT_MOTION(st, self.OnMouseMotion)
32 EVT_LEFT_UP(st, self.OnMouseLeftUp)
33 EVT_RIGHT_UP(st, self.OnRightUp)
0122b7e3
RD
34
35 def OnMouseLeftDown(self, evt):
c0c84fa0 36 self.ldPos = evt.GetEventObject().ClientToScreen(evt.GetPosition())
f0db4f38 37 self.wPos = self.GetPosition()
0122b7e3
RD
38 self.CaptureMouse()
39
40 def OnMouseMotion(self, evt):
c0c84fa0
RD
41 if evt.Dragging() and evt.LeftIsDown():
42 dPos = evt.GetEventObject().ClientToScreen(evt.GetPosition())
43 nPos = (self.wPos.x + (dPos.x - self.ldPos.x),
44 self.wPos.y + (dPos.y - self.ldPos.y))
45 self.Move(nPos)
0122b7e3
RD
46
47 def OnMouseLeftUp(self, evt):
48 self.ReleaseMouse()
c0c84fa0 49
c0c84fa0
RD
50 def OnRightUp(self, evt):
51 self.Show(false)
52 self.Destroy()
53
54
55class TestTransientPopup(wxPopupTransientWindow):
56 """Adds a bit of text and mouse movement to the wxPopupWindow"""
a57d56d6 57 def __init__(self, parent, style, log):
c0c84fa0 58 wxPopupTransientWindow.__init__(self, parent, style)
a57d56d6
RD
59 self.log = log
60 panel = wxPanel(self, -1)
61 panel.SetBackgroundColour("#FFB6C1")
62 st = wxStaticText(panel, -1,
c0c84fa0
RD
63 "wxPopupTransientWindow is a\n"
64 "wxPopupWindow which disappears\n"
65 "automatically when the user\n"
66 "clicks the mouse outside it or if it\n"
67 "loses focus in any other way."
68 ,
69 pos=(10,10))
70 sz = st.GetBestSize()
a57d56d6
RD
71 panel.SetSize( (sz.width+20, sz.height+20) )
72 self.SetSize(panel.GetSize())
0122b7e3
RD
73
74
a57d56d6
RD
75 def ProcessLeftDown(self, evt):
76 self.log.write("ProcessLeftDown\n")
77 return false
78
79 def OnDismiss(self):
80 self.log.write("OnDismiss\n")
81
0122b7e3
RD
82
83class TestPanel(wxPanel):
84 def __init__(self, parent, log):
85 wxPanel.__init__(self, parent, -1)
86 self.log = log
87
c0c84fa0 88 b = wxButton(self, -1, "Show wxPopupWindow", (25, 50))
0122b7e3
RD
89 EVT_BUTTON(self, b.GetId(), self.OnShowPopup)
90
c0c84fa0
RD
91 b = wxButton(self, -1, "Show wxPopupTransientWindow", (25, 95))
92 EVT_BUTTON(self, b.GetId(), self.OnShowPopupTransient)
93
0122b7e3
RD
94
95 def OnShowPopup(self, evt):
96 win = TestPopup(self, wxSIMPLE_BORDER)
c0c84fa0
RD
97
98 # Show the popup right below or above the button
99 # depending on available screen space...
100 btn = evt.GetEventObject()
101 pos = btn.ClientToScreen( (0,0) )
102 sz = btn.GetSize()
103 win.Position(pos, (0, sz.height))
104
0122b7e3
RD
105 win.Show(true)
106
107
c0c84fa0 108 def OnShowPopupTransient(self, evt):
a57d56d6 109 win = TestTransientPopup(self, wxSIMPLE_BORDER, self.log)
c0c84fa0 110
a57d56d6
RD
111 # Show the popup right below or above the button
112 # depending on available screen space...
c0c84fa0
RD
113 btn = evt.GetEventObject()
114 pos = btn.ClientToScreen( (0,0) )
115 sz = btn.GetSize()
116 win.Position(pos, (0, sz.height))
117
a57d56d6 118 win.Popup()
c0c84fa0
RD
119
120
0122b7e3
RD
121
122#---------------------------------------------------------------------------
123
124def runTest(frame, nb, log):
125 win = TestPanel(nb, log)
126 return win
127
128#---------------------------------------------------------------------------
129
130
131
132
133overview = """\
134"""