From 5dbcc615c210ad24a9abff4c7340ae64a65b75ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 27 Jan 2009 15:12:32 +0100 Subject: 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. --- src/plugins/cpptools/completionsettingspage.ui | 61 ++-- src/plugins/texteditor/behaviorsettingspage.cpp | 187 +++++++++++ src/plugins/texteditor/behaviorsettingspage.h | 93 ++++++ src/plugins/texteditor/behaviorsettingspage.ui | 323 +++++++++++++++++++ src/plugins/texteditor/displaysettingspage.cpp | 153 +++++++++ src/plugins/texteditor/displaysettingspage.h | 87 ++++++ src/plugins/texteditor/displaysettingspage.ui | 116 +++++++ src/plugins/texteditor/generalsettingspage.cpp | 237 -------------- src/plugins/texteditor/generalsettingspage.h | 100 ------ src/plugins/texteditor/generalsettingspage.ui | 394 ------------------------ src/plugins/texteditor/texteditor.pro | 11 +- src/plugins/texteditor/texteditorsettings.cpp | 46 +-- src/plugins/texteditor/texteditorsettings.h | 8 +- 13 files changed, 1034 insertions(+), 782 deletions(-) create mode 100644 src/plugins/texteditor/behaviorsettingspage.cpp create mode 100644 src/plugins/texteditor/behaviorsettingspage.h create mode 100644 src/plugins/texteditor/behaviorsettingspage.ui 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 delete mode 100644 src/plugins/texteditor/generalsettingspage.h delete mode 100644 src/plugins/texteditor/generalsettingspage.ui (limited to 'src') diff --git a/src/plugins/cpptools/completionsettingspage.ui b/src/plugins/cpptools/completionsettingspage.ui index 372c225943..c71a2abc82 100644 --- a/src/plugins/cpptools/completionsettingspage.ui +++ b/src/plugins/cpptools/completionsettingspage.ui @@ -15,33 +15,42 @@ - - - &Case-sensitive completion - - - true - - - - - - - &Automatically insert braces - - - true - - - - - - - Autocomplete common &prefix - - - true + + + Completion Settings + + + + + &Case-sensitive completion + + + true + + + + + + + &Automatically insert braces + + + true + + + + + + + Autocomplete common &prefix + + + true + + + + diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp new file mode 100644 index 0000000000..be3cf2ddf2 --- /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 + +#include + +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/behaviorsettingspage.h b/src/plugins/texteditor/behaviorsettingspage.h new file mode 100644 index 0000000000..68f7b40829 --- /dev/null +++ b/src/plugins/texteditor/behaviorsettingspage.h @@ -0,0 +1,93 @@ +/*************************************************************************** +** +** 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 BEHAVIORSETTINGSPAGE_H +#define BEHAVIORSETTINGSPAGE_H + +#include "texteditor_global.h" + +#include + +#include + +namespace TextEditor { + +struct TabSettings; +struct StorageSettings; +struct InteractionSettings; + +struct BehaviorSettingsPageParameters +{ + QString name; + QString category; + QString trCategory; + QString settingsPrefix; +}; + +class BehaviorSettingsPage : public Core::IOptionsPage +{ + Q_OBJECT + +public: + BehaviorSettingsPage(const BehaviorSettingsPageParameters &p, QObject *parent); + virtual ~BehaviorSettingsPage(); + + // IOptionsPage + QString name() const; + QString category() const; + QString trCategory() const; + + QWidget *createPage(QWidget *parent); + void apply(); + void finish() { } + + TabSettings tabSettings() const; + StorageSettings storageSettings() const; + InteractionSettings interactionSettings() const; + +signals: + void tabSettingsChanged(const TextEditor::TabSettings &); + void storageSettingsChanged(const TextEditor::StorageSettings &); + +private: + void settingsFromUI(TabSettings &rc, + StorageSettings &storageSettings, + InteractionSettings &interactionSettings) const; + void settingsToUI(); + struct BehaviorSettingsPagePrivate; + BehaviorSettingsPagePrivate *m_d; +}; + +} // namespace TextEditor + +#endif // BEHAVIORSETTINGSPAGE_H diff --git a/src/plugins/texteditor/behaviorsettingspage.ui b/src/plugins/texteditor/behaviorsettingspage.ui new file mode 100644 index 0000000000..a2fb68e5b2 --- /dev/null +++ b/src/plugins/texteditor/behaviorsettingspage.ui @@ -0,0 +1,323 @@ + + + TextEditor::BehaviorSettingsPage + + + + 0 + 0 + 484 + 398 + + + + Form + + + + + + Tab/Indent Settings + + + + + + Enable automatic &indentation + + + + + + + + + + 0 + 0 + + + + Ta&b size: + + + tabSize + + + + + + + Qt::Horizontal + + + + 5 + 5 + + + + + + + + + 0 + 0 + + + + 1 + + + 20 + + + + + + + + + Qt::Horizontal + + + + 0 + 10 + + + + + + + + Insert &spaces instead of tabs + + + + + + + + + + 0 + 0 + + + + &Indent size: + + + indentSize + + + + + + + Qt::Horizontal + + + + 5 + 5 + + + + + + + + + 0 + 0 + + + + 1 + + + 20 + + + + + + + + + &Backspace follows indentation + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 0 + 10 + + + + + + + + + + + Storage Settings + + + + + + &Clean whitespace + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + In entire &document + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + false + + + Clean indentation + + + + + + + + + &Ensure newline at end of file + + + + + + + + + + Interaction Settings + + + + + + Use "vi" style editing + + + + + + + + + + Qt::Vertical + + + + 20 + 8 + + + + + + + + + + cleanWhitespace + toggled(bool) + inEntireDocument + setEnabled(bool) + + + 47 + 184 + + + 91 + 212 + + + + + cleanWhitespace + toggled(bool) + cleanIndentation + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp new file mode 100644 index 0000000000..7f47290b3f --- /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 + +#include + +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 0000000000..3337cafa92 --- /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 + +#include + +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 0000000000..30fdf5cf93 --- /dev/null +++ b/src/plugins/texteditor/displaysettingspage.ui @@ -0,0 +1,116 @@ + + + TextEditor::DisplaySettingsPage + + + + 0 + 0 + 514 + 194 + + + + Form + + + + + + Display Settings + + + + + + + + Display right &margin at column + + + + + + + false + + + 999 + + + + + + + + + Enable text &wrapping + + + + + + + Display line &numbers + + + + + + + &Visualize whitespace + + + + + + + Display &folding markers + + + + + + + Highlight current &line + + + + + + + + + + Qt::Vertical + + + + 20 + 8 + + + + + + + + + + showWrapColumn + toggled(bool) + wrapColumn + setEnabled(bool) + + + 399 + 308 + + + 474 + 308 + + + + + diff --git a/src/plugins/texteditor/generalsettingspage.cpp b/src/plugins/texteditor/generalsettingspage.cpp deleted file mode 100644 index 28400d10eb..0000000000 --- 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 - -#include -#include - -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/generalsettingspage.h b/src/plugins/texteditor/generalsettingspage.h deleted file mode 100644 index 1f70fd6b0b..0000000000 --- a/src/plugins/texteditor/generalsettingspage.h +++ /dev/null @@ -1,100 +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. -** -***************************************************************************/ - -#ifndef GENERALSETTINGSPAGE_H -#define GENERALSETTINGSPAGE_H - -#include "texteditor_global.h" - -#include - -#include - -namespace TextEditor { - -struct TabSettings; -struct StorageSettings; -struct DisplaySettings; -struct InteractionSettings; - -struct TEXTEDITOR_EXPORT GeneralSettingsPageParameters -{ - QString name; - QString category; - QString trCategory; - QString settingsPrefix; -}; - -class TEXTEDITOR_EXPORT GeneralSettingsPage : public Core::IOptionsPage -{ - Q_OBJECT - -public: - GeneralSettingsPage(const GeneralSettingsPageParameters &p, QObject *parent); - virtual ~GeneralSettingsPage(); - - // IOptionsPage - QString name() const; - QString category() const; - QString trCategory() const; - - QWidget *createPage(QWidget *parent); - void apply(); - void finish() { } - - 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; - void settingsToUI(); - struct GeneralSettingsPagePrivate; - GeneralSettingsPagePrivate *m_d; -}; - -} // namespace TextEditor - -#endif // GENERALSETTINGSPAGE_H diff --git a/src/plugins/texteditor/generalsettingspage.ui b/src/plugins/texteditor/generalsettingspage.ui deleted file mode 100644 index 301ee8bdf5..0000000000 --- a/src/plugins/texteditor/generalsettingspage.ui +++ /dev/null @@ -1,394 +0,0 @@ - - - TextEditor::generalSettingsPage - - - - 0 - 0 - 514 - 475 - - - - Form - - - - - - Tab/Indent Settings - - - - - - Enable automatic &indentation - - - - - - - - - - 0 - 0 - - - - Ta&b size: - - - tabSize - - - - - - - Qt::Horizontal - - - - 5 - 5 - - - - - - - - - 0 - 0 - - - - 1 - - - 20 - - - - - - - - - Qt::Horizontal - - - - 0 - 10 - - - - - - - - Insert &spaces instead of tabs - - - - - - - - - - 0 - 0 - - - - &Indent size: - - - indentSize - - - - - - - Qt::Horizontal - - - - 5 - 5 - - - - - - - - - 0 - 0 - - - - 1 - - - 20 - - - - - - - - - &Backspace follows indentation - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 0 - 10 - - - - - - - - - - - Storage Settings - - - - - - &Clean whitespace - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 30 - 20 - - - - - - - - false - - - In entire &document - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 30 - 20 - - - - - - - - false - - - Clean indentation - - - - - - - - - &Ensure newline at end of file - - - - - - - - - - Display Settings - - - - - - - - Display right &margin at column - - - - - - - false - - - 999 - - - - - - - - - Enable text &wrapping - - - - - - - Display line &numbers - - - - - - - &Visualize whitespace - - - - - - - Display &folding markers - - - - - - - Highlight current &line - - - - - - - - - - Interaction Settings - - - - - - Use "vi" style editing - - - - - - - - - - Qt::Vertical - - - - 20 - 8 - - - - - - - - - - cleanWhitespace - toggled(bool) - inEntireDocument - setEnabled(bool) - - - 47 - 184 - - - 91 - 212 - - - - - cleanWhitespace - toggled(bool) - cleanIndentation - setEnabled(bool) - - - showWrapColumn - toggled(bool) - wrapColumn - setEnabled(bool) - - - 399 - 308 - - - 474 - 308 - - - - - diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro index 56c39604fb..0ec180bc06 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 999ad0d8ae..a8f6019597 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 efaec3176b..f90fa676ee 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; }; -- cgit v1.2.3