#include "Lexer.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
+#include "output_xhtml.h"
#include "Text.h"
#include "support/debug.h"
+#include "support/docstream.h"
#include "support/gettext.h"
#include "support/lassert.h"
InsetVSpace::InsetVSpace(VSpace const & space)
- : space_(space)
+ : Inset(0), space_(space)
{}
-InsetVSpace::~InsetVSpace()
-{
- hideDialogs("vspace", this);
-}
-
-
void InsetVSpace::doDispatch(Cursor & cur, FuncRequest & cmd)
{
- switch (cmd.action) {
+ switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
- InsetVSpace::string2params(to_utf8(cmd.argument()), space_);
+ cur.recordUndo();
+ string arg = to_utf8(cmd.argument());
+ if (arg == "vspace custom")
+ arg = (space_.kind() == VSpace::LENGTH)
+ ? "vspace " + space_.length().asString()
+ : "vspace 1" + string(stringFromUnit(Length::defaultUnit()));
+ InsetVSpace::string2params(arg, space_);
break;
}
bool InsetVSpace::getStatus(Cursor & cur, FuncRequest const & cmd,
FuncStatus & status) const
{
- switch (cmd.action) {
+ switch (cmd.action()) {
// we handle these
case LFUN_INSET_MODIFY:
if (cmd.getArg(0) == "vspace") {
VSpace vspace;
- InsetVSpace::string2params(to_utf8(cmd.argument()), vspace);
+ string arg = to_utf8(cmd.argument());
+ if (arg == "vspace custom")
+ arg = (space_.kind() == VSpace::LENGTH)
+ ? "vspace " + space_.length().asString()
+ : "vspace 1" + string(stringFromUnit(Length::defaultUnit()));
+ InsetVSpace::string2params(arg, vspace);
status.setOnOff(vspace == space_);
}
status.setEnabled(true);
}
-bool InsetVSpace::showInsetDialog(BufferView * bv) const
-{
- bv->showDialog("vspace", params2string(space()),
- const_cast<InsetVSpace *>(this));
- return true;
-}
-
-
void InsetVSpace::read(Lexer & lex)
{
- LASSERT(lex.isOK(), /**/);
+ LASSERT(lex.isOK(), return);
string vsp;
lex >> vsp;
if (lex)
}
-int InsetVSpace::latex(odocstream & os, OutputParams const &) const
+void InsetVSpace::latex(otexstream & os, OutputParams const &) const
{
os << from_ascii(space_.asLatexCommand(buffer().params())) << '\n';
- return 1;
}
-int InsetVSpace::plaintext(odocstream & os, OutputParams const &) const
+int InsetVSpace::plaintext(odocstringstream & os,
+ OutputParams const &, size_t) const
{
os << "\n\n";
return PLAINTEXT_NEWLINE;
}
-int InsetVSpace::xhtml(odocstream & os, OutputParams const &) const
+docstring InsetVSpace::xhtml(XHTMLStream &, OutputParams const &) const
{
- string len = space_.asHTMLLength();
- if (len.empty()) {
- // we didn't understand it
- os << "<br />\n";
- return 0;
- }
- os << "<div style='height:" << from_ascii(len) << "'></div>\n";
- return 1;
+ odocstringstream ods;
+ XHTMLStream xds(ods);
+ string const len = space_.asHTMLLength();
+ string const attr = "style='height:" + (len.empty() ? "1em" : len) + "'";
+ xds << html::StartTag("div", attr, true) << html::EndTag("div");
+ return ods.str();
}
-docstring InsetVSpace::contextMenu(BufferView const &, int, int) const
+string InsetVSpace::contextMenuName() const
{
- return from_ascii("context-vspace");
+ return "context-vspace";
}