X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3115ef3e56082b961af85a06955b50ddf0c5738a..42d11c8e66149da692edaddcffc4c67cfa7ca496:/wxPython/demo/wxMenu.py diff --git a/wxPython/demo/wxMenu.py b/wxPython/demo/wxMenu.py index 223a22270e..c209977197 100644 --- a/wxPython/demo/wxMenu.py +++ b/wxPython/demo/wxMenu.py @@ -7,6 +7,8 @@ from wxPython.wx import * +import time + #------------------------------------------------------------------- class MyFrame(wxFrame): @@ -19,16 +21,22 @@ class MyFrame(wxFrame): self.CreateStatusBar() self.SetStatusText("This is the statusbar") + tc = wxTextCtrl(self, -1, """ +A bunch of bogus menus have been created for this frame. You +can play around with them to see how they behave and then +check the source for this sample to see how to implement them. +""", style=wxTE_READONLY|wxTE_MULTILINE) + # Prepare the menu bar menuBar = wxMenuBar() # 1st menu from left menu1 = wxMenu() - menu1.Append(101, "Mercury", "This the text in the Statusbar") - menu1.Append(102, "Venus", "") - menu1.Append(103, "Earth", "You may select Earth too") + menu1.Append(101, "&Mercury", "This the text in the Statusbar") + menu1.Append(102, "&Venus", "") + menu1.Append(103, "&Earth", "You may select Earth too") menu1.AppendSeparator() - menu1.Append(104, "Exit", "Close this frame") + menu1.Append(104, "&Close", "Close this frame") # Add menu to the menu bar menuBar.Append(menu1, "&Planets") @@ -62,18 +70,28 @@ class MyFrame(wxFrame): menu5 = wxMenu() menu5.Append(501, "Interesting thing\tCtrl+A", "Note the shortcut!") - menu5.AppendSeparator() menu5.Append(502, "Hello\tShift+H") + menu5.AppendSeparator() + menu5.Append(503, "remove the submenu") + menu6 = wxMenu() + menu6.Append(601, "Submenu Item") + menu5.AppendMenu(504, "submenu", menu6) + menu5.Append(505, "remove this menu") + menu5.Append(506, "this is updated") + menu5.Append(507, "insert after this...") + menu5.Append(508, "...and before this") menuBar.Append(menu5, "&Fun") self.SetMenuBar(menuBar) # Menu events + EVT_MENU_HIGHLIGHT_ALL(self, self.OnMenuHighlight) + EVT_MENU(self, 101, self.Menu101) EVT_MENU(self, 102, self.Menu102) EVT_MENU(self, 103, self.Menu103) - EVT_MENU(self, 104, self.OnCloseWindow) + EVT_MENU(self, 104, self.CloseWindow) EVT_MENU(self, 201, self.Menu201) EVT_MENU(self, 202, self.Menu202) @@ -91,9 +109,25 @@ class MyFrame(wxFrame): EVT_MENU(self, 501, self.Menu501) EVT_MENU(self, 502, self.Menu502) + EVT_MENU(self, 503, self.TestRemove) + EVT_MENU(self, 505, self.TestRemove2) + EVT_MENU(self, 507, self.TestInsert) + EVT_MENU(self, 508, self.TestInsert) + + EVT_UPDATE_UI(wxGetApp(), 506, self.TestUpdateUI) # Methods + def OnMenuHighlight(self, event): + # Show how to get menu item imfo from this event handler + id = event.GetMenuId() + item = self.GetMenuBar().FindItemById(id) + text = item.GetText() + help = item.GetHelp() + #print text, help + event.Skip() # but in this case just call Skip so the default is done + + def Menu101(self, event): self.log.write('Welcome to Mercury\n') @@ -103,8 +137,8 @@ class MyFrame(wxFrame): def Menu103(self, event): self.log.write('Welcome to the Earth\n') - def OnCloseWindow(self, event): - self.Destroy() + def CloseWindow(self, event): + self.Close() def Menu201(self, event): self.log.write('Chemical element number 1\n') @@ -140,12 +174,53 @@ class MyFrame(wxFrame): def Menu502(self, event): self.log.write('Hello from Jean-Michel\n') + + def TestRemove(self, evt): + mb = self.GetMenuBar() + submenuItem = mb.FindItemById(601) + if not submenuItem: + return + submenu = submenuItem.GetMenu() + menu = submenu.GetParent() + + #menu.Remove(504) # works + menu.RemoveItem(mb.FindItemById(504)) # this also works + #menu.RemoveItem(submenuItem) # doesn't work, as expected since submenuItem is not on menu + + + def TestRemove2(self, evt): + mb = self.GetMenuBar() + mb.Remove(4) + + + def TestUpdateUI(self, evt): + text = time.ctime() + evt.SetText(text) + + + def TestInsert(self, evt): + # get the menu + mb = self.GetMenuBar() + menuItem = mb.FindItemById(507) + menu = menuItem.GetMenu() + + ID = wxNewId() + ##menu.Insert(9, ID, "NewItem " + str(ID)) + item = wxMenuItem(menu) + item.SetId(ID) + item.SetText("NewItem " + str(ID)) + menu.InsertItem(9, item) + + + #------------------------------------------------------------------- +wxRegisterId(10000) + def runTest(frame, nb, log): win = MyFrame(frame, -1, log) frame.otherWin = win - win.Show(true) + win.Show(True) #-------------------------------------------------------------------