File indexing completed on 2024-05-12 16:16:01

0001 /*
0002    SPDX-FileCopyrightText: 2019-2023 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "textgrammarcheck_export.h"
0010 #include <QObject>
0011 #include <QProcess>
0012 #include <QVector>
0013 namespace TextGrammarCheck
0014 {
0015 class TEXTGRAMMARCHECK_EXPORT GrammalecteGenerateConfigOptionJob : public QObject
0016 {
0017     Q_OBJECT
0018 public:
0019     struct Option {
0020         QString optionName;
0021         QString description;
0022         bool defaultValue = false;
0023     };
0024 
0025     explicit GrammalecteGenerateConfigOptionJob(QObject *parent = nullptr);
0026     ~GrammalecteGenerateConfigOptionJob() override;
0027 
0028     void start();
0029     Q_REQUIRED_RESULT bool canStart() const;
0030 
0031     Q_REQUIRED_RESULT QString pythonPath() const;
0032     void setPythonPath(const QString &pythonPath);
0033 
0034     Q_REQUIRED_RESULT QString grammarlecteCliPath() const;
0035     void setGrammarlecteCliPath(const QString &grammarlecteCliPath);
0036 
0037 Q_SIGNALS:
0038     void error();
0039     void finished(const QVector<GrammalecteGenerateConfigOptionJob::Option> &result);
0040 
0041 private:
0042     Q_DISABLE_COPY(GrammalecteGenerateConfigOptionJob)
0043     TEXTGRAMMARCHECK_NO_EXPORT void receivedStandardOutput();
0044     TEXTGRAMMARCHECK_NO_EXPORT void slotFinished(int exitCode, QProcess::ExitStatus exitStatus);
0045     TEXTGRAMMARCHECK_NO_EXPORT void receivedError();
0046     TEXTGRAMMARCHECK_NO_EXPORT void receivedStdErr();
0047     TEXTGRAMMARCHECK_NO_EXPORT QVector<GrammalecteGenerateConfigOptionJob::Option> parseResult() const;
0048     QString mResult;
0049     QString mPythonPath;
0050     QString mGrammarlecteCliPath;
0051     QString mLastError;
0052     QProcess *mProcess = nullptr;
0053 };
0054 }
0055 Q_DECLARE_TYPEINFO(TextGrammarCheck::GrammalecteGenerateConfigOptionJob::Option, Q_MOVABLE_TYPE);