Add __index__ to wx.WindowID, and __bool__ to wx.Region

This commit is contained in:
Robin Dunn
2020-02-26 11:10:27 -08:00
parent f447c12f74
commit 9096426603
3 changed files with 41 additions and 19 deletions

View File

@@ -88,11 +88,12 @@ def run():
c.mustHaveApp()
c.find('operator++').ignore()
# SIP maps operator bool() to __int__, but Classic used __nonzero__. Does
# it make any difference either way?
c.find('operator bool').ignore()
c.addCppMethod('int', '__nonzero__', '()', 'return (int)self->operator bool();',
'Returns true while there are still rectangles available in the iteration.')
c.addCppMethod('int', '__bool__', '()', 'return (int)self->operator bool();',
'Returns true while there are still rectangles available in the iteration.')
c.addCppMethod('void', 'Next', '()', 'self->operator++();',
'Move the iterator to the next rectangle in the region.')

View File

@@ -53,12 +53,12 @@ def run():
MethodDef(name='wxWindowIDRef', className='wxWindowIDRef', isCtor=True,
briefDoc='Create reference from an ID',
items=[ ParamDef(type='int', name='id') ]),
MethodDef(name='wxWindowIDRef', className='wxWindowIDRef', isCtor=True,
briefDoc='Copy an ID reference',
items=[ ParamDef(type='const wxWindowIDRef&', name='idref') ]),
]),
MethodDef(name='~wxWindowIDRef', className='wxWindowIDRef', isDtor=True),
MethodDef(type='int', name='GetValue',
@@ -73,11 +73,13 @@ def run():
""")
klass.addCppMethod('int', '__int__', '()',
doc="Alias for GetValue allowing the IDRef to be passed as the WindowID parameter when creating widgets or etc.",
body="""\
return self->GetValue();
""")
doc="Alias for GetValue allowing the IDRef to be passed as the WindowID parameter when creating widgets or other places an integer type is needed.",
body="return self->GetValue();")
klass.addCppMethod('int', '__index__', '()',
doc="See :meth:`__int__`",
body="return self->GetValue();")
klass.addCppMethod('bool', '__eq__', '(wxWindowID id)', "return self->GetValue() == id;")
klass.addCppMethod('bool', '__ne__', '(wxWindowID id)', "return self->GetValue() != id;")
klass.addCppMethod('bool', '__lt__', '(wxWindowID id)', "return self->GetValue() < id;")
@@ -92,17 +94,17 @@ def run():
# and finish it up by adding it to the module
module.addItem(klass)
# Now, let's add a new Python function to the global scope that reserves an
# ID (or range) and returns a ref object for it.
module.addPyFunction('NewIdRef', '(count=1)',
# Now, let's add a new Python function to the global scope that reserves an
# ID (or range) and returns a ref object for it.
module.addPyFunction('NewIdRef', '(count=1)',
doc="""\
Reserves a new Window ID (or range of WindowIDs) and returns a
:class:`wx.WindowIDRef` object (or list of them) that will help
Reserves a new Window ID (or range of WindowIDs) and returns a
:class:`wx.WindowIDRef` object (or list of them) that will help
manage the reservation of that ID.
This function is intended to be a drop-in replacement of the old
and deprecated :func:`wx.NewId` function, with the added benefit
that the ID should never conflict with an in-use ID or other IDs
This function is intended to be a drop-in replacement of the old
and deprecated :func:`wx.NewId` function, with the added benefit
that the ID should never conflict with an in-use ID or other IDs
generated by this function.
""",
body="""\