File: PopupMenu.py

package info (click to toggle)
wxwindows2.4 2.4.5.1.1
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 59,920 kB
  • ctags: 97,489
  • sloc: cpp: 610,307; ansic: 111,957; python: 103,357; makefile: 3,676; sh: 3,391; lex: 192; yacc: 128; xml: 95; pascal: 74
file content (148 lines) | stat: -rw-r--r-- 4,414 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

from wxPython.wx import *
import images

#----------------------------------------------------------------------

text = """\

Right-click on the panel (or Ctrl-click on the Mac) to show a popup
menu.  Then look at the code for this sample.  Notice how the
PopupMenu method is similar to the ShowModal method of a wxDialog in
that it doesn't return until the popup menu has been dismissed.  The
event handlers for the popup menu items can either be attached to the
menu itself, or to the window that invokes PopupMenu.
"""

#----------------------------------------------------------------------

class TestPanel(wxPanel):
    def __init__(self, parent, log):
        self.log = log
        wxPanel.__init__(self, parent, -1)
        box = wxBoxSizer(wxVERTICAL)

        # Make and layout the controls
        fs = self.GetFont().GetPointSize()
        bf = wxFont(fs+4, wxSWISS, wxNORMAL, wxBOLD)
        nf = wxFont(fs+2, wxSWISS, wxNORMAL, wxNORMAL)

        t = wxStaticText(self, -1, "PopupMenu")
        t.SetFont(bf)
        box.Add(t, 0, wxCENTER|wxALL, 5)

        box.Add(wxStaticLine(self, -1), 0, wxEXPAND)
        box.Add(10,20)

        t = wxStaticText(self, -1, text)
        t.SetFont(nf)
        box.Add(t, 0, wxCENTER|wxALL, 5)

        self.SetSizer(box)

        EVT_RIGHT_UP(self, self.OnRightClick)


    def OnRightClick(self, event):
        self.log.WriteText("OnRightClick\n")

        # only do this part the first time so the events are only bound once
        if not hasattr(self, "popupID1"):
            self.popupID1 = wxNewId()
            self.popupID2 = wxNewId()
            self.popupID3 = wxNewId()
            self.popupID4 = wxNewId()
            self.popupID5 = wxNewId()
            self.popupID6 = wxNewId()
            self.popupID7 = wxNewId()
            self.popupID8 = wxNewId()
            self.popupID9 = wxNewId()
            EVT_MENU(self, self.popupID1, self.OnPopupOne)
            EVT_MENU(self, self.popupID2, self.OnPopupTwo)
            EVT_MENU(self, self.popupID3, self.OnPopupThree)
            EVT_MENU(self, self.popupID4, self.OnPopupFour)
            EVT_MENU(self, self.popupID5, self.OnPopupFive)
            EVT_MENU(self, self.popupID6, self.OnPopupSix)
            EVT_MENU(self, self.popupID7, self.OnPopupSeven)
            EVT_MENU(self, self.popupID8, self.OnPopupEIght)
            EVT_MENU(self, self.popupID9, self.OnPopupNine)

        # make a menu
        menu = wxMenu()
        # Show how to put an icon in the menu
        item = wxMenuItem(menu, self.popupID1,"One")
        item.SetBitmap(images.getSmilesBitmap())
        menu.AppendItem(item)
        # add some other items
        menu.Append(self.popupID2, "Two")
        menu.Append(self.popupID3, "Three")
        menu.Append(self.popupID4, "Four")
        menu.Append(self.popupID5, "Five")
        menu.Append(self.popupID6, "Six")
        # make a submenu
        sm = wxMenu()
        sm.Append(self.popupID8, "sub item 1")
        sm.Append(self.popupID9, "sub item 1")
        menu.AppendMenu(self.popupID7, "Test Submenu", sm)


        # Popup the menu.  If an item is selected then its handler
        # will be called before PopupMenu returns.
        self.PopupMenu(menu, event.GetPosition())
        menu.Destroy()


    def OnPopupOne(self, event):
        self.log.WriteText("Popup one\n")

    def OnPopupTwo(self, event):
        self.log.WriteText("Popup two\n")

    def OnPopupThree(self, event):
        self.log.WriteText("Popup three\n")

    def OnPopupFour(self, event):
        self.log.WriteText("Popup four\n")

    def OnPopupFive(self, event):
        self.log.WriteText("Popup five\n")

    def OnPopupSix(self, event):
        self.log.WriteText("Popup six\n")

    def OnPopupSeven(self, event):
        self.log.WriteText("Popup seven\n")

    def OnPopupEIght(self, event):
        self.log.WriteText("Popup eight\n")

    def OnPopupNine(self, event):
        self.log.WriteText("Popup nine\n")





#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

#----------------------------------------------------------------------



overview = """<html><body>
<h2><center>PopupMenu</center></h2>
""" + text + """
</body></html>
"""



if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])])