]> git.lyx.org Git - features.git/commitdiff
Use view/data separation for GuiCharacter colors, which makes it possible to sort...
authorJuergen Spitzmueller <spitz@lyx.org>
Sun, 17 May 2015 15:15:01 +0000 (17:15 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Sun, 17 May 2015 15:15:01 +0000 (17:15 +0200)
src/frontends/qt4/GuiCharacter.cpp
src/frontends/qt4/GuiCharacter.h

index 48453c3b371f3aecb1a44078e4e9bb0a67e1fdc5..24d22ffbf569f9fe61e86985a3b372bfbff6b808 100644 (file)
@@ -28,6 +28,8 @@
 #include "Language.h"
 #include "Paragraph.h"
 
+#include "support/gettext.h"
+
 #include <QAbstractItemModel>
 #include <QComboBox>
 #include <QModelIndex>
@@ -88,31 +90,28 @@ static QList<BarPair> barData()
 }
 
 
-static QList<ColorPair> colorData()
+static QList<ColorCode> colorData()
 {
-       QList<ColorPair> colors;
-       colors << ColorPair(qt_("No change"), Color_ignore);
-       colors << ColorPair(qt_("No color"), Color_none);
-       colors << ColorPair(qt_("Black"), Color_black);
-       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_("White"), Color_white);
-       colors << ColorPair(qt_("Yellow"), Color_yellow);
-       colors << ColorPair(qt_("Reset"), Color_inherit);
+       QList<ColorCode> colors;
+       colors << Color_black;
+       colors << Color_blue;
+       colors << Color_brown;
+       colors << Color_cyan;
+       colors << Color_darkgray;
+       colors << Color_gray;
+       colors << Color_green;
+       colors << Color_lightgray;
+       colors << Color_lime;
+       colors << Color_magenta;
+       colors << Color_olive;
+       colors << Color_orange;
+       colors << Color_pink;
+       colors << Color_purple;
+       colors << Color_red;
+       colors << Color_teal;
+       colors << Color_violet;
+       colors << Color_white;
+       colors << Color_yellow;
        return colors;
 }
 
@@ -174,19 +173,21 @@ template<typename T>
 void fillComboColor(QComboBox * combo, QList<T> const & list)
 {
        // at first add the 2 colors "No change" and "No color"
-       combo->addItem(list.begin()->first);
-       combo->addItem((list.begin() + 1)->first);
+       combo->addItem(qt_("No change"), "ignore");
+       combo->addItem(qt_("No color"), "none");
        // now add the real colors
        QPixmap coloritem(32, 32);
        QColor color;
-       typename QList<T>::const_iterator cit = list.begin() + 2;
-       for (; cit != list.end() - 1; ++cit) {
-               color = QColor(guiApp->colorCache().get(cit->second, false));
+       QList<ColorCode>::const_iterator cit = list.begin();
+       for (; cit != list.end(); ++cit) {
+               QString const lyxname = toqstr(lcolor.getLyXName(*cit));
+               QString const guiname = toqstr(translateIfPossible(lcolor.getGUIName(*cit)));
+               color = QColor(guiApp->colorCache().get(*cit, false));
                coloritem.fill(color);
-               combo->addItem(QIcon(coloritem), cit->first);
+               combo->addItem(QIcon(coloritem), guiname, lyxname);
        }
        //the last color is "Reset"
-       combo->addItem((list.end() - 1)->first);
+       combo->addItem(qt_("Reset"), "inherit");
 }
 
 }
@@ -218,6 +219,7 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        size   = sizeData();
        bar    = barData();
        color  = colorData();
+       sort(color.begin(), color.end(), ColorSorter());
 
        language = languageData();
        language.prepend(LanguagePair(qt_("Reset"), "reset"));
@@ -395,7 +397,7 @@ void GuiCharacter::paramsToDialog(Font const & font)
        shapeCO->setCurrentIndex(findPos2nd(shape, fi.shape()));
        sizeCO->setCurrentIndex(findPos2nd(size, fi.size()));
        miscCO->setCurrentIndex(findPos2nd(bar, getBar(fi)));
-       colorCO->setCurrentIndex(findPos2nd(color, fi.color()));
+       colorCO->setCurrentIndex(colorCO->findData(toqstr(lcolor.getLyXName(fi.color()))));
 
        // reset_language is a null pointer.
        QString const lang = (font.language() == reset_language)
@@ -414,7 +416,7 @@ void GuiCharacter::applyView()
        fi.setShape(shape[shapeCO->currentIndex()].second);
        fi.setSize(size[sizeCO->currentIndex()].second);
        setBar(fi, bar[miscCO->currentIndex()].second);
-       fi.setColor(color[colorCO->currentIndex()].second);
+       fi.setColor(lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString())));
 
        font_.setLanguage(languages.getLanguage(
                fromqstr(language[langCO->currentIndex()].second)));
index 5d4f346ee7b58679009a9f4fa3843d66a231c5cf..812c08405a53dbc5f711be3481daa36bb96c01de 100644 (file)
@@ -52,7 +52,6 @@ typedef std::pair<QString, FontSeries> SeriesPair;
 typedef std::pair<QString, FontShape>  ShapePair;
 typedef std::pair<QString, FontSize>   SizePair;
 typedef std::pair<QString, FontState>  BarPair;
-typedef std::pair<QString, ColorCode>  ColorPair;
 typedef std::pair<QString, QString>    LanguagePair;
 
 class GuiCharacter : public GuiDialog, public Ui::CharacterUi
@@ -87,7 +86,7 @@ private:
        QList<ShapePair>  shape;
        QList<SizePair>   size;
        QList<BarPair>    bar;
-       QList<ColorPair>  color;
+       QList<ColorCode> color;
        QList<LanguagePair> language;
 
        ///