File indexing completed on 2024-04-28 04:38:40

0001 /*
0002     SPDX-FileCopyrightText: 2009 Andreas Pakulat <apaku@gmx.de>
0003     SPDX-FileCopyrightText: 2010 Milian Wolff <mail@milianw.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H
0009 #define KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H
0010 
0011 #include <QProcess>
0012 #include <outputview/outputjob.h>
0013 
0014 #include "externalscriptitem.h"
0015 
0016 #include <KTextEditor/Range>
0017 #include <QUrl>
0018 
0019 namespace KDevelop {
0020 class ProcessLineMaker;
0021 class OutputModel;
0022 class Document;
0023 }
0024 
0025 namespace KTextEditor {
0026 class Document;
0027 }
0028 
0029 class KProcess;
0030 class ExternalScriptPlugin;
0031 
0032 class ExternalScriptJob
0033     : public KDevelop::OutputJob
0034 {
0035     Q_OBJECT
0036 
0037 public:
0038     ExternalScriptJob(ExternalScriptItem* item, const QUrl& url, ExternalScriptPlugin* parent);
0039     void start() override;
0040     KDevelop::OutputModel* model();
0041 
0042 protected:
0043     bool doKill() override;
0044 
0045 private Q_SLOTS:
0046     void processError(QProcess::ProcessError);
0047     void processFinished(int, QProcess::ExitStatus);
0048 
0049     void receivedStdoutLines(const QStringList& lines);
0050     void receivedStderrLines(const QStringList& lines);
0051 
0052 private:
0053     void appendLine(const QString& l);
0054 
0055     KProcess* m_proc;
0056     KDevelop::ProcessLineMaker* m_lineMaker;
0057     ExternalScriptItem::OutputMode m_outputMode;
0058     ExternalScriptItem::InputMode m_inputMode;
0059     ExternalScriptItem::ErrorMode m_errorMode;
0060     int m_filterMode;
0061     KTextEditor::Document* m_document;
0062     QUrl m_url;
0063     /// invalid when whole doc should be replaced
0064     KTextEditor::Range m_selectionRange;
0065     KTextEditor::Cursor m_cursorPosition;
0066     bool m_showOutput;
0067 
0068     QStringList m_stdout;
0069     QStringList m_stderr;
0070 };
0071 
0072 #endif // KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H