summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-01-09 14:44:25 +0100
committerErik Verbruggen <erik.verbruggen@digia.com>2014-01-10 12:11:24 +0100
commit02314e24f09c1b405919cd80d3747f2850223244 (patch)
tree86a54fc4b0e84998f6eea487e0207970845b99c9
parent28180a415a88a78df180f8291ae4921e32203ed2 (diff)
downloadqt-creator-02314e24f09c1b405919cd80d3747f2850223244.tar.gz
Editor: add margin displaying to project settings.
This patch also moves the showMargin and marginColumn settings into a new settings class. Change-Id: I676447be751c13ee438edc1e31e5998b999c6771 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r--src/plugins/projectexplorer/editorconfiguration.cpp40
-rw-r--r--src/plugins/projectexplorer/editorconfiguration.h7
-rw-r--r--src/plugins/projectexplorer/editorsettingspropertiespage.cpp8
-rw-r--r--src/plugins/projectexplorer/editorsettingspropertiespage.ui65
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp16
-rw-r--r--src/plugins/texteditor/basetexteditor.h3
-rw-r--r--src/plugins/texteditor/basetexteditor_p.h2
-rw-r--r--src/plugins/texteditor/displaysettings.cpp10
-rw-r--r--src/plugins/texteditor/displaysettings.h2
-rw-r--r--src/plugins/texteditor/displaysettingspage.cpp35
-rw-r--r--src/plugins/texteditor/displaysettingspage.h7
-rw-r--r--src/plugins/texteditor/marginsettings.cpp89
-rw-r--r--src/plugins/texteditor/marginsettings.h67
-rw-r--r--src/plugins/texteditor/texteditor.pro6
-rw-r--r--src/plugins/texteditor/texteditorsettings.cpp11
-rw-r--r--src/plugins/texteditor/texteditorsettings.h3
16 files changed, 342 insertions, 29 deletions
diff --git a/src/plugins/projectexplorer/editorconfiguration.cpp b/src/plugins/projectexplorer/editorconfiguration.cpp
index 10f27bbc38..4a61566ca7 100644
--- a/src/plugins/projectexplorer/editorconfiguration.cpp
+++ b/src/plugins/projectexplorer/editorconfiguration.cpp
@@ -42,6 +42,7 @@
#include <texteditor/behaviorsettings.h>
#include <texteditor/extraencodingsettings.h>
#include <texteditor/tabsettings.h>
+#include <texteditor/marginsettings.h>
#include <texteditor/icodestylepreferencesfactory.h>
#include <QLatin1String>
@@ -77,6 +78,7 @@ struct EditorConfigurationPrivate
StorageSettings m_storageSettings;
BehaviorSettings m_behaviorSettings;
ExtraEncodingSettings m_extraEncodingSettings;
+ MarginSettings m_marginSettings;
QTextCodec *m_textCodec;
QMap<Core::Id, ICodeStylePreferences *> m_languageCodeStylePreferences;
@@ -134,6 +136,7 @@ void EditorConfiguration::cloneGlobalSettings()
setStorageSettings(TextEditorSettings::storageSettings());
setBehaviorSettings(TextEditorSettings::behaviorSettings());
setExtraEncodingSettings(TextEditorSettings::extraEncodingSettings());
+ setMarginSettings(TextEditorSettings::marginSettings());
d->m_textCodec = Core::EditorManager::defaultTextCodec();
}
@@ -162,6 +165,11 @@ const ExtraEncodingSettings &EditorConfiguration::extraEncodingSettings() const
return d->m_extraEncodingSettings;
}
+const MarginSettings &EditorConfiguration::marginSettings() const
+{
+ return d->m_marginSettings;
+}
+
ICodeStylePreferences *EditorConfiguration::codeStyle() const
{
return d->m_defaultCodeStyle;
@@ -202,6 +210,7 @@ QVariantMap EditorConfiguration::toMap() const
d->m_storageSettings.toMap(kPrefix, &map);
d->m_behaviorSettings.toMap(kPrefix, &map);
d->m_extraEncodingSettings.toMap(kPrefix, &map);
+ d->m_marginSettings.toMap(kPrefix, &map);
return map;
}
@@ -234,6 +243,7 @@ void EditorConfiguration::fromMap(const QVariantMap &map)
d->m_storageSettings.fromMap(kPrefix, map);
d->m_behaviorSettings.fromMap(kPrefix, map);
d->m_extraEncodingSettings.fromMap(kPrefix, map);
+ d->m_marginSettings.fromMap(kPrefix, map);
}
void EditorConfiguration::configureEditor(ITextEditor *textEditor) const
@@ -276,6 +286,8 @@ void EditorConfiguration::setUseGlobalSettings(bool use)
static void switchSettings_helper(const QObject *newSender, const QObject *oldSender,
BaseTextEditorWidget *baseTextEditor)
{
+ QObject::disconnect(oldSender, SIGNAL(marginSettingsChanged(TextEditor::MarginSettings)),
+ baseTextEditor, SLOT(setMarginSettings(TextEditor::MarginSettings)));
QObject::disconnect(oldSender, SIGNAL(typingSettingsChanged(TextEditor::TypingSettings)),
baseTextEditor, SLOT(setTypingSettings(TextEditor::TypingSettings)));
QObject::disconnect(oldSender, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)),
@@ -285,6 +297,8 @@ static void switchSettings_helper(const QObject *newSender, const QObject *oldSe
QObject::disconnect(oldSender, SIGNAL(extraEncodingSettingsChanged(TextEditor::ExtraEncodingSettings)),
baseTextEditor, SLOT(setExtraEncodingSettings(TextEditor::ExtraEncodingSettings)));
+ QObject::connect(newSender, SIGNAL(marginSettingsChanged(TextEditor::MarginSettings)),
+ baseTextEditor, SLOT(setMarginSettings(TextEditor::MarginSettings)));
QObject::connect(newSender, SIGNAL(typingSettingsChanged(TextEditor::TypingSettings)),
baseTextEditor, SLOT(setTypingSettings(TextEditor::TypingSettings)));
QObject::connect(newSender, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)),
@@ -298,12 +312,14 @@ static void switchSettings_helper(const QObject *newSender, const QObject *oldSe
void EditorConfiguration::switchSettings(BaseTextEditorWidget *baseTextEditor) const
{
if (d->m_useGlobal) {
+ baseTextEditor->setMarginSettings(TextEditorSettings::marginSettings());
baseTextEditor->setTypingSettings(TextEditorSettings::typingSettings());
baseTextEditor->setStorageSettings(TextEditorSettings::storageSettings());
baseTextEditor->setBehaviorSettings(TextEditorSettings::behaviorSettings());
baseTextEditor->setExtraEncodingSettings(TextEditorSettings::extraEncodingSettings());
switchSettings_helper(TextEditorSettings::instance(), this, baseTextEditor);
} else {
+ baseTextEditor->setMarginSettings(marginSettings());
baseTextEditor->setTypingSettings(typingSettings());
baseTextEditor->setStorageSettings(storageSettings());
baseTextEditor->setBehaviorSettings(behaviorSettings());
@@ -336,11 +352,35 @@ void EditorConfiguration::setExtraEncodingSettings(const TextEditor::ExtraEncodi
emit extraEncodingSettingsChanged(d->m_extraEncodingSettings);
}
+void EditorConfiguration::setMarginSettings(const MarginSettings &settings)
+{
+ if (d->m_marginSettings != settings) {
+ d->m_marginSettings = settings;
+ emit marginSettingsChanged(d->m_marginSettings);
+ }
+}
+
void EditorConfiguration::setTextCodec(QTextCodec *textCodec)
{
d->m_textCodec = textCodec;
}
+void EditorConfiguration::setShowWrapColumn(bool onoff)
+{
+ if (d->m_marginSettings.m_showMargin != onoff) {
+ d->m_marginSettings.m_showMargin = onoff;
+ emit marginSettingsChanged(d->m_marginSettings);
+ }
+}
+
+void EditorConfiguration::setWrapColumn(int column)
+{
+ if (d->m_marginSettings.m_marginColumn != column) {
+ d->m_marginSettings.m_marginColumn = column;
+ emit marginSettingsChanged(d->m_marginSettings);
+ }
+}
+
void EditorConfiguration::slotAboutToRemoveProject(ProjectExplorer::Project *project)
{
if (project->editorConfiguration() != this)
diff --git a/src/plugins/projectexplorer/editorconfiguration.h b/src/plugins/projectexplorer/editorconfiguration.h
index 8e64837e00..d4652cf7f2 100644
--- a/src/plugins/projectexplorer/editorconfiguration.h
+++ b/src/plugins/projectexplorer/editorconfiguration.h
@@ -46,6 +46,7 @@ class TypingSettings;
class StorageSettings;
class BehaviorSettings;
class ExtraEncodingSettings;
+class MarginSettings;
}
namespace ProjectExplorer {
@@ -72,6 +73,7 @@ public:
const TextEditor::StorageSettings &storageSettings() const;
const TextEditor::BehaviorSettings &behaviorSettings() const;
const TextEditor::ExtraEncodingSettings &extraEncodingSettings() const;
+ const TextEditor::MarginSettings &marginSettings() const;
TextEditor::ICodeStylePreferences *codeStyle() const;
TextEditor::ICodeStylePreferences *codeStyle(Core::Id languageId) const;
@@ -88,6 +90,7 @@ signals:
void storageSettingsChanged(const TextEditor::StorageSettings &);
void behaviorSettingsChanged(const TextEditor::BehaviorSettings &);
void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &);
+ void marginSettingsChanged(const TextEditor::MarginSettings &);
private slots:
@@ -95,6 +98,10 @@ private slots:
void setStorageSettings(const TextEditor::StorageSettings &settings);
void setBehaviorSettings(const TextEditor::BehaviorSettings &settings);
void setExtraEncodingSettings(const TextEditor::ExtraEncodingSettings &settings);
+ void setMarginSettings(const TextEditor::MarginSettings &settings);
+
+ void setShowWrapColumn(bool onoff);
+ void setWrapColumn(int column);
void setTextCodec(QTextCodec *textCodec);
diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.cpp b/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
index e2e4526102..3382b83ab3 100644
--- a/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
@@ -30,6 +30,7 @@
#include "editorsettingspropertiespage.h"
#include "editorconfiguration.h"
#include "project.h"
+#include <texteditor/marginsettings.h>
#include <QTextCodec>
@@ -78,6 +79,10 @@ EditorSettingsWidget::EditorSettingsWidget(Project *project) : QWidget(), m_proj
connect(m_ui.globalSelector, SIGNAL(activated(int)),
this, SLOT(globalSettingsActivated(int)));
connect(m_ui.restoreButton, SIGNAL(clicked()), this, SLOT(restoreDefaultValues()));
+
+ connect(m_ui.showWrapColumn, SIGNAL(toggled(bool)), config, SLOT(setShowWrapColumn(bool)));
+ connect(m_ui.wrapColumn, SIGNAL(valueChanged(int)), config, SLOT(setWrapColumn(int)));
+
connect(m_ui.behaviorSettingsWidget, SIGNAL(typingSettingsChanged(TextEditor::TypingSettings)),
config, SLOT(setTypingSettings(TextEditor::TypingSettings)));
connect(m_ui.behaviorSettingsWidget, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)),
@@ -92,6 +97,8 @@ EditorSettingsWidget::EditorSettingsWidget(Project *project) : QWidget(), m_proj
void EditorSettingsWidget::settingsToUi(const EditorConfiguration *config)
{
+ m_ui.showWrapColumn->setChecked(config->marginSettings().m_showMargin);
+ m_ui.wrapColumn->setValue(config->marginSettings().m_marginColumn);
m_ui.behaviorSettingsWidget->setCodeStyle(config->codeStyle());
m_ui.globalSelector->setCurrentIndex(config->useGlobalSettings() ? 0 : 1);
m_ui.behaviorSettingsWidget->setAssignedCodec(config->textCodec());
@@ -104,6 +111,7 @@ void EditorSettingsWidget::settingsToUi(const EditorConfiguration *config)
void EditorSettingsWidget::globalSettingsActivated(int index)
{
const bool useGlobal = !index;
+ m_ui.displaySettings->setEnabled(!useGlobal);
m_ui.behaviorSettingsWidget->setActive(!useGlobal);
m_ui.restoreButton->setEnabled(!useGlobal);
EditorConfiguration *config = m_project->editorConfiguration();
diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.ui b/src/plugins/projectexplorer/editorsettingspropertiespage.ui
index 785976a307..5a2ab33188 100644
--- a/src/plugins/projectexplorer/editorsettingspropertiespage.ui
+++ b/src/plugins/projectexplorer/editorsettingspropertiespage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>401</width>
- <height>111</height>
+ <height>173</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
@@ -56,9 +56,51 @@
</spacer>
</item>
<item row="1" column="0" colspan="4">
+ <widget class="QGroupBox" name="displaySettings">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Display Settings</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QCheckBox" name="showWrapColumn">
+ <property name="text">
+ <string>Display right &amp;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>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>53</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="4">
<widget class="TextEditor::BehaviorSettingsWidget" name="behaviorSettingsWidget" native="true"/>
</item>
- <item row="2" column="0">
+ <item row="3" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -82,5 +124,22 @@
</customwidget>
</customwidgets>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>showWrapColumn</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>wrapColumn</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>211</x>
+ <y>75</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>283</x>
+ <y>82</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
</ui>
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 3907c42cc0..a1218fa8c4 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -4532,6 +4532,10 @@ const DisplaySettings &BaseTextEditorWidget::displaySettings() const
return d->m_displaySettings;
}
+const MarginSettings &BaseTextEditorWidget::marginSettings() const
+{
+ return d->m_marginSettings;
+}
void BaseTextEditorWidget::indentOrUnindent(bool doIndent)
{
@@ -5389,7 +5393,7 @@ void BaseTextEditorWidget::format()
void BaseTextEditorWidget::rewrapParagraph()
{
- const int paragraphWidth = displaySettings().m_wrapColumn;
+ const int paragraphWidth = marginSettings().m_marginColumn;
const QRegExp anyLettersOrNumbers = QRegExp(QLatin1String("\\w"));
const int tabSize = tabSettings().m_tabSize;
@@ -5612,7 +5616,6 @@ void BaseTextEditorWidget::setDisplaySettings(const DisplaySettings &ds)
{
setLineWrapMode(ds.m_textWrapping ? QPlainTextEdit::WidgetWidth : QPlainTextEdit::NoWrap);
setLineNumbersVisible(ds.m_displayLineNumbers);
- setVisibleWrapColumn(ds.m_showWrapColumn ? ds.m_wrapColumn : 0);
setHighlightCurrentLine(ds.m_highlightCurrentLine);
setRevisionsVisible(ds.m_markTextChanges);
setCenterOnScroll(ds.m_centerCursorOnScroll);
@@ -5642,6 +5645,15 @@ void BaseTextEditorWidget::setDisplaySettings(const DisplaySettings &ds)
extraArea()->update();
}
+void BaseTextEditorWidget::setMarginSettings(const MarginSettings &ms)
+{
+ setVisibleWrapColumn(ms.m_showMargin ? ms.m_marginColumn : 0);
+ d->m_marginSettings = ms;
+
+ viewport()->update();
+ extraArea()->update();
+}
+
void BaseTextEditorWidget::setBehaviorSettings(const TextEditor::BehaviorSettings &bs)
{
d->m_behaviorSettings = bs;
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index cfe95b7464..d91bc6d921 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -75,6 +75,7 @@ class FontSettings;
class BehaviorSettings;
class CompletionSettings;
class DisplaySettings;
+class MarginSettings;
class TypingSettings;
class StorageSettings;
class Indenter;
@@ -396,6 +397,7 @@ public:
void setCodeStyle(ICodeStylePreferences *settings);
const DisplaySettings &displaySettings() const;
+ const MarginSettings &marginSettings() const;
void markBlocksAsChanged(QList<int> blockNumbers);
@@ -436,6 +438,7 @@ public slots:
void setFontSettingsIfVisible(const TextEditor::FontSettings &);
virtual void setTabSettings(const TextEditor::TabSettings &);
virtual void setDisplaySettings(const TextEditor::DisplaySettings &);
+ virtual void setMarginSettings(const TextEditor::MarginSettings &);
virtual void setBehaviorSettings(const TextEditor::BehaviorSettings &);
virtual void setTypingSettings(const TextEditor::TypingSettings &);
virtual void setStorageSettings(const TextEditor::StorageSettings &);
diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h
index ff712e483a..be90639735 100644
--- a/src/plugins/texteditor/basetexteditor_p.h
+++ b/src/plugins/texteditor/basetexteditor_p.h
@@ -33,6 +33,7 @@
#include "basetexteditor.h"
#include "behaviorsettings.h"
#include "displaysettings.h"
+#include "marginsettings.h"
#include "fontsettings.h"
#include "refactoroverlay.h"
@@ -138,6 +139,7 @@ public:
Core::Id m_tabSettingsId;
ICodeStylePreferences *m_codeStylePreferences;
DisplaySettings m_displaySettings;
+ MarginSettings m_marginSettings;
FontSettings m_fontSettings;
BehaviorSettings m_behaviorSettings;
diff --git a/src/plugins/texteditor/displaysettings.cpp b/src/plugins/texteditor/displaysettings.cpp
index e54e1082bf..c90d0061b7 100644
--- a/src/plugins/texteditor/displaysettings.cpp
+++ b/src/plugins/texteditor/displaysettings.cpp
@@ -34,8 +34,6 @@
static const char displayLineNumbersKey[] = "DisplayLineNumbers";
static const char textWrappingKey[] = "TextWrapping";
-static const char showWrapColumnKey[] = "ShowWrapColumn";
-static const char wrapColumnKey[] = "WrapColumn";
static const char visualizeWhitespaceKey[] = "VisualizeWhitespace";
static const char displayFoldingMarkersKey[] = "DisplayFoldingMarkers";
static const char highlightCurrentLineKey[] = "HighlightCurrentLine2Key";
@@ -54,8 +52,6 @@ namespace TextEditor {
DisplaySettings::DisplaySettings() :
m_displayLineNumbers(true),
m_textWrapping(false),
- m_showWrapColumn(false),
- m_wrapColumn(80),
m_visualizeWhitespace(false),
m_displayFoldingMarkers(true),
m_highlightCurrentLine(false),
@@ -79,8 +75,6 @@ void DisplaySettings::toSettings(const QString &category, QSettings *s) const
s->beginGroup(group);
s->setValue(QLatin1String(displayLineNumbersKey), m_displayLineNumbers);
s->setValue(QLatin1String(textWrappingKey), m_textWrapping);
- s->setValue(QLatin1String(showWrapColumnKey), m_showWrapColumn);
- s->setValue(QLatin1String(wrapColumnKey), m_wrapColumn);
s->setValue(QLatin1String(visualizeWhitespaceKey), m_visualizeWhitespace);
s->setValue(QLatin1String(displayFoldingMarkersKey), m_displayFoldingMarkers);
s->setValue(QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine);
@@ -106,8 +100,6 @@ void DisplaySettings::fromSettings(const QString &category, const QSettings *s)
m_displayLineNumbers = s->value(group + QLatin1String(displayLineNumbersKey), m_displayLineNumbers).toBool();
m_textWrapping = s->value(group + QLatin1String(textWrappingKey), m_textWrapping).toBool();
- m_showWrapColumn = s->value(group + QLatin1String(showWrapColumnKey), m_showWrapColumn).toBool();
- m_wrapColumn = s->value(group + QLatin1String(wrapColumnKey), m_wrapColumn).toInt();
m_visualizeWhitespace = s->value(group + QLatin1String(visualizeWhitespaceKey), m_visualizeWhitespace).toBool();
m_displayFoldingMarkers = s->value(group + QLatin1String(displayFoldingMarkersKey), m_displayFoldingMarkers).toBool();
m_highlightCurrentLine = s->value(group + QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine).toBool();
@@ -125,8 +117,6 @@ bool DisplaySettings::equals(const DisplaySettings &ds) const
{
return m_displayLineNumbers == ds.m_displayLineNumbers
&& m_textWrapping == ds.m_textWrapping
- && m_showWrapColumn == ds.m_showWrapColumn
- && m_wrapColumn == ds.m_wrapColumn
&& m_visualizeWhitespace == ds.m_visualizeWhitespace
&& m_displayFoldingMarkers == ds.m_displayFoldingMarkers
&& m_highlightCurrentLine == ds.m_highlightCurrentLine
diff --git a/src/plugins/texteditor/displaysettings.h b/src/plugins/texteditor/displaysettings.h
index 0ed9a0f031..4365e3d32c 100644
--- a/src/plugins/texteditor/displaysettings.h
+++ b/src/plugins/texteditor/displaysettings.h
@@ -48,8 +48,6 @@ public:
bool m_displayLineNumbers;
bool m_textWrapping;
- bool m_showWrapColumn;
- int m_wrapColumn;
bool m_visualizeWhitespace;
bool m_displayFoldingMarkers;
bool m_highlightCurrentLine;
diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp
index 6005e5acdb..60cbb976aa 100644
--- a/src/plugins/texteditor/displaysettingspage.cpp
+++ b/src/plugins/texteditor/displaysettingspage.cpp
@@ -29,6 +29,7 @@
#include "displaysettingspage.h"
#include "displaysettings.h"
+#include "marginsettings.h"
#include "ui_displaysettingspage.h"
#include <coreplugin/icore.h>
@@ -46,6 +47,7 @@ struct DisplaySettingsPage::DisplaySettingsPagePrivate
QPointer<QWidget> m_widget;
Internal::Ui::DisplaySettingsPage *m_page;
DisplaySettings m_displaySettings;
+ MarginSettings m_marginSettings;
};
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate
@@ -53,6 +55,7 @@ DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate
: m_parameters(p), m_page(0)
{
m_displaySettings.fromSettings(m_parameters.settingsPrefix, Core::ICore::settings());
+ m_marginSettings.fromSettings(m_parameters.settingsPrefix, Core::ICore::settings());
}
DisplaySettingsPage::DisplaySettingsPage(const DisplaySettingsPageParameters &p,
@@ -85,9 +88,10 @@ void DisplaySettingsPage::apply()
if (!d->m_page) // page was never shown
return;
DisplaySettings newDisplaySettings;
+ MarginSettings newMarginSettings;
- settingsFromUI(newDisplaySettings);
- setDisplaySettings(newDisplaySettings);
+ settingsFromUI(newDisplaySettings, newMarginSettings);
+ setDisplaySettings(newDisplaySettings, newMarginSettings);
}
void DisplaySettingsPage::finish()
@@ -99,12 +103,13 @@ void DisplaySettingsPage::finish()
d->m_page = 0;
}
-void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
+void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings,
+ MarginSettings &marginSettings) const
{
displaySettings.m_displayLineNumbers = d->m_page->displayLineNumbers->isChecked();
displaySettings.m_textWrapping = d->m_page->enableTextWrapping->isChecked();
- displaySettings.m_showWrapColumn = d->m_page->showWrapColumn->isChecked();
- displaySettings.m_wrapColumn = d->m_page->wrapColumn->value();
+ marginSettings.m_showMargin = d->m_page->showWrapColumn->isChecked();
+ marginSettings.m_marginColumn = d->m_page->wrapColumn->value();
displaySettings.m_visualizeWhitespace = d->m_page->visualizeWhitespace->isChecked();
displaySettings.m_displayFoldingMarkers = d->m_page->displayFoldingMarkers->isChecked();
displaySettings.m_highlightCurrentLine = d->m_page->highlightCurrentLine->isChecked();
@@ -121,10 +126,11 @@ void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
void DisplaySettingsPage::settingsToUI()
{
const DisplaySettings &displaySettings = d->m_displaySettings;
+ const MarginSettings &marginSettings = d->m_marginSettings;
d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
- d->m_page->showWrapColumn->setChecked(displaySettings.m_showWrapColumn);
- d->m_page->wrapColumn->setValue(displaySettings.m_wrapColumn);
+ d->m_page->showWrapColumn->setChecked(marginSettings.m_showMargin);
+ d->m_page->wrapColumn->setValue(marginSettings.m_marginColumn);
d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
@@ -143,7 +149,13 @@ const DisplaySettings &DisplaySettingsPage::displaySettings() const
return d->m_displaySettings;
}
-void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings)
+const MarginSettings &DisplaySettingsPage::marginSettings() const
+{
+ return d->m_marginSettings;
+}
+
+void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings,
+ const MarginSettings &newMarginSettings)
{
if (newDisplaySettings != d->m_displaySettings) {
d->m_displaySettings = newDisplaySettings;
@@ -151,4 +163,11 @@ void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySe
emit displaySettingsChanged(newDisplaySettings);
}
+
+ if (newMarginSettings != d->m_marginSettings) {
+ d->m_marginSettings = newMarginSettings;
+ d->m_marginSettings.toSettings(d->m_parameters.settingsPrefix, Core::ICore::settings());
+
+ emit marginSettingsChanged(newMarginSettings);
+ }
}
diff --git a/src/plugins/texteditor/displaysettingspage.h b/src/plugins/texteditor/displaysettingspage.h
index 6bbf516587..fbe742ce3a 100644
--- a/src/plugins/texteditor/displaysettingspage.h
+++ b/src/plugins/texteditor/displaysettingspage.h
@@ -37,6 +37,7 @@
namespace TextEditor {
class DisplaySettings;
+class MarginSettings;
class DisplaySettingsPageParameters
{
@@ -60,14 +61,16 @@ public:
void finish();
const DisplaySettings &displaySettings() const;
+ const MarginSettings &marginSettings() const;
signals:
void displaySettingsChanged(const TextEditor::DisplaySettings &);
+ void marginSettingsChanged(const TextEditor::MarginSettings &);
private:
- void settingsFromUI(DisplaySettings &displaySettings) const;
+ void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
void settingsToUI();
- void setDisplaySettings(const DisplaySettings &);
+ void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
struct DisplaySettingsPagePrivate;
DisplaySettingsPagePrivate *d;
diff --git a/src/plugins/texteditor/marginsettings.cpp b/src/plugins/texteditor/marginsettings.cpp
new file mode 100644
index 0000000000..e05eeb783a
--- /dev/null
+++ b/src/plugins/texteditor/marginsettings.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "marginsettings.h"
+
+#include <QSettings>
+#include <QString>
+#include <QVariantMap>
+
+static const char showWrapColumnKey[] = "ShowMargin";
+static const char wrapColumnKey[] = "MarginColumn";
+static const char groupPostfix[] = "MarginSettings";
+
+using namespace TextEditor;
+
+MarginSettings::MarginSettings()
+ : m_showMargin(false)
+ , m_marginColumn(80)
+{
+}
+
+void MarginSettings::toSettings(const QString &category, QSettings *s) const
+{
+ QString group = QLatin1String(groupPostfix);
+ if (!category.isEmpty())
+ group.insert(0, category);
+ s->beginGroup(group);
+ s->setValue(QLatin1String(showWrapColumnKey), m_showMargin);
+ s->setValue(QLatin1String(wrapColumnKey), m_marginColumn);
+ s->endGroup();
+}
+
+void MarginSettings::fromSettings(const QString &category, const QSettings *s)
+{
+ QString group = QLatin1String(groupPostfix);
+ if (!category.isEmpty())
+ group.insert(0, category);
+ group += QLatin1Char('/');
+
+ *this = MarginSettings(); // Assign defaults
+
+ m_showMargin = s->value(group + QLatin1String(showWrapColumnKey), m_showMargin).toBool();
+ m_marginColumn = s->value(group + QLatin1String(wrapColumnKey), m_marginColumn).toInt();
+}
+
+void MarginSettings::toMap(const QString &prefix, QVariantMap *map) const
+{
+ map->insert(prefix + QLatin1String(showWrapColumnKey), m_showMargin);
+ map->insert(prefix + QLatin1String(wrapColumnKey), m_marginColumn);
+}
+
+void MarginSettings::fromMap(const QString &prefix, const QVariantMap &map)
+{
+ m_showMargin = map.value(prefix + QLatin1String(showWrapColumnKey), m_showMargin).toBool();
+ m_marginColumn = map.value(prefix + QLatin1String(wrapColumnKey), m_marginColumn).toInt();
+}
+
+bool MarginSettings::equals(const MarginSettings &other) const
+{
+ return m_showMargin == other.m_showMargin
+ && m_marginColumn == other.m_marginColumn
+ ;
+}
diff --git a/src/plugins/texteditor/marginsettings.h b/src/plugins/texteditor/marginsettings.h
new file mode 100644
index 0000000000..fdd8be555d
--- /dev/null
+++ b/src/plugins/texteditor/marginsettings.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#ifndef TEXTEDITOR_MARGINSETTINGS_H
+#define TEXTEDITOR_MARGINSETTINGS_H
+
+#include "texteditor_global.h"
+
+#include <QVariantMap>
+
+QT_BEGIN_NAMESPACE
+class QSettings;
+QT_END_NAMESPACE
+
+namespace TextEditor {
+
+class TEXTEDITOR_EXPORT MarginSettings
+{
+public:
+ MarginSettings();
+
+ void toSettings(const QString &category, QSettings *s) const;
+ void fromSettings(const QString &category, const QSettings *s);
+
+ void toMap(const QString &prefix, QVariantMap *map) const;
+ void fromMap(const QString &prefix, const QVariantMap &map);
+
+ bool equals(const MarginSettings &other) const;
+
+ bool m_showMargin;
+ int m_marginColumn;
+};
+
+inline bool operator==(const MarginSettings &one, const MarginSettings &two)
+{ return one.equals(two); }
+inline bool operator!=(const MarginSettings &one, const MarginSettings &two)
+{ return !one.equals(two); }
+
+} // namespace TextEditor
+
+#endif // TEXTEDITOR_MARGINSETTINGS_H
diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro
index 23acecbf02..7bc37d6d3f 100644
--- a/src/plugins/texteditor/texteditor.pro
+++ b/src/plugins/texteditor/texteditor.pro
@@ -107,7 +107,8 @@ SOURCES += texteditorplugin.cpp \
circularclipboard.cpp \
circularclipboardassist.cpp \
itextmark.cpp \
- codeassist/keywordscompletionassist.cpp
+ codeassist/keywordscompletionassist.cpp \
+ marginsettings.cpp
HEADERS += texteditorplugin.h \
textfilewizard.h \
@@ -224,7 +225,8 @@ HEADERS += texteditorplugin.h \
circularclipboardassist.h \
itextmark.h \
codeassist/keywordscompletionassist.h \
- basetextmarkregistry.h
+ basetextmarkregistry.h \
+ marginsettings.h
FORMS += \
displaysettingspage.ui \
diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp
index 1b067cbb8b..53ffe28bd5 100644
--- a/src/plugins/texteditor/texteditorsettings.cpp
+++ b/src/plugins/texteditor/texteditorsettings.cpp
@@ -33,6 +33,7 @@
#include "behaviorsettings.h"
#include "behaviorsettingspage.h"
#include "completionsettings.h"
+#include "marginsettings.h"
#include "displaysettings.h"
#include "displaysettingspage.h"
#include "fontsettingspage.h"
@@ -299,6 +300,8 @@ TextEditorSettings::TextEditorSettings(QObject *parent)
this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)));
connect(d->m_behaviorSettingsPage, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)),
this, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)));
+ connect(d->m_displaySettingsPage, SIGNAL(marginSettingsChanged(TextEditor::MarginSettings)),
+ this, SIGNAL(marginSettingsChanged(TextEditor::MarginSettings)));
connect(d->m_displaySettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)),
this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)));
@@ -339,6 +342,8 @@ void TextEditorSettings::initializeEditor(BaseTextEditorWidget *editor)
editor, SLOT(setStorageSettings(TextEditor::StorageSettings)));
connect(m_instance, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)),
editor, SLOT(setBehaviorSettings(TextEditor::BehaviorSettings)));
+ connect(m_instance, SIGNAL(marginSettingsChanged(const TextEditor::MarginSettings &)),
+ editor, SLOT(setMarginSettings(TextEditor::MarginSettings)));
connect(m_instance, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)),
editor, SLOT(setDisplaySettings(TextEditor::DisplaySettings)));
connect(m_instance, SIGNAL(completionSettingsChanged(TextEditor::CompletionSettings)),
@@ -357,6 +362,7 @@ void TextEditorSettings::initializeEditor(BaseTextEditorWidget *editor)
editor->setTypingSettings(typingSettings());
editor->setStorageSettings(storageSettings());
editor->setBehaviorSettings(behaviorSettings());
+ editor->setMarginSettings(marginSettings());
editor->setDisplaySettings(displaySettings());
editor->setCompletionSettings(completionSettings());
editor->setExtraEncodingSettings(extraEncodingSettings());
@@ -383,6 +389,11 @@ const BehaviorSettings &TextEditorSettings::behaviorSettings()
return d->m_behaviorSettingsPage->behaviorSettings();
}
+const MarginSettings &TextEditorSettings::marginSettings()
+{
+ return d->m_displaySettingsPage->marginSettings();
+}
+
const DisplaySettings &TextEditorSettings::displaySettings()
{
return d->m_displaySettingsPage->displaySettings();
diff --git a/src/plugins/texteditor/texteditorsettings.h b/src/plugins/texteditor/texteditorsettings.h
index 7758e35e47..7a7a779a16 100644
--- a/src/plugins/texteditor/texteditorsettings.h
+++ b/src/plugins/texteditor/texteditorsettings.h
@@ -49,6 +49,7 @@ class TabSettings;
class TypingSettings;
class StorageSettings;
class BehaviorSettings;
+class MarginSettings;
class DisplaySettings;
class CompletionSettings;
class HighlighterSettings;
@@ -78,6 +79,7 @@ public:
static const TypingSettings &typingSettings();
static const StorageSettings &storageSettings();
static const BehaviorSettings &behaviorSettings();
+ static const MarginSettings &marginSettings();
static const DisplaySettings &displaySettings();
static const CompletionSettings &completionSettings();
static const HighlighterSettings &highlighterSettings();
@@ -109,6 +111,7 @@ signals:
void typingSettingsChanged(const TextEditor::TypingSettings &);
void storageSettingsChanged(const TextEditor::StorageSettings &);
void behaviorSettingsChanged(const TextEditor::BehaviorSettings &);
+ void marginSettingsChanged(const TextEditor::MarginSettings &);
void displaySettingsChanged(const TextEditor::DisplaySettings &);
void completionSettingsChanged(const TextEditor::CompletionSettings &);
void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &);