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();