itom 1.3.0
ito::PythonEngine Class Reference

List of all members.

Classes

struct  AutoReload

Public Slots

void pythonRunString (QString cmd)
void pythonDebugString (QString cmd)
void pythonExecStringFromCommandLine (QString cmd)
void pythonRunFile (QString filename)
void pythonDebugFile (QString filename)
void pythonRunStringOrFunction (QString cmdOrFctHash)
void pythonDebugStringOrFunction (QString cmdOrFctHash)
void pythonInterruptExecution () const
void pythonDebugCommand (tPythonDbgCmd cmd)
void setAutoReloader (bool enabled, bool checkFile, bool checkCmd, bool checkFct)
void readSettings ()
void propertiesChanged ()
void pythonSyntaxCheck (const QString &code, QPointer< QObject > sender)
 public slot invoked by the scriptEditorWidget
void pythonGenericSlot (PyObject *callable, PyObject *argumentTuple)
 these slots are only connected if python in debug-mode; while waiting these slots will be treated due to progressEvents-call in PythonEngine::PyDbgCommandLoop
void breakPointAdded (BreakPointItem bp, int row)
void breakPointDeleted (QString filename, int lineNo, int pyBpNumber)
void breakPointChanged (BreakPointItem oldBp, BreakPointItem newBp)
ito::RetVal setupBreakPointDebugConnections ()
ito::RetVal shutdownBreakPointDebugConnections ()
bool renameVariable (bool globalNotLocal, QString oldKey, QString newKey, ItomSharedSemaphore *semaphore=NULL)
bool deleteVariable (bool globalNotLocal, QStringList keys, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal pickleVariables (bool globalNotLocal, QString filename, QStringList varNames, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal unpickleVariables (bool globalNotLocal, QString filename, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal saveMatlabVariables (bool globalNotLocal, QString filename, QStringList varNames, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal loadMatlabVariables (bool globalNotLocal, QString filename, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal registerAddInInstance (QString varname, ito::AddInBase *instance, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal getSysModules (QSharedPointer< QStringList > modNames, QSharedPointer< QStringList > modFilenames, QSharedPointer< IntList > modTypes, ItomSharedSemaphore *semaphore=NULL)
ito::RetVal reloadSysModules (QSharedPointer< QStringList > modNames, ItomSharedSemaphore *semaphore=NULL)
void registerWorkspaceContainer (PyWorkspaceContainer *container, bool registerNotUnregister, bool globalNotLocal)
void workspaceGetChildNode (PyWorkspaceContainer *container, QString fullNameParentItem)
void workspaceGetValueInformation (PyWorkspaceContainer *container, QString fullItemName, QSharedPointer< QString > extendedValue, ItomSharedSemaphore *semaphore=NULL)
void putParamsToWorkspace (bool globalNotLocal, QStringList names, QVector< SharedParamBasePointer > values, ItomSharedSemaphore *semaphore=NULL)
void getParamsFromWorkspace (bool globalNotLocal, QStringList names, QVector< int > paramBaseTypes, QSharedPointer< SharedParamBasePointerVector > values, ItomSharedSemaphore *semaphore=NULL)

Signals

void pythonDebugPositionChanged (QString filename, int lineNo)
void pythonStateChanged (tPythonTransitions pyTransition)
void pythonModifyLocalDict (PyObject *localDict, ItomSharedSemaphore *semaphore)
void pythonModifyGlobalDict (PyObject *globalDict, ItomSharedSemaphore *semaphore)
void pythonAddToolbarButton (QString toolbarName, QString buttonName, QString buttonIconFilename, QString pythonCode)
void pythonRemoveToolbarButton (QString toolbarName, QString buttonName)
void pythonAddMenuElement (int typeID, QString key, QString name, QString code, QString icon)
void pythonRemoveMenuElement (QString key)
void pythonCurrentDirChanged ()
void updateCallStack (QStringList filenames, IntList lines, QStringList methods)
void deleteCallStack ()
void pythonSetCursor (const Qt::CursorShape cursor)
void pythonResetCursor ()
void pythonAutoReloadChanged (bool enabled, bool checkFile, bool checkCmd, bool checkFct)
void clearCommandLine ()

Public Member Functions

Q_INVOKABLE void pythonSetup (ito::RetVal *retValue)
Q_INVOKABLE ito::RetVal scanAndRunAutostartFolder (QString currentDirAfterScan=QString())
Q_INVOKABLE ito::RetVal pythonShutdown (ItomSharedSemaphore *aimWait=NULL)
Q_INVOKABLE ito::RetVal stringEncodingChanged ()
ito::BreakPointModel * getBreakPointModel () const
bool isPythonBusy () const
bool isPythonDebugging () const
bool isPythonDebuggingAndWaiting () const
bool execInternalCodeByDebugger () const
void setExecInternalCodeByDebugger (bool value)
ito::RetVal checkForPyExceptions ()
void printPythonErrorWithoutTraceback ()
void pythonDebugFunction (PyObject *callable, PyObject *argTuple)
void pythonRunFunction (PyObject *callable, PyObject *argTuple)
PyObject * getGlobalDictionary () const
bool pySyntaxCheckAvailable () const
QList< int > parseAndSplitCommandInMainComponents (const char *str, QByteArray &encoding) const

Static Public Member Functions

static const PythonEnginegetInstance ()

Protected Member Functions

ito::RetVal runPyFile (const QString &pythonFileName)
ito::RetVal debugFile (const QString &pythonFileName)
ito::RetVal runString (const QString &command)
ito::RetVal debugString (const QString &command)
ito::RetVal debugFunction (PyObject *callable, PyObject *argTuple)
ito::RetVal runFunction (PyObject *callable, PyObject *argTuple)
ito::RetVal modifyTracebackDepth (int NrOfLevelsToPopAtFront=-1, bool showTraceback=true)
void connectNotify (const char *signal)

Private Member Functions

PyObject * getLocalDictionary ()
PyObject * getPyObjectByFullName (bool globalNotLocal, const QStringList &fullName)
void setGlobalDictionary (PyObject *mainDict=NULL)
void setLocalDictionary (PyObject *localDict)
void emitPythonDictionary (bool emitGlobal, bool emitLocal, PyObject *globalDict, PyObject *localDict)
ito::RetVal pickleDictionary (PyObject *dict, const QString &filename)
ito::RetVal unpickleDictionary (PyObject *destinationDict, const QString &filename, bool overwrite)
ito::RetVal addMethodToModule (PyMethodDef *def)
ito::RetVal delMethodFromModule (const char *ml_name)
ito::RetVal pythonAddBuiltinMethods ()
void enqueueDbgCmd (ito::tPythonDbgCmd dbgCmd)
ito::tPythonDbgCmd dequeueDbgCmd ()
bool DbgCommandsAvailable ()
void clearDbgCmdLoop ()
ito::RetVal pythonStateTransition (tPythonTransitions transition)
ito::RetVal pythonAddBreakpoint (const QString &filename, const int lineno, const bool enabled, const bool temporary, const QString &condition, const int ignoreCount, int &pyBpNumber)
ito::RetVal pythonEditBreakpoint (const int pyBpNumber, const QString &filename, const int lineno, const bool enabled, const bool temporary, const QString &condition, const int ignoreCount)
ito::RetVal pythonDeleteBreakpoint (const int pyBpNumber)
ito::RetVal autoReloaderCheck ()

Static Private Member Functions

static PythonEnginegetInstanceInternal ()
static PyObject * PyInitItomDbg (void)
static PyObject * PyDbgCommandLoop (PyObject *pSelf, PyObject *pArgs)

Private Attributes

bool m_started
QMutex dbgCmdMutex
QMutex pythonStateChangeMutex
QMutex dictChangeMutex
QDesktopWidget * m_pDesktopWidget
QQueue< ito::tPythonDbgCmd > debugCommandQueue
ito::tPythonDbgCmd debugCommand
ito::tPythonState pythonState
ito::BreakPointModel * bpModel
PyObject * mainModule
 main module of python (builtin) [borrowed]
PyObject * mainDictionary
 main dictionary of python [borrowed]
PyObject * localDictionary
 local dictionary of python [borrowed], usually NULL unless if debugger is in "interaction-mode", then globalDictionary is equal to the local dictionary of the current frame
PyObject * globalDictionary
 global dictionary of python [borrowed], equals to mainDictionary unless if debugger is in "interaction-mode", then globalDictionary is equal to the global dictionary of the current frame
PyObject * itomDbgModule
 debugger module
PyObject * itomDbgInstance
 debugger instance
PyObject * itomModule
 itom module [new ref]
PyObject * itomFunctions
 ito functions [additional python methods] [new ref]
PyObject * m_pyModGC
PyObject * m_pyModSyntaxCheck
PyObject * dictUnicode
QSet< ito::PyWorkspaceContainer * > m_mainWorkspaceContainer
QSet< ito::PyWorkspaceContainer * > m_localWorkspaceContainer
QHash< QString, QPair
< PyObject *, PyObject * > > 
m_pyFuncWeakRefHashes
 hash table containing weak reference to callable python methods or functions and as second, optional PyObject* an tuple, passed as argument to that function. These functions are for example executed by menu-clicks in the main window.
int m_pyFuncWeakRefHashesAutoInc
bool m_executeInternalPythonCodeInDebugMode
 if true, button events, user interface connections to python methods... will be executed by debugger
PyMethodDef * PythonAdditionalModuleITOM
bool m_includeItom
AutoReload m_autoReload
 debugger functionality

Static Private Attributes

static PyMethodDef PyMethodItomDbg []
static PyModuleDef PyModuleItomDbg
static QMutex instatiated
static QMutex instancePtrProtection
static PythonEngineinstance = NULL

Friends

class ito::PythonItom

Member Function Documentation

ito::RetVal ito::PythonEngine::addMethodToModule ( PyMethodDef *  def) [private]

< module-dictionary (borrowed)

< function object for new dynamic function call (new reference)

ito::RetVal ito::PythonEngine::debugFile ( const QString &  pythonFileName) [protected]

< first, clear all existing breakpoints

< syntax error

< disconnect connections for live-changes in breakpoints

ito::RetVal ito::PythonEngine::debugFunction ( PyObject *  callable,
PyObject *  argTuple 
) [protected]

< first, clear all existing breakpoints

< syntax error

< disconnect connections for live-changes in breakpoints

ito::RetVal ito::PythonEngine::debugString ( const QString &  command) [protected]

< first, clear all existing breakpoints

< syntax error

< disconnect connections for live-changes in breakpoints

ito::RetVal ito::PythonEngine::delMethodFromModule ( const char *  ml_name) [private]

< module-dictionary (borrowed)

PyObject* ito::PythonEngine::getGlobalDictionary ( ) const [inline]

returns reference to main dictionary (main workspace)

PyObject* ito::PythonEngine::getLocalDictionary ( ) [inline, private]

returns reference to local dictionary (workspace of method, which is handled right now). Is NULL if no method is executed right now.

PyObject * ito::PythonEngine::PyDbgCommandLoop ( PyObject *  pSelf,
PyObject *  pArgs 
) [static, private]

< check if key interrupt occurred

< do_quit instead of set_quit, since one member-variable is set in itoDebugger.py

ito::RetVal ito::PythonEngine::pythonAddBreakpoint ( const QString &  filename,
const int  lineno,
const bool  enabled,
const bool  temporary,
const QString &  condition,
const int  ignoreCount,
int &  pyBpNumber 
) [private]

> retNumber is new pyBpNumber, must now be added to BreakPointModel

ito::RetVal ito::PythonEngine::pythonAddBuiltinMethods ( ) [private]

< insert all dynamic function calls to PythonAdditionalModuleITOM, which must be "alive" until Py_Finalize()

void ito::PythonEngine::pythonSetup ( ito::RetVal retValue)

< add all static, known function calls to python-module itom

< add all static, known function calls to python-module itomdbg

< must be called after any PyImport_AppendInittab-call

< borrowed reference

< http://bytes.com/topic/python/answers/649229-_pyobject_new-pyobject_init-pyinstance_new-etc, new reference

void ito::PythonEngine::pythonSyntaxCheck ( const QString &  code,
QPointer< QObject >  sender 
) [slot]

public slot invoked by the scriptEditorWidget

This function calls the frosted python module. This module is able to check the syntax. Itīs called from ScriptEditorWidget::checkSyntax() and delivers the results by calling ScriptEditorWidget::syntaxCheckResult(...).

Parameters:
codeThis QString contains the code that frosted is supposed to check
senderthis is a pointer to the object that called this method
Returns:
no real return value. Results are returned by invoking ScriptEditorWidget::syntaxCheckResult(...)
void ito::PythonEngine::setAutoReloader ( bool  enabled,
bool  checkFile,
bool  checkCmd,
bool  checkFct 
) [slot]

Member Data Documentation

PyMethodDef ito::PythonEngine::PyMethodItomDbg [static, private]
Initial value:
 {
    
    {"pyDbgCommandLoop", PythonEngine::PyDbgCommandLoop, METH_VARARGS, "will be invoked if debugger stopped at the given filename and line"},
    {NULL, NULL, 0, NULL}
}
PyModuleDef ito::PythonEngine::PyModuleItomDbg [static, private]
Initial value:
 {
    PyModuleDef_HEAD_INIT, "itomDbgWrapper", NULL, -1, PythonEngine::PyMethodItomDbg,
    NULL, NULL, NULL, NULL
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends