PyObject* PYTHON_FOOTPRINT_WIZARD::CallMethod( const char* aMethod, PyObject* aArglist ) { PyLOCK lock; PyErr_Clear(); // pFunc is a new reference to the desired method PyObject* pFunc = PyObject_GetAttrString( this->m_PyWizard, aMethod ); if( pFunc && PyCallable_Check( pFunc ) ) { PyObject* result = PyObject_CallObject( pFunc, aArglist ); if( PyErr_Occurred() ) { #if 1 // defined(DEBUG) wxMessageBox( PyErrStringWithTraceback(), wxT( "Exception on python footprint wizard code" ), wxICON_ERROR | wxOK ); #endif } if( result ) { Py_XDECREF( pFunc ); return result; } } else { printf( "method not found, or not callable: %s\n", aMethod ); } if( pFunc ) { Py_XDECREF( pFunc ); } return NULL; }
PyObject* PYTHON_ACTION_PLUGIN::CallMethod( const char* aMethod, PyObject* aArglist ) { PyLOCK lock; PyErr_Clear(); // pFunc is a new reference to the desired method PyObject* pFunc = PyObject_GetAttrString( this->m_PyAction, aMethod ); if( pFunc && PyCallable_Check( pFunc ) ) { PyObject* result = PyObject_CallObject( pFunc, aArglist ); if( PyErr_Occurred() ) { wxMessageBox( PyErrStringWithTraceback(), _( "Exception on python action plugin code" ), wxICON_ERROR | wxOK ); } if( result ) { Py_XDECREF( pFunc ); return result; } } else { wxString msg = wxString::Format( _( "Method \"%s\" not found, or not callable" ), aMethod ); wxMessageBox( msg, _( "Unknown Method" ), wxICON_ERROR | wxOK ); } if( pFunc ) { Py_XDECREF( pFunc ); } return NULL; }