* Licence details can be found in the file COPYING.
*
* \author various
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "Lexer.h"
-#include "Text.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
+#include "output_xhtml.h"
+#include "Text.h"
-#include "support/lassert.h"
#include "support/debug.h"
+#include "support/docstream.h"
#include "support/gettext.h"
+#include "support/lassert.h"
#include "frontends/Application.h"
#include "frontends/FontMetrics.h"
InsetVSpace::InsetVSpace(VSpace const & space)
- : space_(space)
+ : Inset(0), space_(space)
{}
break;
}
- case LFUN_MOUSE_RELEASE:
- if (!cur.selection() && cmd.button() == mouse_button::button1)
- cur.bv().showDialog("vspace", params2string(space()),
- const_cast<InsetVSpace *>(this));
- break;
-
default:
Inset::doDispatch(cur, cmd);
break;
InsetVSpace::string2params(to_utf8(cmd.argument()), vspace);
status.setOnOff(vspace == space_);
}
- status.enabled(true);
+ status.setEnabled(true);
return true;
+
default:
return Inset::getStatus(cur, cmd, status);
}
}
-void InsetVSpace::edit(Cursor & cur, bool, EntryDirection)
+bool InsetVSpace::showInsetDialog(BufferView * bv) const
{
- cur.bv().showDialog("vspace", params2string(space()),
+ bv->showDialog("vspace", params2string(space()),
const_cast<InsetVSpace *>(this));
+ return true;
}
namespace {
-int const arrow_size = 4;
+int const vspace_arrow_size = 4;
}
void InsetVSpace::metrics(MetricsInfo & mi, Dimension & dim) const
{
- int height = 3 * arrow_size;
+ int height = 3 * vspace_arrow_size;
if (space_.length().len().value() >= 0.0)
height = max(height, space_.inPixels(*mi.base.bv));
dim.asc = height / 2 + (a - d) / 2; // align cursor with the
dim.des = height - dim.asc; // label text
- dim.wid = ADD_TO_VSPACE_WIDTH + 2 * arrow_size + 5 + w;
+ dim.wid = ADD_TO_VSPACE_WIDTH + 2 * vspace_arrow_size + 5 + w;
// Cache the inset dimension.
setDimCache(mi, dim);
}
// adding or removing space
bool const added = space_.kind() != VSpace::LENGTH ||
space_.length().len().value() >= 0.0;
- ty1 = added ? (start + arrow_size) : start;
- ty2 = added ? start : (start + arrow_size);
- by1 = added ? (end - arrow_size) : end;
- by2 = added ? end : (end - arrow_size);
+ ty1 = added ? (start + vspace_arrow_size) : start;
+ ty2 = added ? start : (start + vspace_arrow_size);
+ by1 = added ? (end - vspace_arrow_size) : end;
+ by2 = added ? end : (end - vspace_arrow_size);
}
- int const midx = x + arrow_size;
- int const rightx = midx + arrow_size;
+ int const midx = x + vspace_arrow_size;
+ int const rightx = midx + vspace_arrow_size;
// first the string
int w = 0;
docstring const lab = label();
theFontMetrics(font).rectText(lab, w, a, d);
- pi.pain.rectText(x + 2 * arrow_size + 5,
+ pi.pain.rectText(x + 2 * vspace_arrow_size + 5,
start + (end - start) / 2 + (a - d) / 2,
lab, font, Color_none, Color_none);
}
+docstring InsetVSpace::xhtml(XHTMLStream &, OutputParams const &) const
+{
+ odocstringstream ods;
+ XHTMLStream xds(ods);
+ string const len = space_.asHTMLLength();
+ string const attr = "style='height:" + (len.empty() ? "1em" : len) + "'";
+ xds << StartTag("div", attr, true) << EndTag("div");
+ return ods.str();
+}
+
+
docstring InsetVSpace::contextMenu(BufferView const &, int, int) const
{
return from_ascii("context-vspace");