diff --git a/etg/_core.py b/etg/_core.py index 4298bc34..8964beba 100644 --- a/etg/_core.py +++ b/etg/_core.py @@ -50,7 +50,7 @@ INCLUDES = [ 'defs', 'position', 'uiaction', - 'stream', + 'stream', 'filesys', 'colour', 'image', diff --git a/etg/defs.py b/etg/defs.py index d14982e1..0d2f41d1 100644 --- a/etg/defs.py +++ b/etg/defs.py @@ -73,6 +73,7 @@ def run(): class wxImageHandler; class wxToolBar; class wxExecuteEnv; + class wxDateTime; """)) diff --git a/etg/filesys.py b/etg/filesys.py new file mode 100644 index 00000000..51f29272 --- /dev/null +++ b/etg/filesys.py @@ -0,0 +1,81 @@ +#--------------------------------------------------------------------------- +# Name: etg/filesys.py +# Author: Robin Dunn +# +# Created: 25-Feb-2012 +# Copyright: (c) 2012 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_core" +NAME = "filesys" # 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 = [ "wxFileSystem", + "wxFSFile", + "wxFileSystemHandler", + "wxMemoryFSHandler", + "wxArchiveFSHandler", + "wxFilterFSHandler", + "wxInternetFSHandler", + ] + +#--------------------------------------------------------------------------- + +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('wxFileSystem') + assert isinstance(c, etgtools.ClassDef) + c.addPrivateCopyCtor() + c.find('AddHandler.handler').transfer = True + c.find('RemoveHandler').transferBack = True + + m = c.find('URLToFileName') + m.type = 'wxString' + m.setCppCode("""\ + wxFileName fname = wxFileSystem::URLToFileName(*url); + return new wxString(fname.GetFullPath()); + """) + + fileNameTypedef = etgtools.TypedefDef(type='wxString', name='wxFileName', noTypeName=True) + module.insertItemBefore(c, fileNameTypedef) + + c = module.find('wxArchiveFSHandler') + c.addPrivateCopyCtor(); + module.addPyCode('ZipFSHandler = wx.deprecated(ArchiveFSHandler)') + + c = module.find('wxFSFile') + c.addPrivateCopyCtor(); + + c = module.find('wxFilterFSHandler') + c.addPrivateCopyCtor(); + + c = module.find('wxInternetFSHandler') + c.addPrivateCopyCtor(); + + + c = module.find('wxMemoryFSHandler') + c.addPrivateCopyCtor(); + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/unittests/test_filesys.py b/unittests/test_filesys.py new file mode 100644 index 00000000..9f82c5ca --- /dev/null +++ b/unittests/test_filesys.py @@ -0,0 +1,31 @@ +import imp_unittest, unittest +import wtc +import wx +import os +from cStringIO import StringIO + + +pngFile = os.path.join(os.path.dirname(__file__), 'toucan.png') + +#--------------------------------------------------------------------------- + +class filesys_Tests(wtc.WidgetTestCase): + + def test_filesysClasses(self): + # For now just test that the expected classes exist. + wx.FileSystem + wx.FSFile + wx.FileSystemHandler + wx.MemoryFSHandler + wx.ArchiveFSHandler + wx.FilterFSHandler + wx.InternetFSHandler + wx.ZipFSHandler + + # TODO: Add more tests. + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main()