From d11a118c4693aee02a2e8a98c663f45024232190 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 10 May 2019 10:43:01 +0200 Subject: [PATCH] Move the stateText code for FontInfo to FontInfo class. The first parameter of Font::stateText is now optional. --- src/Font.cpp | 86 +++-------------------------- src/Font.h | 2 +- src/FontInfo.cpp | 71 ++++++++++++++++++++++++ src/FontInfo.h | 3 + src/frontends/qt4/GuiFontLoader.cpp | 5 +- 5 files changed, 85 insertions(+), 82 deletions(-) diff --git a/src/Font.cpp b/src/Font.cpp index 965a8309ef..17160ebd7d 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -49,33 +49,10 @@ extern char const * LyXSeriesNames[NUM_SERIES + 2]; extern char const * LyXShapeNames[NUM_SHAPE + 2]; extern char const * LyXSizeNames[NUM_SIZE + 4]; extern char const * LyXMiscNames[5]; - -// -// Names for the GUI -// +extern char const * GUIMiscNames[5]; namespace { -char const * GUIFamilyNames[NUM_FAMILIES + 2 /* default & error */] = -{ N_("Roman"), N_("Sans Serif"), N_("Typewriter"), N_("Symbol"), - "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "stmry", - "wasy", "esint", N_("Inherit"), N_("Ignore") }; - -char const * GUISeriesNames[NUM_SERIES + 2 /* default & error */] = -{ N_("Medium"), N_("Bold"), N_("Inherit"), N_("Ignore") }; - -char const * GUIShapeNames[NUM_SHAPE + 2 /* default & error */] = -{ N_("Upright"), N_("Italic"), N_("Slanted"), N_("Smallcaps"), N_("Inherit"), - N_("Ignore") }; - -char const * GUISizeNames[NUM_SIZE + 4 /* increase, decrease, default & error */] = -{ N_("Tiny"), N_("Smallest"), N_("Smaller"), N_("Small"), N_("Normal"), N_("Large"), - N_("Larger"), N_("Largest"), N_("Huge"), N_("Huger"), N_("Increase"), N_("Decrease"), - N_("Inherit"), N_("Ignore") }; - -char const * GUIMiscNames[5] = -{ N_("Off"), N_("On"), N_("Toggle"), N_("Inherit"), N_("Ignore") }; - // // Strings used to write LaTeX files // @@ -143,55 +120,10 @@ void Font::update(Font const & newfont, } -docstring const stateText(FontInfo const & f, bool const terse) -{ - odocstringstream os; - if (f.family() != INHERIT_FAMILY && (!terse || f.family() != IGNORE_FAMILY)) - os << _(GUIFamilyNames[f.family()]) << ", "; - if (f.series() != INHERIT_SERIES && (!terse || f.series() != IGNORE_SERIES)) - os << _(GUISeriesNames[f.series()]) << ", "; - if (f.shape() != INHERIT_SHAPE && (!terse || f.shape() != IGNORE_SHAPE)) - os << _(GUIShapeNames[f.shape()]) << ", "; - if (f.size() != FONT_SIZE_INHERIT && (!terse || f.size() != FONT_SIZE_IGNORE)) - os << _(GUISizeNames[f.size()]) << ", "; - // FIXME: shall style be handled there? Probably not. - if (f.color() != Color_inherit && (!terse || f.color() != Color_ignore)) - os << lcolor.getGUIName(f.color()) << ", "; - // FIXME: uncomment this when we support background. - //if (f.background() != Color_inherit) - // os << lcolor.getGUIName(f.background()) << ", "; - if (f.emph() != FONT_INHERIT && (!terse || f.emph() != FONT_IGNORE)) - os << bformat(_("Emphasis %1$s, "), - _(GUIMiscNames[f.emph()])); - if (f.underbar() != FONT_INHERIT && (!terse || f.underbar() == FONT_ON)) - os << bformat(_("Underline %1$s, "), - _(GUIMiscNames[f.underbar()])); - if (f.uuline() != FONT_INHERIT && (!terse || f.uuline() == FONT_ON)) - os << bformat(_("Double underline %1$s, "), - _(GUIMiscNames[f.uuline()])); - if (f.uwave() != FONT_INHERIT && (!terse || f.uwave() == FONT_ON)) - os << bformat(_("Wavy underline %1$s, "), - _(GUIMiscNames[f.uwave()])); - if (f.strikeout() != FONT_INHERIT && (!terse || f.strikeout() == FONT_ON)) - os << bformat(_("Strike out %1$s, "), - _(GUIMiscNames[f.strikeout()])); - if (f.xout() != FONT_INHERIT && (!terse || f.xout() == FONT_ON)) - os << bformat(_("Cross out %1$s, "), - _(GUIMiscNames[f.xout()])); - if (f.noun() != FONT_INHERIT && (!terse || f.noun() != FONT_IGNORE)) - os << bformat(_("Noun %1$s, "), - _(GUIMiscNames[f.noun()])); - if (f == inherit_font) - os << _("Default") << ", "; - - return os.str(); -} - - docstring const Font::stateText(BufferParams * params, bool const terse) const { odocstringstream os; - os << lyx::stateText(bits_, terse); + os << bits_.stateText(terse); if ((!params || (language() != params->language)) && (!terse || language() != ignore_language)) { // reset_language is a null pointer! @@ -729,32 +661,32 @@ void Font::validate(LaTeXFeatures & features) const if (bits_.noun() == FONT_ON) { LYXERR(Debug::LATEX, "font.noun: " << bits_.noun()); features.require("noun"); - LYXERR(Debug::LATEX, "Noun enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Noun enabled. Font: " << to_utf8(stateText())); } if (bits_.underbar() == FONT_ON) { LYXERR(Debug::LATEX, "font.underline: " << bits_.underbar()); features.require("ulem"); - LYXERR(Debug::LATEX, "Underline enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Underline enabled. Font: " << to_utf8(stateText())); } if (bits_.strikeout() == FONT_ON) { LYXERR(Debug::LATEX, "font.strikeout: " << bits_.strikeout()); features.require("ulem"); - LYXERR(Debug::LATEX, "Strike out enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Strike out enabled. Font: " << to_utf8(stateText())); } if (bits_.xout() == FONT_ON) { LYXERR(Debug::LATEX, "font.xout: " << bits_.xout()); features.require("ulem"); - LYXERR(Debug::LATEX, "Cross out enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Cross out enabled. Font: " << to_utf8(stateText())); } if (bits_.uuline() == FONT_ON) { LYXERR(Debug::LATEX, "font.uuline: " << bits_.uuline()); features.require("ulem"); - LYXERR(Debug::LATEX, "Double underline enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Double underline enabled. Font: " << to_utf8(stateText())); } if (bits_.uwave() == FONT_ON) { LYXERR(Debug::LATEX, "font.uwave: " << bits_.uwave()); features.require("ulem"); - LYXERR(Debug::LATEX, "Wavy underline enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Wavy underline enabled. Font: " << to_utf8(stateText())); } switch (bits_.color()) { case Color_none: @@ -780,7 +712,7 @@ void Font::validate(LaTeXFeatures & features) const break; default: features.require("color"); - LYXERR(Debug::LATEX, "Color enabled. Font: " << to_utf8(stateText(0))); + LYXERR(Debug::LATEX, "Color enabled. Font: " << to_utf8(stateText())); } // FIXME: Do something for background and soul package? diff --git a/src/Font.h b/src/Font.h index 226ad26199..b845666d14 100644 --- a/src/Font.h +++ b/src/Font.h @@ -90,7 +90,7 @@ public: /// Build GUI description of font state - docstring const stateText(BufferParams * params, bool const terse = false) const; + docstring const stateText(BufferParams * params = 0, bool const terse = false) const; /// void validate(LaTeXFeatures & features) const; diff --git a/src/FontInfo.cpp b/src/FontInfo.cpp index a813c9c111..d7b3a4f377 100644 --- a/src/FontInfo.cpp +++ b/src/FontInfo.cpp @@ -22,6 +22,7 @@ #include "support/convert.h" #include "support/debug.h" #include "support/docstring.h" +#include "support/gettext.h" #include "support/lstrings.h" #include "support/RefChanger.h" @@ -34,6 +35,31 @@ using namespace lyx::support; namespace lyx { +// +// Names for the GUI +// + +char const * GUIFamilyNames[NUM_FAMILIES + 2 /* default & error */] = +{ N_("Roman"), N_("Sans Serif"), N_("Typewriter"), N_("Symbol"), + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "stmry", + "wasy", "esint", N_("Inherit"), N_("Ignore") }; + +char const * GUISeriesNames[NUM_SERIES + 2 /* default & error */] = +{ N_("Medium"), N_("Bold"), N_("Inherit"), N_("Ignore") }; + +char const * GUIShapeNames[NUM_SHAPE + 2 /* default & error */] = +{ N_("Upright"), N_("Italic"), N_("Slanted"), N_("Smallcaps"), N_("Inherit"), + N_("Ignore") }; + +char const * GUISizeNames[NUM_SIZE + 4 /* increase, decrease, default & error */] = +{ N_("Tiny"), N_("Smallest"), N_("Smaller"), N_("Small"), N_("Normal"), N_("Large"), + N_("Larger"), N_("Largest"), N_("Huge"), N_("Huger"), N_("Increase"), N_("Decrease"), + N_("Inherit"), N_("Ignore") }; + +char const * GUIMiscNames[5] = +{ N_("Off"), N_("On"), N_("Toggle"), N_("Inherit"), N_("Ignore") }; + + // // Strings used to read and write .lyx format files // @@ -569,6 +595,51 @@ docstring FontInfo::asCSS() const } +docstring const FontInfo::stateText(bool const terse) const +{ + odocstringstream os; + if (family() != INHERIT_FAMILY && (!terse || family() != IGNORE_FAMILY)) + os << _(GUIFamilyNames[family()]) << ", "; + if (series() != INHERIT_SERIES && (!terse || series() != IGNORE_SERIES)) + os << _(GUISeriesNames[series()]) << ", "; + if (shape() != INHERIT_SHAPE && (!terse || shape() != IGNORE_SHAPE)) + os << _(GUIShapeNames[shape()]) << ", "; + if (size() != FONT_SIZE_INHERIT && (!terse || size() != FONT_SIZE_IGNORE)) + os << _(GUISizeNames[size()]) << ", "; + // FIXME: shall style be handled there? Probably not. + if (color() != Color_inherit && (!terse || color() != Color_ignore)) + os << lcolor.getGUIName(color()) << ", "; + // FIXME: uncomment this when we support background. + //if (background() != Color_inherit) + // os << lcolor.getGUIName(background()) << ", "; + if (emph() != FONT_INHERIT && (!terse || emph() != FONT_IGNORE)) + os << bformat(_("Emphasis %1$s, "), + _(GUIMiscNames[emph()])); + if (underbar() != FONT_INHERIT && (!terse || underbar() == FONT_ON)) + os << bformat(_("Underline %1$s, "), + _(GUIMiscNames[underbar()])); + if (uuline() != FONT_INHERIT && (!terse || uuline() == FONT_ON)) + os << bformat(_("Double underline %1$s, "), + _(GUIMiscNames[uuline()])); + if (uwave() != FONT_INHERIT && (!terse || uwave() == FONT_ON)) + os << bformat(_("Wavy underline %1$s, "), + _(GUIMiscNames[uwave()])); + if (strikeout() != FONT_INHERIT && (!terse || strikeout() == FONT_ON)) + os << bformat(_("Strike out %1$s, "), + _(GUIMiscNames[strikeout()])); + if (xout() != FONT_INHERIT && (!terse || xout() == FONT_ON)) + os << bformat(_("Cross out %1$s, "), + _(GUIMiscNames[xout()])); + if (noun() != FONT_INHERIT && (!terse || noun() != FONT_IGNORE)) + os << bformat(_("Noun %1$s, "), + _(GUIMiscNames[noun()])); + if (*this == inherit_font) + os << _("Default") << ", "; + + return os.str(); +} + + // Set family according to lyx format string void setLyXFamily(string const & fam, FontInfo & f) { diff --git a/src/FontInfo.h b/src/FontInfo.h index 3e0ac5d4a7..42eea31e92 100644 --- a/src/FontInfo.h +++ b/src/FontInfo.h @@ -161,6 +161,9 @@ public: /// \param realize the \param font against the current FontInfo. Changer change(FontInfo font, bool realize = false); + /// Build GUI description of font state + docstring const stateText(bool const terse = false) const; + private: friend bool operator==(FontInfo const & lhs, FontInfo const & rhs); diff --git a/src/frontends/qt4/GuiFontLoader.cpp b/src/frontends/qt4/GuiFontLoader.cpp index 4839ad378d..06163390a5 100644 --- a/src/frontends/qt4/GuiFontLoader.cpp +++ b/src/frontends/qt4/GuiFontLoader.cpp @@ -42,9 +42,6 @@ int const num_math_fonts = sizeof(math_fonts) / sizeof(*math_fonts); namespace lyx { -extern docstring const stateText(FontInfo const & f, - bool const terse = false); - namespace frontend { /** @@ -353,7 +350,7 @@ QFont makeQFont(FontInfo const & f) break; } - LYXERR(Debug::FONT, "Font '" << stateText(f) + LYXERR(Debug::FONT, "Font '" << f.stateText() << "' matched by\n" << font.family()); // Is this an exact match? -- 2.39.5