forked from qt-creator/qt-creator
Editor: simplify font to display options page connection
Operating on saved settings is less error prone and easier to maintain. Change-Id: I92e3a6b52296cddc302ba2e4410edfd243b8ad32 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
#include "displaysettingspage.h"
|
#include "displaysettingspage.h"
|
||||||
|
|
||||||
#include "displaysettings.h"
|
#include "displaysettings.h"
|
||||||
|
#include "fontsettings.h"
|
||||||
#include "marginsettings.h"
|
#include "marginsettings.h"
|
||||||
#include "texteditorconstants.h"
|
#include "texteditorconstants.h"
|
||||||
#include "texteditorsettings.h"
|
#include "texteditorsettings.h"
|
||||||
@@ -50,23 +51,18 @@ public:
|
|||||||
enableTextWrappingHintLabel = new QLabel(Tr::tr("<i>Set <a href=\"font zoom\">font line spacing</a> "
|
enableTextWrappingHintLabel = new QLabel(Tr::tr("<i>Set <a href=\"font zoom\">font line spacing</a> "
|
||||||
"to 100% to enable text wrapping option.</i>"));
|
"to 100% to enable text wrapping option.</i>"));
|
||||||
|
|
||||||
fontSettingsPageLineSpacing = fontSettingsPageLineSpacingLink();
|
auto updateWrapping = [this] {
|
||||||
|
const bool normalLineSpacing = TextEditorSettings::fontSettings().relativeLineSpacing() == 100;
|
||||||
if (fontSettingsPageLineSpacing) {
|
if (!normalLineSpacing)
|
||||||
connect(fontSettingsPageLineSpacing, &QSpinBox::valueChanged,
|
|
||||||
this, [this](const int &value) {
|
|
||||||
if (value != 100)
|
|
||||||
enableTextWrapping->setChecked(false);
|
enableTextWrapping->setChecked(false);
|
||||||
enableTextWrapping->setEnabled(value == 100);
|
enableTextWrapping->setEnabled(normalLineSpacing);
|
||||||
enableTextWrappingHintLabel->setVisible(value != 100);
|
enableTextWrappingHintLabel->setVisible(!normalLineSpacing);
|
||||||
});
|
};
|
||||||
|
|
||||||
if (fontSettingsPageLineSpacing->value() != 100)
|
updateWrapping();
|
||||||
enableTextWrapping->setChecked(false);
|
|
||||||
|
|
||||||
enableTextWrapping->setEnabled(fontSettingsPageLineSpacing->value() == 100);
|
connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged,
|
||||||
enableTextWrappingHintLabel->setVisible(fontSettingsPageLineSpacing->value() != 100);
|
this, updateWrapping);
|
||||||
}
|
|
||||||
|
|
||||||
connect(enableTextWrappingHintLabel, &QLabel::linkActivated, [] {
|
connect(enableTextWrappingHintLabel, &QLabel::linkActivated, [] {
|
||||||
Core::ICore::showOptionsDialog(Constants::TEXT_EDITOR_FONT_SETTINGS); } );
|
Core::ICore::showOptionsDialog(Constants::TEXT_EDITOR_FONT_SETTINGS); } );
|
||||||
@@ -177,8 +173,6 @@ public:
|
|||||||
void settingsToUI();
|
void settingsToUI();
|
||||||
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
||||||
|
|
||||||
QSpinBox *fontSettingsPageLineSpacingLink();
|
|
||||||
|
|
||||||
DisplaySettingsPagePrivate *m_data = nullptr;
|
DisplaySettingsPagePrivate *m_data = nullptr;
|
||||||
|
|
||||||
QCheckBox *enableTextWrapping;
|
QCheckBox *enableTextWrapping;
|
||||||
@@ -208,8 +202,6 @@ public:
|
|||||||
QRadioButton *atMargin;
|
QRadioButton *atMargin;
|
||||||
QRadioButton *rightAligned;
|
QRadioButton *rightAligned;
|
||||||
QRadioButton *betweenLines;
|
QRadioButton *betweenLines;
|
||||||
|
|
||||||
QSpinBox *fontSettingsPageLineSpacing = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void DisplaySettingsWidget::apply()
|
void DisplaySettingsWidget::apply()
|
||||||
@@ -226,10 +218,8 @@ void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
|
|||||||
{
|
{
|
||||||
displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked();
|
displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked();
|
||||||
displaySettings.m_textWrapping = enableTextWrapping->isChecked();
|
displaySettings.m_textWrapping = enableTextWrapping->isChecked();
|
||||||
if (fontSettingsPageLineSpacing) {
|
if (TextEditorSettings::fontSettings().relativeLineSpacing() != 100)
|
||||||
if (fontSettingsPageLineSpacing->value() != 100)
|
|
||||||
displaySettings.m_textWrapping = false;
|
displaySettings.m_textWrapping = false;
|
||||||
}
|
|
||||||
marginSettings.m_showMargin = showWrapColumn->isChecked();
|
marginSettings.m_showMargin = showWrapColumn->isChecked();
|
||||||
marginSettings.m_tintMarginArea = tintMarginArea->isChecked();
|
marginSettings.m_tintMarginArea = tintMarginArea->isChecked();
|
||||||
marginSettings.m_useIndenter = useIndenter->isChecked();
|
marginSettings.m_useIndenter = useIndenter->isChecked();
|
||||||
@@ -322,23 +312,6 @@ void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QSpinBox *DisplaySettingsWidget::fontSettingsPageLineSpacingLink()
|
|
||||||
{
|
|
||||||
for (const auto &page : Core::IOptionsPage::allOptionsPages()) {
|
|
||||||
QWidget *widget = page->widget();
|
|
||||||
|
|
||||||
if (!widget)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
for (QSpinBox *spinBox : widget->findChildren<QSpinBox *>()) {
|
|
||||||
if (spinBox->objectName() == QLatin1String("FontSettingsPage.LineSpacingSpinBox"))
|
|
||||||
return spinBox;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
DisplaySettingsPage::DisplaySettingsPage()
|
DisplaySettingsPage::DisplaySettingsPage()
|
||||||
: d(new DisplaySettingsPagePrivate)
|
: d(new DisplaySettingsPagePrivate)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,7 +119,6 @@ public:
|
|||||||
m_zoomSpinBox->setValue(m_value.fontZoom());
|
m_zoomSpinBox->setValue(m_value.fontZoom());
|
||||||
|
|
||||||
m_lineSpacingSpinBox = new QSpinBox;
|
m_lineSpacingSpinBox = new QSpinBox;
|
||||||
m_lineSpacingSpinBox->setObjectName(QLatin1String("FontSettingsPage.LineSpacingSpinBox"));
|
|
||||||
m_lineSpacingSpinBox->setSuffix(Tr::tr("%"));
|
m_lineSpacingSpinBox->setSuffix(Tr::tr("%"));
|
||||||
m_lineSpacingSpinBox->setRange(50, 3000);
|
m_lineSpacingSpinBox->setRange(50, 3000);
|
||||||
m_lineSpacingSpinBox->setValue(m_value.relativeLineSpacing());
|
m_lineSpacingSpinBox->setValue(m_value.relativeLineSpacing());
|
||||||
|
|||||||
Reference in New Issue
Block a user