]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxPopupWindow.py
Changes needed to solve wxPython's OOR problem for the wxOGL shapes.
[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())
73## self.SetBackgroundColour("#FFB6C1")
74## b = wxButton(self, -1, "this is a Button", (10,10))
75## sz = b.GetBestSize()
76## self.SetSize( (sz.width+20, sz.height+20) )
0122b7e3
RD
77
78
a57d56d6
RD
79 def ProcessLeftDown(self, evt):
80 self.log.write("ProcessLeftDown\n")
81 return false
82
83 def OnDismiss(self):
84 self.log.write("OnDismiss\n")
85
0122b7e3
RD
86
87class TestPanel(wxPanel):
88 def __init__(self, parent, log):
89 wxPanel.__init__(self, parent, -1)
90 self.log = log
91
c0c84fa0 92 b = wxButton(self, -1, "Show wxPopupWindow", (25, 50))
0122b7e3
RD
93 EVT_BUTTON(self, b.GetId(), self.OnShowPopup)
94
c0c84fa0
RD
95 b = wxButton(self, -1, "Show wxPopupTransientWindow", (25, 95))
96 EVT_BUTTON(self, b.GetId(), self.OnShowPopupTransient)
97
0122b7e3
RD
98
99 def OnShowPopup(self, evt):
100 win = TestPopup(self, wxSIMPLE_BORDER)
c0c84fa0
RD
101
102 # Show the popup right below or above the button
103 # depending on available screen space...
104 btn = evt.GetEventObject()
105 pos = btn.ClientToScreen( (0,0) )
106 sz = btn.GetSize()
107 win.Position(pos, (0, sz.height))
108
0122b7e3
RD
109 win.Show(true)
110
111
c0c84fa0 112 def OnShowPopupTransient(self, evt):
a57d56d6 113 win = TestTransientPopup(self, wxSIMPLE_BORDER, self.log)
c0c84fa0 114
a57d56d6
RD
115 # Show the popup right below or above the button
116 # depending on available screen space...
c0c84fa0
RD
117 btn = evt.GetEventObject()
118 pos = btn.ClientToScreen( (0,0) )
119 sz = btn.GetSize()
120 win.Position(pos, (0, sz.height))
121
a57d56d6 122 win.Popup()
c0c84fa0
RD
123
124
0122b7e3
RD
125
126#---------------------------------------------------------------------------
127
128def runTest(frame, nb, log):
129 win = TestPanel(nb, log)
130 return win
131
132#---------------------------------------------------------------------------
133
134
135
136
137overview = """\
138"""