Fix the [G|S]etClientData methods in wx.CommandEvent

to be tweaked the same way they are in wx.ClientDataContainer, and add a ClientData property for each class. Update the unittests accordingly.
This commit is contained in:
Robin Dunn
2017-04-24 10:17:41 -07:00
parent 7f1d93a3e7
commit 99c7e500b1
4 changed files with 53 additions and 9 deletions

View File

@@ -33,13 +33,13 @@ def run():
c = module.find('wxClientDataContainer')
assert isinstance(c, etgtools.ClassDef)
c.find('SetClientObject.data').transfer = True
# The [G|S]etClientData methods deal with untyped void* values, which we
# don't support. The [G|S]etClientObject methods use wxClientData instaces
# don't support. The [G|S]etClientObject methods use wxClientData instances
# which we have a MappedType for, so make the ClientData methods just be
# aliases for ClientObjects. From the Python programmer's perspective they
# would be virtually the same anyway.
c.find('SetClientObject.data').transfer = True
c.find('GetClientData').ignore()
c.find('SetClientData').ignore()
c.find('GetClientObject').pyName = 'GetClientData'
@@ -50,7 +50,7 @@ def run():
c.addPyMethod('SetClientObject', '(self, data)',
doc="Alias for :meth:`SetClientData`",
body="self.SetClientData(data)")
c.addPyProperty('ClientData GetClientData SetClientData')
#-----------------------------------------------------------------
tools.doCommonTweaks(module)

View File

@@ -357,15 +357,25 @@ def run():
# wxCommandEvent
c = module.find('wxCommandEvent')
# The [G|S]etClientData methods deal with untyped void* values, which we
# don't support. The [G|S]etClientObject methods use wxClientData instances
# which we have a MappedType for, so make the ClientData methods just be
# aliases for ClientObjects. From the Python programmer's perspective they
# would be virtually the same anyway.
c.find('SetClientObject.clientObject').transfer = True
c.find('SetClientObject.clientObject').name = 'data'
c.find('GetClientData').ignore()
c.find('SetClientData').ignore()
c.find('GetClientObject').pyName = 'GetClientData'
c.find('SetClientObject').pyName = 'SetClientData'
c.addPyMethod('GetClientObject', '(self)',
doc="Alias for :meth:`GetClientData`",
body="return self.GetClientData()")
c.addPyMethod('SetClientObject', '(self, data)',
doc="Alias for :meth:`SetClientData`",
body="self.SetClientData(data)")
c.addPyProperty('ClientData GetClientData SetClientData')
c.addPyCode("""\
CommandEvent.GetClientData = CommandEvent.GetClientObject
CommandEvent.SetClientData = CommandEvent.SetClientObject""")
c.addProperty('ClientObject GetClientObject SetClientObject')
c.addPyCode('CommandEvent.ClientData = CommandEvent.ClientObject')
c.addProperty('ExtraLong GetExtraLong SetExtraLong')
c.addProperty('Int GetInt SetInt')
c.addProperty('Selection GetSelection')

View File

@@ -13,6 +13,27 @@ class clntdatactnr_Tests(wtc.WidgetTestCase):
self.assertEqual(val, "This is a test")
def test_clntdatactnr2(self):
data = wx.ClientDataContainer()
data.SetClientObject("This is a test")
val = data.GetClientObject()
self.assertEqual(val, "This is a test")
def test_clntdatactnr3(self):
data = wx.ClientDataContainer()
data.SetClientData("This is a test")
val = data.GetClientData()
self.assertEqual(val, "This is a test")
val = data.ClientData
self.assertEqual(val, "This is a test")
data.ClientData = "another test"
val = data.ClientData
self.assertEqual(val, "another test")
#---------------------------------------------------------------------------
if __name__ == '__main__':

View File

@@ -172,6 +172,19 @@ class Events(unittest.TestCase):
eh.Destroy()
def test_ClientData1(self):
evt = wx.CommandEvent()
evt.SetClientData('hello')
assert evt.GetClientData() == 'hello'
def test_ClientData2(self):
evt = wx.CommandEvent()
evt.SetClientObject('hello')
assert evt.GetClientObject() == 'hello'
#---------------------------------------------------------------------------