diff --git a/docs/sphinx/itemToModuleMap.json b/docs/sphinx/itemToModuleMap.json index 78aa1623..e8286fdc 100644 --- a/docs/sphinx/itemToModuleMap.json +++ b/docs/sphinx/itemToModuleMap.json @@ -8,6 +8,7 @@ "AC_DEFAULT_STYLE":"wx.adv.", "AC_NO_AUTORESIZE":"wx.adv.", "ADJUST_MINSIZE":"wx.", +"AEDIALOG_STYLE":"wx.propgrid.", "ALIGN_BOTTOM":"wx.", "ALIGN_CENTER":"wx.", "ALIGN_CENTER_HORIZONTAL":"wx.", @@ -131,6 +132,7 @@ "AppTraits":"wx.", "Architecture":"wx.", "ArchiveFSHandler":"wx.", +"ArrayStringProperty":"wx.propgrid.", "ArtClient":"wx.", "ArtID":"wx.", "ArtProvider":"wx.", @@ -279,6 +281,7 @@ "BookCtrl":"wx.", "BookCtrlBase":"wx.", "BookCtrlEvent":"wx.", +"BoolProperty":"wx.propgrid.", "Border":"wx.", "Bottom":"wx.", "BoxSizer":"wx.", @@ -475,6 +478,8 @@ "ColourPickerCtrlNameStr":"wx.", "ColourPickerEvent":"wx.", "ColourPickerWidgetNameStr":"wx.", +"ColourProperty":"wx.propgrid.", +"ColourPropertyValue":"wx.propgrid.", "ComboBox":"wx.", "ComboBoxNameStr":"wx.", "ComboCtrl":"wx.", @@ -493,11 +498,13 @@ "Control":"wx.", "ControlNameStr":"wx.", "ControlWithItems":"wx.", +"ConversionFlags":"wx.propgrid.ArrayStringProperty.", "Coord":"wx.", "Country":"wx.DateTime.", "CreateDynamicObject":"wx.", "CreateFileTipProvider":"wx.adv.", "Cursor":"wx.", +"CursorProperty":"wx.propgrid.", "CustomDataObject":"wx.", "DATAVIEW_CELL_ACTIVATABLE":"wx.dataview.", "DATAVIEW_CELL_EDITABLE":"wx.dataview.", @@ -631,6 +638,7 @@ "DataViewVirtualListModel":"wx.dataview.", "DateEvent":"wx.adv.", "DatePickerCtrl":"wx.adv.", +"DateProperty":"wx.propgrid.", "DateSpan":"wx.", "DateTime":"wx.", "DateTimeFromDMY":"wx.", @@ -659,6 +667,7 @@ "DirPickerCtrlNameStr":"wx.", "DirPickerWidgetLabel":"wx.", "DirPickerWidgetNameStr":"wx.", +"DirProperty":"wx.propgrid.", "DirSelector":"wx.", "DirSelectorPromptStr":"wx.", "Direction":"wx.DataObject.", @@ -719,6 +728,7 @@ "EXPAND":"wx.", "EXTEND_LAST_ON_EACH_LINE":"wx.", "Edge":"wx.", +"EditEnumProperty":"wx.propgrid.", "EditableListBox":"wx.adv.", "EditableListBoxNameStr":"wx.adv.", "EditableStateFlags":"wx.propgrid.PropertyGridInterface.", @@ -734,6 +744,7 @@ "Endianness":"wx.", "Entry":"wx.", "EntryType":"wx.ConfigBase.", +"EnumProperty":"wx.propgrid.", "EnvVariableHashMap":"wx.", "EraseEvent":"wx.", "Event":"wx.", @@ -975,6 +986,7 @@ "FilePickerCtrlNameStr":"wx.", "FilePickerWidgetLabel":"wx.", "FilePickerWidgetNameStr":"wx.", +"FileProperty":"wx.propgrid.", "FileSelector":"wx.", "FileSelectorDefaultWildcardStr":"wx.", "FileSelectorEx":"wx.", @@ -999,10 +1011,12 @@ "FindWindowById":"wx.", "FindWindowByLabel":"wx.", "FindWindowByName":"wx.", +"FlagsProperty":"wx.propgrid.", "FlexGridSizer":"wx.", "FlexSizerGrowMode":"wx.", "Float32":"wx.", "Float64":"wx.", +"FloatProperty":"wx.propgrid.", "FloodFillStyle":"wx.", "FocusEvent":"wx.", "Font":"wx.", @@ -1020,6 +1034,7 @@ "FontPickerCtrlNameStr":"wx.", "FontPickerEvent":"wx.", "FontPickerWidgetNameStr":"wx.", +"FontProperty":"wx.propgrid.", "FontStyle":"wx.", "FontSymbolicSize":"wx.", "FontWeight":"wx.", @@ -1592,6 +1607,7 @@ "IdleEvent":"wx.", "IdleMode":"wx.", "Image":"wx.", +"ImageFileProperty":"wx.propgrid.", "ImageFromBitmap":"wx.", "ImageFromBuffer":"wx.", "ImageFromData":"wx.", @@ -1616,6 +1632,7 @@ "Int32":"wx.", "Int64":"wx.", "Int8":"wx.", +"IntProperty":"wx.propgrid.", "IntPtr":"wx.", "InternetFSHandler":"wx.", "InterpolationQuality":"wx.", @@ -2069,6 +2086,7 @@ "LogVerbose":"wx.", "LogWarning":"wx.", "LogWindow":"wx.", +"LongStringProperty":"wx.propgrid.", "MAXIMIZE":"wx.", "MAXIMIZE_BOX":"wx.", "MB_DOCKABLE":"wx.", @@ -2151,6 +2169,7 @@ "MouseWheelAxis":"wx.", "MoveEvent":"wx.", "MultiChoiceDialog":"wx.", +"MultiChoiceProperty":"wx.propgrid.", "NAND":"wx.", "NB_BOTTOM":"wx.", "NB_DEFAULT":"wx.", @@ -2209,6 +2228,8 @@ "NullPalette":"wx.", "NullPen":"wx.", "NullRegion":"wx.", +"NumericPropertyValidator":"wx.propgrid.", +"NumericType":"wx.propgrid.NumericPropertyValidator.", "ODCB_DCLICK_CYCLES":"wx.adv.", "ODCB_PAINTING_CONTROL":"wx.adv.", "ODCB_PAINTING_SELECTED":"wx.adv.", @@ -2403,6 +2424,8 @@ "PENSTYLE_TRANSPARENT":"wx.", "PENSTYLE_USER_DASH":"wx.", "PENSTYLE_VERTICAL_HATCH":"wx.", +"PGArrayEditorDialog":"wx.propgrid.", +"PGArrayStringEditorDialog":"wx.propgrid.", "PGAttributeStorage":"wx.propgrid.", "PGCell":"wx.propgrid.", "PGCellData":"wx.propgrid.", @@ -2417,12 +2440,18 @@ "PGDefaultRenderer":"wx.propgrid.", "PGEditor":"wx.propgrid.", "PGEditorDialogAdapter":"wx.propgrid.", +"PGFileDialogAdapter":"wx.propgrid.", +"PGGetDefaultImageWildcard":"wx.propgrid.", +"PGInDialogValidator":"wx.propgrid.", +"PGLongStringDialogAdapter":"wx.propgrid.", "PGMAN_DEFAULT_STYLE":"wx.propgrid.", "PGMultiButton":"wx.propgrid.", +"PGNumericValidationConstants":"wx.propgrid.", "PGPaintData":"wx.propgrid.", "PGPropArgCls":"wx.propgrid.", "PGProperty":"wx.propgrid.", "PGPropertyFlags":"wx.propgrid.", +"PGSpinCtrlEditor":"wx.propgrid.", "PGTextCtrlAndButtonEditor":"wx.propgrid.", "PGTextCtrlEditor":"wx.propgrid.", "PGVFBFlags":"wx.propgrid.", @@ -2443,6 +2472,9 @@ "PG_BOLD_MODIFIED":"wx.propgrid.", "PG_CAPRECTXMARGIN":"wx.propgrid.", "PG_CAPRECTYMARGIN":"wx.propgrid.", +"PG_COLOUR_CUSTOM":"wx.propgrid.", +"PG_COLOUR_UNSPECIFIED":"wx.propgrid.", +"PG_COLOUR_WEB_BASE":"wx.propgrid.", "PG_CUSTOM_IMAGE_SPACINGY":"wx.propgrid.", "PG_DEFAULT_STYLE":"wx.propgrid.", "PG_DESCRIPTION":"wx.propgrid.", @@ -2478,6 +2510,9 @@ "PG_KEYBOARD_ACTIONS":"wx.propgrid.", "PG_LIMITED_EDITING":"wx.propgrid.", "PG_NO_INTERNAL_BORDER":"wx.propgrid.", +"PG_PROPERTY_VALIDATION_ERROR_MESSAGE":"wx.propgrid.", +"PG_PROPERTY_VALIDATION_SATURATE":"wx.propgrid.", +"PG_PROPERTY_VALIDATION_WRAP":"wx.propgrid.", "PG_PROP_AGGREGATE":"wx.propgrid.", "PG_PROP_AUTO_UNSPECIFIED":"wx.propgrid.", "PG_PROP_BEING_DELETED":"wx.propgrid.", @@ -2495,10 +2530,17 @@ "PG_PROP_MISC_PARENT":"wx.propgrid.", "PG_PROP_MODIFIED":"wx.propgrid.", "PG_PROP_NOEDITOR":"wx.propgrid.", +"PG_PROP_NO_ESCAPE":"wx.propgrid.", "PG_PROP_PARENTAL_FLAGS":"wx.propgrid.", +"PG_PROP_PASSWORD":"wx.propgrid.", "PG_PROP_PROPERTY":"wx.propgrid.", "PG_PROP_READONLY":"wx.propgrid.", +"PG_PROP_SHOW_FULL_FILENAME":"wx.propgrid.", +"PG_PROP_STATIC_CHOICES":"wx.propgrid.", +"PG_PROP_TRANSLATE_CUSTOM":"wx.propgrid.", "PG_PROP_USES_COMMON_VALUE":"wx.propgrid.", +"PG_PROP_USE_CHECKBOX":"wx.propgrid.", +"PG_PROP_USE_DCC":"wx.propgrid.", "PG_PROP_WAS_MODIFIED":"wx.propgrid.", "PG_SPLITTER_AUTO_CENTER":"wx.propgrid.", "PG_STATIC_LAYOUT":"wx.propgrid.", @@ -5297,6 +5339,7 @@ "StreamBase":"wx.", "StreamError":"wx.", "Stretch":"wx.", +"StringProperty":"wx.propgrid.", "StripMenuCodes":"wx.", "Strip_Accel":"wx.", "Strip_All":"wx.", @@ -5309,6 +5352,7 @@ "SysErrorCode":"wx.", "SysErrorMsg":"wx.", "SystemColour":"wx.", +"SystemColourProperty":"wx.propgrid.", "SystemFeature":"wx.", "SystemFont":"wx.", "SystemMetric":"wx.", @@ -5654,6 +5698,7 @@ "UINT32_MAX":"wx.", "UINT64_MAX":"wx.", "UINT8_MAX":"wx.", +"UIntProperty":"wx.propgrid.", "UIntPtr":"wx.", "UP":"wx.", "UPDATE_UI_FROMIDLE":"wx.", @@ -5669,6 +5714,7 @@ "Uint64":"wx.", "Uint8":"wx.", "Unconstrained":"wx.", +"UniChar":"wx.", "Uninitialize":"wx.", "UnsetEnv":"wx.", "UpdateUI":"wx.", diff --git a/etg/_core.py b/etg/_core.py index 48edd664..00845fff 100644 --- a/etg/_core.py +++ b/etg/_core.py @@ -227,6 +227,7 @@ INCLUDES = [ # base and core stuff 'fswatcher', 'preferences', 'modalhook', + 'unichar', ] diff --git a/etg/_propgrid.py b/etg/_propgrid.py index c37ba90d..ccd006ec 100644 --- a/etg/_propgrid.py +++ b/etg/_propgrid.py @@ -28,6 +28,8 @@ INCLUDES = [ 'propgridproperty', 'propgridpagestate', 'propgridiface', 'propgrid', + 'propgridprops', + 'propgridadvprops', ] diff --git a/etg/propgrid.py b/etg/propgrid.py index 63bf9c0e..b1ec0ed8 100644 --- a/etg/propgrid.py +++ b/etg/propgrid.py @@ -41,6 +41,7 @@ def run(): c = module.find('wxPropertyGrid') assert isinstance(c, etgtools.ClassDef) c.bases.remove('wxScrollHelper') + tools.fixWindowClass(c) # TODO: provide a way to use a Python callable as a sort function c.find('GetSortFunction').ignore() diff --git a/etg/propgridadvprops.py b/etg/propgridadvprops.py new file mode 100644 index 00000000..2fb59352 --- /dev/null +++ b/etg/propgridadvprops.py @@ -0,0 +1,55 @@ +#--------------------------------------------------------------------------- +# Name: etg/propgridadvprops.py +# Author: Robin Dunn +# +# Created: 25-Aug-2016 +# Copyright: (c) 2016 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_propgrid" +NAME = "propgridadvprops" # 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 = [ 'wxColourPropertyValue', + 'wxFontProperty', + 'wxSystemColourProperty', + 'wxColourProperty', + 'wxCursorProperty', + 'wxImageFileProperty', + 'wxMultiChoiceProperty', + 'wxDateProperty', + 'wxPGSpinCtrlEditor', + + ] + +#--------------------------------------------------------------------------- + +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('') + #assert isinstance(c, etgtools.ClassDef) + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/etg/propgridprops.py b/etg/propgridprops.py new file mode 100644 index 00000000..d23ffdbe --- /dev/null +++ b/etg/propgridprops.py @@ -0,0 +1,90 @@ +#--------------------------------------------------------------------------- +# Name: etg/propgridprops.py +# Author: Robin Dunn +# +# Created: 25-Aug-2016 +# Copyright: (c) 2016 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_propgrid" +NAME = "propgridprops" # 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 = [ 'wxPGInDialogValidator', + 'wxStringProperty', + 'wxNumericPropertyValidator', + 'wxIntProperty', + 'wxUIntProperty', + 'wxFloatProperty', + 'wxBoolProperty', + 'wxEnumProperty', + 'wxEditEnumProperty', + 'wxFlagsProperty', + 'wxPGFileDialogAdapter', + 'wxFileProperty', + 'wxPGLongStringDialogAdapter', + 'wxLongStringProperty', + 'wxDirProperty', + 'wxArrayStringProperty', + 'wxPGArrayEditorDialog', + 'wxPGArrayStringEditorDialog', + ] + +#--------------------------------------------------------------------------- + +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('wxNumericPropertyValidator') + assert isinstance(c, etgtools.ClassDef) + c.bases = ['wxValidator'] + + + for name in ['wxEnumProperty', 'wxEditEnumProperty']: + c = module.find(name) + # Ignore problematic ctors, that we don't need anyway. + # Yes, there are two of them + c.find(name).findOverload('wxChar').ignore() + c.find(name).findOverload('wxChar').ignore() + + m = c.find(name).findOverload('wxArrayString') + m.find('label').default = 'wxPG_LABEL' + m.find('name').default = 'wxPG_LABEL' + m.find('labels').default = 'wxArrayString()' + + + c = module.find('wxFlagsProperty') + # Ignore problematic ctors, that we don't need anyway. + c.find('wxFlagsProperty').findOverload('wxChar').ignore() + + + c = module.find('wxPGArrayEditorDialog') + tools.fixWindowClass(c, hideVirtuals=False, ignoreProtected=False) + + c = module.find('wxPGArrayStringEditorDialog') + tools.fixWindowClass(c, hideVirtuals=False, ignoreProtected=False) + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/etg/unichar.py b/etg/unichar.py new file mode 100644 index 00000000..aaa08998 --- /dev/null +++ b/etg/unichar.py @@ -0,0 +1,62 @@ +#--------------------------------------------------------------------------- +# Name: etg/unichar.py +# Author: Robin Dunn +# +# Created: 25-Aug-2016 +# Copyright: (c) 2016 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_core" +NAME = "unichar" # 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 = [ 'wxUniChar', + ] + +#--------------------------------------------------------------------------- + +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. + + module.addHeaderCode('#include ') + + c = module.find('wxUniChar') + assert isinstance(c, etgtools.ClassDef) + + m = c.find('wxUniChar').findOverload('long int') + m.find('c').type = 'long' + + m = c.find('wxUniChar').findOverload('unsigned long int') + m.find('c').type = 'unsigned long' + + for m in c.find('wxUniChar').all(): + p = m.find('c') + if 'long' not in p.type: + m.ignore() + + + tools.ignoreAllOperators(c) + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/etg/valtext.py b/etg/valtext.py new file mode 100644 index 00000000..cd99dbec --- /dev/null +++ b/etg/valtext.py @@ -0,0 +1,49 @@ +#--------------------------------------------------------------------------- +# Name: etg/valtext.py +# Author: Robin Dunn +# +# Created: 25-Aug-2016 +# Copyright: (c) 2016 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_core" +NAME = "valtext" # 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 = [ 'wxTextValidator', + ] + +#--------------------------------------------------------------------------- + +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. + + #module.addHeaderCode('#include ') + + c = module.find('wxTextValidator') + assert isinstance(c, etgtools.ClassDef) + c.find('Clone').factory = True + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/ext/wxWidgets b/ext/wxWidgets index dcc23ceb..1d5119ac 160000 --- a/ext/wxWidgets +++ b/ext/wxWidgets @@ -1 +1 @@ -Subproject commit dcc23ceba8e1dba828e8b3e4633ac77acaad7562 +Subproject commit 1d5119acf5498ab356c0ddaea30d8b34a3722fc3 diff --git a/src/longlong.sip b/src/longlong.sip index da546427..469f61da 100644 --- a/src/longlong.sip +++ b/src/longlong.sip @@ -40,6 +40,7 @@ typedef unsigned long long wxULongLong_t; #if wxUSE_LONGLONG_NATIVE return PyLong_FromLongLong(sipCpp->GetValue()); #else + #error This is untested // Convert a wxLongLong to a Python Long by getting the hi/lo // dwords, then shifting and or-ing them together PyObject *hi, *lo, *shifter, *shifted, *result; @@ -58,3 +59,49 @@ typedef unsigned long long wxULongLong_t; }; +%MappedType wxULongLong { + + %TypeHeaderCode + #include + %End + + %ConvertToTypeCode + // Code to test a PyObject for compatibility + if (!sipIsErr) { + if (PyNumber_Check(sipPy)) + return TRUE; + return FALSE; + } + + // Code to convert from a compatible PyObject + #if wxUSE_LONGLONG_NATIVE + *sipCppPtr = new wxULongLong(PyLong_AsUnsignedLongLong(sipPy)); + #else + #error TODO. Get the hi/lo 32-bit dwords to construct the wxLongLong + #endif + return sipGetState(sipTransferObj); + + %End + + %ConvertFromTypeCode + #if wxUSE_LONGLONG_NATIVE + return PyLong_FromUnsignedLongLong(sipCpp->GetValue()); + #else + #error This needs testing and fixing for unsigned + // Convert a wxLongLong to a Python Long by getting the hi/lo + // dwords, then shifting and or-ing them together + PyObject *hi, *lo, *shifter, *shifted, *result; + hi = PyLong_FromLong( sipCpp->GetHi() ); + lo = PyLong_FromLong( sipCpp->GetLo() ); + shifter = PyLong_FromLong(32); + shifted = PyNumber_Lshift(hi, shifter); + result = PyNumber_Or(shifted, lo); + Py_DECREF(hi); + Py_DECREF(lo); + Py_DECREF(shifter); + Py_DECREF(shifted); + return result; + #endif + %End +}; + diff --git a/unittests/test_propgridadvprops.py b/unittests/test_propgridadvprops.py new file mode 100644 index 00000000..e63ea073 --- /dev/null +++ b/unittests/test_propgridadvprops.py @@ -0,0 +1,16 @@ +import unittest +from unittests import wtc +import wx + +#--------------------------------------------------------------------------- + +class propgridadvprops_Tests(wtc.WidgetTestCase): + + # TODO: Remove this test and add real ones. + def test_propgridadvprops1(self): + self.fail("Unit tests for propgridadvprops not implemented yet.") + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_propgridprops.py b/unittests/test_propgridprops.py new file mode 100644 index 00000000..5c6d14f4 --- /dev/null +++ b/unittests/test_propgridprops.py @@ -0,0 +1,16 @@ +import unittest +from unittests import wtc +import wx + +#--------------------------------------------------------------------------- + +class propgridprops_Tests(wtc.WidgetTestCase): + + # TODO: Remove this test and add real ones. + def test_propgridprops1(self): + self.fail("Unit tests for propgridprops not implemented yet.") + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_unichar.py b/unittests/test_unichar.py new file mode 100644 index 00000000..44dca5a5 --- /dev/null +++ b/unittests/test_unichar.py @@ -0,0 +1,16 @@ +import unittest +from unittests import wtc +import wx + +#--------------------------------------------------------------------------- + +class unichar_Tests(wtc.WidgetTestCase): + + # TODO: Remove this test and add real ones. + def test_unichar1(self): + self.fail("Unit tests for unichar not implemented yet.") + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_valtext.py b/unittests/test_valtext.py new file mode 100644 index 00000000..02a53df9 --- /dev/null +++ b/unittests/test_valtext.py @@ -0,0 +1,16 @@ +import unittest +from unittests import wtc +import wx + +#--------------------------------------------------------------------------- + +class valtext_Tests(wtc.WidgetTestCase): + + # TODO: Remove this test and add real ones. + def test_valtext1(self): + self.fail("Unit tests for valtext not implemented yet.") + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main()