commit d4685f2806683849002e0fb77b8e0335ed998092
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Fri May 12 11:57:17 2017 +0200

    Never, never use a string for something that has 3 values
    
    This commit replaces the string math_number_before by a proper math_number 
enum.
    
    Note that the _before naming was misleading. It was chosen at a time
    when we were not sure whether leqno was always left or could be right
    in RtL documents.
    
    Note that the token in LyX document is still \math_number_before and
    this should be changed.
    
    Fixup for 19cc4a1f.
---
 src/BufferParams.cpp              |   32 +++++++++++++++++++++++++++-----
 src/BufferParams.h                |    5 +++--
 src/frontends/qt4/GuiDocument.cpp |   18 +++++++++++-------
 3 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index ef6ad0a..02dda81 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -385,7 +385,7 @@ BufferParams::BufferParams()
        makeDocumentClass();
        paragraph_separation = ParagraphIndentSeparation;
        is_math_indent = false;
-       math_number_before = "default";
+       math_number = DEFAULT;
        quotes_style = InsetQuotesParams::EnglishQuotes;
        dynamic_quotes = false;
        fontsize = "default";
@@ -854,7 +854,14 @@ string BufferParams::readToken(Lexer & lex, string const & 
token,
                lex.next();
                pimpl_->mathindent = Length(lex.getString());
        } else if (token == "\\math_number_before") {
-               lex >> math_number_before;
+               string tmp;
+               lex >> tmp;
+               if (tmp == "true")
+                       math_number = LEFT;
+               else if (tmp == "false")
+                       math_number = RIGHT;
+               else
+                       math_number = DEFAULT;
        } else if (token == "\\quotes_style") {
                string qstyle;
                lex >> qstyle;
@@ -1355,7 +1362,17 @@ void BufferParams::writeFile(ostream & os, Buffer const 
* buf) const
        os << "\n\\is_math_indent " << is_math_indent;
        if (is_math_indent && !getMathIndent().empty())
                os << "\n\\math_indentation " << getMathIndent().asString();
-       os << "\n\\math_number_before " << math_number_before;
+       os << "\n\\math_number_before ";
+       switch(math_number) {
+       case LEFT:
+               os << "true";
+               break;
+       case RIGHT:
+               os << "false";
+               break;
+       case DEFAULT:
+               os << "default";
+       }
        os << "\n\\quotes_style "
           << string_quotes_style[quotes_style]
           << "\n\\dynamic_quotes " << dynamic_quotes
@@ -1640,11 +1657,16 @@ bool BufferParams::writeLaTeX(otexstream & os, 
LaTeXFeatures & features,
        if (is_math_indent)
                clsoptions << "fleqn,";
 
-       if (math_number_before == "true")
+       switch(math_number) {
+       case LEFT:
                clsoptions << "leqno,";
-       else if (math_number_before == "false") {
+               break;
+       case RIGHT:
                clsoptions << "reqno,";
                features.require("amsmath");
+               break;
+       case DEFAULT:
+               break;
        }
 
        // language should be a parameter to \documentclass
diff --git a/src/BufferParams.h b/src/BufferParams.h
index be7c814..c913031 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -110,8 +110,9 @@ public:
        bool is_math_indent;
 
 
-       /// number formulas before or not
-       std::string math_number_before;
+       enum  MathNumber { DEFAULT, LEFT, RIGHT };
+       /// number formulas on left/right/default
+       MathNumber math_number;
 
        /** Whether paragraphs are separated by using a indent like in
         *  articles or by using a little skip like in letters.
diff --git a/src/frontends/qt4/GuiDocument.cpp 
b/src/frontends/qt4/GuiDocument.cpp
index 055981e..1ebf652 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -2943,17 +2943,17 @@ void GuiDocument::applyView()
        }
        switch (mathsModule->MathNumberingPosCO->currentIndex()) {
                case 0:
-                       bp_.math_number_before = "true";
+                       bp_.math_number = BufferParams::LEFT;
                        break;
                case 1:
-                       bp_.math_number_before = "default";
+                       bp_.math_number = BufferParams::DEFAULT;
                        break;
                case 2:
-                       bp_.math_number_before = "false";
+                       bp_.math_number = BufferParams::RIGHT;
                        break;
                default:
                        // this should never happen
-                       bp_.math_number_before = "default";
+                       bp_.math_number = BufferParams::DEFAULT;
                        break;
        }
 
@@ -3419,12 +3419,16 @@ void GuiDocument::paramsToDialog()
                mathsModule->MathIndentCO->setCurrentIndex(indent);
                enableMathIndent(indent);
        }
-       if (bp_.math_number_before == "true")
+       switch(bp_.math_number) {
+       case BufferParams::LEFT:
                mathsModule->MathNumberingPosCO->setCurrentIndex(0);
-       else if (bp_.math_number_before == "default")
+               break;
+       case BufferParams::DEFAULT:
                mathsModule->MathNumberingPosCO->setCurrentIndex(1);
-       else if (bp_.math_number_before == "false")
+               break;
+       case BufferParams::RIGHT:
                mathsModule->MathNumberingPosCO->setCurrentIndex(2);
+       }
 
        map<string, string> const & packages = BufferParams::auto_packages();
        for (map<string, string>::const_iterator it = packages.begin();

Reply via email to