From 5dbcc615c210ad24a9abff4c7340ae64a65b75ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com> Date: Tue, 27 Jan 2009 15:12:32 +0100 Subject: [PATCH] Split up general text editor settings The page had grown too large so now the display settings have been split off onto their own page. --- .../cpptools/completionsettingspage.ui | 61 +++-- .../texteditor/behaviorsettingspage.cpp | 187 ++++++++++++++ ...lsettingspage.h => behaviorsettingspage.h} | 27 +- ...ettingspage.ui => behaviorsettingspage.ui} | 89 +------ .../texteditor/displaysettingspage.cpp | 153 +++++++++++ src/plugins/texteditor/displaysettingspage.h | 87 +++++++ src/plugins/texteditor/displaysettingspage.ui | 116 +++++++++ .../texteditor/generalsettingspage.cpp | 237 ------------------ src/plugins/texteditor/texteditor.pro | 11 +- src/plugins/texteditor/texteditorsettings.cpp | 46 ++-- src/plugins/texteditor/texteditorsettings.h | 8 +- 11 files changed, 637 insertions(+), 385 deletions(-) create mode 100644 src/plugins/texteditor/behaviorsettingspage.cpp rename src/plugins/texteditor/{generalsettingspage.h => behaviorsettingspage.h} (77%) rename src/plugins/texteditor/{generalsettingspage.ui => behaviorsettingspage.ui} (78%) create mode 100644 src/plugins/texteditor/displaysettingspage.cpp create mode 100644 src/plugins/texteditor/displaysettingspage.h create mode 100644 src/plugins/texteditor/displaysettingspage.ui delete mode 100644 src/plugins/texteditor/generalsettingspage.cpp diff --git a/src/plugins/cpptools/completionsettingspage.ui b/src/plugins/cpptools/completionsettingspage.ui index 372c225943f..c71a2abc821 100644 --- a/src/plugins/cpptools/completionsettingspage.ui +++ b/src/plugins/cpptools/completionsettingspage.ui @@ -15,33 +15,42 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QCheckBox" name="caseSensitive"> - <property name="text"> - <string>&Case-sensitive completion</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="autoInsertBraces"> - <property name="text"> - <string>&Automatically insert braces</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="partiallyComplete"> - <property name="text"> - <string>Autocomplete common &prefix</string> - </property> - <property name="checked"> - <bool>true</bool> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Completion Settings</string> </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="caseSensitive"> + <property name="text"> + <string>&Case-sensitive completion</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="autoInsertBraces"> + <property name="text"> + <string>&Automatically insert braces</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="partiallyComplete"> + <property name="text"> + <string>Autocomplete common &prefix</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> </widget> </item> <item> diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp new file mode 100644 index 00000000000..be3cf2ddf27 --- /dev/null +++ b/src/plugins/texteditor/behaviorsettingspage.cpp @@ -0,0 +1,187 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "behaviorsettingspage.h" +#include "interactionsettings.h" +#include "storagesettings.h" +#include "tabsettings.h" +#include "ui_behaviorsettingspage.h" + +#include <coreplugin/icore.h> + +#include <QtCore/QSettings> + +using namespace TextEditor; + +struct BehaviorSettingsPage::BehaviorSettingsPagePrivate +{ + explicit BehaviorSettingsPagePrivate(const BehaviorSettingsPageParameters &p); + + const BehaviorSettingsPageParameters m_parameters; + Ui::BehaviorSettingsPage m_page; + TabSettings m_tabSettings; + StorageSettings m_storageSettings; + InteractionSettings m_interactionSettings; +}; + +BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate + (const BehaviorSettingsPageParameters &p) + : m_parameters(p) +{ + if (const QSettings *s = Core::ICore::instance()->settings()) { + m_tabSettings.fromSettings(m_parameters.settingsPrefix, s); + m_storageSettings.fromSettings(m_parameters.settingsPrefix, s); + m_interactionSettings.fromSettings(m_parameters.settingsPrefix, s); + } +} + +BehaviorSettingsPage::BehaviorSettingsPage(const BehaviorSettingsPageParameters &p, + QObject *parent) + : Core::IOptionsPage(parent), + m_d(new BehaviorSettingsPagePrivate(p)) +{ +} + +BehaviorSettingsPage::~BehaviorSettingsPage() +{ + delete m_d; +} + +QString BehaviorSettingsPage::name() const +{ + return m_d->m_parameters.name; +} + +QString BehaviorSettingsPage::category() const +{ + return m_d->m_parameters.category; +} + +QString BehaviorSettingsPage::trCategory() const +{ + return m_d->m_parameters.trCategory; +} + +QWidget *BehaviorSettingsPage::createPage(QWidget *parent) +{ + QWidget *w = new QWidget(parent); + m_d->m_page.setupUi(w); + settingsToUI(); + return w; +} + +void BehaviorSettingsPage::apply() +{ + TabSettings newTabSettings; + StorageSettings newStorageSettings; + InteractionSettings newInteractionSettings; + + settingsFromUI(newTabSettings, newStorageSettings, newInteractionSettings); + + Core::ICore *core = Core::ICore::instance(); + QSettings *s = core->settings(); + + if (newTabSettings != m_d->m_tabSettings) { + m_d->m_tabSettings = newTabSettings; + if (s) + m_d->m_tabSettings.toSettings(m_d->m_parameters.settingsPrefix, s); + + emit tabSettingsChanged(newTabSettings); + } + + if (newStorageSettings != m_d->m_storageSettings) { + m_d->m_storageSettings = newStorageSettings; + if (s) + m_d->m_storageSettings.toSettings(m_d->m_parameters.settingsPrefix, s); + + emit storageSettingsChanged(newStorageSettings); + } + + if (newInteractionSettings != m_d->m_interactionSettings) { + m_d->m_interactionSettings = newInteractionSettings; + if (s) + m_d->m_interactionSettings.toSettings(m_d->m_parameters.settingsPrefix, s); + } +} + +void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings, + StorageSettings &storageSettings, + InteractionSettings &interactionSettings) const +{ + tabSettings.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked(); + tabSettings.m_autoIndent = m_d->m_page.autoIndent->isChecked(); + tabSettings.m_smartBackspace = m_d->m_page.smartBackspace->isChecked(); + tabSettings.m_tabSize = m_d->m_page.tabSize->value(); + tabSettings.m_indentSize = m_d->m_page.indentSize->value(); + + storageSettings.m_cleanWhitespace = m_d->m_page.cleanWhitespace->isChecked(); + storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked(); + storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked(); + storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked(); + + interactionSettings.m_useVim = m_d->m_page.useVim->isChecked(); +} + +void BehaviorSettingsPage::settingsToUI() +{ + const TabSettings &tabSettings = m_d->m_tabSettings; + m_d->m_page.insertSpaces->setChecked(tabSettings.m_spacesForTabs); + m_d->m_page.autoIndent->setChecked(tabSettings.m_autoIndent); + m_d->m_page.smartBackspace->setChecked(tabSettings.m_smartBackspace); + m_d->m_page.tabSize->setValue(tabSettings.m_tabSize); + m_d->m_page.indentSize->setValue(tabSettings.m_indentSize); + + const StorageSettings &storageSettings = m_d->m_storageSettings; + m_d->m_page.cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace); + m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument); + m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation); + m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine); + + const InteractionSettings &interactionSettings = m_d->m_interactionSettings; + m_d->m_page.useVim->setChecked(interactionSettings.m_useVim); +} + +TabSettings BehaviorSettingsPage::tabSettings() const +{ + return m_d->m_tabSettings; +} + +StorageSettings BehaviorSettingsPage::storageSettings() const +{ + return m_d->m_storageSettings; +} + +InteractionSettings BehaviorSettingsPage::interactionSettings() const +{ + return m_d->m_interactionSettings; +} diff --git a/src/plugins/texteditor/generalsettingspage.h b/src/plugins/texteditor/behaviorsettingspage.h similarity index 77% rename from src/plugins/texteditor/generalsettingspage.h rename to src/plugins/texteditor/behaviorsettingspage.h index 1f70fd6b0b0..68f7b408296 100644 --- a/src/plugins/texteditor/generalsettingspage.h +++ b/src/plugins/texteditor/behaviorsettingspage.h @@ -31,8 +31,8 @@ ** ***************************************************************************/ -#ifndef GENERALSETTINGSPAGE_H -#define GENERALSETTINGSPAGE_H +#ifndef BEHAVIORSETTINGSPAGE_H +#define BEHAVIORSETTINGSPAGE_H #include "texteditor_global.h" @@ -44,10 +44,9 @@ namespace TextEditor { struct TabSettings; struct StorageSettings; -struct DisplaySettings; struct InteractionSettings; -struct TEXTEDITOR_EXPORT GeneralSettingsPageParameters +struct BehaviorSettingsPageParameters { QString name; QString category; @@ -55,13 +54,13 @@ struct TEXTEDITOR_EXPORT GeneralSettingsPageParameters QString settingsPrefix; }; -class TEXTEDITOR_EXPORT GeneralSettingsPage : public Core::IOptionsPage +class BehaviorSettingsPage : public Core::IOptionsPage { Q_OBJECT public: - GeneralSettingsPage(const GeneralSettingsPageParameters &p, QObject *parent); - virtual ~GeneralSettingsPage(); + BehaviorSettingsPage(const BehaviorSettingsPageParameters &p, QObject *parent); + virtual ~BehaviorSettingsPage(); // IOptionsPage QString name() const; @@ -74,27 +73,21 @@ public: TabSettings tabSettings() const; StorageSettings storageSettings() const; - DisplaySettings displaySettings() const; InteractionSettings interactionSettings() const; - void setDisplaySettings(const DisplaySettings &); - signals: void tabSettingsChanged(const TextEditor::TabSettings &); void storageSettingsChanged(const TextEditor::StorageSettings &); - void displaySettingsChanged(const TextEditor::DisplaySettings &); private: void settingsFromUI(TabSettings &rc, StorageSettings &storageSettings, - DisplaySettings &displaySettings, - InteractionSettings &interactionSettings - ) const; + InteractionSettings &interactionSettings) const; void settingsToUI(); - struct GeneralSettingsPagePrivate; - GeneralSettingsPagePrivate *m_d; + struct BehaviorSettingsPagePrivate; + BehaviorSettingsPagePrivate *m_d; }; } // namespace TextEditor -#endif // GENERALSETTINGSPAGE_H +#endif // BEHAVIORSETTINGSPAGE_H diff --git a/src/plugins/texteditor/generalsettingspage.ui b/src/plugins/texteditor/behaviorsettingspage.ui similarity index 78% rename from src/plugins/texteditor/generalsettingspage.ui rename to src/plugins/texteditor/behaviorsettingspage.ui index 301ee8bdf55..a2fb68e5b20 100644 --- a/src/plugins/texteditor/generalsettingspage.ui +++ b/src/plugins/texteditor/behaviorsettingspage.ui @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>TextEditor::generalSettingsPage</class> - <widget class="QWidget" name="TextEditor::generalSettingsPage"> + <class>TextEditor::BehaviorSettingsPage</class> + <widget class="QWidget" name="TextEditor::BehaviorSettingsPage"> <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>514</width> - <height>475</height> + <width>484</width> + <height>398</height> </rect> </property> <property name="windowTitle"> @@ -255,71 +255,6 @@ </widget> </item> <item row="2" column="0"> - <widget class="QGroupBox" name="groupBoxDisplaySettings"> - <property name="title"> - <string>Display Settings</string> - </property> - <layout class="QGridLayout"> - <item row="0" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QCheckBox" name="showWrapColumn"> - <property name="text"> - <string>Display right &margin at column</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="wrapColumn"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="maximum"> - <number>999</number> - </property> - </widget> - </item> - </layout> - </item> - <item row="0" column="0"> - <widget class="QCheckBox" name="enableTextWrapping"> - <property name="text"> - <string>Enable text &wrapping</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QCheckBox" name="displayLineNumbers"> - <property name="text"> - <string>Display line &numbers</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QCheckBox" name="visualizeWhitespace"> - <property name="text"> - <string>&Visualize whitespace</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QCheckBox" name="displayFoldingMarkers"> - <property name="text"> - <string>Display &folding markers</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QCheckBox" name="highlightCurrentLine"> - <property name="text"> - <string>Highlight current &line</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="3" column="0"> <widget class="QGroupBox" name="groupBoxInteractionSettings"> <property name="title"> <string>Interaction Settings</string> @@ -335,7 +270,7 @@ </layout> </widget> </item> - <item row="4" column="0"> + <item row="3" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -373,20 +308,14 @@ <signal>toggled(bool)</signal> <receiver>cleanIndentation</receiver> <slot>setEnabled(bool)</slot> - </connection> - <connection> - <sender>showWrapColumn</sender> - <signal>toggled(bool)</signal> - <receiver>wrapColumn</receiver> - <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>399</x> - <y>308</y> + <x>20</x> + <y>20</y> </hint> <hint type="destinationlabel"> - <x>474</x> - <y>308</y> + <x>20</x> + <y>20</y> </hint> </hints> </connection> diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp new file mode 100644 index 00000000000..7f47290b3f4 --- /dev/null +++ b/src/plugins/texteditor/displaysettingspage.cpp @@ -0,0 +1,153 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "displaysettingspage.h" +#include "displaysettings.h" +#include "ui_displaysettingspage.h" + +#include <coreplugin/icore.h> + +#include <QtCore/QSettings> + +using namespace TextEditor; + +struct DisplaySettingsPage::DisplaySettingsPagePrivate +{ + explicit DisplaySettingsPagePrivate(const DisplaySettingsPageParameters &p); + + const DisplaySettingsPageParameters m_parameters; + Ui::DisplaySettingsPage m_page; + DisplaySettings m_displaySettings; +}; + +DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate + (const DisplaySettingsPageParameters &p) + : m_parameters(p) +{ + if (const QSettings *s = Core::ICore::instance()->settings()) { + m_displaySettings.fromSettings(m_parameters.settingsPrefix, s); + } +} + +DisplaySettingsPage::DisplaySettingsPage(const DisplaySettingsPageParameters &p, + QObject *parent) + : Core::IOptionsPage(parent), + m_d(new DisplaySettingsPagePrivate(p)) +{ +} + +DisplaySettingsPage::~DisplaySettingsPage() +{ + delete m_d; +} + +QString DisplaySettingsPage::name() const +{ + return m_d->m_parameters.name; +} + +QString DisplaySettingsPage::category() const +{ + return m_d->m_parameters.category; +} + +QString DisplaySettingsPage::trCategory() const +{ + return m_d->m_parameters.trCategory; +} + +QWidget *DisplaySettingsPage::createPage(QWidget *parent) +{ + QWidget *w = new QWidget(parent); + m_d->m_page.setupUi(w); + settingsToUI(); + return w; +} + +void DisplaySettingsPage::apply() +{ + DisplaySettings newDisplaySettings; + + settingsFromUI(newDisplaySettings); + + Core::ICore *core = Core::ICore::instance(); + QSettings *s = core->settings(); + + if (newDisplaySettings != m_d->m_displaySettings) { + m_d->m_displaySettings = newDisplaySettings; + if (s) + m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); + + emit displaySettingsChanged(newDisplaySettings); + } +} + +void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const +{ + displaySettings.m_displayLineNumbers = m_d->m_page.displayLineNumbers->isChecked(); + displaySettings.m_textWrapping = m_d->m_page.enableTextWrapping->isChecked(); + displaySettings.m_showWrapColumn = m_d->m_page.showWrapColumn->isChecked(); + displaySettings.m_wrapColumn = m_d->m_page.wrapColumn->value(); + displaySettings.m_visualizeWhitespace = m_d->m_page.visualizeWhitespace->isChecked(); + displaySettings.m_displayFoldingMarkers = m_d->m_page.displayFoldingMarkers->isChecked(); + displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked(); +} + +void DisplaySettingsPage::settingsToUI() +{ + const DisplaySettings &displaySettings = m_d->m_displaySettings; + m_d->m_page.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers); + m_d->m_page.enableTextWrapping->setChecked(displaySettings.m_textWrapping); + m_d->m_page.showWrapColumn->setChecked(displaySettings.m_showWrapColumn); + m_d->m_page.wrapColumn->setValue(displaySettings.m_wrapColumn); + m_d->m_page.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace); + m_d->m_page.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers); + m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine); +} + +DisplaySettings DisplaySettingsPage::displaySettings() const +{ + return m_d->m_displaySettings; +} + +void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings) +{ + if (newDisplaySettings != m_d->m_displaySettings) { + m_d->m_displaySettings = newDisplaySettings; + Core::ICore *core = Core::ICore::instance(); + if (QSettings *s = core->settings()) + m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); + + emit displaySettingsChanged(newDisplaySettings); + } +} diff --git a/src/plugins/texteditor/displaysettingspage.h b/src/plugins/texteditor/displaysettingspage.h new file mode 100644 index 00000000000..3337cafa922 --- /dev/null +++ b/src/plugins/texteditor/displaysettingspage.h @@ -0,0 +1,87 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#ifndef DISPLAYSETTINGSPAGE_H +#define DISPLAYSETTINGSPAGE_H + +#include "texteditor_global.h" + +#include <coreplugin/dialogs/ioptionspage.h> + +#include <QtCore/QObject> + +namespace TextEditor { + +struct DisplaySettings; + +struct DisplaySettingsPageParameters +{ + QString name; + QString category; + QString trCategory; + QString settingsPrefix; +}; + +class DisplaySettingsPage : public Core::IOptionsPage +{ + Q_OBJECT + +public: + DisplaySettingsPage(const DisplaySettingsPageParameters &p, QObject *parent); + virtual ~DisplaySettingsPage(); + + // IOptionsPage + QString name() const; + QString category() const; + QString trCategory() const; + + QWidget *createPage(QWidget *parent); + void apply(); + void finish() { } + + DisplaySettings displaySettings() const; + void setDisplaySettings(const DisplaySettings &); + +signals: + void displaySettingsChanged(const TextEditor::DisplaySettings &); + +private: + void settingsFromUI(DisplaySettings &displaySettings) const; + void settingsToUI(); + struct DisplaySettingsPagePrivate; + DisplaySettingsPagePrivate *m_d; +}; + +} // namespace TextEditor + +#endif // DISPLAYSETTINGSPAGE_H diff --git a/src/plugins/texteditor/displaysettingspage.ui b/src/plugins/texteditor/displaysettingspage.ui new file mode 100644 index 00000000000..30fdf5cf93b --- /dev/null +++ b/src/plugins/texteditor/displaysettingspage.ui @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>TextEditor::DisplaySettingsPage</class> + <widget class="QWidget" name="TextEditor::DisplaySettingsPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>514</width> + <height>194</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QGroupBox" name="groupBoxDisplaySettings"> + <property name="title"> + <string>Display Settings</string> + </property> + <layout class="QGridLayout"> + <item row="0" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="showWrapColumn"> + <property name="text"> + <string>Display right &margin at column</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="wrapColumn"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="maximum"> + <number>999</number> + </property> + </widget> + </item> + </layout> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="enableTextWrapping"> + <property name="text"> + <string>Enable text &wrapping</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QCheckBox" name="displayLineNumbers"> + <property name="text"> + <string>Display line &numbers</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QCheckBox" name="visualizeWhitespace"> + <property name="text"> + <string>&Visualize whitespace</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="displayFoldingMarkers"> + <property name="text"> + <string>Display &folding markers</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QCheckBox" name="highlightCurrentLine"> + <property name="text"> + <string>Highlight current &line</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>8</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>showWrapColumn</sender> + <signal>toggled(bool)</signal> + <receiver>wrapColumn</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>399</x> + <y>308</y> + </hint> + <hint type="destinationlabel"> + <x>474</x> + <y>308</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/plugins/texteditor/generalsettingspage.cpp b/src/plugins/texteditor/generalsettingspage.cpp deleted file mode 100644 index 28400d10ebf..00000000000 --- a/src/plugins/texteditor/generalsettingspage.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/*************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** -** Non-Open Source Usage -** -** Licensees may use this file in accordance with the Qt Beta Version -** License Agreement, Agreement version 2.2 provided with the Software or, -** alternatively, in accordance with the terms contained in a written -** agreement between you and Nokia. -** -** GNU General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the packaging -** of this file. Please review the following information to ensure GNU -** General Public Licensing requirements will be met: -** -** http://www.fsf.org/licensing/licenses/info/GPLv2.html and -** http://www.gnu.org/copyleft/gpl.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt GPL Exception -** version 1.3, included in the file GPL_EXCEPTION.txt in this package. -** -***************************************************************************/ - -#include "displaysettings.h" -#include "generalsettingspage.h" -#include "interactionsettings.h" -#include "storagesettings.h" -#include "tabsettings.h" -#include "ui_generalsettingspage.h" - -#include <coreplugin/icore.h> - -#include <QtCore/QSettings> -#include <QtCore/QDebug> - -using namespace TextEditor; - -struct GeneralSettingsPage::GeneralSettingsPagePrivate -{ - explicit GeneralSettingsPagePrivate(const GeneralSettingsPageParameters &p); - - const GeneralSettingsPageParameters m_parameters; - Ui::generalSettingsPage m_page; - TabSettings m_tabSettings; - StorageSettings m_storageSettings; - DisplaySettings m_displaySettings; - InteractionSettings m_interactionSettings; -}; - -GeneralSettingsPage::GeneralSettingsPagePrivate::GeneralSettingsPagePrivate - (const GeneralSettingsPageParameters &p) - : m_parameters(p) -{ - if (const QSettings *s = Core::ICore::instance()->settings()) { - m_tabSettings.fromSettings(m_parameters.settingsPrefix, s); - m_storageSettings.fromSettings(m_parameters.settingsPrefix, s); - m_displaySettings.fromSettings(m_parameters.settingsPrefix, s); - m_interactionSettings.fromSettings(m_parameters.settingsPrefix, s); - } -} - -GeneralSettingsPage::GeneralSettingsPage(const GeneralSettingsPageParameters &p, - QObject *parent) - : Core::IOptionsPage(parent), - m_d(new GeneralSettingsPagePrivate(p)) -{ -} - -GeneralSettingsPage::~GeneralSettingsPage() -{ - delete m_d; -} - -QString GeneralSettingsPage::name() const -{ - return m_d->m_parameters.name; -} - -QString GeneralSettingsPage::category() const -{ - return m_d->m_parameters.category; -} - -QString GeneralSettingsPage::trCategory() const -{ - return m_d->m_parameters.trCategory; -} - -QWidget *GeneralSettingsPage::createPage(QWidget *parent) -{ - QWidget *w = new QWidget(parent); - m_d->m_page.setupUi(w); - settingsToUI(); - return w; -} - -void GeneralSettingsPage::apply() -{ - TabSettings newTabSettings; - StorageSettings newStorageSettings; - DisplaySettings newDisplaySettings; - InteractionSettings newInteractionSettings; - - settingsFromUI(newTabSettings, newStorageSettings, newDisplaySettings, - newInteractionSettings); - - Core::ICore *core = Core::ICore::instance(); - QSettings *s = core->settings(); - - if (newTabSettings != m_d->m_tabSettings) { - m_d->m_tabSettings = newTabSettings; - if (s) - m_d->m_tabSettings.toSettings(m_d->m_parameters.settingsPrefix, s); - - emit tabSettingsChanged(newTabSettings); - } - - if (newStorageSettings != m_d->m_storageSettings) { - m_d->m_storageSettings = newStorageSettings; - if (s) - m_d->m_storageSettings.toSettings(m_d->m_parameters.settingsPrefix, s); - - emit storageSettingsChanged(newStorageSettings); - } - - if (newDisplaySettings != m_d->m_displaySettings) { - m_d->m_displaySettings = newDisplaySettings; - if (s) - m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); - - emit displaySettingsChanged(newDisplaySettings); - } - - if (newInteractionSettings != m_d->m_interactionSettings) { - m_d->m_interactionSettings = newInteractionSettings; - if (s) - m_d->m_interactionSettings.toSettings(m_d->m_parameters.settingsPrefix, s); - - } -} - -void GeneralSettingsPage::settingsFromUI(TabSettings &rc, - StorageSettings &storageSettings, - DisplaySettings &displaySettings, - InteractionSettings &interactionSettings) const -{ - rc.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked(); - rc.m_autoIndent = m_d->m_page.autoIndent->isChecked(); - rc.m_smartBackspace = m_d->m_page.smartBackspace->isChecked(); - rc.m_tabSize = m_d->m_page.tabSize->value(); - rc.m_indentSize = m_d->m_page.indentSize->value(); - - storageSettings.m_cleanWhitespace = m_d->m_page.cleanWhitespace->isChecked(); - storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked(); - storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked(); - storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked(); - - displaySettings.m_displayLineNumbers = m_d->m_page.displayLineNumbers->isChecked(); - displaySettings.m_textWrapping = m_d->m_page.enableTextWrapping->isChecked(); - displaySettings.m_showWrapColumn = m_d->m_page.showWrapColumn->isChecked(); - displaySettings.m_wrapColumn = m_d->m_page.wrapColumn->value(); - displaySettings.m_visualizeWhitespace = m_d->m_page.visualizeWhitespace->isChecked(); - displaySettings.m_displayFoldingMarkers = m_d->m_page.displayFoldingMarkers->isChecked(); - displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked(); - - interactionSettings.m_useVim = m_d->m_page.useVim->isChecked(); -} - -void GeneralSettingsPage::settingsToUI() -{ - TabSettings rc = m_d->m_tabSettings; - m_d->m_page.insertSpaces->setChecked(rc.m_spacesForTabs); - m_d->m_page.autoIndent->setChecked(rc.m_autoIndent); - m_d->m_page.smartBackspace->setChecked(rc.m_smartBackspace); - m_d->m_page.tabSize->setValue(rc.m_tabSize); - m_d->m_page.indentSize->setValue(rc.m_indentSize); - - StorageSettings storageSettings = m_d->m_storageSettings; - m_d->m_page.cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace); - m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument); - m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation); - m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine); - - DisplaySettings displaySettings = m_d->m_displaySettings; - m_d->m_page.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers); - m_d->m_page.enableTextWrapping->setChecked(displaySettings.m_textWrapping); - m_d->m_page.showWrapColumn->setChecked(displaySettings.m_showWrapColumn); - m_d->m_page.wrapColumn->setValue(displaySettings.m_wrapColumn); - m_d->m_page.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace); - m_d->m_page.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers); - m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine); - - InteractionSettings interactionSettings = m_d->m_interactionSettings; - m_d->m_page.useVim->setChecked(interactionSettings.m_useVim); -} - -TabSettings GeneralSettingsPage::tabSettings() const -{ - return m_d->m_tabSettings; -} - -StorageSettings GeneralSettingsPage::storageSettings() const -{ - return m_d->m_storageSettings; -} - -DisplaySettings GeneralSettingsPage::displaySettings() const -{ - return m_d->m_displaySettings; -} - -InteractionSettings GeneralSettingsPage::interactionSettings() const -{ - return m_d->m_interactionSettings; -} - -void GeneralSettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings) -{ - if (newDisplaySettings != m_d->m_displaySettings) { - m_d->m_displaySettings = newDisplaySettings; - Core::ICore *core = Core::ICore::instance(); - if (QSettings *s = core->settings()) - m_d->m_displaySettings.toSettings(m_d->m_parameters.settingsPrefix, s); - - emit displaySettingsChanged(newDisplaySettings); - } -} diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro index 56c39604fb4..0ec180bc06a 100644 --- a/src/plugins/texteditor/texteditor.pro +++ b/src/plugins/texteditor/texteditor.pro @@ -9,6 +9,7 @@ SOURCES += texteditorplugin.cpp \ plaintexteditorfactory.cpp \ basetextdocument.cpp \ basetexteditor.cpp \ + behaviorsettingspage.cpp \ texteditoractionhandler.cpp \ completionsupport.cpp \ completionwidget.cpp \ @@ -17,10 +18,10 @@ SOURCES += texteditorplugin.cpp \ tabsettings.cpp \ storagesettings.cpp \ displaysettings.cpp \ + displaysettingspage.cpp \ fontsettings.cpp \ textblockiterator.cpp \ linenumberfilter.cpp \ - generalsettingspage.cpp \ basetextmark.cpp \ findinfiles.cpp \ basefilefind.cpp \ @@ -32,6 +33,7 @@ HEADERS += texteditorplugin.h \ plaintexteditorfactory.h \ basetexteditor_p.h \ basetextdocument.h \ + behaviorsettingspage.h \ completionsupport.h \ completionwidget.h \ basetexteditor.h \ @@ -43,18 +45,19 @@ HEADERS += texteditorplugin.h \ tabsettings.h \ storagesettings.h \ displaysettings.h \ + displaysettingspage.h \ fontsettings.h \ textblockiterator.h \ itexteditable.h \ itexteditor.h \ linenumberfilter.h \ texteditor_global.h \ - generalsettingspage.h \ basetextmark.h \ findinfiles.h \ basefilefind.h \ texteditorsettings.h \ codecselector.h -FORMS += fontsettingspage.ui \ - generalsettingspage.ui +FORMS += behaviorsettingspage.ui \ + displaysettingspage.ui \ + fontsettingspage.ui RESOURCES += texteditor.qrc diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index 999ad0d8ae7..a8f6019597d 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -33,8 +33,9 @@ #include "texteditorsettings.h" +#include "behaviorsettingspage.h" #include "displaysettings.h" -#include "generalsettingspage.h" +#include "displaysettingspage.h" #include "fontsettingspage.h" #include "storagesettings.h" #include "tabsettings.h" @@ -93,34 +94,43 @@ TextEditorSettings::TextEditorSettings(QObject *parent) m_fontSettingsPage = new FontSettingsPage(formatDescriptions, QLatin1String("TextEditor"), - tr("Text Editor")); + tr("Text Editor"), + this); pm->addObject(m_fontSettingsPage); - // Add the GUI used to configure the tab, storage and display settings - TextEditor::GeneralSettingsPageParameters generalSettingsPageParameters; - generalSettingsPageParameters.name = tr("General"); - generalSettingsPageParameters.category = QLatin1String("TextEditor"); - generalSettingsPageParameters.trCategory = tr("Text Editor"); - generalSettingsPageParameters.settingsPrefix = QLatin1String("text"); - m_generalSettingsPage = new GeneralSettingsPage(generalSettingsPageParameters, this); - pm->addObject(m_generalSettingsPage); + // Add the GUI used to configure the tab, storage and interaction settings + TextEditor::BehaviorSettingsPageParameters behaviorSettingsPageParameters; + behaviorSettingsPageParameters.name = tr("Behavior"); + behaviorSettingsPageParameters.category = QLatin1String("TextEditor"); + behaviorSettingsPageParameters.trCategory = tr("Text Editor"); + behaviorSettingsPageParameters.settingsPrefix = QLatin1String("text"); + m_behaviorSettingsPage = new BehaviorSettingsPage(behaviorSettingsPageParameters, this); + pm->addObject(m_behaviorSettingsPage); + + TextEditor::DisplaySettingsPageParameters displaySettingsPageParameters; + displaySettingsPageParameters.name = tr("Display"); + displaySettingsPageParameters.category = QLatin1String("TextEditor"); + displaySettingsPageParameters.trCategory = tr("Text Editor"); + displaySettingsPageParameters.settingsPrefix = QLatin1String("text"); + m_displaySettingsPage = new DisplaySettingsPage(displaySettingsPageParameters, this); + pm->addObject(m_displaySettingsPage); connect(m_fontSettingsPage, SIGNAL(changed(TextEditor::FontSettings)), this, SIGNAL(fontSettingsChanged(TextEditor::FontSettings))); - connect(m_generalSettingsPage, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), + connect(m_behaviorSettingsPage, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), this, SIGNAL(tabSettingsChanged(TextEditor::TabSettings))); - connect(m_generalSettingsPage, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), + connect(m_behaviorSettingsPage, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings))); - connect(m_generalSettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), + connect(m_displaySettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings))); } TextEditorSettings::~TextEditorSettings() { ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - pm->removeObject(m_generalSettingsPage); pm->removeObject(m_fontSettingsPage); - delete m_fontSettingsPage; + pm->removeObject(m_behaviorSettingsPage); + pm->removeObject(m_displaySettingsPage); m_instance = 0; } @@ -137,15 +147,15 @@ FontSettings TextEditorSettings::fontSettings() const TabSettings TextEditorSettings::tabSettings() const { - return m_generalSettingsPage->tabSettings(); + return m_behaviorSettingsPage->tabSettings(); } StorageSettings TextEditorSettings::storageSettings() const { - return m_generalSettingsPage->storageSettings(); + return m_behaviorSettingsPage->storageSettings(); } DisplaySettings TextEditorSettings::displaySettings() const { - return m_generalSettingsPage->displaySettings(); + return m_displaySettingsPage->displaySettings(); } diff --git a/src/plugins/texteditor/texteditorsettings.h b/src/plugins/texteditor/texteditorsettings.h index efaec3176b2..f90fa676ee1 100644 --- a/src/plugins/texteditor/texteditorsettings.h +++ b/src/plugins/texteditor/texteditorsettings.h @@ -40,7 +40,8 @@ namespace TextEditor { -class GeneralSettingsPage; +class BehaviorSettingsPage; +class DisplaySettingsPage; class FontSettingsPage; class FontSettings; struct TabSettings; @@ -74,8 +75,9 @@ signals: void displaySettingsChanged(const TextEditor::DisplaySettings &); private: - TextEditor::FontSettingsPage *m_fontSettingsPage; - TextEditor::GeneralSettingsPage *m_generalSettingsPage; + FontSettingsPage *m_fontSettingsPage; + BehaviorSettingsPage *m_behaviorSettingsPage; + DisplaySettingsPage *m_displaySettingsPage; static TextEditorSettings *m_instance; }; -- GitLab