Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
process_tab.h
1#pragma once
2
3#include <QProcess>
4#include <QTextCharFormat>
5#include <QWidget>
6
7#include "compiler/pipeline.h"
8#include "widgets/settings_manager.h"
9
10class QTextBrowser;
11
15class ProcessTab : public QWidget
16{
17 Q_OBJECT
18public:
24 ProcessTab(QWidget* parent = nullptr);
25
31 void addPipeline(Pipeline* pipeline);
32
33 void setMergedLogs(bool mergeLogs);
34
35 void onSettingsChanged(const GeneralSettings& settings);
36
37signals:
42
49 void processFinished(int exitCode, QProcess::ExitStatus status);
50
51private slots:
59 void onStartingProcess(const Pipeline::Info& info, const QString& process, const QStringList& arguments);
60
68 void onFinished(const Pipeline::Info& info, int exitCode, QProcess::ExitStatus status);
69
77 void onFinishedLast(const Pipeline::Info& info, int exitCode, const QString& message);
78
84 void onReadyReadStandardOutput(const QByteArray& message);
85
91 void onReadyReadStandardError(const QByteArray& message);
92
100 void onErrorOccurred(const Pipeline::Info& info, QProcess::ProcessError error, const QString& process);
101
102private:
103 QString mCurrentProgram;
104 QTextBrowser* mOutput;
105 QTextCharFormat mCurrentFormat;
107
108 int mOverwriteNextLine = 0; // after ESC[1F]
109 int mMaximumRows = 1000;
110
116 void appendText(const QString& text);
117
123 void handleProcessData(const QByteArray& raw);
124
130 void applySgr(const QList<int>& codes);
131
137 void deleteLastLine(QTextCursor& cursor);
138
139 inline void logMessage(const QString& message) const;
140};
Executes and manages a sequence of external processes.
Definition pipeline.h:22
void deleteLastLine(QTextCursor &cursor)
Deletes the last line from the text cursor.
Definition process_tab.cpp:266
void appendText(const QString &text)
Appends text to the output.
Definition process_tab.cpp:85
void onFinished(const Pipeline::Info &info, int exitCode, QProcess::ExitStatus status)
Handles the completion of a process.
Definition process_tab.cpp:56
void onFinishedLast(const Pipeline::Info &info, int exitCode, const QString &message)
Handles the completion of the last process.
Definition process_tab.cpp:61
void onErrorOccurred(const Pipeline::Info &info, QProcess::ProcessError error, const QString &process)
Handles an error occurring during process execution.
Definition process_tab.cpp:74
void onReadyReadStandardError(const QByteArray &message)
Handles ready read standard error.
Definition process_tab.cpp:51
void applySgr(const QList< int > &codes)
Applies SGR (Select Graphic Rendition) codes to the current format.
Definition process_tab.cpp:297
bool mMergeLogs
Current text format for output.
Definition process_tab.h:106
void onStartingProcess(const Pipeline::Info &info, const QString &process, const QStringList &arguments)
Handles the start of a process.
Definition process_tab.cpp:67
QTextCharFormat mCurrentFormat
Pointer to the text browser for displaying output.
Definition process_tab.h:105
void addPipeline(Pipeline *pipeline)
Sets the pipeline for this tab.
Definition process_tab.cpp:28
void processStarted()
Emitted when a process starts.
void processFinished(int exitCode, QProcess::ExitStatus status)
Emitted when a process finishes.
ProcessTab(QWidget *parent=nullptr)
Constructs a new ProcessTab with the given parent.
Definition process_tab.cpp:13
void handleProcessData(const QByteArray &raw)
Handles process data.
Definition process_tab.cpp:104
void onReadyReadStandardOutput(const QByteArray &message)
Handles ready read standard output.
Definition process_tab.cpp:46
Holds general application settings.
Definition settings_manager.h:23
Definition pipeline.h:51