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