diff options
Diffstat (limited to 'src/plugins/nim/settings')
-rw-r--r-- | src/plugins/nim/settings/nimsettings.cpp | 84 | ||||
-rw-r--r-- | src/plugins/nim/settings/nimsettings.h | 28 | ||||
-rw-r--r-- | src/plugins/nim/settings/nimtoolssettingspage.cpp | 87 | ||||
-rw-r--r-- | src/plugins/nim/settings/nimtoolssettingspage.h | 73 | ||||
-rw-r--r-- | src/plugins/nim/settings/nimtoolssettingswidget.ui | 66 |
5 files changed, 55 insertions, 283 deletions
diff --git a/src/plugins/nim/settings/nimsettings.cpp b/src/plugins/nim/settings/nimsettings.cpp index 5762222562..0c2fb95316 100644 --- a/src/plugins/nim/settings/nimsettings.cpp +++ b/src/plugins/nim/settings/nimsettings.cpp @@ -28,53 +28,42 @@ #include "../nimconstants.h" -#include <texteditor/icodestylepreferencesfactory.h> -#include <texteditor/texteditorsettings.h> +#include <coreplugin/icore.h> + #include <texteditor/codestylepool.h> +#include <texteditor/icodestylepreferencesfactory.h> #include <texteditor/simplecodestylepreferences.h> #include <texteditor/tabsettings.h> -#include <coreplugin/icore.h> +#include <texteditor/texteditorsettings.h> + +#include <utils/layoutbuilder.h> using namespace TextEditor; +using namespace Utils; namespace Nim { static SimpleCodeStylePreferences *m_globalCodeStyle = nullptr; -NimSettings::NimSettings(QObject *parent) - : QObject(parent) +NimSettings::NimSettings() { - InitializeCodeStyleSettings(); - InitializeNimSuggestSettings(); -} + setAutoApply(false); + setSettingsGroups("Nim", "NimSuggest"); -NimSettings::~NimSettings() -{ - TerminateCodeStyleSettings(); -} + InitializeCodeStyleSettings(); -QString NimSettings::nimSuggestPath() const -{ - return m_nimSuggestPath; -} + registerAspect(&nimSuggestPath); + nimSuggestPath.setSettingsKey("Command"); + nimSuggestPath.setDisplayStyle(StringAspect::PathChooserDisplay); + nimSuggestPath.setExpectedKind(PathChooser::ExistingCommand); + nimSuggestPath.setLabelText(tr("Path:")); -void NimSettings::setNimSuggestPath(const QString &path) -{ - if (m_nimSuggestPath == path) - return; - m_nimSuggestPath = path; - emit nimSuggestPathChanged(path); + readSettings(Core::ICore::settings()); } -void NimSettings::save() +NimSettings::~NimSettings() { - QSettings *s = Core::ICore::settings(); - s->beginGroup(Constants::C_NIM_SETTINGS_GROUP); - s->beginGroup(Constants::C_NIM_SETTINGS_NIMSUGGEST_GROUP); - s->setValue(QString::fromStdString(Constants::C_NIM_SETTINGS_COMMAND), nimSuggestPath()); - s->endGroup(); - s->endGroup(); - s->sync(); + TerminateCodeStyleSettings(); } SimpleCodeStylePreferences *NimSettings::globalCodeStyle() @@ -127,17 +116,6 @@ void NimSettings::InitializeCodeStyleSettings() Nim::Constants::C_NIMLANGUAGE_ID); } -void NimSettings::InitializeNimSuggestSettings() -{ - QSettings *s = Core::ICore::settings(); - s->beginGroup(Constants::C_NIM_SETTINGS_GROUP); - s->beginGroup(Constants::C_NIM_SETTINGS_NIMSUGGEST_GROUP); - setNimSuggestPath(s->value(QString::fromStdString(Constants::C_NIM_SETTINGS_COMMAND), - QString()).toString()); - s->endGroup(); - s->endGroup(); -} - void NimSettings::TerminateCodeStyleSettings() { TextEditorSettings::unregisterCodeStyle(Nim::Constants::C_NIMLANGUAGE_ID); @@ -148,4 +126,28 @@ void NimSettings::TerminateCodeStyleSettings() m_globalCodeStyle = nullptr; } + +// NimToolSettingsPage + +NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings) +{ + setId(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_ID); + setDisplayName(NimSettings::tr(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_DISPLAY)); + setCategory(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_CATEGORY); + setDisplayCategory(NimSettings::tr("Nim")); + setCategoryIconPath(":/nim/images/settingscategory_nim.png"); + setSettings(settings); + + setLayouter([settings](QWidget *widget) { + using namespace Layouting; + Column { + Group { + Title("Nimsuggest"), + settings->nimSuggestPath + }, + Stretch() + }.attachTo(widget); + }); +} + } // namespace Nim diff --git a/src/plugins/nim/settings/nimsettings.h b/src/plugins/nim/settings/nimsettings.h index 3e648d97c9..764a6efc16 100644 --- a/src/plugins/nim/settings/nimsettings.h +++ b/src/plugins/nim/settings/nimsettings.h @@ -25,38 +25,34 @@ #pragma once -#include <QObject> +#include <coreplugin/dialogs/ioptionspage.h> +#include <utils/aspects.h> namespace TextEditor { class SimpleCodeStylePreferences; } namespace Nim { -class NimSettings : public QObject +class NimSettings : public Utils::AspectContainer { - Q_OBJECT + Q_DECLARE_TR_FUNCTIONS(Nim::NimSettings) public: - NimSettings(QObject *parent = nullptr); - ~NimSettings() override; + NimSettings(); + ~NimSettings(); - QString nimSuggestPath() const; - void setNimSuggestPath(const QString &path); - - void save(); + Utils::StringAspect nimSuggestPath; static TextEditor::SimpleCodeStylePreferences *globalCodeStyle(); -signals: - void nimSuggestPathChanged(QString path); - private: void InitializeCodeStyleSettings(); void TerminateCodeStyleSettings(); +}; - void InitializeNimSuggestSettings(); - void TerminateNimSuggestSettings(); - - QString m_nimSuggestPath; +class NimToolsSettingsPage final : public Core::IOptionsPage +{ +public: + explicit NimToolsSettingsPage(NimSettings *settings); }; } // namespace Nim diff --git a/src/plugins/nim/settings/nimtoolssettingspage.cpp b/src/plugins/nim/settings/nimtoolssettingspage.cpp deleted file mode 100644 index a77aaf1c70..0000000000 --- a/src/plugins/nim/settings/nimtoolssettingspage.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com> -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "nimtoolssettingspage.h" -#include "nimconstants.h" -#include "nimsettings.h" -#include "ui_nimtoolssettingswidget.h" - -#include <coreplugin/icore.h> - -namespace Nim { - -NimToolsSettingsWidget::NimToolsSettingsWidget() : ui(new Ui::NimToolsSettingsWidget) -{ - ui->setupUi(this); - ui->pathWidget->setExpectedKind(Utils::PathChooser::ExistingCommand); -} - -NimToolsSettingsWidget::~NimToolsSettingsWidget() -{ - delete ui; -} - -QString NimToolsSettingsWidget::command() const -{ - return ui->pathWidget->filePath().toString(); -} - -void NimToolsSettingsWidget::setCommand(const QString &filename) -{ - ui->pathWidget->setPath(filename); -} - -NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings) - : m_settings(settings) -{ - setId(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_ID); - setDisplayName(NimToolsSettingsWidget::tr(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_DISPLAY)); - setCategory(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_CATEGORY); - setDisplayCategory(NimToolsSettingsWidget::tr("Nim")); - setCategoryIconPath(":/nim/images/settingscategory_nim.png"); -} - -NimToolsSettingsPage::~NimToolsSettingsPage() = default; - -QWidget *NimToolsSettingsPage::widget() -{ - if (!m_widget) - m_widget.reset(new NimToolsSettingsWidget); - m_widget->setCommand(m_settings->nimSuggestPath()); - return m_widget.get(); -} - -void NimToolsSettingsPage::apply() -{ - m_settings->setNimSuggestPath(m_widget->command()); - m_settings->save(); -} - -void NimToolsSettingsPage::finish() -{ - m_widget.reset(); -} - -} diff --git a/src/plugins/nim/settings/nimtoolssettingspage.h b/src/plugins/nim/settings/nimtoolssettingspage.h deleted file mode 100644 index 9a8e0df19c..0000000000 --- a/src/plugins/nim/settings/nimtoolssettingspage.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com> -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include <coreplugin/dialogs/ioptionspage.h> -#include <utils/fileutils.h> - -#include <QWidget> - -#include <memory> - -namespace Nim { - -class NimSettings; - -namespace Ui { class NimToolsSettingsWidget; } - -class NimToolsSettingsWidget : public QWidget -{ - Q_DECLARE_TR_FUNCTIONS(Nim::ToolSettingsPage) - -public: - NimToolsSettingsWidget(); - - ~NimToolsSettingsWidget(); - - QString command() const; - void setCommand(const QString &filename); - -private: - Ui::NimToolsSettingsWidget *ui; -}; - -class NimToolsSettingsPage final : public Core::IOptionsPage -{ -public: - explicit NimToolsSettingsPage(NimSettings *settings); - - ~NimToolsSettingsPage(); - - QWidget *widget() final; - void apply() final; - void finish() final; - -private: - std::unique_ptr<NimToolsSettingsWidget> m_widget; - NimSettings *m_settings = nullptr; -}; - -} diff --git a/src/plugins/nim/settings/nimtoolssettingswidget.ui b/src/plugins/nim/settings/nimtoolssettingswidget.ui deleted file mode 100644 index 28c0d1ac31..0000000000 --- a/src/plugins/nim/settings/nimtoolssettingswidget.ui +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Nim::NimToolsSettingsWidget</class> - <widget class="QWidget" name="Nim::NimToolsSettingsWidget"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Nimsuggest</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="pathLabel"> - <property name="text"> - <string>Path</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="Utils::PathChooser" name="pathWidget" native="true"/> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>Utils::PathChooser</class> - <extends>QWidget</extends> - <header location="global">utils/pathchooser.h</header> - <container>1</container> - <slots> - <signal>editingFinished()</signal> - <signal>browsingFinished()</signal> - </slots> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> |