Finish remaining transfer flags for ribbon client data objects,

and finish basic tests.
This commit is contained in:
Robin Dunn
2016-07-05 16:19:12 -07:00
parent 786d806906
commit 0c169cf2d8
7 changed files with 104 additions and 9 deletions

View File

@@ -48,6 +48,9 @@ def run():
c.find('SetItemClientData').ignore()
c.find('GetItemClientData').ignore()
# Methods assigning wxClientData objects need to transfer ownership
c.find('SetItemClientObject.data').transfer = True
c = module.find('wxRibbonButtonBarEvent')
tools.fixEventClass(c)

View File

@@ -49,6 +49,9 @@ def run():
c.find('SetItemClientData').ignore()
c.find('GetItemClientData').ignore()
# Methods assigning wxClientData objects need to transfer ownership
c.find('SetItemClientObject.data').transfer = True
c.find('Append').findOverload('wxClientData').find('clientData').transfer = True
c = module.find('wxRibbonGalleryEvent')
tools.fixEventClass(c)

View File

@@ -44,6 +44,16 @@ def run():
assert isinstance(c, etgtools.ClassDef)
tools.fixWindowClass(c)
# Use wxPyUserData for the clientData values instead of a plain wxObject
for item in c.allItems():
if isinstance(item, etgtools.ParamDef) and item.name == 'clientData':
item.type = 'wxPyUserData*'
item.transfer = True
meth = c.find('GetToolClientData')
meth.type = 'wxPyUserData*'
meth.setCppCode('return dynamic_cast<wxPyUserData*>(self->GetToolClientData(tool_id));')
c = module.find('wxRibbonToolBarEvent')
tools.fixEventClass(c)

View File

@@ -36,6 +36,23 @@ class ribbon_buttonbar_Tests(wtc.WidgetTestCase):
def test_ribbon_buttonbar4(self):
evt = wx.ribbon.RibbonButtonBarEvent()
def test_ribbon_buttonbar5(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
bb = wx.ribbon.RibbonButtonBar(ribbon)
bmp = wx.Bitmap(16,16)
btn = bb.AddButton(100, "label", bmp, "help string")
class _Data(object):
def __init__(self, **kw):
self.__dict__.update(kw)
data = _Data(a=1, b=2, c=3)
bb.SetItemClientObject(btn, data)
data_out = bb.GetItemClientObject(btn)
self.assertEqual(data.a, data_out.a)
self.assertTrue(data_out is data)
#---------------------------------------------------------------------------
if __name__ == '__main__':

View File

@@ -48,7 +48,6 @@ class ribbon_gallery_Tests(wtc.WidgetTestCase):
g.GetItemClientData
@unittest.skip('because')
def test_ribbon_gallery6(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
g = wx.ribbon.RibbonGallery(ribbon)
@@ -57,12 +56,28 @@ class ribbon_gallery_Tests(wtc.WidgetTestCase):
def __init__(self, **kw):
self.__dict__.update(kw)
data_in = _Data(a=1, b=2, c=3)
item = g.Append(wx.Bitmap(16,16), 102, data_in)
#data_out = g.GetItemClientObject(item)
#self.assertTrue(data_out is data_in)
data = _Data(a=1, b=2, c=3)
item = g.Append(wx.Bitmap(16,16), 102)
g.SetItemClientObject(item, data)
data_out = g.GetItemClientObject(item)
self.assertEqual(data.a, data_out.a)
self.assertTrue(data_out is data)
def test_ribbon_gallery7(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
g = wx.ribbon.RibbonGallery(ribbon)
class _Data(object):
def __init__(self, **kw):
self.__dict__.update(kw)
data = _Data(a=1, b=2, c=3)
item = g.Append(wx.Bitmap(16,16), 102, data)
data_out = g.GetItemClientObject(item)
self.assertEqual(data.a, data_out.a)
self.assertTrue(data_out is data)

View File

@@ -6,10 +6,57 @@ import wx.ribbon
class ribbon_toolbar_Tests(wtc.WidgetTestCase):
# TODO: Remove this test and add real ones.
def test_ribbon_toolbar1(self):
self.fail("Unit tests for ribbon_toolbar not implemented yet.")
wx.ribbon.wxEVT_RIBBONTOOLBAR_CLICKED
wx.ribbon.wxEVT_RIBBONTOOLBAR_DROPDOWN_CLICKED
wx.ribbon.EVT_RIBBONTOOLBAR_CLICKED
wx.ribbon.EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED
def test_ribbon_toolbar2(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
tbar = wx.ribbon.RibbonToolBar()
tbar.Create(ribbon)
def test_ribbon_toolbar3(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
tbar = wx.ribbon.RibbonToolBar(ribbon)
def test_ribbon_toolbar4(self):
evt = wx.ribbon.RibbonToolBarEvent()
evt.Bar
def test_ribbon_toolbar5(self):
ribbon = wx.ribbon.RibbonBar(self.frame)
tbar = wx.ribbon.RibbonToolBar(ribbon)
class _Data(object):
def __init__(self, **kw):
self.__dict__.update(kw)
data1 = _Data(a=1, b=2, c=3)
data2 = _Data(d=4)
bmp = wx.Bitmap(16,16)
tool1 = tbar.AddTool(101, bmp, "help string")
tbar.SetToolClientData(101, data1)
bmp = wx.Bitmap(16,16)
tool2 = tbar.AddTool(102, bmp, help_string="help string", clientData=data2)
data_out1 = tbar.GetToolClientData(101)
self.assertEqual(data1.a, data_out1.a)
self.assertTrue(data_out1 is data1)
data_out2 = tbar.GetToolClientData(102)
self.assertEqual(data2.d, data_out2.d)
self.assertTrue(data_out2 is data2)
#---------------------------------------------------------------------------
if __name__ == '__main__':