X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c368d904fc27d35ae1e533155e2154dc496432e4..c67d60484ba5ad5f4ccc6739d29a0fcf23d20199:/wxPython/src/helpers.cpp diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index 6d0cb21730..b59f95f5fe 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -246,8 +246,16 @@ PyObject* __wxSetDictionary(PyObject* /* self */, PyObject* args) //--------------------------------------------------------------------------- PyObject* wxPyConstructObject(void* ptr, - const char* className, - int setThisOwn) { + const char* className, + int setThisOwn) { + PyObject* obj; + PyObject* arg; + + if (!ptr) { + Py_INCREF(Py_None); + return Py_None; + } + char buff[64]; // should always be big enough... char swigptr[64]; @@ -257,12 +265,18 @@ PyObject* wxPyConstructObject(void* ptr, sprintf(buff, "%sPtr", className); PyObject* classobj = PyDict_GetItemString(wxPython_dict, buff); if (! classobj) { - Py_INCREF(Py_None); - return Py_None; - } - - PyObject* arg = Py_BuildValue("(s)", swigptr); - PyObject* obj = PyInstance_New(classobj, arg, NULL); + //Py_INCREF(Py_None); + //return Py_None; + char temp[128]; + sprintf(temp, + "*** Unknown class name %s, tell Robin about it please ***", + buff); + obj = PyString_FromString(temp); + return obj; + } + + arg = Py_BuildValue("(s)", swigptr); + obj = PyInstance_New(classobj, arg, NULL); Py_DECREF(arg); if (setThisOwn) { @@ -399,9 +413,9 @@ wxPyCallbackHelper::wxPyCallbackHelper(const wxPyCallbackHelper& other) { } -void wxPyCallbackHelper::setSelf(PyObject* self, PyObject* _class, int incref) { +void wxPyCallbackHelper::setSelf(PyObject* self, PyObject* klass, int incref) { m_self = self; - m_class = _class; + m_class = klass; m_incRef = incref; if (incref) { Py_INCREF(m_self); @@ -547,20 +561,26 @@ wxPyTimer::~wxPyTimer() { } void wxPyTimer::Notify() { - bool doSave = wxPyRestoreThread(); - - PyObject* result; - PyObject* args = Py_BuildValue("()"); + if (!func || func == Py_None) { + wxTimer::Notify(); + } + else { + bool doSave = wxPyRestoreThread(); + + PyObject* result; + PyObject* args = Py_BuildValue("()"); + + result = PyEval_CallObject(func, args); + Py_DECREF(args); + if (result) { + Py_DECREF(result); + PyErr_Clear(); + } else { + PyErr_Print(); + } - result = PyEval_CallObject(func, args); - Py_DECREF(args); - if (result) { - Py_DECREF(result); - PyErr_Clear(); - } else { - PyErr_Print(); + wxPySaveThread(doSave); } - wxPySaveThread(doSave); }