*
* \author Angus Leeming
* \author Martin Vermeer
- * \author Jürgen Spitzmüller
+ * \author Jürgen Spitzmüller
*
* Full author contact details are available in file CREDITS.
*/
#include "DispatchResult.h"
#include "FuncStatus.h"
#include "FuncRequest.h"
-#include "support/gettext.h"
#include "LaTeXFeatures.h"
#include "Lexer.h"
#include "MetricsInfo.h"
#include "TextClass.h"
#include "support/debug.h"
+#include "support/docstream.h"
+#include "support/gettext.h"
+#include "support/lstrings.h"
#include "support/Translator.h"
#include "frontends/Application.h"
#include <sstream>
using namespace std;
+using namespace lyx::support;
namespace lyx {
InsetBox::InsetBox(Buffer const & buffer, string const & label)
: InsetCollapsable(buffer), params_(label)
-{
- if (forceEmptyLayout())
- paragraphs().back().setLayout(buffer.params().documentClass().emptyLayout());
-}
+{}
InsetBox::~InsetBox()
void InsetBox::setButtonLabel()
{
- BoxType btype = boxtranslator().find(params_.type);
+ BoxType const btype = boxtranslator().find(params_.type);
- docstring label;
- label += _("Box");
- label += " (";
- if (btype == Frameless) {
+ docstring const type = _("Box");
+
+ docstring inner;
+ if (params_.inner_box) {
if (params_.use_parbox)
- label += _("Parbox");
+ inner = _("Parbox");
else
- label += _("Minipage");
- } else {
- label += boxtranslator_loc().find(btype);
+ inner = _("Minipage");
}
- label += ")";
+ docstring frame;
+ if (btype != Frameless)
+ frame = boxtranslator_loc().find(btype);
+
+ docstring label;
+ if (inner.empty() && frame.empty())
+ label = type;
+ else if (inner.empty())
+ label = bformat(_("%1$s (%2$s)"),
+ type, frame);
+ else if (frame.empty())
+ label = bformat(_("%1$s (%2$s)"),
+ type, inner);
+ else
+ label = bformat(_("%1$s (%2$s, %3$s)"),
+ type, inner, frame);
setLabel(label);
}
}
-bool InsetBox::forceEmptyLayout(idx_type) const
+bool InsetBox::forcePlainLayout(idx_type) const
{
return !params_.inner_box && params_.type != "Framed";
}
params_.type = cmd.getArg(1);
else
string2params(to_utf8(cmd.argument()), params_);
- setLayout(cur.buffer().params());
+ setLayout();
break;
}
os << "\\framebox";
if (!params_.inner_box) {
os << "{\\makebox";
- // Special widths, see usrguide §3.5
+ // Special widths, see usrguide §3.5
// FIXME UNICODE
if (params_.special != "none") {
os << "[" << params_.width.value()
}
+docstring InsetBox::xhtml(odocstream &, OutputParams const & runparams) const
+{
+ string style;
+ if (!params_.width.empty())
+ style += ("width: " + params_.width.asHTMLString() + ";");
+ if (!params_.height.empty())
+ style += ("height: " + params_.height.asHTMLString() + ";");
+
+ docstring retval = from_ascii("<div class='" + params_.type + "'");
+ if (!style.empty())
+ retval += from_ascii(" style='" + style + "'");
+ retval += ">\n";
+ odocstringstream os;
+ docstring defer = InsetText::xhtml(os, runparams);
+ retval += os.str();
+ retval += "</div>\n";
+ retval += defer + "\n";
+ return retval;
+}
+
+
void InsetBox::validate(LaTeXFeatures & features) const
{
BoxType btype = boxtranslator().find(params_.type);
features.require("framed");
break;
}
- InsetText::validate(features);
+ InsetCollapsable::validate(features);
}