From 6780a3040958c937d6441c32f333c5ee55f64e3c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Fri, 15 May 2015 06:02:41 +0200 Subject: [PATCH] GuiBox.cpp: fix logic - if pagebreaks are allowed there cannot be defined a width --- src/frontends/qt4/GuiBox.cpp | 73 +++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/src/frontends/qt4/GuiBox.cpp b/src/frontends/qt4/GuiBox.cpp index ccf6cd76a7..7b28e518c6 100644 --- a/src/frontends/qt4/GuiBox.cpp +++ b/src/frontends/qt4/GuiBox.cpp @@ -15,6 +15,8 @@ #include "GuiBox.h" +#include "GuiApplication.h" +#include "ColorCache.h" #include "LengthCombo.h" #include "Length.h" #include "qt_helpers.h" @@ -26,6 +28,7 @@ #include "support/foreach.h" #include "support/lstrings.h" +#include #include #include @@ -73,6 +76,60 @@ static QStringList boxGuiSpecialLengthNames() } +static QList colorData() +{ + QList colors; + colors << ColorPair(qt_("none"), Color_none); + colors << ColorPair(qt_("black"), Color_black); + colors << ColorPair(qt_("white"), Color_white); + colors << ColorPair(qt_("blue"), Color_blue); + colors << ColorPair(qt_("brown"), Color_brown); + colors << ColorPair(qt_("cyan"), Color_cyan); + colors << ColorPair(qt_("darkgray"), Color_darkgray); + colors << ColorPair(qt_("gray"), Color_gray); + colors << ColorPair(qt_("green"), Color_green); + colors << ColorPair(qt_("lightgray"), Color_lightgray); + colors << ColorPair(qt_("lime"), Color_lime); + colors << ColorPair(qt_("magenta"), Color_magenta); + colors << ColorPair(qt_("olive"), Color_olive); + colors << ColorPair(qt_("orange"), Color_orange); + colors << ColorPair(qt_("pink"), Color_pink); + colors << ColorPair(qt_("purple"), Color_purple); + colors << ColorPair(qt_("red"), Color_red); + colors << ColorPair(qt_("teal"), Color_teal); + colors << ColorPair(qt_("violet"), Color_violet); + colors << ColorPair(qt_("yellow"), Color_yellow); + return colors; +} + + +template +void fillComboColor(QComboBox * combo, QList const & list, bool const is_none) +{ + QPixmap coloritem(32, 32); + QColor color; + // frameColorCO cannot be uncolored + if (is_none) + combo->addItem("none"); + typename QList::const_iterator cit = list.begin() + 1; + for (; cit != list.end(); ++cit) { + color = QColor(guiApp->colorCache().get(cit->second, false)); + coloritem.fill(color); + combo->addItem(QIcon(coloritem), cit->first); + } +} + + +template +static int findPos2nd(QList

const & vec, QString val) +{ + for (int i = 0; i != vec.size(); ++i) + if (vec[i].first == val) + return i; + return 0; +} + + GuiBox::GuiBox(QWidget * parent) : InsetParamsWidget(parent) { setupUi(this); @@ -108,6 +165,8 @@ GuiBox::GuiBox(QWidget * parent) : InsetParamsWidget(parent) connect(shadowsizeED, SIGNAL(textChanged(QString)), this, SIGNAL(changed())); connect(shadowsizeUnitsLC, SIGNAL(selectionChanged(lyx::Length::UNIT)), this, SIGNAL(changed())); + connect(frameColorCO, SIGNAL(highlighted(QString)), this, SIGNAL(changed())); + connect(backgroundColorCO, SIGNAL(highlighted(QString)), this, SIGNAL(changed())); heightED->setValidator(unsignedLengthValidator(heightED)); widthED->setValidator(unsignedLengthValidator(widthED)); @@ -122,6 +181,12 @@ GuiBox::GuiBox(QWidget * parent) : InsetParamsWidget(parent) addCheckedWidget(separationED, separationLA); addCheckedWidget(shadowsizeED, shadowsizeLA); + // initialize colors + color = colorData(); + // the background can be uncolored while the frame cannot + fillComboColor(frameColorCO, color, false); + fillComboColor(backgroundColorCO, color, true); + initDialog(); } @@ -185,6 +250,9 @@ void GuiBox::initDialog() // LaTeX's default for \shadowsize is 4 pt shadowsizeED->setText("4"); shadowsizeUnitsLC->setCurrentItem(Length::PT); + // the default color is black and none + frameColorCO->setCurrentIndex(findPos2nd(color, qt_("black")) - 1); + backgroundColorCO->setCurrentIndex(findPos2nd(color, qt_("none"))); } @@ -318,6 +386,9 @@ void GuiBox::paramsToDialog(Inset const * inset) shadowsizeUnitsLC->setEnabled(type == "Shadowbox"); lengthToWidgets(shadowsizeED, shadowsizeUnitsLC, (params.shadowsize).asString(), default_unit); + // set color + frameColorCO->setCurrentIndex(findPos2nd(color, qt_(params.framecolor)) - 1); + backgroundColorCO->setCurrentIndex(findPos2nd(color, qt_(params.backgroundcolor))); } @@ -443,7 +514,7 @@ bool GuiBox::checkWidgets(bool readonly) const // except for Frameless and Boxed, the width cannot be specified if // there is no inner box bool const width_enabled = - ibox || outer == "Frameless" || outer == "Boxed"; + ibox || outer == "Frameless" || (outer == "Boxed" && !pagebreakCB->isChecked()); // enable if width_enabled widthED->setEnabled(width_enabled); widthUnitsLC->setEnabled(width_enabled); -- 2.39.2