#include "BufferParams.h"
#include "Counters.h"
#include "LaTeXFeatures.h"
-#include "OutputParams.h"
#include "output_xhtml.h"
-#include "sgml.h"
+#include "xml.h"
#include "texstream.h"
#include "TextClass.h"
{}
-const map<string, string> InsetCounter::counterTable =
+const vector<pair<string, string>> InsetCounter::counterTable =
{
- {"set", N_("Set")},
- {"addto", N_("Add To")},
- {"reset", N_("Reset")},
- {"save", N_("Save")},
- {"restore", N_("Restore")},
- {"value", N_("Value")}
+ {"set", N_("Set counter to ...")},
+ {"addto", N_("Increase counter by ...")},
+ {"reset", N_("Reset counter to 0")},
+ {"save", N_("Save current counter value")},
+ {"restore", N_("Restore saved counter value")},
};
-bool InsetCounter::isCompatibleCommand(string const & s) {
- return counterTable.count(s);
+bool InsetCounter::isCompatibleCommand(string const & s)
+{
+ for (auto & i : counterTable) {
+ if (i.first == s)
+ return true;
+ }
+ return false;
}
if (param_info_.empty()) {
param_info_.add("counter", ParamInfo::LYX_INTERNAL);
param_info_.add("value", ParamInfo::LYX_INTERNAL);
- param_info_.add("vtype", ParamInfo::LYX_INTERNAL);
param_info_.add("lyxonly", ParamInfo::LYX_INTERNAL);
}
return param_info_;
return;
string const cmd = getCmdName();
- docstring cntr = getParam("counter");
+ docstring const & cntr = getParam("counter");
Counters & cnts = buffer().params().documentClass().counters();
+ docstring const & latexname = cnts.latexName(cntr);
+
if (cmd == "set") {
docstring const & val = getParam("value");
- os << "\\setcounter{" << cntr << "}{" << val << "}";
+ os << "\\setcounter{" << latexname << "}{" << val << "}";
} else if (cmd == "addto") {
docstring const & val = getParam("value");
- os << "\\addtocounter{" << cntr << "}{" << val << "}";
+ os << "\\addtocounter{" << latexname << "}{" << val << "}";
} else if (cmd == "reset") {
- os << "\\setcounter{" << cntr << "}{0}";
+ os << "\\setcounter{" << latexname << "}{0}";
} else if (cmd == "save") {
cnts.saveValue(cntr);
- os << "\\setcounter{" << lyxSaveCounter()
- << "}{\\value{" << cntr << "}}";
+ os << "\\setcounter{" << lyxSaveCounter()
+ << "}{\\value{" << latexname << "}}";
} else if (cmd == "restore") {
cnts.restoreValue(cntr);
- os << "\\setcounter{" << cntr
- << "{\\value{" << lyxSaveCounter() << "}}";
- } else if (cmd == "value") {
- os << "\\the" << cntr << "{}";
+ os << "\\setcounter{" << latexname
+ << "}{\\value{" << lyxSaveCounter() << "}}";
}
}
void InsetCounter::toString(odocstream & os) const
{
- os << "[Counter " << from_utf8(getCmdName()) << ": "
+ os << "[Counter " << from_utf8(getCmdName()) << ": "
<< getParam("counter") << "]";
}
}
-void InsetCounter::trackCounters(string const & cmd) const
-{
- Counters & cnts = buffer().params().documentClass().counters();
- docstring cntr = getParam("counter");
- if (cmd == "set") {
- docstring const & val = getParam("value");
- cnts.set(cntr, convert<int>(val));
- } else if (cmd == "addto") {
- docstring const & val = getParam("value");
- cnts.addto(cntr, convert<int>(val));
- } else if (cmd == "reset") {
- cnts.reset(cntr);
- } else if (cmd == "save") {
- cnts.saveValue(cntr);
- } else if (cmd == "restore") {
- cnts.restoreValue(cntr);
- }
-}
-
-
+#if 0
+// save this code until we get it working in InsetInfo
const map<string, string> InsetCounter::valueTable =
{
{"Roman", N_("Roman Uppercase")},
LATTEST(false);
return empty_docstring();
}
+#endif
+void InsetCounter::trackCounters(string const & cmd) const
+{
+ Counters & cnts = buffer().params().documentClass().counters();
+ docstring cntr = getParam("counter");
+ if (cmd == "set") {
+ docstring const & val = getParam("value");
+ cnts.set(cntr, convert<int>(val));
+ } else if (cmd == "addto") {
+ docstring const & val = getParam("value");
+ cnts.addto(cntr, convert<int>(val));
+ } else if (cmd == "reset") {
+ cnts.reset(cntr);
+ } else if (cmd == "save") {
+ cnts.saveValue(cntr);
+ } else if (cmd == "restore") {
+ cnts.restoreValue(cntr);
+ }
+}
-int InsetCounter::docbook(odocstream & os, OutputParams const &) const
+void InsetCounter::docbook(XMLStream &, OutputParams const &) const
{
// Here, we need to track counter values ourselves,
// since unlike in the LaTeX case, there is no external
// mechanism for doing that.
- string const cmd = getCmdName();
- if (cmd == "value") {
- docstring cntr = getParam("counter");
- Counters & cnts = buffer().params().documentClass().counters();
- if (cnts.hasCounter(cntr))
- os << cnts.value(cntr);
- } else
- trackCounters(cmd);
-
- return 0;
+ trackCounters(getCmdName());
}
-docstring InsetCounter::xhtml(XHTMLStream & xs, OutputParams const &) const
+docstring InsetCounter::xhtml(XMLStream &, OutputParams const &) const
{
// Here, we need to track counter values ourselves,
// since unlike in the LaTeX case, there is no external
// mechanism for doing that.
- string const cmd = getCmdName();
- if (cmd == "value") {
- docstring cntr = getParam("counter");
- Counters & cnts = buffer().params().documentClass().counters();
- if (cnts.hasCounter(cntr))
- xs << cnts.value(cntr);
- } else
- trackCounters(cmd);
-
+ trackCounters(getCmdName());
return docstring();
}
string const cmd = getCmdName();
docstring cntr = getParam("counter");
Counters & cnts = buffer().params().documentClass().counters();
- map<string, string>::const_iterator cit = counterTable.find(cmd);
- LASSERT(cit != counterTable.end(), return);
- string const label = cit->second;
+ string label;
+ for (auto & i : counterTable) {
+ if (i.first == cmd)
+ label = i.second;
+ }
+ LASSERT(!label.empty(), return);
docstring const tlabel = translateIfPossible(from_ascii(label));
+ docstring guiname = translateIfPossible(cnts.guiName(cntr));
if (cmd == "set") {
docstring const & val = getParam("value");
cnts.set(cntr, convert<int>(val));
- screen_label_ = bformat(_("Counter: Set %1$s"), cntr);
+ screen_label_ = bformat(_("Counter: Set %1$s"), guiname);
tooltip_ = bformat(_("Set value of counter %1$s to %2$s"), cntr, val);
} else if (cmd == "addto") {
docstring const & val = getParam("value");
cnts.addto(cntr, convert<int>(val));
- screen_label_ = bformat(_("Counter: Add to %1$s"), cntr);
- tooltip_ = bformat(_("Add to value of counter %1$s"), cntr);
+ screen_label_ = bformat(_("Counter: Add to %1$s"), guiname);
+ tooltip_ = bformat(_("Add %1$s to value of counter %2$s"), val, cntr);
} else if (cmd == "reset") {
- cnts.reset(cntr);
- screen_label_ = bformat(_("Counter: Reset %1$s"), cntr);
+ cnts.reset(cntr);
+ screen_label_ = bformat(_("Counter: Reset %1$s"), guiname);
tooltip_ = bformat(_("Reset value of counter %1$s"), cntr);
} else if (cmd == "save") {
cnts.saveValue(cntr);
- screen_label_ = bformat(_("Counter: Save %1$s"), cntr);
+ screen_label_ = bformat(_("Counter: Save %1$s"), guiname);
tooltip_ = bformat(_("Save value of counter %1$s"), cntr);
} else if (cmd == "restore") {
cnts.restoreValue(cntr);
- screen_label_ = bformat(_("Counter: Restore %1$s"), cntr);
+ screen_label_ = bformat(_("Counter: Restore %1$s"), guiname);
tooltip_ = bformat(_("Restore value of counter %1$s"), cntr);
- } else if (cmd == "value") {
- screen_label_ = bformat(_("Counter: Value %1$s"), cntr);
- tooltip_ = bformat(_("Print value of counter %1$s"), cntr);
}
-
}
}
-string InsetCounter::contextMenuName() const
-{
- return "context-counter";
+string InsetCounter::contextMenuName() const
+{
+ return "context-counter";
}
} // namespace lyx