#ifndef SYSMACROCONSOLE_H #define SYSMACROCONSOLE_H #include <tbaseutil/tscriptengine.h> #include <topcore/topclassabs.h> #include <twidget/tcodeedit.h> class QFileSystemWatcher; class QScriptEngineDebugger; class TSplitter; class TLineEdit; class QPlainTextEdit; class WidgetContainer; class TTabWidget; class SysMacroConsole : public TopClassAbs { Q_OBJECT public: explicit SysMacroConsole(const QString &iModuleNameStr = QString(""), const QVariantMap iUrlPars = QVariantMap(), QWidget *iParent = nullptr); ~SysMacroConsole(); public slots: bool runScript(const QString &iRunMode = "release"); bool openScript(const QString &iFileNameStr = QString("")); bool saveScript(const QString &iFileNameStr = QString(""), bool iSaveAsBol = false); bool useExternProgram(const QString &iProgramPath); bool exitExternProgram(); bool isUsingExternProgram(); bool win32(); private slots: void onFileChanged(const QString &iFileNameStr); void redirectOutput(); void onCodeEditTextChanged(); private: TopClassAbs *getModule(const QString &iModuleName, bool iAutoOpen = true); void attachDebugger(); void detachDebugger(); QString getScriptString() const; void constructMyselfScriptEngine(); private: QString mScriptFile; QScriptEngineDebugger *mScriptDebugger = nullptr; TScriptEngine *mScriptEngine = nullptr; TCodeEdit *mCodeEdit = nullptr; TSplitter *mBodySplitter = nullptr; TSplitter *mDebugSplitter = nullptr; QWidget *mBodyWidget = nullptr; QFileSystemWatcher *mFileWatcher = nullptr; TLineEdit *mModuleName = nullptr; bool debuggerAttached = false; QPlainTextEdit* mOutputWgt = nullptr; QPlainTextEdit* mErrorLogWgt = nullptr; TTabWidget* mDebugTabWgt = nullptr; QString mDebugOutputStr; QString mErrorLogStr; QString mExternScriptFile; bool mUseExternProgram = false; WidgetContainer *mExternWindowContainer = nullptr; }; #endif // SYSMACROCONSOLE_H