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
completionsettingspage.cpp completionsettingspage.h
displaysettings.cpp displaysettings.h
displaysettingspage.cpp displaysettingspage.h displaysettingspage.ui
displaysettingspage.cpp displaysettingspage.h
extraencodingsettings.cpp extraencodingsettings.h
findincurrentfile.cpp findincurrentfile.h
findinfiles.cpp findinfiles.h

View File

@@ -29,10 +29,17 @@
#include "marginsettings.h"
#include "texteditorconstants.h"
#include "texteditorsettings.h"
#include "ui_displaysettingspage.h"
#include <coreplugin/icore.h>
#include <utils/layoutbuilder.h>
#include <QApplication>
#include <QCheckBox>
#include <QGroupBox>
#include <QRadioButton>
#include <QSpinBox>
namespace TextEditor {
class DisplaySettingsPagePrivate
@@ -60,7 +67,97 @@ public:
DisplaySettingsWidget(DisplaySettingsPagePrivate *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();
}
@@ -71,7 +168,32 @@ public:
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
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()
@@ -86,34 +208,34 @@ void DisplaySettingsWidget::apply()
void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
MarginSettings &marginSettings) const
{
displaySettings.m_displayLineNumbers = m_ui.displayLineNumbers->isChecked();
displaySettings.m_textWrapping = m_ui.enableTextWrapping->isChecked();
marginSettings.m_showMargin = m_ui.showWrapColumn->isChecked();
marginSettings.m_useIndenter = m_ui.useIndenter->isChecked();
marginSettings.m_marginColumn = m_ui.wrapColumn->value();
displaySettings.m_visualizeWhitespace = m_ui.visualizeWhitespace->isChecked();
displaySettings.m_visualizeIndent = m_ui.visualizeIndent->isChecked();
displaySettings.m_displayFoldingMarkers = m_ui.displayFoldingMarkers->isChecked();
displaySettings.m_highlightCurrentLine = m_ui.highlightCurrentLine->isChecked();
displaySettings.m_highlightBlocks = m_ui.highlightBlocks->isChecked();
displaySettings.m_animateMatchingParentheses = m_ui.animateMatchingParentheses->isChecked();
displaySettings.m_highlightMatchingParentheses = m_ui.highlightMatchingParentheses->isChecked();
displaySettings.m_markTextChanges = m_ui.markTextChanges->isChecked();
displaySettings.m_autoFoldFirstComment = m_ui.autoFoldFirstComment->isChecked();
displaySettings.m_centerCursorOnScroll = m_ui.centerOnScroll->isChecked();
displaySettings.m_openLinksInNextSplit = m_ui.openLinksInNextSplit->isChecked();
displaySettings.m_displayFileEncoding = m_ui.displayFileEncoding->isChecked();
displaySettings.m_displayFileLineEnding = m_ui.displayFileLineEnding->isChecked();
displaySettings.m_scrollBarHighlights = m_ui.scrollBarHighlights->isChecked();
displaySettings.m_animateNavigationWithinFile = m_ui.animateNavigationWithinFile->isChecked();
displaySettings.m_displayAnnotations = m_ui.displayAnnotations->isChecked();
if (m_ui.leftAligned->isChecked())
displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked();
displaySettings.m_textWrapping = enableTextWrapping->isChecked();
marginSettings.m_showMargin = showWrapColumn->isChecked();
marginSettings.m_useIndenter = useIndenter->isChecked();
marginSettings.m_marginColumn = wrapColumn->value();
displaySettings.m_visualizeWhitespace = visualizeWhitespace->isChecked();
displaySettings.m_visualizeIndent = visualizeIndent->isChecked();
displaySettings.m_displayFoldingMarkers = displayFoldingMarkers->isChecked();
displaySettings.m_highlightCurrentLine = highlightCurrentLine->isChecked();
displaySettings.m_highlightBlocks = highlightBlocks->isChecked();
displaySettings.m_animateMatchingParentheses = animateMatchingParentheses->isChecked();
displaySettings.m_highlightMatchingParentheses = highlightMatchingParentheses->isChecked();
displaySettings.m_markTextChanges = markTextChanges->isChecked();
displaySettings.m_autoFoldFirstComment = autoFoldFirstComment->isChecked();
displaySettings.m_centerCursorOnScroll = centerOnScroll->isChecked();
displaySettings.m_openLinksInNextSplit = openLinksInNextSplit->isChecked();
displaySettings.m_displayFileEncoding = displayFileEncoding->isChecked();
displaySettings.m_displayFileLineEnding = displayFileLineEnding->isChecked();
displaySettings.m_scrollBarHighlights = scrollBarHighlights->isChecked();
displaySettings.m_animateNavigationWithinFile = animateNavigationWithinFile->isChecked();
displaySettings.m_displayAnnotations = displayAnnotations->isChecked();
if (leftAligned->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
else if (m_ui.atMargin->isChecked())
else if (atMargin->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
else if (m_ui.rightAligned->isChecked())
else if (rightAligned->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
else if (m_ui.betweenLines->isChecked())
else if (betweenLines->isChecked())
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
}
@@ -121,32 +243,32 @@ void DisplaySettingsWidget::settingsToUI()
{
const DisplaySettings &displaySettings = m_data->m_displaySettings;
const MarginSettings &marginSettings = m_data->m_marginSettings;
m_ui.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
m_ui.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
m_ui.showWrapColumn->setChecked(marginSettings.m_showMargin);
m_ui.useIndenter->setChecked(marginSettings.m_useIndenter);
m_ui.wrapColumn->setValue(marginSettings.m_marginColumn);
m_ui.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
m_ui.visualizeIndent->setChecked(displaySettings.m_visualizeIndent);
m_ui.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
m_ui.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
m_ui.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
m_ui.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
m_ui.highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
m_ui.markTextChanges->setChecked(displaySettings.m_markTextChanges);
m_ui.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
m_ui.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
m_ui.openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
m_ui.displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
m_ui.displayFileLineEnding->setChecked(displaySettings.m_displayFileLineEnding);
m_ui.scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
m_ui.animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
m_ui.displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
enableTextWrapping->setChecked(displaySettings.m_textWrapping);
showWrapColumn->setChecked(marginSettings.m_showMargin);
useIndenter->setChecked(marginSettings.m_useIndenter);
wrapColumn->setValue(marginSettings.m_marginColumn);
visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
visualizeIndent->setChecked(displaySettings.m_visualizeIndent);
displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
markTextChanges->setChecked(displaySettings.m_markTextChanges);
autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
displayFileLineEnding->setChecked(displaySettings.m_displayFileLineEnding);
scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
switch (displaySettings.m_annotationAlignment) {
case AnnotationAlignment::NextToContent: m_ui.leftAligned->setChecked(true); break;
case AnnotationAlignment::NextToMargin: m_ui.atMargin->setChecked(true); break;
case AnnotationAlignment::RightSide: m_ui.rightAligned->setChecked(true); break;
case AnnotationAlignment::BetweenLines: m_ui.betweenLines->setChecked(true); break;
case AnnotationAlignment::NextToContent: leftAligned->setChecked(true); break;
case AnnotationAlignment::NextToMargin: atMargin->setChecked(true); break;
case AnnotationAlignment::RightSide: rightAligned->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",
"displaysettingspage.cpp",
"displaysettingspage.h",
"displaysettingspage.ui",
"extraencodingsettings.cpp",
"extraencodingsettings.h",
"findincurrentfile.cpp",