#pragma once #include #include #include #include #include #include #include #include class TerminalWidget : public QWidget { Q_OBJECT public: explicit TerminalWidget(QWidget *parent = nullptr); ~TerminalWidget(); void setWorkingDirectory(const QString &directory); QString workingDirectory() const; void executeCommand(const QString &command); void clear(); void showBuildOutput(); void showRunOutput(); signals: void commandFinished(int exitCode); private slots: void onCommandEntered(); void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus); void onProcessError(QProcess::ProcessError error); void onProcessOutput(); void updatePrompt(); private: void setupUI(); void setupProcess(); void appendOutput(const QString &text, const QColor &color = Qt::white); void appendPrompt(); QTextEdit *m_output; QLineEdit *m_input; QPushButton *m_clearButton; QProcess *m_process; QString m_workingDirectory; QString m_currentPrompt; // Colors for different output types QColor m_normalColor; QColor m_errorColor; QColor m_successColor; QColor m_promptColor; };