diff --git a/TODO.txt b/TODO.txt index 4f35b093..ee746f8a 100644 --- a/TODO.txt +++ b/TODO.txt @@ -120,7 +120,6 @@ other dev stuff * PseudoDC * msgout * quantize - * richmsgdlg (requires wrappers for wxGenericMessageDialog first) * dialup ?? * docmdi ?? * docview ?? diff --git a/etg/_core.py b/etg/_core.py index f44fbff3..7ee9b7ee 100644 --- a/etg/_core.py +++ b/etg/_core.py @@ -180,6 +180,7 @@ INCLUDES = [ # base and core stuff 'filedlg', 'frame', 'msgdlg', + 'richmsgdlg', 'progdlg', 'popupwin', 'tipwin', diff --git a/etg/msgdlg.py b/etg/msgdlg.py index 808ec65d..59f9ebd3 100644 --- a/etg/msgdlg.py +++ b/etg/msgdlg.py @@ -10,6 +10,7 @@ import etgtools import etgtools.tweaker_tools as tools +import copy PACKAGE = "wx" MODULE = "_core" @@ -55,6 +56,30 @@ def run(): c.find('SetYesNoLabels.no').type = 'const wxString&' tools.fixTopLevelWindowClass(c) + + + + # Make a copy of wxMessageDialog so we can generate code for + # wxGenericMessageDialog too. + gmd = copy.deepcopy(c) + assert isinstance(gmd, etgtools.ClassDef) + gmd.name = 'wxGenericMessageDialog' + gmd.find('wxMessageDialog').name = 'wxGenericMessageDialog' # the ctor + + m = gmd.addItem(etgtools.MethodDef( + protection='protected', type='void', name='AddMessageDialogCheckBox', + briefDoc="Can be overridden to provide more contents for the dialog", + className=gmd.name)) + m.addItem(etgtools.ParamDef(type='wxSizer*', name='sizer')) + + m = gmd.addItem(etgtools.MethodDef( + protection='protected', type='void', name='AddMessageDialogDetails', + briefDoc="Can be overridden to provide more contents for the dialog", + className=gmd.name)) + m.addItem(etgtools.ParamDef(type='wxSizer*', name='sizer')) + + module.addItem(gmd) + module.find('wxMessageBox').releaseGIL() diff --git a/etg/richmsgdlg.py b/etg/richmsgdlg.py new file mode 100644 index 00000000..380f3d30 --- /dev/null +++ b/etg/richmsgdlg.py @@ -0,0 +1,48 @@ +#--------------------------------------------------------------------------- +# Name: etg/richmsgdlg.py +# Author: Robin Dunn +# +# Created: 19-Nov-2012 +# Copyright: (c) 2012 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_core" +NAME = "richmsgdlg" # 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 = [ "wxRichMessageDialog", + ] + +#--------------------------------------------------------------------------- + +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('wxRichMessageDialog') + assert isinstance(c, etgtools.ClassDef) + tools.fixTopLevelWindowClass(c) + c.bases = ['wxGenericMessageDialog'] + + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/etgtools/extractors.py b/etgtools/extractors.py index 32002f8f..074b6048 100644 --- a/etgtools/extractors.py +++ b/etgtools/extractors.py @@ -107,9 +107,11 @@ class BaseDef(object): def addItem(self, item): self.items.append(item) + return item def insertItem(self, index, item): self.items.insert(index, item) + return item def insertItemAfter(self, after, item): try: @@ -117,6 +119,7 @@ class BaseDef(object): self.items.insert(idx+1, item) except ValueError: self.items.append(item) + return item def insertItemBefore(self, before, item): try: @@ -124,6 +127,7 @@ class BaseDef(object): self.items.insert(idx, item) except ValueError: self.items.insert(0, item) + return item def allItems(self): diff --git a/unittests/test_msgdlg.py b/unittests/test_msgdlg.py index fcebd252..55557ed2 100644 --- a/unittests/test_msgdlg.py +++ b/unittests/test_msgdlg.py @@ -50,6 +50,26 @@ class msgdlg_Tests(wtc.WidgetTestCase): wx.ICON_QUESTION wx.ICON_INFORMATION wx.STAY_ON_TOP + + + def test_gmsgdlg1(self): + dlg = wx.GenericMessageDialog(None, 'Message', 'Caption') + dlg.Destroy() + + def test_gmsgdlg2(self): + dlg = wx.GenericMessageDialog(self.frame, 'Message', 'Caption') + dlg.Destroy() + + def test_gmsgdlg3(self): + dlg = wx.GenericMessageDialog(None, 'Message', 'Caption') + dlg.SetExtendedMessage('extended') + dlg.SetMessage('message') + dlg.SetOKCancelLabels('okidoky', 'bye-bye') + self.assertEqual(dlg.GetExtendedMessage(), 'extended') + self.assertEqual(dlg.GetMessage(), 'message') + self.assertEqual(dlg.GetOKLabel(), 'okidoky') + self.assertEqual(dlg.GetCancelLabel(), 'bye-bye') + dlg.Destroy() #--------------------------------------------------------------------------- diff --git a/unittests/test_richmsgdlg.py b/unittests/test_richmsgdlg.py new file mode 100644 index 00000000..5ebb6b10 --- /dev/null +++ b/unittests/test_richmsgdlg.py @@ -0,0 +1,39 @@ +import imp_unittest, unittest +import wtc +import wx + +#--------------------------------------------------------------------------- + +class richmsgdlg_Tests(wtc.WidgetTestCase): + + def test_richmsgdlg1(self): + dlg = wx.RichMessageDialog(None, 'Message', 'Caption') + dlg.Destroy() + + def test_richmsgdlg2(self): + dlg = wx.RichMessageDialog(self.frame, 'Message', 'Caption') + dlg.Destroy() + + def test_richmsgdlg3(self): + dlg = wx.RichMessageDialog(None, 'Message', 'Caption') + dlg.SetExtendedMessage('extended') + dlg.SetMessage('message') + dlg.SetOKCancelLabels('okidoky', 'bye-bye') + self.assertEqual(dlg.GetExtendedMessage(), 'extended') + self.assertEqual(dlg.GetMessage(), 'message') + self.assertEqual(dlg.GetOKLabel(), 'okidoky') + self.assertEqual(dlg.GetCancelLabel(), 'bye-bye') + + dlg.ShowCheckBox("Checkbox") + dlg.ShowDetailedText("Detailed Text") + self.assertEqual(dlg.GetCheckBoxText(), "Checkbox") + self.assertEqual(dlg.GetDetailedText(), "Detailed Text") + self.assertEqual(dlg.CheckBoxText, "Checkbox") + self.assertEqual(dlg.DetailedText, "Detailed Text") + + dlg.Destroy() + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main()