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