diff --git a/TODO.txt b/TODO.txt index 9af53091..16541c82 100644 --- a/TODO.txt +++ b/TODO.txt @@ -127,8 +127,6 @@ other dev stuff * Add _propdlg module - * Add _richtext module - * Add _aui module ?? (or go with only agw aui) * Add _ribbon module diff --git a/etg/_richtext.py b/etg/_richtext.py new file mode 100644 index 00000000..cb920490 --- /dev/null +++ b/etg/_richtext.py @@ -0,0 +1,66 @@ +#--------------------------------------------------------------------------- +# Name: etg/_html.py +# Author: Robin Dunn +# +# Created: 27-Oct-2012 +# Copyright: (c) 2013 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools +from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef + +PACKAGE = "wx" +MODULE = "_richtext" +NAME = "_richtext" # 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 = [ ] + + +# The list of other ETG scripts and back-end generator modules that are +# included as part of this module. These should all be items that are put in +# the wxWidgets "html" library in a multi-lib build. +INCLUDES = [ + 'richtextbuffer', + ] + + +# Separate the list into those that are generated from ETG scripts and the +# rest. These lists can be used from the build scripts to get a list of +# sources and/or additional dependencies when building this extension module. +ETGFILES = ['etg/%s.py' % NAME] + tools.getEtgFiles(INCLUDES) +DEPENDS = tools.getNonEtgFiles(INCLUDES) +OTHERDEPS = [ ] + + +#--------------------------------------------------------------------------- + +def run(): + # Parse the XML file(s) building a collection of Extractor objects + module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING) + etgtools.parseDoxyXML(module, ITEMS) + module.check4unittest = False + + #----------------------------------------------------------------- + # Tweak the parsed meta objects in the module object as needed for + # customizing the generated code and docstrings. + + module.addHeaderCode('#include ') + module.addImport('_core') + module.addPyCode("import wx", order=10) + module.addInclude(INCLUDES) + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + run() diff --git a/etg/richtextbuffer.py b/etg/richtextbuffer.py new file mode 100644 index 00000000..1cb108a1 --- /dev/null +++ b/etg/richtextbuffer.py @@ -0,0 +1,87 @@ +#--------------------------------------------------------------------------- +# Name: etg/richtextbuffer.py +# Author: Robin Dunn +# +# Created: 23-Mar-2013 +# Copyright: (c) 2013 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_richtext" +NAME = "richtextbuffer" # 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 = [ "wxTextAttrDimension", + "wxTextAttrDimensions", + "wxTextAttrSize", + "wxTextAttrDimensionConverter", + "wxTextAttrBorder", + "wxTextAttrBorders", + "wxTextBoxAttr", + "wxRichTextAttr", + "wxRichTextProperties", + "wxRichTextFontTable", + "wxRichTextRange", + "wxRichTextSelection", + "wxRichTextDrawingContext", + "wxRichTextObject", + "wxRichTextCompositeObject", + "wxRichTextParagraphLayoutBox", + "wxRichTextBox", + "wxRichTextField", + "wxRichTextFieldType", + "wxRichTextFieldTypeStandard", + "wxRichTextLine", + "wxRichTextParagraph", + "wxRichTextPlainText", + "wxRichTextImageBlock", + "wxRichTextImage", + "wxRichTextBuffer", + "wxRichTextCell", + "wxRichTextTable", + "wxRichTextObjectAddress", + "wxRichTextCommand", + "wxRichTextAction", + "wxRichTextFileHandler", + "wxRichTextPlainTextHandler", + "wxRichTextDrawingHandler", + "wxRichTextBufferDataObject", + "wxRichTextRenderer", + "wxRichTextStdRenderer", + + ] + +#--------------------------------------------------------------------------- + +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('wxTextAttrDimension') + assert isinstance(c, etgtools.ClassDef) + c.find('SetValue').findOverload('units').ignore() + + module.addItem( + tools.wxArrayWrapperTemplate('wxRichTextRangeArray', 'wxRichTextRange', module)) + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/unittests/test_richtextbuffer.py b/unittests/test_richtextbuffer.py new file mode 100644 index 00000000..e29f21d8 --- /dev/null +++ b/unittests/test_richtextbuffer.py @@ -0,0 +1,16 @@ +import imp_unittest, unittest +import wtc +import wx + +#--------------------------------------------------------------------------- + +class richtextbuffer_Tests(wtc.WidgetTestCase): + + # TODO: Remove this test and add real ones. + def test_richtextbuffer1(self): + self.fail("Unit tests for richtextbuffer not implemented yet.") + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/wscript b/wscript index 1757d890..b0336175 100644 --- a/wscript +++ b/wscript @@ -128,6 +128,9 @@ def configure(conf): _copyEnvGroup(conf.env, '_WX', '_WXXRC') conf.env.LIB_WXXRC += cfg.makeLibName('xrc') + _copyEnvGroup(conf.env, '_WX', '_WXRICHTEXT') + conf.env.LIB_WXRICHTEXT += cfg.makeLibName('richtext') + # ** Add code for new modules here @@ -193,6 +196,10 @@ def configure(conf): args='--cxxflags --libs xrc,xml,core,net' + rpath, uselib_store='WXXRC', mandatory=True) + conf.check_cfg(path=conf.options.wx_config, package='', + args='--cxxflags --libs richtext,core,net' + rpath, + uselib_store='WXRICHTEXT', mandatory=True) + # ** Add code for new modules here @@ -516,6 +523,16 @@ def build(bld): makeExtCopyRule(bld, '_xrc') + etg = loadETG('etg/_richtext.py') + bld(features = 'c cxx cxxshlib pyext', + target = makeTargetName(bld, '_richtext'), + source = getEtgSipCppFiles(etg) + rc, + uselib = 'WXRICHTEXT WXPY', + ) + makeExtCopyRule(bld, '_richtext') + + + # ** Add code for new modules here