From d2d1bcd923c6e74fd41aebcce8032499585513ae Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 1 Oct 2011 07:32:52 +0000 Subject: [PATCH] Add some Python methods and properties that CheckListBox had in Classic, and some unittests for them too. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@69262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- etg/checklst.py | 47 +++++++++++++++++++++++++++++++++++++- unittests/test_checklst.py | 30 +++++++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/etg/checklst.py b/etg/checklst.py index 1693f298..e45bf276 100644 --- a/etg/checklst.py +++ b/etg/checklst.py @@ -31,14 +31,59 @@ def run(): # customizing the generated code and docstrings. c = module.find('wxCheckListBox') + assert isinstance(c, etgtools.ClassDef) + c.find('wxCheckListBox').findOverload('wxString choices').ignore() c.find('wxCheckListBox').findOverload('wxArrayString').find('choices').default = 'wxArrayString()' c.find('Create').findOverload('wxString choices').ignore() c.find('Create').findOverload('wxArrayString').find('choices').default = 'wxArrayString()' - + tools.fixWindowClass(c) + c.addPyMethod('GetChecked', '(self)', doc="""\ + GetChecked() + + Return a sequence of integers corresponding to the checked items in + the control, based on `IsChecked`.""", + body="return tuple([i for i in range(self.Count) if self.IsChecked(i)])") + + c.addPyMethod('GetCheckedStrings', '(self)', + doc="""\ + GetCheckedStrings() + + Return a tuple of strings corresponding to the checked + items of the control, based on `GetChecked`.""", + body="return tuple([self.GetString(i) for i in self.GetChecked()])") + + c.addPyMethod('SetChecked', '(self, indexes)', + doc="""\ + SetChecked(indexes) + + Sets the checked state of items if the index of the item is + found in the indexes sequence.""", + body="""\ + for i in indexes: + assert 0 <= i < self.Count, "Index (%s) out of range" % i + for i in range(self.Count): + self.Check(i, i in indexes)""") + + c.addPyMethod('SetCheckedStrings', '(self, strings)', + doc="""\ + SetCheckedStrings(strings) + + Sets the checked state of items if the item's string is found + in the strings sequence.""", + body="""\ + for s in strings: + assert s in self.GetStrings(), "String ('%s') not found" % s + for i in range(self.Count): + self.Check(i, self.GetString(i) in strings)""") + + c.addPyProperty('Checked GetChecked SetChecked') + c.addPyProperty('CheckedStrings GetCheckedStrings SetCheckedStrings') + + #----------------------------------------------------------------- tools.doCommonTweaks(module) tools.addGetterSetterProps(module) diff --git a/unittests/test_checklst.py b/unittests/test_checklst.py index 2e9e798c..bc3df2c2 100644 --- a/unittests/test_checklst.py +++ b/unittests/test_checklst.py @@ -16,8 +16,36 @@ class CheckListBoxTests(wtc.WidgetTestCase): c = wx.CheckListBox() c.Create(self.frame, choices="one two three four".split()) + def test_pyMethods1(self): + c = wx.CheckListBox(self.frame, choices="one two three four".split()) + self.assertTrue(callable(c.GetChecked)) + self.assertTrue(callable(c.GetCheckedStrings)) + self.assertTrue(callable(c.SetChecked)) + self.assertTrue(callable(c.SetCheckedStrings)) + + def test_pyMethods2(self): + c = wx.CheckListBox(self.frame, choices="one two three four".split()) + c.SetChecked([1,3]) + self.assertTrue(set(c.GetChecked()) == set([1,3])) + c.SetCheckedStrings(['one', 'two']) + self.assertTrue(set(c.GetCheckedStrings()) == set(['one', 'two'])) + self.assertTrue(set(c.GetChecked()) == set([0,1])) + + def test_pyProperties(self): + c = wx.CheckListBox(self.frame, choices="one two three four".split()) + c.SetChecked([1,3]) + self.assertTrue(set(c.Checked) == set([1,3])) + + c.Checked = [2] + self.assertTrue(set(c.Checked) == set([2])) + + c.SetCheckedStrings(['one', 'two']) + self.assertTrue(set(c.CheckedStrings) == set(['one', 'two'])) + + c.CheckedStrings = ['three'] + self.assertTrue(set(c.GetChecked()) == set([2])) + - #---------------------------------------------------------------------------