21 #ifndef __ctkAbstractPythonManager_h 22 #define __ctkAbstractPythonManager_h 27 #include <QStringList> 31 #include <PythonQtPythonInclude.h> 34 #include "ctkScriptingPythonCoreExport.h" 36 class ctkAbstractPythonManagerPrivate;
37 class PythonQtForeignWrapperFactory;
38 class PythonQtObjectPtr;
54 void setInitializationFlags(
int flags);
57 int initializationFlags()
const;
67 PythonQtObjectPtr mainContext();
69 void addObjectToPythonMain(
const QString& name, QObject* obj);
70 void addWrapperFactory(PythonQtForeignWrapperFactory* factory);
71 void registerPythonQtDecorator(QObject* decorator);
72 void registerClassForPythonQt(
const QMetaObject* metaobject);
73 void registerCPPClassForPythonQt(
const char* name);
76 bool systemExitExceptionHandlerEnabled()
const;
79 void setSystemExitExceptionHandlerEnabled(
bool value);
94 Q_INVOKABLE QVariant executeString(
const QString& code, ExecuteStringMode mode = FileInput);
98 QVariant getVariable(
const QString& varName);
101 Q_INVOKABLE
void executeFile(
const QString& filename);
105 void setInitializationFunction(
void (*initFunction)());
110 static QStringList dir_object(PyObject*
object,
111 bool appendParenthesis =
false);
116 static QStringList splitByDotOutsideParenthesis(
const QString& pythonVariableName);
123 QStringList pythonAttributes(
const QString& pythonVariableName,
124 const QString& module = QLatin1String(
"__main__"),
125 bool appendParenthesis =
false)
const;
128 static PyObject* pythonModule(
const QString &module);
132 static PyObject* pythonObject(
const QString& variableNameAndFunction);
136 bool isPythonInitialized()
const;
140 bool pythonErrorOccured()
const;
144 void resetErrorFlag();
151 void pythonPreInitialized();
156 void pythonInitialized();
161 void systemExitExceptionRaised(
int exitCode);
164 void printStderr(
const QString&);
165 void printStdout(
const QString&);
169 void initPythonQt(
int flags);
171 virtual QStringList pythonPaths();
174 virtual void preInitialization();
177 virtual void executeInitializationScripts();
180 QScopedPointer<ctkAbstractPythonManagerPrivate>
d_ptr;
QScopedPointer< ctkAbstractPythonManagerPrivate > d_ptr