]> git.saurik.com Git - wxWidgets.git/blame_incremental - wxPython/demo/PopupMenu.py
apparently the check for too small rect is needed not only with wxNB_MULTILINE (see...
[wxWidgets.git] / wxPython / demo / PopupMenu.py
... / ...
CommitLineData
1
2import wx
3
4import images
5
6#----------------------------------------------------------------------
7
8text = """\
9
10Right-click on any bare area of this panel (or Ctrl-click on the Mac)
11to show a popup menu. Then look at the code for this sample. Notice
12how the PopupMenu method is similar to the ShowModal method of a
13wx.Dialog in that it doesn't return until the popup menu has been
14dismissed. The event handlers for the popup menu items can either be
15attached to the menu itself, or to the window that invokes PopupMenu.
16"""
17
18#----------------------------------------------------------------------
19
20class TestPanel(wx.Panel):
21 def __init__(self, parent, log):
22 self.log = log
23 wx.Panel.__init__(self, parent, -1)
24 box = wx.BoxSizer(wx.VERTICAL)
25
26 # Make and layout the controls
27 fs = self.GetFont().GetPointSize()
28 bf = wx.Font(fs+4, wx.SWISS, wx.NORMAL, wx.BOLD)
29 nf = wx.Font(fs+2, wx.SWISS, wx.NORMAL, wx.NORMAL)
30
31 t = wx.StaticText(self, -1, "PopupMenu")
32 t.SetFont(bf)
33 box.Add(t, 0, wx.CENTER|wx.ALL, 5)
34 self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
35
36
37 box.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
38 box.Add((10,20))
39
40 t = wx.StaticText(self, -1, text)
41 t.SetFont(nf)
42 box.Add(t, 0, wx.CENTER|wx.ALL, 5)
43
44 self.SetSizer(box)
45
46 self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
47
48
49 def OnRightClick(self, event):
50 self.log.WriteText("OnRightClick\n")
51
52 # only do this part the first time so the events are only bound once
53 #
54 # Yet another anternate way to do IDs. Some prefer them up top to
55 # avoid clutter, some prefer them close to the object of interest
56 # for clarity.
57 if not hasattr(self, "popupID1"):
58 self.popupID1 = wx.NewId()
59 self.popupID2 = wx.NewId()
60 self.popupID3 = wx.NewId()
61 self.popupID4 = wx.NewId()
62 self.popupID5 = wx.NewId()
63 self.popupID6 = wx.NewId()
64 self.popupID7 = wx.NewId()
65 self.popupID8 = wx.NewId()
66 self.popupID9 = wx.NewId()
67
68 self.Bind(wx.EVT_MENU, self.OnPopupOne, id=self.popupID1)
69 self.Bind(wx.EVT_MENU, self.OnPopupTwo, id=self.popupID2)
70 self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3)
71 self.Bind(wx.EVT_MENU, self.OnPopupFour, id=self.popupID4)
72 self.Bind(wx.EVT_MENU, self.OnPopupFive, id=self.popupID5)
73 self.Bind(wx.EVT_MENU, self.OnPopupSix, id=self.popupID6)
74 self.Bind(wx.EVT_MENU, self.OnPopupSeven, id=self.popupID7)
75 self.Bind(wx.EVT_MENU, self.OnPopupEight, id=self.popupID8)
76 self.Bind(wx.EVT_MENU, self.OnPopupNine, id=self.popupID9)
77
78 # make a menu
79 menu = wx.Menu()
80 # Show how to put an icon in the menu
81 item = wx.MenuItem(menu, self.popupID1,"One")
82 bmp = images.getSmilesBitmap()
83 item.SetBitmap(bmp)
84 menu.AppendItem(item)
85 # add some other items
86 menu.Append(self.popupID2, "Two")
87 menu.Append(self.popupID3, "Three")
88 menu.Append(self.popupID4, "Four")
89 menu.Append(self.popupID5, "Five")
90 menu.Append(self.popupID6, "Six")
91 # make a submenu
92 sm = wx.Menu()
93 sm.Append(self.popupID8, "sub item 1")
94 sm.Append(self.popupID9, "sub item 1")
95 menu.AppendMenu(self.popupID7, "Test Submenu", sm)
96
97
98 # Popup the menu. If an item is selected then its handler
99 # will be called before PopupMenu returns.
100 self.PopupMenu(menu, event.GetPosition())
101 menu.Destroy()
102
103
104 def OnPopupOne(self, event):
105 self.log.WriteText("Popup one\n")
106
107 def OnPopupTwo(self, event):
108 self.log.WriteText("Popup two\n")
109
110 def OnPopupThree(self, event):
111 self.log.WriteText("Popup three\n")
112
113 def OnPopupFour(self, event):
114 self.log.WriteText("Popup four\n")
115
116 def OnPopupFive(self, event):
117 self.log.WriteText("Popup five\n")
118
119 def OnPopupSix(self, event):
120 self.log.WriteText("Popup six\n")
121
122 def OnPopupSeven(self, event):
123 self.log.WriteText("Popup seven\n")
124
125 def OnPopupEight(self, event):
126 self.log.WriteText("Popup eight\n")
127
128 def OnPopupNine(self, event):
129 self.log.WriteText("Popup nine\n")
130
131
132
133
134
135#----------------------------------------------------------------------
136
137def runTest(frame, nb, log):
138 win = TestPanel(nb, log)
139 return win
140
141#----------------------------------------------------------------------
142
143
144
145overview = """<html><body>
146<h2><center>PopupMenu</center></h2>
147""" + text + """
148</body></html>
149"""
150
151
152
153if __name__ == '__main__':
154 import sys,os
155 import run
156 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
157