#ifndef TERMINALCOMMANDER_H #define TERMINALCOMMANDER_H #include #include #include #include #include #include #include #include #include "terminalcommand.h" static const char *const terminalColorNormal = "\033[0m"; static const char *const terminalColorYellow = "\x1B[0;93m"; static const char *const terminalColorRed = "\x1B[0;91m"; static const char *const terminalColorBlue = "\x1B[0;94m"; static const char *const terminalColorGreen = "\e[31m"; static const char *const terminalColorBoldGray = "\x1B[1;30m"; static const char *const terminalColorBoldNormal = "\x1B[1;37m"; class TerminalCommander : public QThread { Q_OBJECT public: static TerminalCommander* instance(); void destroy(); QList commands() const; void setCommands(QList commands); void printToTerminal(const QString &message); private: explicit TerminalCommander(QObject *parent = nullptr); ~TerminalCommander(); QList m_commands; QMutex m_mutex; bool m_abort = false; static void rl_printf(const char *fmt, ...) __attribute__((format(printf, 1, 2))); static void signalHandler(int status); void printHelpMessage(); signals: void commandReceived(const QStringList &tokens); protected: void run() override; public slots: void stopProcess(); }; #endif // TERMINALCOMMANDER_H