From 99c7e500b1a34bb3892c30e41585c4105632bfef Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Mon, 24 Apr 2017 10:17:41 -0700 Subject: [PATCH] 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. --- etg/clntdatactnr.py | 6 +++--- etg/event.py | 22 ++++++++++++++++------ unittests/test_clntdatactnr.py | 21 +++++++++++++++++++++ unittests/test_event.py | 13 +++++++++++++ 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/etg/clntdatactnr.py b/etg/clntdatactnr.py index a6c0c82e..3443ad85 100644 --- a/etg/clntdatactnr.py +++ b/etg/clntdatactnr.py @@ -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) diff --git a/etg/event.py b/etg/event.py index b02c04f9..0dcce309 100644 --- a/etg/event.py +++ b/etg/event.py @@ -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') diff --git a/unittests/test_clntdatactnr.py b/unittests/test_clntdatactnr.py index b3461e4d..85296d15 100644 --- a/unittests/test_clntdatactnr.py +++ b/unittests/test_clntdatactnr.py @@ -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__': diff --git a/unittests/test_event.py b/unittests/test_event.py index 28f42478..c4e4f22a 100644 --- a/unittests/test_event.py +++ b/unittests/test_event.py @@ -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' + + #---------------------------------------------------------------------------