File indexing completed on 2024-05-19 15:46:03
0001 /* 0002 SPDX-FileCopyrightText: 2018 Daniel Mensinger <daniel@mensinger-ka.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "mesonconfig.h" 0010 #include "mintro/mesonoptions.h" 0011 0012 #include <interfaces/configpage.h> 0013 0014 namespace KDevelop 0015 { 0016 class IPlugin; 0017 class IProject; 0018 } 0019 0020 namespace Ui 0021 { 0022 class MesonConfigPage; 0023 } 0024 0025 class MesonConfigPage : public KDevelop::ConfigPage 0026 { 0027 Q_OBJECT 0028 public: 0029 explicit MesonConfigPage(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent = nullptr); 0030 0031 QString name() const override; 0032 QString fullName() const override; 0033 QIcon icon() const override; 0034 0035 public Q_SLOTS: 0036 void apply() override; 0037 void defaults() override; 0038 void reset() override; 0039 0040 void addBuildDir(); 0041 void removeBuildDir(); 0042 void changeBuildDirIndex(int index); 0043 void emitChanged(); 0044 0045 private: 0046 void checkStatus(); 0047 void updateUI(); 0048 void readUI(); 0049 void writeConfig(); 0050 void setWidgetsDisabled(bool disabled); 0051 0052 private: 0053 KDevelop::IProject* m_project = nullptr; 0054 Ui::MesonConfigPage* m_ui = nullptr; 0055 Meson::MesonConfig m_config; 0056 Meson::BuildDir m_current; 0057 bool m_configChanged = false; 0058 0059 MesonOptsPtr m_options = nullptr; 0060 };