File indexing completed on 2024-05-19 04:41:23
0001 /* 0002 SPDX-FileCopyrightText: 2019 Daniel Mensinger <daniel@mensinger-ka.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QAbstractButton> 0010 #include <QVector> 0011 #include <interfaces/configpage.h> 0012 0013 #include "mesonrewriterinput.h" 0014 #include "mintro/mesonoptions.h" 0015 0016 namespace KDevelop 0017 { 0018 class IPlugin; 0019 class IProject; 0020 } 0021 0022 namespace Ui 0023 { 0024 class MesonRewriterPage; 0025 } 0026 0027 class MesonRewriterPage : public KDevelop::ConfigPage 0028 { 0029 Q_OBJECT 0030 public: 0031 enum State { START, LOADING, WRITING, READY, ERROR }; 0032 0033 public: 0034 explicit MesonRewriterPage(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent = nullptr); 0035 0036 QString name() const override; 0037 QString fullName() const override; 0038 QIcon icon() const override; 0039 0040 public Q_SLOTS: 0041 void apply() override; 0042 void defaults() override; 0043 void reset() override; 0044 0045 void emitChanged(); 0046 void recalculateLengths(); 0047 void newOption(); 0048 0049 private: 0050 void setWidgetsDisabled(bool disabled); 0051 void checkStatus(); 0052 void setStatus(State s); 0053 0054 QVector<MesonRewriterInputBase*> constructPojectInputs(); 0055 MesonOptContainerPtr constructDefaultOpt(const QString& name, const QString& value); 0056 0057 private: 0058 KDevelop::IProject* m_project = nullptr; 0059 Ui::MesonRewriterPage* m_ui = nullptr; 0060 bool m_configChanged = false; 0061 State m_state = START; 0062 MesonOptsPtr m_opts = nullptr; 0063 0064 QVector<MesonRewriterInputBase*> m_projectKwargs; 0065 QVector<MesonOptContainerPtr> m_defaultOpts; 0066 0067 QStringList m_initialDefaultOpts; 0068 };