#include "FuncRequest.h"
#include "InsetLabel.h"
#include "LaTeXFeatures.h"
-#include "LyXFunc.h"
+#include "LyX.h"
#include "OutputParams.h"
#include "output_xhtml.h"
#include "ParIterator.h"
static ParamInfo param_info_;
if (param_info_.empty()) {
param_info_.add("name", ParamInfo::LATEX_OPTIONAL);
- param_info_.add("reference", ParamInfo::LATEX_REQUIRED);
+ param_info_.add("reference", ParamInfo::LATEX_REQUIRED,
+ ParamInfo::HANDLING_ESCAPE);
}
return param_info_;
}
-docstring InsetRef::screenLabel() const
-{
- return screen_label_;
-}
-
-
-int InsetRef::latex(odocstream & os, OutputParams const &) const
+int InsetRef::latex(odocstream & os, OutputParams const & runparams) const
{
// We don't want to output p_["name"], since that is only used
// in docbook. So we construct new params, without it, and use that.
InsetCommandParams p(REF_CODE, getCmdName());
p["reference"] = getParam("reference");
- os << escape(p.getCommand());
+ os << p.getCommand(runparams);
return 0;
}
if (il && !il->counterValue().empty()) {
// Try to construct a label from the InsetLabel we reference.
- docstring const & cntr = il->activeCounter();
docstring const & value = il->counterValue();
if (cmd == "ref")
display_string = value;
else if (cmd == "vref")
- display_string = bformat(from_ascii("%1$s on page ##"), value);
+ // normally, would be "ref on page #", but we have no pages
+ display_string = value;
else if (cmd == "pageref" || cmd == "vpageref")
- display_string = _("on page ##");
+ // normally would be "on page #", but we have no pages
+ display_string = _("elsewhere");
else if (cmd == "eqref")
display_string = bformat(from_ascii("equation (%1$s)"), value);
else { // "prettyref"
- docstring cntrname = translateIfPossible(cntr);
- // FIXME Use the label string, if we have it. Otherwise, do this.
- display_string = bformat(from_ascii("%1$s %2$s"), cntrname, value);
+ display_string = il->prettyCounter();
}
} else
display_string = ref;
}
-void InsetRef::updateLabels(ParIterator const & it, UpdateType)
+void InsetRef::updateBuffer(ParIterator const & it, UpdateType)
{
- docstring const & label = getParam("reference");
+ docstring const & ref = getParam("reference");
// register this inset into the buffer reference cache.
- buffer().references(label).push_back(make_pair(this, it));
+ buffer().references(ref).push_back(make_pair(this, it));
+ docstring label;
for (int i = 0; !types[i].latex_name.empty(); ++i) {
if (getCmdName() == types[i].latex_name) {
- screen_label_ = _(types[i].short_gui_name);
+ label = _(types[i].short_gui_name);
break;
}
}
- screen_label_ += label;
+ label += ref;
if (!isLatex && !getParam("name").empty()) {
- screen_label_ += "||";
- screen_label_ += getParam("name");
+ label += "||";
+ label += getParam("name");
+ }
+
+ screen_label_ = label;
+ bool shortened = false;
+ unsigned int const maxLabelChars = 24;
+ if (screen_label_.size() > maxLabelChars) {
+ screen_label_.erase(maxLabelChars - 3);
+ screen_label_ += "...";
+ shortened = true;
}
+ if (shortened)
+ tooltip_ = label;
+ else
+ tooltip_ = from_ascii("");
}
{ "pageref", N_("Page Number"), N_("Page: ")},
{ "vpageref", N_("Textual Page Number"), N_("TextPage: ")},
{ "vref", N_("Standard+Textual Page"), N_("Ref+Text: ")},
- { "prettyref", N_("PrettyRef"), N_("FormatRef: ")},
+ { "prettyref", N_("PrettyRef"), N_("FrmtRef: ")},
{ "", "", "" }
};