Changeset View
Changeset View
Standalone View
Standalone View
plugins/meson/settings/mesonoptionsview.h
- This file was copied from plugins/meson/settings/mesonadvancedsettings.h.
1 | /* This file is part of KDevelop | 1 | /* This file is part of KDevelop | ||
---|---|---|---|---|---|
2 | Copyright 2018 Daniel Mensinger <daniel@mensinger-ka.de> | 2 | Copyright 2019 Daniel Mensinger <daniel@mensinger-ka.de> | ||
3 | 3 | | |||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or | ||
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public | ||
6 | License as published by the Free Software Foundation; either | 6 | License as published by the Free Software Foundation; either | ||
7 | version 2 of the License, or (at your option) any later version. | 7 | version 2 of the License, or (at your option) any later version. | ||
8 | 8 | | |||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
12 | Library General Public License for more details. | 12 | Library General Public License for more details. | ||
13 | 13 | | |||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License | ||
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to | ||
16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
17 | Boston, MA 02110-1301, USA. | 17 | Boston, MA 02110-1301, USA. | ||
18 | */ | 18 | */ | ||
19 | 19 | | |||
20 | #pragma once | 20 | #pragma once | ||
21 | 21 | | |||
22 | #include "util/path.h" | 22 | #include "mesonoptions.h" | ||
23 | #include <QVector> | ||||
23 | #include <QWidget> | 24 | #include <QWidget> | ||
25 | #include <memory> | ||||
26 | #include <util/path.h> | ||||
24 | 27 | | |||
25 | namespace Ui | 28 | namespace Ui | ||
26 | { | 29 | { | ||
27 | class MesonAdvancedSettings; | 30 | class MesonOptionsView; | ||
28 | } | 31 | } | ||
29 | 32 | | |||
30 | class MesonAdvancedSettings : public QWidget | 33 | namespace KDevelop | ||
34 | { | ||||
35 | class IProject; | ||||
36 | } | ||||
37 | | ||||
38 | namespace Meson | ||||
39 | { | ||||
40 | struct BuildDir; | ||||
41 | } | ||||
42 | | ||||
43 | class MesonOptionBaseView; | ||||
44 | class MesonIntrospectJob; | ||||
45 | class KJob; | ||||
46 | | ||||
47 | using OPT_VIEW_PTR = std::shared_ptr<MesonOptionBaseView>; | ||||
48 | | ||||
49 | class MesonOptionsView : public QWidget | ||||
31 | { | 50 | { | ||
32 | Q_OBJECT | 51 | Q_OBJECT | ||
33 | public: | | |||
34 | struct Data { | | |||
35 | QString backend; | | |||
36 | QString args; | | |||
37 | KDevelop::Path meson; | | |||
38 | }; | | |||
39 | 52 | | |||
40 | public: | 53 | public: | ||
41 | explicit MesonAdvancedSettings(QWidget* parent = nullptr); | 54 | explicit MesonOptionsView(QWidget* parent = nullptr); | ||
42 | ~MesonAdvancedSettings() override; | 55 | virtual ~MesonOptionsView(); | ||
43 | 56 | | |||
44 | Data getConfig() const; | 57 | void clear(); | ||
45 | void setConfig(Data const& conf); | 58 | void resetAll(); | ||
59 | KJob* repopulateFromBuildDir(KDevelop::IProject* project, Meson::BuildDir const& buildDir); | ||||
60 | KJob* repopulateFromMesonFile(KDevelop::Path projectDir, KDevelop::Path mesonExe); | ||||
46 | 61 | | |||
47 | void setSupportedBackends(QStringList const& backends); | 62 | MESON_OPT_PTR options(); | ||
63 | | ||||
64 | public Q_SLOTS: | ||||
65 | void emitChanged(); | ||||
48 | 66 | | |||
49 | Q_SIGNALS: | 67 | Q_SIGNALS: | ||
50 | void configChanged(); | 68 | void configChanged(); | ||
51 | 69 | | |||
52 | public Q_SLOTS: | | |||
53 | void updated(); | | |||
54 | | ||||
55 | private: | 70 | private: | ||
56 | Ui::MesonAdvancedSettings* m_ui = nullptr; | 71 | Ui::MesonOptionsView* m_ui = nullptr; | ||
57 | QStringList m_backendList; | 72 | QVector<OPT_VIEW_PTR> m_optViews; | ||
73 | MESON_OPT_PTR m_options; | ||||
74 | | ||||
75 | KJob* repopulate(MesonIntrospectJob* introJob); | ||||
58 | }; | 76 | }; |