[PyQt] sip %ConvertToSubClassCode problem with %TypeHeaderCode doesn't work as expected.

Blaine Bell blaine.bell at schrodinger.com
Thu Jun 3 16:19:31 BST 2010

Phil Thompson wrote:
> On Thu, 03 Jun 2010 10:19:11 -0400, Blaine Bell
> <blaine.bell at schrodinger.com> wrote:
>> Hi Phil,
>> Thanks a lot for your quick response.  Unfortunately, I am using 
>> sip-4.9.3, and neither of these fixes you have listed below work for me. 
>> (sipType_ChmMainWindow or %ModuleCode is not recognized).
>> Also, looking into the <module>cmodule.cpp file, sipType does not get 
>> instantiated in the static function that converts to a sub-class if 
>> possible.  Am I doing something wrong, or is it a version issue?
> Sounds like you are doing something wrong.
> Phil
thanks.  It seems to work just fine, but I sense it is either its a 
version issue or I am using the sip command line in a way that doesn't 
allow this functionality that you mention.   The exact command line I am 
using to generate the sip wrappers is:

sip -e -c . -b canvasapp.sbf -I /sip-4.9.3/share/PyQt4 -x VendorID -t 
WS_X11 -x PyQt_NoPrintRangeBug -t Qt_4_5_0 -x Py_v3 -g canvasapp.sip

Most of these arguments are coming from the pyqtconfig module under 
PyQt, to pass configuration information.  The conversion function inside 
the cmodule.cpp looks like this (i.e., with no sipType defined):

/* Convert to a sub-class if possible. */
extern "C" {static const sipTypeDef *sipSubClass_ChmMainWindow(void **);}
static const sipTypeDef *sipSubClass_ChmMainWindow(void **sipCppRet)
    QObject *sipCpp = reinterpret_cast<QObject *>(*sipCppRet);
    sipWrapperType *sipClass;

#line 109 "canvasapp.sip"
    ChmMainWindow *mw = dynamic_cast<ChmMainWindow *>(sipCpp);
    if (mw){
        sipClass = sipAPI_canvasapp->api_find_class("ChmMainWindow");
    } else {
        sipClass = NULL;
#line 118 "sipcanvasappcmodule.cpp"

    return (sipClass ? sipClass->type : 0);

Does this resemble generated code from an old version?  If so, then it 
could be possible that my sip installation or build process isn't correct.



More information about the PyQt mailing list