summaryrefslogtreecommitdiff
path: root/src/plugins/nim/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/nim/settings')
-rw-r--r--src/plugins/nim/settings/nimsettings.cpp84
-rw-r--r--src/plugins/nim/settings/nimsettings.h28
-rw-r--r--src/plugins/nim/settings/nimtoolssettingspage.cpp87
-rw-r--r--src/plugins/nim/settings/nimtoolssettingspage.h73
-rw-r--r--src/plugins/nim/settings/nimtoolssettingswidget.ui66
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>