From: Robin Dunn Date: Sat, 22 Nov 2003 21:08:20 +0000 (+0000) Subject: Fix problems with the wxHtmpTagHandler wrappers and related X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/fb757066dfea26412c518153f7c4af05a8a43dc9 Fix problems with the wxHtmpTagHandler wrappers and related git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/src/html.i b/wxPython/src/html.i index 86609a3fd6..970911807b 100644 --- a/wxPython/src/html.i +++ b/wxPython/src/html.i @@ -329,15 +329,17 @@ public: // First, make a new instance of the tag handler wxPyBeginBlockThreads(); - PyObject* arg = Py_BuildValue("()"); - PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL); + PyObject* arg = PyTuple_New(0); + PyObject* obj = PyObject_CallObject(m_tagHandlerClass, arg); Py_DECREF(arg); - wxPyEndBlockThreads(); - + // now figure out where it's C++ object is... wxPyHtmlWinTagHandler* thPtr; - if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) + if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) { + wxPyEndBlockThreads(); return; + } + wxPyEndBlockThreads(); // add it, parser->AddTagHandler(thPtr); diff --git a/wxPython/src/msw/html_wrap.cpp b/wxPython/src/msw/html_wrap.cpp index a2f15dc94a..ad01de3dec 100644 --- a/wxPython/src/msw/html_wrap.cpp +++ b/wxPython/src/msw/html_wrap.cpp @@ -372,15 +372,17 @@ public: // First, make a new instance of the tag handler wxPyBeginBlockThreads(); - PyObject* arg = Py_BuildValue("()"); - PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL); + PyObject* arg = PyTuple_New(0); + PyObject* obj = PyObject_CallObject(m_tagHandlerClass, arg); Py_DECREF(arg); - wxPyEndBlockThreads(); - + // now figure out where it's C++ object is... wxPyHtmlWinTagHandler* thPtr; - if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) + if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) { + wxPyEndBlockThreads(); return; + } + wxPyEndBlockThreads(); // add it, parser->AddTagHandler(thPtr); diff --git a/wxPython/wx/lib/wxpTag.py b/wxPython/wx/lib/wxpTag.py index 1981f5b02d..8dbb7109d4 100644 --- a/wxPython/wx/lib/wxpTag.py +++ b/wxPython/wx/lib/wxpTag.py @@ -100,14 +100,17 @@ PARAMTAG = 'PARAM' class wxpTagHandler(wxHtmlWinTagHandler): def __init__(self): + print 'wxpTagHandler' wxHtmlWinTagHandler.__init__(self) self.ctx = None def GetSupportedTags(self): + print 'wxpTagHandler.GetSupportedTags' return WXPTAG+','+PARAMTAG def HandleTag(self, tag): + print 'wxpTagHandler.HandleTag' name = tag.GetName() if name == WXPTAG: return self.HandleWxpTag(tag) @@ -136,7 +139,7 @@ class wxpTagHandler(wxHtmlWinTagHandler): className = tag.GetParam('CLASS') self.ctx.classObj = getattr(self.ctx.classMod, className) - if type(self.ctx.classObj) != types.ClassType: + if type(self.ctx.classObj) not in [ types.ClassType, types.TypeType]: raise TypeError, "WXP tag attribute CLASS must name a class" # now look for width and height