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