diff --git a/etg/_core.py b/etg/_core.py index 5a60eadb..dad5167b 100644 --- a/etg/_core.py +++ b/etg/_core.py @@ -120,8 +120,8 @@ INCLUDES = [ # base and core stuff 'window', 'validate', 'panel', - 'menu', 'menuitem', + 'menu', 'scrolwin', 'vscroll', diff --git a/etg/menu.py b/etg/menu.py index c20245a1..075de4d0 100644 --- a/etg/menu.py +++ b/etg/menu.py @@ -69,13 +69,34 @@ def run(): c.find('Destroy').findOverload('int').pyName = 'DestroyItem' c.find('Destroy').findOverload('wxMenuItem').pyName = 'DestroyItem' + c.find('FindChildItem.pos').out = True + c.find('FindItem.menu').out = True + c.addCppMethod('wxMenuItem*', 'FindItembyId', '(int id)', isConst=True, + doc="""\ + FindItemById(id) -> MenuItem + + Finds the menu item object associated with the given menu item identifier.""", + body="""\ + return self->FindItem(id);""") + + #----------------------------------------------------------------- c = module.find('wxMenuBar') assert isinstance(c, etgtools.ClassDef) tools.removeVirtuals(c) addTransferAnnotations(c, 'menu') c.find('wxMenuBar').findOverload('wxMenu *menus[], const wxString titles[], long style=0)').ignore() - c.find('FindItem').ignore() + + c.find('FindItem.menu').out = True + c.addCppMethod('wxMenuItem*', 'FindItembyId', '(int id)', isConst=True, + doc="""\ + FindItemById(id) -> MenuItem + + Finds the menu item object associated with the given menu item identifier.""", + body="""\ + return self->FindItem(id);""") + + mac_scmb = c.find('MacSetCommonMenuBar') mac_scmb.setCppCode("""\ #ifdef __WXMAC__ diff --git a/unittests/test_menu.py b/unittests/test_menu.py index 3f5f1601..2ec85691 100644 --- a/unittests/test_menu.py +++ b/unittests/test_menu.py @@ -34,6 +34,15 @@ class menu_Tests(wtc.WidgetTestCase): items = m.GetMenuItems() self.assertTrue(len(items) == 6) + def test_menu3(self): + m = self.makeMenuWithSubmenu() + items = [] + for i in m.GetMenuItems(): + self.assertTrue(isinstance(i, wx.MenuItem)) + items.append(i) + self.assertTrue(len(items) == 6) + + def test_menuBar1(self): mb = wx.MenuBar() for label in "one two three four".split(): @@ -51,6 +60,27 @@ class menu_Tests(wtc.WidgetTestCase): menu, label = menus[0] self.assertTrue(isinstance(menu, wx.Menu)) self.assertTrue(label == 'one') + + + def test_menuBar3(self): + mb = wx.MenuBar() + for label in "one two three four".split(): + m = self.makeMenu() + mb.Append(m, label) + menu = m + item = menu.FindItemByPosition(0) + + i, m = mb.FindItem(item.GetId()) + self.assertTrue(i is item) + self.assertTrue(m is menu) + i = mb.FindItembyId(item.GetId()) + self.assertTrue(i is item) + + i, m = menu.FindItem(item.GetId()) + self.assertTrue(i is item) + self.assertTrue(m is menu) + i = menu.FindItembyId(item.GetId()) + self.assertTrue(i is item) #---------------------------------------------------------------------------