sysmacroconsole.h 2 KB
Newer Older
‘oliver.hui’'s avatar
‘oliver.hui’ committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#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