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
This commit is contained in:
Robin Dunn
2004-02-04 23:38:38 +00:00
parent 67aaa6080a
commit c8000995b5
2 changed files with 38 additions and 18 deletions

View File

@@ -489,10 +489,9 @@ class wxPythonDemo(wx.Frame):
# Make a File menu # Make a File menu
self.mainmenu = wx.MenuBar() self.mainmenu = wx.MenuBar()
menu = wx.Menu() menu = wx.Menu()
exitID = wx.NewId() item = menu.Append(-1, 'E&xit\tAlt-X', 'Get the heck outta here!')
menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!') self.Bind(wx.EVT_MENU, self.OnFileExit, item)
self.Bind(wx.EVT_MENU, self.OnFileExit, id=exitID) wx.App_SetMacExitMenuItemId(item.GetId())
wx.App_SetMacExitMenuItemId(exitID)
self.mainmenu.Append(menu, '&File') self.mainmenu.Append(menu, '&File')
# Make a Demo menu # Make a Demo menu
@@ -500,9 +499,8 @@ class wxPythonDemo(wx.Frame):
for item in _treeList: for item in _treeList:
submenu = wx.Menu() submenu = wx.Menu()
for childItem in item[1]: for childItem in item[1]:
mID = wx.NewId() mi = submenu.Append(-1, childItem)
submenu.Append(mID, childItem) self.Bind(wx.EVT_MENU, self.OnDemoMenu, mi)
self.Bind(wx.EVT_MENU, self.OnDemoMenu, id=mID)
menu.AppendMenu(wx.NewId(), item[0], submenu) menu.AppendMenu(wx.NewId(), item[0], submenu)
self.mainmenu.Append(menu, '&Demo') self.mainmenu.Append(menu, '&Demo')
@@ -512,14 +510,14 @@ class wxPythonDemo(wx.Frame):
findID = wx.NewId() findID = wx.NewId()
findnextID = wx.NewId() findnextID = wx.NewId()
menu = wx.Menu() menu = wx.Menu()
menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code') findItem = menu.Append(-1, '&Find\tCtrl-F', 'Find in the Demo Code')
menu.Append(findnextID, 'Find &Next\tF3', 'Find Next') findnextItem = menu.Append(-1, 'Find &Next\tF3', 'Find Next')
menu.AppendSeparator() menu.AppendSeparator()
menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!') helpItem = menu.Append(-1, '&About\tCtrl-H', 'wxPython RULES!!!')
wx.App_SetMacAboutMenuItemId(helpID) wx.App_SetMacAboutMenuItemId(helpItem.GetId())
self.Bind(wx.EVT_MENU, self.OnHelpAbout, id=helpID) self.Bind(wx.EVT_MENU, self.OnHelpAbout, helpItem)
self.Bind(wx.EVT_MENU, self.OnHelpFind, id=findID) self.Bind(wx.EVT_MENU, self.OnHelpFind, findItem)
self.Bind(wx.EVT_MENU, self.OnFindNext, id=findnextID) self.Bind(wx.EVT_MENU, self.OnFindNext, findnextItem)
self.Bind(wx.EVT_COMMAND_FIND, self.OnFind) self.Bind(wx.EVT_COMMAND_FIND, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind) self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose) self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose)

View File

@@ -107,11 +107,31 @@ Some examples of its use::
self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton) self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton)
self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT) self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
I hope to be able to remove the need for using IDs even for menu
events too...
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 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 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 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 The wx Namespace
---------------- ----------------