From b3089a52e8f35a5062c552125d840edf174aa67b Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 12 Mar 2015 10:07:27 -0700 Subject: [PATCH] Add Get() and sequence protocol methods to RichTextRange --- etg/richtextbuffer.py | 29 +++++++++++++++++++++++++++++ unittests/test_richtextbuffer.py | 17 ++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/etg/richtextbuffer.py b/etg/richtextbuffer.py index c16b7219..81bc0d96 100644 --- a/etg/richtextbuffer.py +++ b/etg/richtextbuffer.py @@ -158,6 +158,35 @@ def run(): c.find('operator[]').ignore() + #------------------------------------------------------- + c = module.find('wxRichTextRange') + tools.addAutoProperties(c) + + # wxRichTextRange typemap + c.convertFromPyObject = tools.convertTwoIntegersTemplate('wxRichTextRange') + + c.addCppMethod('PyObject*', 'Get', '()', """\ + return sipBuildResult(0, "(ii)", self->GetStart(), self->GetEnd()); + """, + pyArgsString="() -> (start, end)", + briefDoc="Return the start and end properties as a tuple.") + + # Add sequence protocol methods and other goodies + c.addPyMethod('__str__', '(self)', 'return str(self.Get())') + c.addPyMethod('__repr__', '(self)', 'return "RichTextRange"+str(self.Get())') + c.addPyMethod('__len__', '(self)', 'return len(self.Get())') + c.addPyMethod('__nonzero__', '(self)', 'return self.Get() != (0,0)') + c.addPyMethod('__reduce__', '(self)', 'return (RichTextRange, self.Get())') + c.addPyMethod('__getitem__', '(self, idx)', 'return self.Get()[idx]') + c.addPyMethod('__setitem__', '(self, idx, val)', + """\ + if idx == 0: self.width = val + elif idx == 1: self.height = val + else: raise IndexError + """) + c.addPyCode('RichTextRange.__safe_for_unpickling__ = True') + + #------------------------------------------------------- def _fixDrawObject(c, addMissingVirtuals=True): assert isinstance(c, etgtools.ClassDef) diff --git a/unittests/test_richtextbuffer.py b/unittests/test_richtextbuffer.py index 346c28e3..d95b95d1 100644 --- a/unittests/test_richtextbuffer.py +++ b/unittests/test_richtextbuffer.py @@ -165,16 +165,31 @@ class richtextbuffer_Tests(wtc.WidgetTestCase): t = wx.richtext.RichTextFontTable() - def test_richtextbuffer14(self): + def test_richtextbuffer14a(self): r1 = wx.richtext.RichTextRange() r2 = wx.richtext.RichTextRange(111, 222) r3 = wx.richtext.RichTextRange(r2) r3.Start r3.End + def test_richtextbuffer14b(self): wx.richtext.RICHTEXT_ALL wx.richtext.RICHTEXT_NONE wx.richtext.RICHTEXT_NO_SELECTION + + def test_richtextbuffer14c(self): + r = wx.richtext.RichTextRange(111, 222) + start = r[0] + end = r[1] + self.assertEqual(start, 111) + self.assertEqual(end, 222) + + def test_richtextbuffer14d(self): + r = wx.richtext.RichTextRange(111, 222) + start, end = r.Get() + self.assertEqual(start, 111) + self.assertEqual(end, 222) + def test_richtextbuffer15(self):