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 };