forked from qt-creator/qt-creator
TextEditor: Move DisplaySettings closer to new code layout
Change-Id: Ibf095a52f6c689a9f36caf6183e6737bae4e68bf Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -33,58 +33,49 @@
|
|||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <QPointer>
|
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
struct DisplaySettingsPage::DisplaySettingsPagePrivate
|
class DisplaySettingsPagePrivate
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
DisplaySettingsPagePrivate();
|
DisplaySettingsPagePrivate();
|
||||||
|
|
||||||
QPointer<QWidget> m_widget;
|
|
||||||
Internal::Ui::DisplaySettingsPage *m_page = nullptr;
|
|
||||||
DisplaySettings m_displaySettings;
|
DisplaySettings m_displaySettings;
|
||||||
MarginSettings m_marginSettings;
|
MarginSettings m_marginSettings;
|
||||||
QString m_settingsPrefix;
|
QString m_settingsPrefix;
|
||||||
};
|
};
|
||||||
|
|
||||||
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
||||||
{
|
{
|
||||||
m_settingsPrefix = QLatin1String("text");
|
m_settingsPrefix = QLatin1String("text");
|
||||||
m_displaySettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
m_displaySettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||||
m_marginSettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
m_marginSettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplaySettingsPage::DisplaySettingsPage()
|
class DisplaySettingsWidget final : public Core::IOptionsPageWidget
|
||||||
: d(new DisplaySettingsPagePrivate)
|
|
||||||
{
|
{
|
||||||
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
Q_DECLARE_TR_FUNCTIONS(TextEditor::DisplaySettingsPage)
|
||||||
setDisplayName(tr("Display"));
|
|
||||||
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
|
||||||
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
|
||||||
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
|
||||||
}
|
|
||||||
|
|
||||||
DisplaySettingsPage::~DisplaySettingsPage()
|
public:
|
||||||
{
|
DisplaySettingsWidget(DisplaySettingsPagePrivate *data)
|
||||||
delete d;
|
: m_data(data)
|
||||||
}
|
{
|
||||||
|
m_ui.setupUi(this);
|
||||||
QWidget *DisplaySettingsPage::widget()
|
|
||||||
{
|
|
||||||
if (!d->m_widget) {
|
|
||||||
d->m_widget = new QWidget;
|
|
||||||
d->m_page = new Internal::Ui::DisplaySettingsPage;
|
|
||||||
d->m_page->setupUi(d->m_widget);
|
|
||||||
settingsToUI();
|
settingsToUI();
|
||||||
}
|
}
|
||||||
return d->m_widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DisplaySettingsPage::apply()
|
void apply() final;
|
||||||
|
|
||||||
|
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
||||||
|
void settingsToUI();
|
||||||
|
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
||||||
|
|
||||||
|
DisplaySettingsPagePrivate *m_data = nullptr;
|
||||||
|
Internal::Ui::DisplaySettingsPage m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
void DisplaySettingsWidget::apply()
|
||||||
{
|
{
|
||||||
if (!d->m_page) // page was never shown
|
|
||||||
return;
|
|
||||||
DisplaySettings newDisplaySettings;
|
DisplaySettings newDisplaySettings;
|
||||||
MarginSettings newMarginSettings;
|
MarginSettings newMarginSettings;
|
||||||
|
|
||||||
@@ -92,73 +83,64 @@ void DisplaySettingsPage::apply()
|
|||||||
setDisplaySettings(newDisplaySettings, newMarginSettings);
|
setDisplaySettings(newDisplaySettings, newMarginSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::finish()
|
void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
|
||||||
{
|
|
||||||
delete d->m_widget;
|
|
||||||
if (!d->m_page) // page was never shown
|
|
||||||
return;
|
|
||||||
delete d->m_page;
|
|
||||||
d->m_page = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings,
|
|
||||||
MarginSettings &marginSettings) const
|
MarginSettings &marginSettings) const
|
||||||
{
|
{
|
||||||
displaySettings.m_displayLineNumbers = d->m_page->displayLineNumbers->isChecked();
|
displaySettings.m_displayLineNumbers = m_ui.displayLineNumbers->isChecked();
|
||||||
displaySettings.m_textWrapping = d->m_page->enableTextWrapping->isChecked();
|
displaySettings.m_textWrapping = m_ui.enableTextWrapping->isChecked();
|
||||||
marginSettings.m_showMargin = d->m_page->showWrapColumn->isChecked();
|
marginSettings.m_showMargin = m_ui.showWrapColumn->isChecked();
|
||||||
marginSettings.m_marginColumn = d->m_page->wrapColumn->value();
|
marginSettings.m_marginColumn = m_ui.wrapColumn->value();
|
||||||
displaySettings.m_visualizeWhitespace = d->m_page->visualizeWhitespace->isChecked();
|
displaySettings.m_visualizeWhitespace = m_ui.visualizeWhitespace->isChecked();
|
||||||
displaySettings.m_displayFoldingMarkers = d->m_page->displayFoldingMarkers->isChecked();
|
displaySettings.m_displayFoldingMarkers = m_ui.displayFoldingMarkers->isChecked();
|
||||||
displaySettings.m_highlightCurrentLine = d->m_page->highlightCurrentLine->isChecked();
|
displaySettings.m_highlightCurrentLine = m_ui.highlightCurrentLine->isChecked();
|
||||||
displaySettings.m_highlightBlocks = d->m_page->highlightBlocks->isChecked();
|
displaySettings.m_highlightBlocks = m_ui.highlightBlocks->isChecked();
|
||||||
displaySettings.m_animateMatchingParentheses = d->m_page->animateMatchingParentheses->isChecked();
|
displaySettings.m_animateMatchingParentheses = m_ui.animateMatchingParentheses->isChecked();
|
||||||
displaySettings.m_highlightMatchingParentheses = d->m_page->highlightMatchingParentheses->isChecked();
|
displaySettings.m_highlightMatchingParentheses = m_ui.highlightMatchingParentheses->isChecked();
|
||||||
displaySettings.m_markTextChanges = d->m_page->markTextChanges->isChecked();
|
displaySettings.m_markTextChanges = m_ui.markTextChanges->isChecked();
|
||||||
displaySettings.m_autoFoldFirstComment = d->m_page->autoFoldFirstComment->isChecked();
|
displaySettings.m_autoFoldFirstComment = m_ui.autoFoldFirstComment->isChecked();
|
||||||
displaySettings.m_centerCursorOnScroll = d->m_page->centerOnScroll->isChecked();
|
displaySettings.m_centerCursorOnScroll = m_ui.centerOnScroll->isChecked();
|
||||||
displaySettings.m_openLinksInNextSplit = d->m_page->openLinksInNextSplit->isChecked();
|
displaySettings.m_openLinksInNextSplit = m_ui.openLinksInNextSplit->isChecked();
|
||||||
displaySettings.m_displayFileEncoding = d->m_page->displayFileEncoding->isChecked();
|
displaySettings.m_displayFileEncoding = m_ui.displayFileEncoding->isChecked();
|
||||||
displaySettings.m_scrollBarHighlights = d->m_page->scrollBarHighlights->isChecked();
|
displaySettings.m_scrollBarHighlights = m_ui.scrollBarHighlights->isChecked();
|
||||||
displaySettings.m_animateNavigationWithinFile = d->m_page->animateNavigationWithinFile->isChecked();
|
displaySettings.m_animateNavigationWithinFile = m_ui.animateNavigationWithinFile->isChecked();
|
||||||
displaySettings.m_displayAnnotations = d->m_page->displayAnnotations->isChecked();
|
displaySettings.m_displayAnnotations = m_ui.displayAnnotations->isChecked();
|
||||||
if (d->m_page->leftAligned->isChecked())
|
if (m_ui.leftAligned->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
|
||||||
else if (d->m_page->atMargin->isChecked())
|
else if (m_ui.atMargin->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
|
||||||
else if (d->m_page->rightAligned->isChecked())
|
else if (m_ui.rightAligned->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
|
||||||
else if (d->m_page->betweenLines->isChecked())
|
else if (m_ui.betweenLines->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::settingsToUI()
|
void DisplaySettingsWidget::settingsToUI()
|
||||||
{
|
{
|
||||||
const DisplaySettings &displaySettings = d->m_displaySettings;
|
const DisplaySettings &displaySettings = m_data->m_displaySettings;
|
||||||
const MarginSettings &marginSettings = d->m_marginSettings;
|
const MarginSettings &marginSettings = m_data->m_marginSettings;
|
||||||
d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
m_ui.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||||
d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
m_ui.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||||
d->m_page->showWrapColumn->setChecked(marginSettings.m_showMargin);
|
m_ui.showWrapColumn->setChecked(marginSettings.m_showMargin);
|
||||||
d->m_page->wrapColumn->setValue(marginSettings.m_marginColumn);
|
m_ui.wrapColumn->setValue(marginSettings.m_marginColumn);
|
||||||
d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
m_ui.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||||
d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
m_ui.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||||
d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
m_ui.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||||
d->m_page->highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
m_ui.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||||
d->m_page->animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
m_ui.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||||
d->m_page->highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
m_ui.highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
||||||
d->m_page->markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
m_ui.markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||||
d->m_page->autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
m_ui.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||||
d->m_page->centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
m_ui.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||||
d->m_page->openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
m_ui.openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
||||||
d->m_page->displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
m_ui.displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
||||||
d->m_page->scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
m_ui.scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
||||||
d->m_page->animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
m_ui.animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
||||||
d->m_page->displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
m_ui.displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
||||||
switch (displaySettings.m_annotationAlignment) {
|
switch (displaySettings.m_annotationAlignment) {
|
||||||
case AnnotationAlignment::NextToContent: d->m_page->leftAligned->setChecked(true); break;
|
case AnnotationAlignment::NextToContent: m_ui.leftAligned->setChecked(true); break;
|
||||||
case AnnotationAlignment::NextToMargin: d->m_page->atMargin->setChecked(true); break;
|
case AnnotationAlignment::NextToMargin: m_ui.atMargin->setChecked(true); break;
|
||||||
case AnnotationAlignment::RightSide: d->m_page->rightAligned->setChecked(true); break;
|
case AnnotationAlignment::RightSide: m_ui.rightAligned->setChecked(true); break;
|
||||||
case AnnotationAlignment::BetweenLines: d->m_page->betweenLines->setChecked(true); break;
|
case AnnotationAlignment::BetweenLines: m_ui.betweenLines->setChecked(true); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,22 +154,38 @@ const MarginSettings &DisplaySettingsPage::marginSettings() const
|
|||||||
return d->m_marginSettings;
|
return d->m_marginSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
||||||
const MarginSettings &newMarginSettings)
|
const MarginSettings &newMarginSettings)
|
||||||
{
|
{
|
||||||
if (newDisplaySettings != d->m_displaySettings) {
|
if (newDisplaySettings != m_data->m_displaySettings) {
|
||||||
d->m_displaySettings = newDisplaySettings;
|
m_data->m_displaySettings = newDisplaySettings;
|
||||||
d->m_displaySettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
m_data->m_displaySettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||||
|
|
||||||
emit TextEditorSettings::instance()->displaySettingsChanged(newDisplaySettings);
|
emit TextEditorSettings::instance()->displaySettingsChanged(newDisplaySettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newMarginSettings != d->m_marginSettings) {
|
if (newMarginSettings != m_data->m_marginSettings) {
|
||||||
d->m_marginSettings = newMarginSettings;
|
m_data->m_marginSettings = newMarginSettings;
|
||||||
d->m_marginSettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
m_data->m_marginSettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||||
|
|
||||||
emit TextEditorSettings::instance()->marginSettingsChanged(newMarginSettings);
|
emit TextEditorSettings::instance()->marginSettingsChanged(newMarginSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DisplaySettingsPage::DisplaySettingsPage()
|
||||||
|
: d(new DisplaySettingsPagePrivate)
|
||||||
|
{
|
||||||
|
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
||||||
|
setDisplayName(DisplaySettingsWidget::tr("Display"));
|
||||||
|
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
||||||
|
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
||||||
|
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
||||||
|
setWidgetCreator([this] { return new DisplaySettingsWidget(d); });
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplaySettingsPage::~DisplaySettingsPage()
|
||||||
|
{
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
} // TextEditor
|
} // TextEditor
|
||||||
|
@@ -25,37 +25,24 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "texteditor_global.h"
|
|
||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
class DisplaySettings;
|
class DisplaySettings;
|
||||||
class MarginSettings;
|
class MarginSettings;
|
||||||
|
class DisplaySettingsPagePrivate;
|
||||||
|
|
||||||
class DisplaySettingsPage : public Core::IOptionsPage
|
class DisplaySettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DisplaySettingsPage();
|
DisplaySettingsPage();
|
||||||
~DisplaySettingsPage() override;
|
~DisplaySettingsPage() override;
|
||||||
|
|
||||||
// IOptionsPage
|
|
||||||
QWidget *widget() override;
|
|
||||||
void apply() override;
|
|
||||||
void finish() override;
|
|
||||||
|
|
||||||
const DisplaySettings &displaySettings() const;
|
const DisplaySettings &displaySettings() const;
|
||||||
const MarginSettings &marginSettings() const;
|
const MarginSettings &marginSettings() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
|
||||||
void settingsToUI();
|
|
||||||
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
|
||||||
|
|
||||||
struct DisplaySettingsPagePrivate;
|
|
||||||
DisplaySettingsPagePrivate *d;
|
DisplaySettingsPagePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user