#include "math_colorinset.h"
#include "math_data.h"
#include "math_extern.h"
+#include "math_factory.h"
#include "math_hullinset.h"
#include "math_mathmlstream.h"
#include "math_streamstr.h"
//lyxerr << "sizeof MetricsInfo: " << sizeof(MetricsInfo) << endl;
//lyxerr << "sizeof MathCharInset: " << sizeof(MathCharInset) << endl;
//lyxerr << "sizeof LyXFont: " << sizeof(LyXFont) << endl;
+ initMath();
setDefaults();
}
: MathGridInset(getCols(type), 1), type_(type), nonum_(1), label_(1),
preview_(new RenderPreview(this))
{
+ initMath();
setDefaults();
}
if (nrows() <= 1 || !rowChangeOK())
return;
MathGridInset::delRow(row);
+ // The last dummy row has no number info nor a label.
+ // Test nrows() + 1 because we have already erased the row.
+ if (row == nrows() + 1)
+ row--;
nonum_.erase(nonum_.begin() + row);
label_.erase(label_.begin() + row);
}
}
-string MathHullInset::eolString(row_type row, bool fragile) const
+string MathHullInset::eolString(row_type row, bool emptyline, bool fragile) const
{
string res;
if (numberedType()) {
if (nonum_[row] && (type_ != "multline"))
res += "\\nonumber ";
}
- return res + MathGridInset::eolString(row, fragile);
+ return res + MathGridInset::eolString(row, emptyline, fragile);
}
void MathHullInset::doDispatch(LCursor & cur, FuncRequest & cmd)
{
+ //lyxerr << "action: " << cmd.action << endl;
switch (cmd.action) {
case LFUN_FINISHED_LEFT:
case LFUN_FINISHED_RIGHT:
case LFUN_FINISHED_UP:
case LFUN_FINISHED_DOWN:
+ //lyxerr << "action: " << cmd.action << endl;
MathGridInset::doDispatch(cur, cmd);
notifyCursorLeaves(cur);
+ cur.undispatched();
break;
case LFUN_BREAKPARAGRAPH:
string old_label = label(r);
string const default_label =
(lyxrc.label_init_length >= 0) ? "eq:" : "";
+ if (old_label.empty())
+ old_label = default_label;
string const contents = cmd.argument.empty() ?
- label(r) : cmd.argument;
+ old_label : cmd.argument;
InsetCommandParams p("label", contents);
string const data = InsetCommandMailer::params2string("label", p);
cur.bv().buffer()->changeRefsIfUnique(old, str);
label(r, str);
}
+ break;
}
+ MathArray ar;
+ if (createMathInset_fromDialogStr(cmd.argument, ar)) {
+ recordUndo(cur);
+ cur.insert(ar);
+ } else
+ cur.undispatched();
break;
}
FuncStatus & status) const
{
switch (cmd.action) {
- // These are only enabled inside tabular
+ case LFUN_FINISHED_LEFT:
+ case LFUN_FINISHED_RIGHT:
+ case LFUN_FINISHED_UP:
+ case LFUN_FINISHED_DOWN:
+ status.enabled(true);
+ return true;
case LFUN_BREAKLINE:
case LFUN_MATH_NUMBER:
case LFUN_MATH_NONUMBER:
case LFUN_INSERT_LABEL:
status.enabled(type_ != "simple");
return true;
+ case LFUN_INSET_INSERT: {
+ // Don't test createMathInset_fromDialogStr(), since
+ // getStatus is not called with a valid reference and the
+ // dialog would not be applyable.
+ string const name = cmd.getArg(0);
+ status.enabled(name == "ref" ||
+ (name == "label" && type_ != "simple"));
+ break;
+ }
case LFUN_TABULAR_FEATURE: {
istringstream is(cmd.argument);
string s;
default:
return MathGridInset::getStatus(cur, cmd, status);
}
+
+ // This cannot really happen, but inserted to shut-up gcc
+ return MathGridInset::getStatus(cur, cmd, status);
}
ms << "<graphic fileref=\"eqn/";
if ( !label(0).empty())
ms << sgml::cleanID(buf, runparams, label(0));
- else {
+ else
ms << sgml::uniqueID("anon");
- }
+
if (runparams.flavor == OutputParams::XML)
ms << "\"/>";
else
ms << ETag(name.c_str());
return ms.line() + res;
}
+
+
+int MathHullInset::textString(Buffer const & buf, ostream & os,
+ OutputParams const & op) const
+{
+ return plaintext(buf, os, op);
+}