diff --git a/etg/_html.py b/etg/_html.py index 9aa3d96e..65f65ab5 100644 --- a/etg/_html.py +++ b/etg/_html.py @@ -39,6 +39,8 @@ INCLUDES = [ 'helpdlg', 'helpwnd', 'helpctrl', + + 'htmllbox', ] diff --git a/etg/htmllbox.py b/etg/htmllbox.py new file mode 100644 index 00000000..24b9a495 --- /dev/null +++ b/etg/htmllbox.py @@ -0,0 +1,84 @@ +#--------------------------------------------------------------------------- +# Name: etg/htmllbox.py +# Author: Robin Dunn +# +# Created: 18-Mar-2013 +# Copyright: (c) 2013 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_html" +NAME = "htmllbox" # Base name of the file to generate to for this script +DOCSTRING = "" + +# The classes and/or the basename of the Doxygen XML files to be processed by +# this script. +ITEMS = [ "wxHtmlListBox", + "wxSimpleHtmlListBox", + ] + +#--------------------------------------------------------------------------- + +def run(): + # Parse the XML file(s) building a collection of Extractor objects + module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING) + etgtools.parseDoxyXML(module, ITEMS) + + #----------------------------------------------------------------- + # Tweak the parsed meta objects in the module object as needed for + # customizing the generated code and docstrings. + + c = module.find('wxHtmlListBox') + assert isinstance(c, etgtools.ClassDef) + tools.fixWindowClass(c, False, False) + tools.addWindowVirtuals(c) + + module.addGlobalStr('wxHtmlListBoxNameStr', c) + + # We only need one of these + c.find('GetFileSystem').ignore() + + # let sip know that these pure virtuals have been implemented in this class + c.addItem(etgtools.WigCode("""\ + protected: + virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const; + virtual wxCoord OnMeasureItem(size_t n) const; + """)) + + + c = module.find('wxSimpleHtmlListBox') + tools.fixWindowClass(c) + + # ignore the ctor and Create method taking the C array + c.find('wxSimpleHtmlListBox').findOverload('int n').ignore() + c.find('Create').findOverload('int n').ignore() + + c.find('wxSimpleHtmlListBox.choices').default = 'wxArrayString()' + c.find('Create.choices').default = 'wxArrayString()' + + # let sip know that these pure virtuals have been implemented in this class + c.addItem(etgtools.WigCode("""\ + virtual unsigned int GetCount() const; + virtual wxString GetString(unsigned int n) const; + virtual void SetString(unsigned int n, const wxString & string); + virtual void SetSelection(int n); + virtual int GetSelection() const; + + protected: + virtual wxString OnGetItem(size_t n) const; + """)) + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/unittests/test_htmllbox.py b/unittests/test_htmllbox.py new file mode 100644 index 00000000..144868b7 --- /dev/null +++ b/unittests/test_htmllbox.py @@ -0,0 +1,29 @@ +import imp_unittest, unittest +import wtc +import wx +import wx.html + +#--------------------------------------------------------------------------- + +class htmllbox_Tests(wtc.WidgetTestCase): + + def test_htmllbox1(self): + lb = wx.html.SimpleHtmlListBox(self.frame, choices=['one', 'two', 'three']) + + def test_htmllbox2(self): + lb = wx.html.SimpleHtmlListBox() + lb.Create(self.frame, choices=['one', 'two', 'three']) + + def test_htmllbox3(self): + class MyHtmlListBox(wx.html.HtmlListBox): + def OnGetItem(self, n): + return 'this is item %d' % n + + lb = MyHtmlListBox(self.frame) + lb.SetItemCount(15) + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main()