File indexing completed on 2024-04-28 05:49:11
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2014 Martin Sandsmark <martin.sandsmark@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KTextEditor/Plugin> 0010 #include <KTextEditor/SessionConfigInterface> 0011 #include <KXMLGUIClient> 0012 #include <QProcess> 0013 0014 class QListWidgetItem; 0015 class QListWidget; 0016 class QTemporaryFile; 0017 class QListWidget; 0018 class QPushButton; 0019 class QAction; 0020 class ReplicodeConfig; 0021 0022 class ReplicodeView : public QObject, public KXMLGUIClient, public KTextEditor::SessionConfigInterface 0023 { 0024 Q_OBJECT 0025 Q_INTERFACES(KTextEditor::SessionConfigInterface) 0026 0027 public: 0028 explicit ReplicodeView(KTextEditor::Plugin *plugin, KTextEditor::MainWindow *mainWindow); 0029 ~ReplicodeView() override; 0030 void readSessionConfig(const KConfigGroup &) override 0031 { 0032 } 0033 void writeSessionConfig(KConfigGroup &) override 0034 { 0035 } 0036 0037 private Q_SLOTS: 0038 void runReplicode(); 0039 void stopReplicode(); 0040 void replicodeFinished(); 0041 void gotStderr(); 0042 void gotStdout(); 0043 void runErrored(QProcess::ProcessError); 0044 void outputClicked(QListWidgetItem *item); 0045 void viewChanged(); 0046 0047 private: 0048 KTextEditor::MainWindow *m_mainWindow; 0049 QProcess *m_executor; 0050 QListWidget *m_replicodeOutput; 0051 std::unique_ptr<QWidget> m_toolview; 0052 std::unique_ptr<QWidget> m_configSidebar; 0053 QPushButton *m_runButton; 0054 QPushButton *m_stopButton; 0055 QAction *m_runAction; 0056 QAction *m_stopAction; 0057 ReplicodeConfig *m_configView; 0058 bool m_completed = false; 0059 };