diff --git a/etg/object.py b/etg/object.py index 0fe8cae8..33d2fe08 100644 --- a/etg/object.py +++ b/etg/object.py @@ -49,7 +49,6 @@ def run(): c.addPrivateCopyCtor() - #-------------------------------------------------- c = module.find('wxObject') c.find('operator delete').ignore() @@ -66,7 +65,25 @@ def run(): doc='Deletes the C++ object this Python object is a proxy for.', transferThis=True) # TODO: Check this - + # Teach SIP how to convert to specific class types + c.addItem(etgtools.WigCode("""\ + %ConvertToSubClassCode + const wxClassInfo* info = sipCpp->GetClassInfo(); + wxString name = info->GetClassName(); + bool exists = sipFindType(name) != NULL; + while (info && !exists) { + info = info->GetBaseClass1(); + name = info->GetClassName(); + exists = sipFindType(name) != NULL; + } + if (info) + sipType = sipFindType(name); + else + sipType = NULL; + %End + """)) + + #----------------------------------------------------------------- tools.doCommonTweaks(module) tools.runGenerators(module)