diff --git a/etg/toolbar.py b/etg/toolbar.py index 21df6a15..6539e07a 100644 --- a/etg/toolbar.py +++ b/etg/toolbar.py @@ -32,10 +32,6 @@ def run(): # Tweak the parsed meta objects in the module object as needed for # customizing the generated code and docstrings. - module.insertItem(0, etgtools.WigCode("""\ - // forward declarations - class wxToolBarBase; - """)) # Use wxPyUserData for the clientData values instead of a plain wxObject def _fixClientData(c): @@ -49,8 +45,21 @@ def run(): c = module.find('wxToolBarToolBase') assert isinstance(c, etgtools.ClassDef) c.abstract = True + tools.removeVirtuals(c) _fixClientData(c) + # Switch all wxToolBarBase to wxToolBar + for item in c.allItems(): + if isinstance(item, etgtools.ParamDef) and item.name == 'tbar': + item.type = 'wxToolBar*' + + c.find('GetToolBar').ignore() + c.addCppMethod('wxToolBar*', 'GetToolBar', '()', + doc="Return the toolbar this tool is a member of.", + body="""\ + return (wxToolBar*)self->GetToolBar(); + """) + gcd = c.find('GetClientData') gcd.type = 'wxPyUserData*' gcd.setCppCode('return dynamic_cast(self->GetClientData());') diff --git a/etg/toolbook.py b/etg/toolbook.py index 2384b83f..7dd24c86 100644 --- a/etg/toolbook.py +++ b/etg/toolbook.py @@ -38,6 +38,13 @@ def run(): tools.fixWindowClass(c) tools.fixBookctrlClass(c) + c.find('GetToolBar').ignore() + c.addCppMethod('wxToolBar*', 'GetToolBar', '()', + doc="Return the toolbar used for page selection.", + body="""\ + return (wxToolBar*)self->GetToolBar(); + """) + module.addPyCode("""\ EVT_TOOLBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_TOOLBOOK_PAGE_CHANGED, 1 ) EVT_TOOLBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_TOOLBOOK_PAGE_CHANGING, 1 ) diff --git a/unittests/test_toolbar.py b/unittests/test_toolbar.py index 32ce077c..feb3dfd1 100644 --- a/unittests/test_toolbar.py +++ b/unittests/test_toolbar.py @@ -108,6 +108,16 @@ class toolbar_Tests(wtc.WidgetTestCase): tool.Style tool.ToolBar + + def test_toolbarTools2(self): + tb = self.frame.CreateToolBar() + tools = self._populateToolBar(tb) + tool = tools[0] + self.assertEqual(tool.GetToolBar(), tb) + + tool = tb.FindById(tools[1].GetId()) + self.assertEqual(tool.GetToolBar(), tb) + #--------------------------------------------------------------------------- diff --git a/unittests/test_toolbook.py b/unittests/test_toolbook.py index 6a2f9b7f..172bc0ff 100644 --- a/unittests/test_toolbook.py +++ b/unittests/test_toolbook.py @@ -41,6 +41,8 @@ class toolbook_Tests(wtc.WidgetTestCase): book.AddPage(wx.Panel(book), 'three', imageId=2) book.AddPage(wx.Panel(book), 'four', imageId=3) + book.GetToolBar() + self.myYield()