TextEditor: inline colorschemeedit.ui

Change-Id: I8a0d129fca74940eeb28860a0b69476f2b459e22
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2022-07-25 17:12:57 +02:00
parent 568f83d964
commit ec1dfa14d6
5 changed files with 291 additions and 885 deletions

View File

@@ -45,7 +45,7 @@ add_qtc_plugin(TextEditor
codestyleselectorwidget.cpp codestyleselectorwidget.h codestyleselectorwidget.cpp codestyleselectorwidget.h
colorpreviewhoverhandler.cpp colorpreviewhoverhandler.h colorpreviewhoverhandler.cpp colorpreviewhoverhandler.h
colorscheme.cpp colorscheme.h colorscheme.cpp colorscheme.h
colorschemeedit.cpp colorschemeedit.h colorschemeedit.ui colorschemeedit.cpp colorschemeedit.h
command.cpp command.h command.cpp command.h
commentssettings.cpp commentssettings.h commentssettings.cpp commentssettings.h
completionsettings.cpp completionsettings.h completionsettings.cpp completionsettings.h

View File

@@ -24,33 +24,35 @@
****************************************************************************/ ****************************************************************************/
#include "colorschemeedit.h" #include "colorschemeedit.h"
#include "ui_colorschemeedit.h"
#include <utils/layoutbuilder.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QApplication>
#include <QCheckBox>
#include <QColorDialog> #include <QColorDialog>
#include <QComboBox>
#include <QDoubleSpinBox>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QListView>
#include <QSpacerItem>
#include <QToolButton>
using namespace TextEditor; namespace TextEditor::Internal {
using namespace TextEditor::Internal;
namespace {
const int layoutSpacing = 6; const int layoutSpacing = 6;
} // namespace
static inline QString colorButtonStyleSheet(const QColor &bgColor) static QString colorButtonStyleSheet(const QColor &bgColor)
{ {
if (bgColor.isValid()) { QString rc("border-width: 2px; border-radius: 2px; border-color: black; ");
QString rc = QLatin1String("border: 2px solid black; border-radius: 2px; background:"); rc += bgColor.isValid() ? "border-style: solid; background:" + bgColor.name() + ";"
rc += bgColor.name(); : QString("border-style: dotted;");
return rc; return rc;
}
return QLatin1String("border: 2px dotted black; border-radius: 2px;");
} }
namespace TextEditor {
namespace Internal {
class FormatsModel : public QAbstractListModel class FormatsModel : public QAbstractListModel
{ {
public: public:
@@ -142,58 +144,158 @@ private:
QFont m_baseFont; QFont m_baseFont;
}; };
} // namespace Internal
} // namespace TextEditor
ColorSchemeEdit::ColorSchemeEdit(QWidget *parent) : ColorSchemeEdit::ColorSchemeEdit(QWidget *parent) :
QWidget(parent), QWidget(parent),
m_ui(new Ui::ColorSchemeEdit),
m_formatsModel(new FormatsModel(this)) m_formatsModel(new FormatsModel(this))
{ {
setContentsMargins(0, layoutSpacing, 0, 0); setContentsMargins(0, layoutSpacing, 0, 0);
m_ui->setupUi(this); resize(513, 416);
m_ui->detailsScrollArea->viewport()->setAutoFillBackground(false);
m_ui->scrollAreaWidgetContents->setAutoFillBackground(false); auto colorButton = [] () {
m_ui->itemList->setModel(m_formatsModel); auto tb = new QToolButton;
m_ui->builtinSchemeLabel->setVisible(m_readOnly); tb->setMinimumWidth(56);
return tb;
};
auto eraseButton = [] (const QString &toolTip) {
auto tb = new QToolButton;
tb->setText("x");
tb->setToolTip(toolTip);
tb->setArrowType(Qt::LeftArrow);
return tb;
};
auto headlineLabel = [] (const QString &text) {
auto l = new QLabel(text);
l->setContentsMargins(0, layoutSpacing * 2, 0, layoutSpacing / 2);
QFont font = l->font();
font.setBold(true);
l->setFont(font);
return l;
};
auto spinBox = [] () {
auto sb = new QDoubleSpinBox;
sb->setMinimum(-1.);
sb->setMaximum(1.);
sb->setSingleStep(0.05);
return sb;
};
m_itemList = new QListView(this);
m_itemList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_itemList->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_itemList->setUniformItemSizes(true);
m_builtinSchemeLabel = new QLabel(
tr("<p align='center'><b>Builtin color schemes need to be <a href=\"copy\">copied</a><br/>"
" before they can be changed</b></p>"));
m_builtinSchemeLabel->setScaledContents(false);
m_fontProperties = new QWidget;
//m_fontProperties->setContentsMargins(0, 0, 0, 0);
m_fontProperties->setMinimumWidth(212);
m_foregroundLabel = new QLabel(tr("Foreground:"));
m_foregroundToolButton = colorButton();
m_eraseForegroundToolButton = eraseButton(tr("Erase foreground."));
m_backgroundLabel = new QLabel(tr("Background:"));
m_backgroundToolButton = colorButton();
m_eraseBackgroundToolButton = eraseButton(tr("Erase background."));
m_relativeForegroundHeadline = headlineLabel(tr("Relative Foreground"));
m_foregroundSaturationLabel = new QLabel(tr("Saturation:"));
m_foregroundSaturationSpinBox = spinBox();
m_foregroundLightnessLabel = new QLabel(tr("Lightness:"));
m_foregroundLightnessSpinBox = spinBox();
m_relativeBackgroundHeadline = headlineLabel(tr("Relative Background"));
m_backgroundSaturationLabel = new QLabel(tr("Saturation:"));
m_backgroundSaturationSpinBox = spinBox();
m_backgroundLightnessLabel = new QLabel(tr("Lightness:"));
m_backgroundLightnessSpinBox = spinBox();
m_fontHeadline = headlineLabel(tr("Font"));
m_boldCheckBox = new QCheckBox(tr("Bold"));
m_italicCheckBox = new QCheckBox(tr("Italic"));
m_underlineHeadline = headlineLabel(tr("Underline"));
m_underlineLabel = new QLabel(tr("Color:"));
m_underlineColorToolButton = colorButton();
m_eraseUnderlineColorToolButton = eraseButton(tr("Erase background."));
m_underlineComboBox = new QComboBox;
m_itemList->setModel(m_formatsModel);
m_builtinSchemeLabel->setVisible(m_readOnly);
auto bottomSpacer = new QWidget;
bottomSpacer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
using namespace Utils::Layouting;
Row {
m_itemList,
m_builtinSchemeLabel,
m_fontProperties,
}.attachTo(this, false);
Grid {
m_foregroundLabel, m_foregroundToolButton, m_eraseForegroundToolButton, br,
m_backgroundLabel, m_backgroundToolButton, m_eraseBackgroundToolButton, br,
Span {3, m_relativeForegroundHeadline}, br,
m_foregroundSaturationLabel, Span {2, m_foregroundSaturationSpinBox}, br,
m_foregroundLightnessLabel, Span {2, m_foregroundLightnessSpinBox}, br,
Span {3, m_relativeBackgroundHeadline}, br,
m_backgroundSaturationLabel, Span {2, m_backgroundSaturationSpinBox}, br,
m_backgroundLightnessLabel, Span {2, m_backgroundLightnessSpinBox}, br,
Span {3, m_fontHeadline}, br,
Span {3, Row {m_boldCheckBox, m_italicCheckBox, st}}, br,
Span {3, m_underlineHeadline}, br,
m_underlineLabel, m_underlineColorToolButton, m_eraseUnderlineColorToolButton, br,
Span {3, m_underlineComboBox}, br,
bottomSpacer, br,
}.attachTo(m_fontProperties);
populateUnderlineStyleComboBox(); populateUnderlineStyleComboBox();
connect(m_ui->itemList->selectionModel(), &QItemSelectionModel::currentRowChanged, connect(m_itemList->selectionModel(), &QItemSelectionModel::currentRowChanged,
this, &ColorSchemeEdit::currentItemChanged); this, &ColorSchemeEdit::currentItemChanged);
connect(m_ui->foregroundToolButton, &QAbstractButton::clicked, connect(m_foregroundToolButton, &QAbstractButton::clicked,
this, &ColorSchemeEdit::changeForeColor); this, &ColorSchemeEdit::changeForeColor);
connect(m_ui->backgroundToolButton, &QAbstractButton::clicked, connect(m_backgroundToolButton, &QAbstractButton::clicked,
this, &ColorSchemeEdit::changeBackColor); this, &ColorSchemeEdit::changeBackColor);
connect(m_ui->eraseBackgroundToolButton, &QAbstractButton::clicked, connect(m_eraseBackgroundToolButton, &QAbstractButton::clicked,
this, &ColorSchemeEdit::eraseBackColor); this, &ColorSchemeEdit::eraseBackColor);
connect(m_ui->eraseForegroundToolButton, &QAbstractButton::clicked, connect(m_eraseForegroundToolButton, &QAbstractButton::clicked,
this, &ColorSchemeEdit::eraseForeColor); this, &ColorSchemeEdit::eraseForeColor);
connect(m_ui->foregroundSaturationSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), connect(m_foregroundSaturationSpinBox, &QDoubleSpinBox::valueChanged,
this, &ColorSchemeEdit::changeRelativeForeColor); this, &ColorSchemeEdit::changeRelativeForeColor);
connect(m_ui->foregroundLightnessSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), connect(m_foregroundLightnessSpinBox, &QDoubleSpinBox::valueChanged,
this, &ColorSchemeEdit::changeRelativeForeColor); this, &ColorSchemeEdit::changeRelativeForeColor);
connect(m_ui->backgroundSaturationSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), connect(m_backgroundSaturationSpinBox, &QDoubleSpinBox::valueChanged,
this, &ColorSchemeEdit::changeRelativeBackColor); this, &ColorSchemeEdit::changeRelativeBackColor);
connect(m_ui->backgroundLightnessSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), connect(m_backgroundLightnessSpinBox, &QDoubleSpinBox::valueChanged,
this, &ColorSchemeEdit::changeRelativeBackColor); this, &ColorSchemeEdit::changeRelativeBackColor);
connect(m_ui->boldCheckBox, &QAbstractButton::toggled, connect(m_boldCheckBox, &QAbstractButton::toggled,
this, &ColorSchemeEdit::checkCheckBoxes); this, &ColorSchemeEdit::checkCheckBoxes);
connect(m_ui->italicCheckBox, &QAbstractButton::toggled, connect(m_italicCheckBox, &QAbstractButton::toggled,
this, &ColorSchemeEdit::checkCheckBoxes); this, &ColorSchemeEdit::checkCheckBoxes);
connect(m_ui->underlineColorToolButton, &QToolButton::clicked, connect(m_underlineColorToolButton, &QToolButton::clicked,
this, &ColorSchemeEdit::changeUnderlineColor); this, &ColorSchemeEdit::changeUnderlineColor);
connect(m_ui->eraseUnderlineColorToolButton, &QToolButton::clicked, connect(m_eraseUnderlineColorToolButton, &QToolButton::clicked,
this, &ColorSchemeEdit::eraseUnderlineColor); this, &ColorSchemeEdit::eraseUnderlineColor);
connect(m_ui->underlineComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), connect(m_underlineComboBox, &QComboBox::currentIndexChanged,
this, &ColorSchemeEdit::changeUnderlineStyle); this, &ColorSchemeEdit::changeUnderlineStyle);
connect(m_ui->builtinSchemeLabel, &QLabel::linkActivated, this, &ColorSchemeEdit::copyScheme); connect(m_builtinSchemeLabel, &QLabel::linkActivated, this, &ColorSchemeEdit::copyScheme);
} }
ColorSchemeEdit::~ColorSchemeEdit() ColorSchemeEdit::~ColorSchemeEdit() = default;
{
delete m_ui;
}
void ColorSchemeEdit::setFormatDescriptions(const FormatDescriptions &descriptions) void ColorSchemeEdit::setFormatDescriptions(const FormatDescriptions &descriptions)
{ {
@@ -201,7 +303,7 @@ void ColorSchemeEdit::setFormatDescriptions(const FormatDescriptions &descriptio
m_formatsModel->setFormatDescriptions(&m_descriptions); m_formatsModel->setFormatDescriptions(&m_descriptions);
if (!m_descriptions.empty()) if (!m_descriptions.empty())
m_ui->itemList->setCurrentIndex(m_formatsModel->index(0)); m_itemList->setCurrentIndex(m_formatsModel->index(0));
} }
void ColorSchemeEdit::setBaseFont(const QFont &font) void ColorSchemeEdit::setBaseFont(const QFont &font)
@@ -216,8 +318,8 @@ void ColorSchemeEdit::setReadOnly(bool readOnly)
m_readOnly = readOnly; m_readOnly = readOnly;
m_ui->detailsScrollArea->setVisible(!readOnly); m_fontProperties->setVisible(!readOnly);
m_ui->builtinSchemeLabel->setVisible(readOnly); m_builtinSchemeLabel->setVisible(readOnly);
updateControls(); updateControls();
} }
@@ -261,14 +363,13 @@ void ColorSchemeEdit::updateForegroundControls()
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowForegroundControl); && formatDescription.showControl(FormatDescription::ShowForegroundControl);
m_ui->relativeForegroundHeadline->setEnabled(isVisible); m_relativeForegroundHeadline->setEnabled(isVisible);
m_ui->foregroundLabel->setVisible(isVisible); m_foregroundLabel->setVisible(isVisible);
m_ui->foregroundToolButton->setVisible(isVisible); m_foregroundToolButton->setVisible(isVisible);
m_ui->eraseForegroundToolButton->setVisible(isVisible); m_eraseForegroundToolButton->setVisible(isVisible);
m_ui->foregroundSpacer->setVisible(isVisible);
m_ui->foregroundToolButton->setStyleSheet(colorButtonStyleSheet(format.foreground())); m_foregroundToolButton->setStyleSheet(colorButtonStyleSheet(format.foreground()));
m_ui->eraseForegroundToolButton->setEnabled(!m_readOnly m_eraseForegroundToolButton->setEnabled(!m_readOnly
&& m_curItem > 0 && m_curItem > 0
&& format.foreground().isValid()); && format.foreground().isValid());
} }
@@ -281,14 +382,13 @@ void ColorSchemeEdit::updateBackgroundControls()
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowBackgroundControl); && formatDescription.showControl(FormatDescription::ShowBackgroundControl);
m_ui->relativeBackgroundHeadline->setVisible(isVisible); m_relativeBackgroundHeadline->setVisible(isVisible);
m_ui->backgroundLabel->setVisible(isVisible); m_backgroundLabel->setVisible(isVisible);
m_ui->backgroundToolButton->setVisible(isVisible); m_backgroundToolButton->setVisible(isVisible);
m_ui->eraseBackgroundToolButton->setVisible(isVisible); m_eraseBackgroundToolButton->setVisible(isVisible);
m_ui->backgroundSpacer->setVisible(isVisible);
m_ui->backgroundToolButton->setStyleSheet(colorButtonStyleSheet(format.background())); m_backgroundToolButton->setStyleSheet(colorButtonStyleSheet(format.background()));
m_ui->eraseBackgroundToolButton->setEnabled(!m_readOnly m_eraseBackgroundToolButton->setEnabled(!m_readOnly
&& m_curItem > 0 && m_curItem > 0
&& format.background().isValid()); && format.background().isValid());
} }
@@ -298,31 +398,28 @@ void ColorSchemeEdit::updateRelativeForegroundControls()
const auto &formatDescription = m_descriptions[m_curItem]; const auto &formatDescription = m_descriptions[m_curItem];
const Format &format = m_scheme.formatFor(formatDescription.id()); const Format &format = m_scheme.formatFor(formatDescription.id());
QSignalBlocker saturationSignalBlocker(m_ui->foregroundSaturationSpinBox); QSignalBlocker saturationSignalBlocker(m_foregroundSaturationSpinBox);
QSignalBlocker lightnessSignalBlocker(m_ui->foregroundLightnessSpinBox); QSignalBlocker lightnessSignalBlocker(m_foregroundLightnessSpinBox);
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowRelativeForegroundControl); && formatDescription.showControl(FormatDescription::ShowRelativeForegroundControl);
m_ui->relativeForegroundHeadline->setVisible(isVisible); m_relativeForegroundHeadline->setVisible(isVisible);
m_ui->foregroundSaturationLabel->setVisible(isVisible); m_foregroundSaturationLabel->setVisible(isVisible);
m_ui->foregroundLightnessLabel->setVisible(isVisible); m_foregroundLightnessLabel->setVisible(isVisible);
m_ui->foregroundSaturationSpinBox->setVisible(isVisible); m_foregroundSaturationSpinBox->setVisible(isVisible);
m_ui->foregroundLightnessSpinBox->setVisible(isVisible); m_foregroundLightnessSpinBox->setVisible(isVisible);
m_ui->relativeForegroundSpacer1->setVisible(isVisible);
m_ui->relativeForegroundSpacer2->setVisible(isVisible);
m_ui->relativeForegroundSpacer3->setVisible(isVisible);
bool isEnabled = !m_readOnly && !format.foreground().isValid(); bool isEnabled = !m_readOnly && !format.foreground().isValid();
m_ui->relativeForegroundHeadline->setEnabled(isEnabled); m_relativeForegroundHeadline->setEnabled(isEnabled);
m_ui->foregroundSaturationLabel->setEnabled(isEnabled); m_foregroundSaturationLabel->setEnabled(isEnabled);
m_ui->foregroundLightnessLabel->setEnabled(isEnabled); m_foregroundLightnessLabel->setEnabled(isEnabled);
m_ui->foregroundSaturationSpinBox->setEnabled(isEnabled); m_foregroundSaturationSpinBox->setEnabled(isEnabled);
m_ui->foregroundLightnessSpinBox->setEnabled(isEnabled); m_foregroundLightnessSpinBox->setEnabled(isEnabled);
m_ui->foregroundSaturationSpinBox->setValue(format.relativeForegroundSaturation()); m_foregroundSaturationSpinBox->setValue(format.relativeForegroundSaturation());
m_ui->foregroundLightnessSpinBox->setValue(format.relativeForegroundLightness()); m_foregroundLightnessSpinBox->setValue(format.relativeForegroundLightness());
} }
void ColorSchemeEdit::updateRelativeBackgroundControls() void ColorSchemeEdit::updateRelativeBackgroundControls()
@@ -330,31 +427,28 @@ void ColorSchemeEdit::updateRelativeBackgroundControls()
const auto &formatDescription = m_descriptions[m_curItem]; const auto &formatDescription = m_descriptions[m_curItem];
const Format &format = m_scheme.formatFor(formatDescription.id()); const Format &format = m_scheme.formatFor(formatDescription.id());
QSignalBlocker saturationSignalBlocker(m_ui->backgroundSaturationSpinBox); QSignalBlocker saturationSignalBlocker(m_backgroundSaturationSpinBox);
QSignalBlocker lightnessSignalBlocker(m_ui->backgroundLightnessSpinBox); QSignalBlocker lightnessSignalBlocker(m_backgroundLightnessSpinBox);
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowRelativeBackgroundControl); && formatDescription.showControl(FormatDescription::ShowRelativeBackgroundControl);
m_ui->relativeBackgroundHeadline->setVisible(isVisible); m_relativeBackgroundHeadline->setVisible(isVisible);
m_ui->backgroundSaturationLabel->setVisible(isVisible); m_backgroundSaturationLabel->setVisible(isVisible);
m_ui->backgroundLightnessLabel->setVisible(isVisible); m_backgroundLightnessLabel->setVisible(isVisible);
m_ui->backgroundSaturationSpinBox->setVisible(isVisible); m_backgroundSaturationSpinBox->setVisible(isVisible);
m_ui->backgroundLightnessSpinBox->setVisible(isVisible); m_backgroundLightnessSpinBox->setVisible(isVisible);
m_ui->relativeBackgroundSpacer1->setVisible(isVisible);
m_ui->relativeBackgroundSpacer2->setVisible(isVisible);
m_ui->relativeBackgroundSpacer3->setVisible(isVisible);
bool isEnabled = !m_readOnly && !format.background().isValid(); bool isEnabled = !m_readOnly && !format.background().isValid();
m_ui->relativeBackgroundHeadline->setEnabled(isEnabled); m_relativeBackgroundHeadline->setEnabled(isEnabled);
m_ui->backgroundSaturationLabel->setEnabled(isEnabled); m_backgroundSaturationLabel->setEnabled(isEnabled);
m_ui->backgroundLightnessLabel->setEnabled(isEnabled); m_backgroundLightnessLabel->setEnabled(isEnabled);
m_ui->backgroundSaturationSpinBox->setEnabled(isEnabled); m_backgroundSaturationSpinBox->setEnabled(isEnabled);
m_ui->backgroundLightnessSpinBox->setEnabled(isEnabled); m_backgroundLightnessSpinBox->setEnabled(isEnabled);
m_ui->backgroundSaturationSpinBox->setValue(format.relativeBackgroundSaturation()); m_backgroundSaturationSpinBox->setValue(format.relativeBackgroundSaturation());
m_ui->backgroundLightnessSpinBox->setValue(format.relativeBackgroundLightness()); m_backgroundLightnessSpinBox->setValue(format.relativeBackgroundLightness());
} }
void ColorSchemeEdit::updateFontControls() void ColorSchemeEdit::updateFontControls()
@@ -362,20 +456,18 @@ void ColorSchemeEdit::updateFontControls()
const auto formatDescription = m_descriptions[m_curItem]; const auto formatDescription = m_descriptions[m_curItem];
const Format &format = m_scheme.formatFor(formatDescription.id()); const Format &format = m_scheme.formatFor(formatDescription.id());
QSignalBlocker boldSignalBlocker(m_ui->boldCheckBox); QSignalBlocker boldSignalBlocker(m_boldCheckBox);
QSignalBlocker italicSignalBlocker(m_ui->italicCheckBox); QSignalBlocker italicSignalBlocker(m_italicCheckBox);
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowFontControls); && formatDescription.showControl(FormatDescription::ShowFontControls);
m_ui->fontHeadline->setVisible(isVisible); m_fontHeadline->setVisible(isVisible);
m_ui->boldCheckBox->setVisible(isVisible); m_boldCheckBox->setVisible(isVisible);
m_ui->italicCheckBox->setVisible(isVisible); m_italicCheckBox->setVisible(isVisible);
m_ui->fontSpacer1->setVisible(isVisible);
m_ui->fontSpacer2->setVisible(isVisible);
m_ui->boldCheckBox->setChecked(format.bold()); m_boldCheckBox->setChecked(format.bold());
m_ui->italicCheckBox->setChecked(format.italic()); m_italicCheckBox->setChecked(format.italic());
} }
@@ -384,25 +476,23 @@ void ColorSchemeEdit::updateUnderlineControls()
const auto formatDescription = m_descriptions[m_curItem]; const auto formatDescription = m_descriptions[m_curItem];
const Format &format = m_scheme.formatFor(formatDescription.id()); const Format &format = m_scheme.formatFor(formatDescription.id());
QSignalBlocker comboBoxSignalBlocker(m_ui->underlineComboBox); QSignalBlocker comboBoxSignalBlocker(m_underlineComboBox);
bool isVisible = !m_readOnly bool isVisible = !m_readOnly
&& formatDescription.showControl(FormatDescription::ShowUnderlineControl); && formatDescription.showControl(FormatDescription::ShowUnderlineControl);
m_ui->underlineHeadline->setVisible(isVisible); m_underlineHeadline->setVisible(isVisible);
m_ui->underlineLabel->setVisible(isVisible); m_underlineLabel->setVisible(isVisible);
m_ui->underlineColorToolButton->setVisible(isVisible); m_underlineColorToolButton->setVisible(isVisible);
m_ui->eraseUnderlineColorToolButton->setVisible(isVisible); m_eraseUnderlineColorToolButton->setVisible(isVisible);
m_ui->underlineComboBox->setVisible(isVisible); m_underlineComboBox->setVisible(isVisible);
m_ui->underlineSpacer1->setVisible(isVisible);
m_ui->underlineSpacer2->setVisible(isVisible);
m_ui->underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(format.underlineColor())); m_underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(format.underlineColor()));
m_ui->eraseUnderlineColorToolButton->setEnabled(!m_readOnly m_eraseUnderlineColorToolButton->setEnabled(!m_readOnly
&& m_curItem > 0 && m_curItem > 0
&& format.underlineColor().isValid()); && format.underlineColor().isValid());
int index = m_ui->underlineComboBox->findData(QVariant::fromValue(int(format.underlineStyle()))); int index = m_underlineComboBox->findData(QVariant::fromValue(int(format.underlineStyle())));
m_ui->underlineComboBox->setCurrentIndex(index); m_underlineComboBox->setCurrentIndex(index);
} }
void ColorSchemeEdit::changeForeColor() void ColorSchemeEdit::changeForeColor()
@@ -410,13 +500,13 @@ void ColorSchemeEdit::changeForeColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).foreground(); QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).foreground();
const QColor newColor = QColorDialog::getColor(color, m_ui->boldCheckBox->window()); const QColor newColor = QColorDialog::getColor(color, m_boldCheckBox->window());
if (!newColor.isValid()) if (!newColor.isValid())
return; return;
m_ui->foregroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_foregroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseForegroundToolButton->setEnabled(true); m_eraseForegroundToolButton->setEnabled(true);
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setForeground(newColor); m_scheme.formatFor(category).setForeground(newColor);
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
@@ -430,13 +520,13 @@ void ColorSchemeEdit::changeBackColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).background(); QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).background();
const QColor newColor = QColorDialog::getColor(color, m_ui->boldCheckBox->window()); const QColor newColor = QColorDialog::getColor(color, m_boldCheckBox->window());
if (!newColor.isValid()) if (!newColor.isValid())
return; return;
m_ui->backgroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_backgroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseBackgroundToolButton->setEnabled(true); m_eraseBackgroundToolButton->setEnabled(true);
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setBackground(newColor); m_scheme.formatFor(category).setBackground(newColor);
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
@@ -453,10 +543,10 @@ void ColorSchemeEdit::eraseBackColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor newColor; QColor newColor;
m_ui->backgroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_backgroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseBackgroundToolButton->setEnabled(false); m_eraseBackgroundToolButton->setEnabled(false);
const QList<QModelIndex> indexes = m_ui->itemList->selectionModel()->selectedRows(); const QList<QModelIndex> indexes = m_itemList->selectionModel()->selectedRows();
for (const QModelIndex &index : indexes) { for (const QModelIndex &index : indexes) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setBackground(newColor); m_scheme.formatFor(category).setBackground(newColor);
@@ -471,10 +561,10 @@ void ColorSchemeEdit::eraseForeColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor newColor; QColor newColor;
m_ui->foregroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_foregroundToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseForegroundToolButton->setEnabled(false); m_eraseForegroundToolButton->setEnabled(false);
const QList<QModelIndex> indexes = m_ui->itemList->selectionModel()->selectedRows(); const QList<QModelIndex> indexes = m_itemList->selectionModel()->selectedRows();
for (const QModelIndex &index : indexes) { for (const QModelIndex &index : indexes) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setForeground(newColor); m_scheme.formatFor(category).setForeground(newColor);
@@ -489,10 +579,10 @@ void ColorSchemeEdit::changeRelativeForeColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
double saturation = m_ui->foregroundSaturationSpinBox->value(); double saturation = m_foregroundSaturationSpinBox->value();
double lightness = m_ui->foregroundLightnessSpinBox->value(); double lightness = m_foregroundLightnessSpinBox->value();
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setRelativeForegroundSaturation(saturation); m_scheme.formatFor(category).setRelativeForegroundSaturation(saturation);
m_scheme.formatFor(category).setRelativeForegroundLightness(lightness); m_scheme.formatFor(category).setRelativeForegroundLightness(lightness);
@@ -505,10 +595,10 @@ void ColorSchemeEdit::changeRelativeBackColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
double saturation = m_ui->backgroundSaturationSpinBox->value(); double saturation = m_backgroundSaturationSpinBox->value();
double lightness = m_ui->backgroundLightnessSpinBox->value(); double lightness = m_backgroundLightnessSpinBox->value();
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setRelativeBackgroundSaturation(saturation); m_scheme.formatFor(category).setRelativeBackgroundSaturation(saturation);
m_scheme.formatFor(category).setRelativeBackgroundLightness(lightness); m_scheme.formatFor(category).setRelativeBackgroundLightness(lightness);
@@ -521,10 +611,10 @@ void ColorSchemeEdit::eraseRelativeForeColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
m_ui->foregroundSaturationSpinBox->setValue(0.0); m_foregroundSaturationSpinBox->setValue(0.0);
m_ui->foregroundLightnessSpinBox->setValue(0.0); m_foregroundLightnessSpinBox->setValue(0.0);
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setRelativeForegroundSaturation(0.0); m_scheme.formatFor(category).setRelativeForegroundSaturation(0.0);
m_scheme.formatFor(category).setRelativeForegroundLightness(0.0); m_scheme.formatFor(category).setRelativeForegroundLightness(0.0);
@@ -537,10 +627,10 @@ void ColorSchemeEdit::eraseRelativeBackColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
m_ui->backgroundSaturationSpinBox->setValue(0.0); m_backgroundSaturationSpinBox->setValue(0.0);
m_ui->backgroundLightnessSpinBox->setValue(0.0); m_backgroundLightnessSpinBox->setValue(0.0);
const QList<QModelIndex> indexes = m_ui->itemList->selectionModel()->selectedRows(); const QList<QModelIndex> indexes = m_itemList->selectionModel()->selectedRows();
for (const QModelIndex &index : indexes) { for (const QModelIndex &index : indexes) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setRelativeBackgroundSaturation(0.0); m_scheme.formatFor(category).setRelativeBackgroundSaturation(0.0);
@@ -554,10 +644,10 @@ void ColorSchemeEdit::checkCheckBoxes()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setBold(m_ui->boldCheckBox->isChecked()); m_scheme.formatFor(category).setBold(m_boldCheckBox->isChecked());
m_scheme.formatFor(category).setItalic(m_ui->italicCheckBox->isChecked()); m_scheme.formatFor(category).setItalic(m_italicCheckBox->isChecked());
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
} }
} }
@@ -567,13 +657,13 @@ void ColorSchemeEdit::changeUnderlineColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).underlineColor(); QColor color = m_scheme.formatFor(m_descriptions[m_curItem].id()).underlineColor();
const QColor newColor = QColorDialog::getColor(color, m_ui->boldCheckBox->window()); const QColor newColor = QColorDialog::getColor(color, m_boldCheckBox->window());
if (!newColor.isValid()) if (!newColor.isValid())
return; return;
m_ui->underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseUnderlineColorToolButton->setEnabled(true); m_eraseUnderlineColorToolButton->setEnabled(true);
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setUnderlineColor(newColor); m_scheme.formatFor(category).setUnderlineColor(newColor);
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
@@ -585,10 +675,10 @@ void ColorSchemeEdit::eraseUnderlineColor()
if (m_curItem == -1) if (m_curItem == -1)
return; return;
QColor newColor; QColor newColor;
m_ui->underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(newColor)); m_underlineColorToolButton->setStyleSheet(colorButtonStyleSheet(newColor));
m_ui->eraseUnderlineColorToolButton->setEnabled(false); m_eraseUnderlineColorToolButton->setEnabled(false);
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
m_scheme.formatFor(category).setUnderlineColor(newColor); m_scheme.formatFor(category).setUnderlineColor(newColor);
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
@@ -600,9 +690,9 @@ void ColorSchemeEdit::changeUnderlineStyle(int comboBoxIndex)
if (m_curItem == -1) if (m_curItem == -1)
return; return;
for (const QModelIndex &index : m_ui->itemList->selectionModel()->selectedRows()) { for (const QModelIndex &index : m_itemList->selectionModel()->selectedRows()) {
const TextStyle category = m_descriptions[index.row()].id(); const TextStyle category = m_descriptions[index.row()].id();
auto value = m_ui->underlineComboBox->itemData(comboBoxIndex); const QVariant value = m_underlineComboBox->itemData(comboBoxIndex);
auto enumeratorIndex = static_cast<QTextCharFormat::UnderlineStyle>(value.toInt()); auto enumeratorIndex = static_cast<QTextCharFormat::UnderlineStyle>(value.toInt());
m_scheme.formatFor(category).setUnderlineStyle(enumeratorIndex); m_scheme.formatFor(category).setUnderlineStyle(enumeratorIndex);
m_formatsModel->emitDataChanged(index); m_formatsModel->emitDataChanged(index);
@@ -613,23 +703,25 @@ void ColorSchemeEdit::setItemListBackground(const QColor &color)
{ {
QPalette pal; QPalette pal;
pal.setColor(QPalette::Base, color); pal.setColor(QPalette::Base, color);
m_ui->itemList->setPalette(pal); m_itemList->setPalette(pal);
} }
void ColorSchemeEdit::populateUnderlineStyleComboBox() void ColorSchemeEdit::populateUnderlineStyleComboBox()
{ {
m_ui->underlineComboBox->addItem(tr("No Underline"), m_underlineComboBox->addItem(tr("No Underline"),
QVariant::fromValue(int(QTextCharFormat::NoUnderline))); QVariant::fromValue(int(QTextCharFormat::NoUnderline)));
m_ui->underlineComboBox->addItem(tr("Single Underline"), m_underlineComboBox->addItem(tr("Single Underline"),
QVariant::fromValue(int(QTextCharFormat::SingleUnderline))); QVariant::fromValue(int(QTextCharFormat::SingleUnderline)));
m_ui->underlineComboBox->addItem(tr("Wave Underline"), m_underlineComboBox->addItem(tr("Wave Underline"),
QVariant::fromValue(int(QTextCharFormat::WaveUnderline))); QVariant::fromValue(int(QTextCharFormat::WaveUnderline)));
m_ui->underlineComboBox->addItem(tr("Dot Underline"), m_underlineComboBox->addItem(tr("Dot Underline"),
QVariant::fromValue(int(QTextCharFormat::DotLine))); QVariant::fromValue(int(QTextCharFormat::DotLine)));
m_ui->underlineComboBox->addItem(tr("Dash Underline"), m_underlineComboBox->addItem(tr("Dash Underline"),
QVariant::fromValue(int(QTextCharFormat::DashUnderline))); QVariant::fromValue(int(QTextCharFormat::DashUnderline)));
m_ui->underlineComboBox->addItem(tr("Dash-Dot Underline"), m_underlineComboBox->addItem(tr("Dash-Dot Underline"),
QVariant::fromValue(int(QTextCharFormat::DashDotLine))); QVariant::fromValue(int(QTextCharFormat::DashDotLine)));
m_ui->underlineComboBox->addItem(tr("Dash-Dot-Dot Underline"), m_underlineComboBox->addItem(tr("Dash-Dot-Dot Underline"),
QVariant::fromValue(int(QTextCharFormat::DashDotDotLine))); QVariant::fromValue(int(QTextCharFormat::DashDotDotLine)));
} }
} // TextEditor::Internal

View File

@@ -31,13 +31,17 @@
#include <QDialog> #include <QDialog>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QCheckBox;
class QComboBox;
class QDoubleSpinBox;
class QLabel;
class QListView;
class QModelIndex; class QModelIndex;
class QScrollArea;
class QToolButton;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace TextEditor { namespace TextEditor::Internal {
namespace Internal {
namespace Ui { class ColorSchemeEdit; }
class FormatsModel; class FormatsModel;
@@ -91,11 +95,36 @@ private:
FormatDescriptions m_descriptions; FormatDescriptions m_descriptions;
ColorScheme m_scheme; ColorScheme m_scheme;
int m_curItem = -1; int m_curItem = -1;
Ui::ColorSchemeEdit *m_ui;
FormatsModel *m_formatsModel; FormatsModel *m_formatsModel;
bool m_readOnly = false; bool m_readOnly = false;
QListView *m_itemList;
QLabel *m_builtinSchemeLabel;
QWidget *m_fontProperties;
QLabel *m_foregroundLabel;
QToolButton *m_foregroundToolButton;
QToolButton *m_eraseForegroundToolButton;
QLabel *m_backgroundLabel;
QToolButton *m_backgroundToolButton;
QToolButton *m_eraseBackgroundToolButton;
QLabel *m_relativeForegroundHeadline;
QLabel *m_foregroundLightnessLabel;
QDoubleSpinBox *m_foregroundLightnessSpinBox;
QLabel *m_foregroundSaturationLabel;
QDoubleSpinBox *m_foregroundSaturationSpinBox;
QLabel *m_relativeBackgroundHeadline;
QLabel *m_backgroundSaturationLabel;
QDoubleSpinBox *m_backgroundSaturationSpinBox;
QLabel *m_backgroundLightnessLabel;
QDoubleSpinBox *m_backgroundLightnessSpinBox;
QLabel *m_fontHeadline;
QCheckBox *m_boldCheckBox;
QCheckBox *m_italicCheckBox;
QLabel *m_underlineHeadline;
QLabel *m_underlineLabel;
QToolButton *m_underlineColorToolButton;
QToolButton *m_eraseUnderlineColorToolButton;
QComboBox *m_underlineComboBox;
}; };
} // TextEditor::Internal
} // namespace Internal
} // namespace TextEditor

View File

@@ -1,714 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TextEditor::Internal::ColorSchemeEdit</class>
<widget class="QWidget" name="TextEditor::Internal::ColorSchemeEdit">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>513</width>
<height>416</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListView" name="itemList">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="builtinSchemeLabel">
<property name="text">
<string>&lt;p align='center'&gt;&lt;b&gt;Builtin color schemes need to be &lt;a href=&quot;copy&quot;&gt;copied&lt;/a&gt;&lt;br/&gt; before they can be changed&lt;/b&gt;&lt;/p&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QScrollArea" name="detailsScrollArea">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>212</width>
<height>390</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="30" column="0" colspan="3">
<spacer name="spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0" colspan="3">
<widget class="QWidget" name="foregroundSpacer" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="foregroundToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="foregroundLightnessLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Lightness:</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="3">
<widget class="QWidget" name="relativeForegroundSpacer3" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>18</height>
</size>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="foregroundSaturationLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Saturation:</string>
</property>
</widget>
</item>
<item row="19" column="0" colspan="3">
<widget class="QWidget" name="fontSpacer1" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="23" column="0" colspan="3">
<widget class="QWidget" name="underlineSpacer1" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="foregroundLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Foreground:</string>
</property>
<property name="buddy">
<cstring>foregroundToolButton</cstring>
</property>
</widget>
</item>
<item row="22" column="0">
<widget class="QLabel" name="underlineHeadline">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Underline</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="3">
<widget class="QLabel" name="relativeForegroundHeadline">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Relative Foreground</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="3">
<widget class="QWidget" name="relativeForegroundSpacer1" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="16" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="backgroundLightnessSpinBox">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.050000000000000</double>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QToolButton" name="eraseBackgroundToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Erase background.</string>
</property>
<property name="text">
<string>x</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item row="13" column="0" colspan="3">
<widget class="QWidget" name="relativeBackgroundSpacer1" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QToolButton" name="backgroundToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="backgroundLightnessLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Lightness:</string>
</property>
</widget>
</item>
<item row="12" column="0" colspan="3">
<widget class="QLabel" name="relativeBackgroundHeadline">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Relative Background</string>
</property>
</widget>
</item>
<item row="18" column="0">
<widget class="QLabel" name="fontHeadline">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Font</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="backgroundSaturationLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Saturation:</string>
</property>
</widget>
</item>
<item row="14" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="backgroundSaturationSpinBox">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.050000000000000</double>
</property>
</widget>
</item>
<item row="24" column="2">
<widget class="QToolButton" name="eraseUnderlineColorToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Erase background.</string>
</property>
<property name="text">
<string>x</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item row="26" column="0" colspan="3">
<widget class="QComboBox" name="underlineComboBox"/>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="eraseForegroundToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Erase foreground.</string>
</property>
<property name="text">
<string>x</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item row="15" column="0" colspan="3">
<widget class="QWidget" name="relativeBackgroundSpacer2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="20" column="0">
<widget class="QCheckBox" name="boldCheckBox">
<property name="text">
<string>Bold</string>
</property>
</widget>
</item>
<item row="17" column="0" colspan="3">
<widget class="QWidget" name="relativeBackgroundSpacer3" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>18</height>
</size>
</property>
</widget>
</item>
<item row="24" column="1">
<widget class="QToolButton" name="underlineColorToolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="25" column="0" colspan="3">
<widget class="QWidget" name="underlineSpacer2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="21" column="0" colspan="3">
<widget class="QWidget" name="fontSpacer2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>18</height>
</size>
</property>
</widget>
</item>
<item row="10" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="foregroundLightnessSpinBox">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.050000000000000</double>
</property>
</widget>
</item>
<item row="8" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="foregroundSaturationSpinBox">
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<double>0.050000000000000</double>
</property>
</widget>
</item>
<item row="9" column="0" colspan="3">
<widget class="QWidget" name="relativeForegroundSpacer2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>6</height>
</size>
</property>
</widget>
</item>
<item row="24" column="0">
<widget class="QLabel" name="underlineLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Color:</string>
</property>
<property name="buddy">
<cstring>backgroundToolButton</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="backgroundLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Background:</string>
</property>
<property name="buddy">
<cstring>backgroundToolButton</cstring>
</property>
</widget>
</item>
<item row="20" column="1" colspan="2">
<widget class="QCheckBox" name="italicCheckBox">
<property name="text">
<string>Italic</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="3">
<widget class="QWidget" name="backgroundSpacer" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>18</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>itemList</tabstop>
<tabstop>foregroundToolButton</tabstop>
<tabstop>eraseForegroundToolButton</tabstop>
<tabstop>backgroundToolButton</tabstop>
<tabstop>eraseBackgroundToolButton</tabstop>
<tabstop>boldCheckBox</tabstop>
<tabstop>italicCheckBox</tabstop>
<tabstop>underlineColorToolButton</tabstop>
<tabstop>eraseUnderlineColorToolButton</tabstop>
<tabstop>underlineComboBox</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@@ -49,7 +49,6 @@ Project {
"colorscheme.h", "colorscheme.h",
"colorschemeedit.cpp", "colorschemeedit.cpp",
"colorschemeedit.h", "colorschemeedit.h",
"colorschemeedit.ui",
"command.cpp", "command.cpp",
"command.h", "command.h",
"commentssettings.cpp", "commentssettings.cpp",