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.
This commit is contained in:
Jean-Marc Lasgouttes 2017-05-12 11:57:17 +02:00
parent c200e49d67
commit d4685f2806
3 changed files with 41 additions and 14 deletions

View File

@ -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

View File

@ -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.

View File

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