Exemplo n.º 1
0
PythonScript::PythonScript(PythonScripting *env, const QString &code, QObject *context, const QString &name)
    : Script(env, code, context, name)
{
    PyCode = NULL;
    localDict = PyDict_New();
    setQObject(Context, "self");
}
Exemplo n.º 2
0
void PythonScript::setContext(QObject *context) {
  Script::setContext(context);
  setQObject(context, "self");
}
PythonScripting::PythonScripting(ApplicationWindow *parent)
: ScriptingEnv(parent, langName)
{
  PyObject *mainmod=NULL, *qtimod=NULL, *sysmod=NULL;
  math = NULL;
  sys = NULL;
  if (Py_IsInitialized())
  {
    PyEval_AcquireLock();
    mainmod = PyImport_ImportModule("__main__");
    if (!mainmod)
    {
      PyErr_Print();
      PyEval_ReleaseLock();
      return;
    }
    globals = PyModule_GetDict(mainmod);
    Py_DECREF(mainmod);
  } else {
    PyEval_InitThreads ();
    Py_Initialize ();
    if (!Py_IsInitialized ())
      return;
    initqti();

    mainmod = PyImport_AddModule("__main__");
    if (!mainmod)
    {
      PyEval_ReleaseLock();
      PyErr_Print();
      return;
    }
    globals = PyModule_GetDict(mainmod);
  }

  if (!globals)
  {
    PyErr_Print();
    PyEval_ReleaseLock();
    return;
  }
  Py_INCREF(globals);
 
  math = PyDict_New();
  if (!math)
    PyErr_Print();
  
  qtimod = PyImport_ImportModule("qti");
  if (qtimod)
  {
    PyDict_SetItemString(globals, "qti", qtimod);
    PyObject *qtiDict = PyModule_GetDict(qtimod);
    setQObject(Parent, "app", qtiDict);
    PyDict_SetItemString(qtiDict, "mathFunctions", math);
    Py_DECREF(qtimod);
  } else
    PyErr_Print();

  sysmod = PyImport_ImportModule("sys");
  if (sysmod)
  {
    sys = PyModule_GetDict(sysmod);
    Py_INCREF(sys);
  } else
    PyErr_Print();
  
  PyEval_ReleaseLock();

#ifdef Q_WS_WIN
  loadInitFile(QDir::homeDirPath()+"qtiplotrc") ||
    loadInitFile(qApp->applicationDirPath()+"qtiplotrc") ||
#else
  loadInitFile(QDir::homeDirPath()+"/.qtiplotrc") ||
    loadInitFile(QDir::rootDirPath()+"etc/qtiplotrc") ||
#endif
  loadInitFile("qtiplotrc");
  
  initialized=true;
}