From c8000995b55c058d1b3f5b0e01ff132a54c3e834 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 4 Feb 2004 23:38:38 +0000 Subject: [PATCH] You can now make menu items without IDs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/demo/Main.py | 26 ++++++++++++-------------- wxPython/docs/MigrationGuide.txt | 30 ++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 52f30c3176..909b65de18 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -489,10 +489,9 @@ class wxPythonDemo(wx.Frame): # Make a File menu self.mainmenu = wx.MenuBar() menu = wx.Menu() - exitID = wx.NewId() - menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!') - self.Bind(wx.EVT_MENU, self.OnFileExit, id=exitID) - wx.App_SetMacExitMenuItemId(exitID) + item = menu.Append(-1, 'E&xit\tAlt-X', 'Get the heck outta here!') + self.Bind(wx.EVT_MENU, self.OnFileExit, item) + wx.App_SetMacExitMenuItemId(item.GetId()) self.mainmenu.Append(menu, '&File') # Make a Demo menu @@ -500,9 +499,8 @@ class wxPythonDemo(wx.Frame): for item in _treeList: submenu = wx.Menu() for childItem in item[1]: - mID = wx.NewId() - submenu.Append(mID, childItem) - self.Bind(wx.EVT_MENU, self.OnDemoMenu, id=mID) + mi = submenu.Append(-1, childItem) + self.Bind(wx.EVT_MENU, self.OnDemoMenu, mi) menu.AppendMenu(wx.NewId(), item[0], submenu) self.mainmenu.Append(menu, '&Demo') @@ -512,14 +510,14 @@ class wxPythonDemo(wx.Frame): findID = wx.NewId() findnextID = wx.NewId() menu = wx.Menu() - menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code') - menu.Append(findnextID, 'Find &Next\tF3', 'Find Next') + findItem = menu.Append(-1, '&Find\tCtrl-F', 'Find in the Demo Code') + findnextItem = menu.Append(-1, 'Find &Next\tF3', 'Find Next') menu.AppendSeparator() - menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!') - wx.App_SetMacAboutMenuItemId(helpID) - self.Bind(wx.EVT_MENU, self.OnHelpAbout, id=helpID) - self.Bind(wx.EVT_MENU, self.OnHelpFind, id=findID) - self.Bind(wx.EVT_MENU, self.OnFindNext, id=findnextID) + helpItem = menu.Append(-1, '&About\tCtrl-H', 'wxPython RULES!!!') + wx.App_SetMacAboutMenuItemId(helpItem.GetId()) + self.Bind(wx.EVT_MENU, self.OnHelpAbout, helpItem) + self.Bind(wx.EVT_MENU, self.OnHelpFind, findItem) + self.Bind(wx.EVT_MENU, self.OnFindNext, findnextItem) self.Bind(wx.EVT_COMMAND_FIND, self.OnFind) self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind) self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose) diff --git a/wxPython/docs/MigrationGuide.txt b/wxPython/docs/MigrationGuide.txt index c727915950..c2a63f8326 100644 --- a/wxPython/docs/MigrationGuide.txt +++ b/wxPython/docs/MigrationGuide.txt @@ -107,11 +107,31 @@ Some examples of its use:: self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton) - self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT) - -I hope to be able to remove the need for using IDs even for menu -events too... + self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) + + +The wx.Menu methods that add items to a wx.Menu have been modified +such that they return a reference to the wx.MenuItem that was created. +Additionally menu items and toolbar items have been modified to +automatically generate a new ID if -1 is given, similar to using -1 +with window classess. This means that you can create menu or toolbar +items and event bindings without having to predefine a unique menu ID, +although you still can use IDs just like before if you want. For +example, these are all equivallent other than ID values:: + + 1. + item = menu.Append(-1, "E&xit", "Terminate the App") + self.Bind(wx.EVT_MENU, self.OnExit, item) + + 2. + item = menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App") + self.Bind(wx.EVT_MENU, self.OnExit, item) + 3. + menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App") + self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) + + If you create your own custom event types and EVT_* functions, and you want to be able to use them with the Bind method above then you should change your EVT_* to be an instance of wxPyEventBinder instead of a @@ -132,6 +152,8 @@ number of IDs that are needed to be passed to Connect. + + The wx Namespace ---------------- -- 2.47.2