1 /* 2 SPDX-FileCopyrightText: 2009 Andreas Pakulat <apaku@gmx.de> 3 SPDX-FileCopyrightText: 2010 Milian Wolff <mail@milianw.de> 4 5 SPDX-License-Identifier: LGPL-2.0-or-later 6 */ 7 8 #ifndef KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H 9 #define KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H 10 11 #include <QProcess> 12 #include <outputview/outputjob.h> 13 14 #include "externalscriptitem.h" 15 16 #include <KTextEditor/Range> 17 #include <QUrl> 18 19 namespace KDevelop { 20 class ProcessLineMaker; 21 class OutputModel; 22 class Document; 23 } 24 25 namespace KTextEditor { 26 class Document; 27 } 28 29 class KProcess; 30 class ExternalScriptPlugin; 31 32 class ExternalScriptJob 33 : public KDevelop::OutputJob 34 { 35 Q_OBJECT 36 37 public: 38 ExternalScriptJob(ExternalScriptItem* item, const QUrl& url, ExternalScriptPlugin* parent); 39 void start() override; 40 KDevelop::OutputModel* model(); 41 42 protected: 43 bool doKill() override; 44 45 private Q_SLOTS: 46 void processError(QProcess::ProcessError); 47 void processFinished(int, QProcess::ExitStatus); 48 49 void receivedStdoutLines(const QStringList& lines); 50 void receivedStderrLines(const QStringList& lines); 51 52 private: 53 void appendLine(const QString& l); 54 55 KProcess* m_proc; 56 KDevelop::ProcessLineMaker* m_lineMaker; 57 ExternalScriptItem::OutputMode m_outputMode; 58 ExternalScriptItem::InputMode m_inputMode; 59 ExternalScriptItem::ErrorMode m_errorMode; 60 int m_filterMode; 61 KTextEditor::Document* m_document; 62 QUrl m_url; 63 /// invalid when whole doc should be replaced 64 KTextEditor::Range m_selectionRange; 65 KTextEditor::Cursor m_cursorPosition; 66 bool m_showOutput; 67 68 QStringList m_stdout; 69 QStringList m_stderr; 70 }; 71 72 #endif // KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTJOB_H 73