TextEditor: inline displaysettingspage.ui

Change-Id: Ifb57a37d7ecc5a7b30ef495c6beec762a2df00be
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2022-07-26 17:01:05 +02:00
parent 58c5b126d3
commit 0db66ae72c
4 changed files with 176 additions and 357 deletions

View File

@@ -51,7 +51,7 @@ add_qtc_plugin(TextEditor
completionsettings.cpp completionsettings.h completionsettings.cpp completionsettings.h
completionsettingspage.cpp completionsettingspage.h completionsettingspage.cpp completionsettingspage.h
displaysettings.cpp displaysettings.h displaysettings.cpp displaysettings.h
displaysettingspage.cpp displaysettingspage.h displaysettingspage.ui displaysettingspage.cpp displaysettingspage.h
extraencodingsettings.cpp extraencodingsettings.h extraencodingsettings.cpp extraencodingsettings.h
findincurrentfile.cpp findincurrentfile.h findincurrentfile.cpp findincurrentfile.h
findinfiles.cpp findinfiles.h findinfiles.cpp findinfiles.h

View File

@@ -29,10 +29,17 @@
#include "marginsettings.h" #include "marginsettings.h"
#include "texteditorconstants.h" #include "texteditorconstants.h"
#include "texteditorsettings.h" #include "texteditorsettings.h"
#include "ui_displaysettingspage.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/layoutbuilder.h>
#include <QApplication>
#include <QCheckBox>
#include <QGroupBox>
#include <QRadioButton>
#include <QSpinBox>
namespace TextEditor { namespace TextEditor {
class DisplaySettingsPagePrivate class DisplaySettingsPagePrivate
@@ -60,7 +67,97 @@ public:
DisplaySettingsWidget(DisplaySettingsPagePrivate *data) DisplaySettingsWidget(DisplaySettingsPagePrivate *data)
: m_data(data) : m_data(data)
{ {
m_ui.setupUi(this); resize(452, 458);
enableTextWrapping = new QCheckBox(tr("Enable text &wrapping"));
showWrapColumn = new QCheckBox(tr("Display right &margin at column:"));
wrapColumn = new QSpinBox;
wrapColumn->setMaximum(999);
connect(showWrapColumn, &QAbstractButton::toggled, wrapColumn, &QWidget::setEnabled);
useIndenter = new QCheckBox(tr("Use context-specific margin"));
useIndenter->setToolTip(tr("If available, use a different margin. "
"For example, the ColumnLimit from the ClangFormat plugin."));
animateMatchingParentheses = new QCheckBox(tr("&Animate matching parentheses"));
scrollBarHighlights = new QCheckBox(tr("Highlight search results on the scrollbar"));
displayLineNumbers = new QCheckBox(tr("Display line &numbers"));
animateNavigationWithinFile = new QCheckBox(tr("Animate navigation within file"));
highlightCurrentLine = new QCheckBox(tr("Highlight current &line"));
highlightBlocks = new QCheckBox(tr("Highlight &blocks"));
markTextChanges = new QCheckBox(tr("Mark &text changes"));
autoFoldFirstComment = new QCheckBox(tr("Auto-fold first &comment"));
displayFoldingMarkers = new QCheckBox(tr("Display &folding markers"));
centerOnScroll = new QCheckBox(tr("Center &cursor on scroll"));
visualizeIndent = new QCheckBox(tr("Visualize indent"));
displayFileLineEnding = new QCheckBox(tr("Display file line ending"));
displayFileEncoding = new QCheckBox(tr("Display file encoding"));
openLinksInNextSplit = new QCheckBox(tr("Always open links in another split"));
highlightMatchingParentheses = new QCheckBox(tr("&Highlight matching parentheses"));
visualizeWhitespace = new QCheckBox(tr("&Visualize whitespace"));
visualizeWhitespace->setToolTip(tr("Shows tabs and spaces."));
leftAligned = new QRadioButton(tr("Next to editor content"));
atMargin = new QRadioButton(tr("Next to right margin"));
rightAligned = new QRadioButton(tr("Aligned at right side"));
rightAligned->setChecked(true);
betweenLines = new QRadioButton(tr("Between lines"));
displayAnnotations = new QGroupBox(tr("Line annotations")),
displayAnnotations->setCheckable(true);
using namespace Utils::Layouting;
Column {
leftAligned,
atMargin,
rightAligned,
betweenLines,
}.attachTo(displayAnnotations);
Column {
Group {
title(tr("Text Wrapping")),
Column {
enableTextWrapping,
Row { showWrapColumn, wrapColumn, useIndenter, st }
}
},
Group {
title(tr("Display")),
Row {
Column {
displayLineNumbers,
displayFoldingMarkers,
markTextChanges,
visualizeWhitespace,
centerOnScroll,
autoFoldFirstComment,
scrollBarHighlights,
animateNavigationWithinFile,
},
Column {
highlightCurrentLine,
highlightBlocks,
animateMatchingParentheses,
visualizeIndent,
highlightMatchingParentheses,
openLinksInNextSplit,
displayFileEncoding,
displayFileLineEnding,
st
}
}
},
displayAnnotations,
st
}.attachTo(this);
settingsToUI(); settingsToUI();
} }
@@ -71,7 +168,32 @@ public:
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings); void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
DisplaySettingsPagePrivate *m_data = nullptr; DisplaySettingsPagePrivate *m_data = nullptr;
Internal::Ui::DisplaySettingsPage m_ui;
QCheckBox *enableTextWrapping;
QCheckBox *showWrapColumn;
QSpinBox *wrapColumn;
QCheckBox *useIndenter;
QCheckBox *animateMatchingParentheses;
QCheckBox *scrollBarHighlights;
QCheckBox *displayLineNumbers;
QCheckBox *animateNavigationWithinFile;
QCheckBox *highlightCurrentLine;
QCheckBox *highlightBlocks;
QCheckBox *markTextChanges;
QCheckBox *autoFoldFirstComment;
QCheckBox *displayFoldingMarkers;
QCheckBox *centerOnScroll;
QCheckBox *visualizeIndent;
QCheckBox *displayFileLineEnding;
QCheckBox *displayFileEncoding;
QCheckBox *openLinksInNextSplit;
QCheckBox *highlightMatchingParentheses;
QCheckBox *visualizeWhitespace;
QGroupBox *displayAnnotations;
QRadioButton *leftAligned;
QRadioButton *atMargin;
QRadioButton *rightAligned;
QRadioButton *betweenLines;
}; };
void DisplaySettingsWidget::apply() void DisplaySettingsWidget::apply()
@@ -86,34 +208,34 @@ void DisplaySettingsWidget::apply()
void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings, void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
MarginSettings &marginSettings) const MarginSettings &marginSettings) const
{ {
displaySettings.m_displayLineNumbers = m_ui.displayLineNumbers->isChecked(); displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked();
displaySettings.m_textWrapping = m_ui.enableTextWrapping->isChecked(); displaySettings.m_textWrapping = enableTextWrapping->isChecked();
marginSettings.m_showMargin = m_ui.showWrapColumn->isChecked(); marginSettings.m_showMargin = showWrapColumn->isChecked();
marginSettings.m_useIndenter = m_ui.useIndenter->isChecked(); marginSettings.m_useIndenter = useIndenter->isChecked();
marginSettings.m_marginColumn = m_ui.wrapColumn->value(); marginSettings.m_marginColumn = wrapColumn->value();
displaySettings.m_visualizeWhitespace = m_ui.visualizeWhitespace->isChecked(); displaySettings.m_visualizeWhitespace = visualizeWhitespace->isChecked();
displaySettings.m_visualizeIndent = m_ui.visualizeIndent->isChecked(); displaySettings.m_visualizeIndent = visualizeIndent->isChecked();
displaySettings.m_displayFoldingMarkers = m_ui.displayFoldingMarkers->isChecked(); displaySettings.m_displayFoldingMarkers = displayFoldingMarkers->isChecked();
displaySettings.m_highlightCurrentLine = m_ui.highlightCurrentLine->isChecked(); displaySettings.m_highlightCurrentLine = highlightCurrentLine->isChecked();
displaySettings.m_highlightBlocks = m_ui.highlightBlocks->isChecked(); displaySettings.m_highlightBlocks = highlightBlocks->isChecked();
displaySettings.m_animateMatchingParentheses = m_ui.animateMatchingParentheses->isChecked(); displaySettings.m_animateMatchingParentheses = animateMatchingParentheses->isChecked();
displaySettings.m_highlightMatchingParentheses = m_ui.highlightMatchingParentheses->isChecked(); displaySettings.m_highlightMatchingParentheses = highlightMatchingParentheses->isChecked();
displaySettings.m_markTextChanges = m_ui.markTextChanges->isChecked(); displaySettings.m_markTextChanges = markTextChanges->isChecked();
displaySettings.m_autoFoldFirstComment = m_ui.autoFoldFirstComment->isChecked(); displaySettings.m_autoFoldFirstComment = autoFoldFirstComment->isChecked();
displaySettings.m_centerCursorOnScroll = m_ui.centerOnScroll->isChecked(); displaySettings.m_centerCursorOnScroll = centerOnScroll->isChecked();
displaySettings.m_openLinksInNextSplit = m_ui.openLinksInNextSplit->isChecked(); displaySettings.m_openLinksInNextSplit = openLinksInNextSplit->isChecked();
displaySettings.m_displayFileEncoding = m_ui.displayFileEncoding->isChecked(); displaySettings.m_displayFileEncoding = displayFileEncoding->isChecked();
displaySettings.m_displayFileLineEnding = m_ui.displayFileLineEnding->isChecked(); displaySettings.m_displayFileLineEnding = displayFileLineEnding->isChecked();
displaySettings.m_scrollBarHighlights = m_ui.scrollBarHighlights->isChecked(); displaySettings.m_scrollBarHighlights = scrollBarHighlights->isChecked();
displaySettings.m_animateNavigationWithinFile = m_ui.animateNavigationWithinFile->isChecked(); displaySettings.m_animateNavigationWithinFile = animateNavigationWithinFile->isChecked();
displaySettings.m_displayAnnotations = m_ui.displayAnnotations->isChecked(); displaySettings.m_displayAnnotations = displayAnnotations->isChecked();
if (m_ui.leftAligned->isChecked()) if (leftAligned->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent; displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
else if (m_ui.atMargin->isChecked()) else if (atMargin->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin; displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
else if (m_ui.rightAligned->isChecked()) else if (rightAligned->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide; displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
else if (m_ui.betweenLines->isChecked()) else if (betweenLines->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines; displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
} }
@@ -121,32 +243,32 @@ void DisplaySettingsWidget::settingsToUI()
{ {
const DisplaySettings &displaySettings = m_data->m_displaySettings; const DisplaySettings &displaySettings = m_data->m_displaySettings;
const MarginSettings &marginSettings = m_data->m_marginSettings; const MarginSettings &marginSettings = m_data->m_marginSettings;
m_ui.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers); displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
m_ui.enableTextWrapping->setChecked(displaySettings.m_textWrapping); enableTextWrapping->setChecked(displaySettings.m_textWrapping);
m_ui.showWrapColumn->setChecked(marginSettings.m_showMargin); showWrapColumn->setChecked(marginSettings.m_showMargin);
m_ui.useIndenter->setChecked(marginSettings.m_useIndenter); useIndenter->setChecked(marginSettings.m_useIndenter);
m_ui.wrapColumn->setValue(marginSettings.m_marginColumn); wrapColumn->setValue(marginSettings.m_marginColumn);
m_ui.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace); visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
m_ui.visualizeIndent->setChecked(displaySettings.m_visualizeIndent); visualizeIndent->setChecked(displaySettings.m_visualizeIndent);
m_ui.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers); displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
m_ui.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine); highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
m_ui.highlightBlocks->setChecked(displaySettings.m_highlightBlocks); highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
m_ui.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses); animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
m_ui.highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses); highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
m_ui.markTextChanges->setChecked(displaySettings.m_markTextChanges); markTextChanges->setChecked(displaySettings.m_markTextChanges);
m_ui.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment); autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
m_ui.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll); centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
m_ui.openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit); openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
m_ui.displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding); displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
m_ui.displayFileLineEnding->setChecked(displaySettings.m_displayFileLineEnding); displayFileLineEnding->setChecked(displaySettings.m_displayFileLineEnding);
m_ui.scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights); scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
m_ui.animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile); animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
m_ui.displayAnnotations->setChecked(displaySettings.m_displayAnnotations); displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
switch (displaySettings.m_annotationAlignment) { switch (displaySettings.m_annotationAlignment) {
case AnnotationAlignment::NextToContent: m_ui.leftAligned->setChecked(true); break; case AnnotationAlignment::NextToContent: leftAligned->setChecked(true); break;
case AnnotationAlignment::NextToMargin: m_ui.atMargin->setChecked(true); break; case AnnotationAlignment::NextToMargin: atMargin->setChecked(true); break;
case AnnotationAlignment::RightSide: m_ui.rightAligned->setChecked(true); break; case AnnotationAlignment::RightSide: rightAligned->setChecked(true); break;
case AnnotationAlignment::BetweenLines: m_ui.betweenLines->setChecked(true); break; case AnnotationAlignment::BetweenLines: betweenLines->setChecked(true); break;
} }
} }

View File

@@ -1,302 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TextEditor::Internal::DisplaySettingsPage</class>
<widget class="QWidget" name="TextEditor::Internal::DisplaySettingsPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>452</width>
<height>458</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBoxText">
<property name="title">
<string>Text Wrapping</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="enableTextWrapping">
<property name="text">
<string>Enable text &amp;wrapping</string>
</property>
</widget>
</item>
<item row="1" column="0">
<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>
<widget class="QCheckBox" name="useIndenter">
<property name="toolTip">
<string>If available, use a different margin. For example, the ColumnLimit from the ClangFormat plugin.</string>
</property>
<property name="text">
<string>Use context-specific margin</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBoxDisplay">
<property name="title">
<string>Display</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="1">
<widget class="QCheckBox" name="animateMatchingParentheses">
<property name="text">
<string>&amp;Animate matching parentheses</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QCheckBox" name="scrollBarHighlights">
<property name="text">
<string>Highlight search results on the scrollbar</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="displayLineNumbers">
<property name="text">
<string>Display line &amp;numbers</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QCheckBox" name="animateNavigationWithinFile">
<property name="text">
<string>Animate navigation within file</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="highlightCurrentLine">
<property name="text">
<string>Highlight current &amp;line</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="highlightBlocks">
<property name="text">
<string>Highlight &amp;blocks</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="markTextChanges">
<property name="text">
<string>Mark &amp;text changes</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="autoFoldFirstComment">
<property name="text">
<string>Auto-fold first &amp;comment</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="displayFoldingMarkers">
<property name="text">
<string>Display &amp;folding markers</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="centerOnScroll">
<property name="text">
<string>Center &amp;cursor on scroll</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="visualizeIndent">
<property name="text">
<string>Visualize indent</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QCheckBox" name="displayFileLineEnding">
<property name="text">
<string>Display file line ending</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QCheckBox" name="displayFileEncoding">
<property name="text">
<string>Display file encoding</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QCheckBox" name="openLinksInNextSplit">
<property name="text">
<string>Always open links in another split</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="highlightMatchingParentheses">
<property name="text">
<string>&amp;Highlight matching parentheses</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="visualizeWhitespace">
<property name="toolTip">
<string>Shows tabs and spaces.</string>
</property>
<property name="text">
<string>&amp;Visualize whitespace</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="displayAnnotations">
<property name="title">
<string>Line annotations</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="leftAligned">
<property name="text">
<string>Next to editor content</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="atMargin">
<property name="text">
<string>Next to right margin</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rightAligned">
<property name="text">
<string>Aligned at right side</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="betweenLines">
<property name="text">
<string>Between lines</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>enableTextWrapping</tabstop>
<tabstop>showWrapColumn</tabstop>
<tabstop>wrapColumn</tabstop>
<tabstop>useIndenter</tabstop>
<tabstop>displayLineNumbers</tabstop>
<tabstop>displayFoldingMarkers</tabstop>
<tabstop>markTextChanges</tabstop>
<tabstop>visualizeWhitespace</tabstop>
<tabstop>centerOnScroll</tabstop>
<tabstop>autoFoldFirstComment</tabstop>
<tabstop>scrollBarHighlights</tabstop>
<tabstop>animateNavigationWithinFile</tabstop>
<tabstop>highlightCurrentLine</tabstop>
<tabstop>highlightBlocks</tabstop>
<tabstop>animateMatchingParentheses</tabstop>
<tabstop>visualizeIndent</tabstop>
<tabstop>highlightMatchingParentheses</tabstop>
<tabstop>openLinksInNextSplit</tabstop>
<tabstop>displayFileEncoding</tabstop>
<tabstop>displayFileLineEnding</tabstop>
<tabstop>displayAnnotations</tabstop>
<tabstop>leftAligned</tabstop>
<tabstop>atMargin</tabstop>
<tabstop>rightAligned</tabstop>
<tabstop>betweenLines</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>showWrapColumn</sender>
<signal>toggled(bool)</signal>
<receiver>wrapColumn</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>238</x>
<y>84</y>
</hint>
<hint type="destinationlabel">
<x>299</x>
<y>84</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -61,7 +61,6 @@ Project {
"displaysettings.h", "displaysettings.h",
"displaysettingspage.cpp", "displaysettingspage.cpp",
"displaysettingspage.h", "displaysettingspage.h",
"displaysettingspage.ui",
"extraencodingsettings.cpp", "extraencodingsettings.cpp",
"extraencodingsettings.h", "extraencodingsettings.h",
"findincurrentfile.cpp", "findincurrentfile.cpp",