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
This commit is contained in:
Robin Dunn
2011-10-01 07:32:52 +00:00
parent 1427dd6591
commit d2d1bcd923
2 changed files with 75 additions and 2 deletions

View File

@@ -31,6 +31,8 @@ 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()'
@@ -39,6 +41,49 @@ def run():
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)

View File

@@ -16,6 +16,34 @@ 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]))
#---------------------------------------------------------------------------