#include <config.h>
#include "formulamacro.h"
-#include "math_cursor.h"
#include "math_macrotable.h"
#include "math_macrotemplate.h"
#include "math_mathmlstream.h"
+#include "BufferView.h"
+#include "cursor.h"
+#include "debug.h"
#include "gettext.h"
-#include "latexrunparams.h"
#include "LColor.h"
#include "lyxlex.h"
+#include "outputparams.h"
#include "frontends/Painter.h"
#include "frontends/font_metrics.h"
#include "support/lstrings.h"
-#include "support/std_sstream.h"
+
+#include <sstream>
using lyx::support::bformat;
using std::string;
using std::auto_ptr;
using std::ostream;
+using std::endl;
-extern MathCursor * mathcursor;
-
InsetFormulaMacro::InsetFormulaMacro()
-{
- // inset name is inherited from Inset
- setInsetName("unknown");
-}
+ : MathNestInset(2), name_("unknownA")
+{}
InsetFormulaMacro::InsetFormulaMacro
- (string const & name, int nargs, string const & type)
+ (string const & name, int nargs, string const & type)
+ : MathNestInset(2), name_(name)
{
- setInsetName(name);
MathMacroTable::create(MathAtom(new MathMacroTemplate(name, nargs, type)));
}
InsetFormulaMacro::InsetFormulaMacro(string const & s)
+ : MathNestInset(2), name_("unknownB")
{
std::istringstream is(s);
read(is);
void InsetFormulaMacro::write(Buffer const &, ostream & os) const
{
- os << "FormulaMacro ";
+ os << "FormulaMacro\n";
WriteStream wi(os, false, false);
- par()->write(wi);
+ tmpl()->write(wi);
}
int InsetFormulaMacro::latex(Buffer const &, ostream & os,
- LatexRunParams const & runparams) const
+ OutputParams const & runparams) const
{
+ //lyxerr << "InsetFormulaMacro::latex" << endl;
WriteStream wi(os, runparams.moving_arg, true);
- par()->write(wi);
+ tmpl()->write(wi);
return 2;
}
-int InsetFormulaMacro::ascii(Buffer const &, ostream & os,
- LatexRunParams const &) const
+int InsetFormulaMacro::plaintext(Buffer const &, ostream & os,
+ OutputParams const &) const
{
WriteStream wi(os, false, true);
- par()->write(wi);
+ tmpl()->write(wi);
return 0;
}
int InsetFormulaMacro::linuxdoc(Buffer const & buf, ostream & os,
- LatexRunParams const & runparams) const
+ OutputParams const & runparams) const
{
- return ascii(buf, os, runparams);
+ return plaintext(buf, os, runparams);
}
int InsetFormulaMacro::docbook(Buffer const & buf, ostream & os,
- LatexRunParams const & runparams) const
+ OutputParams const & runparams) const
{
- return ascii(buf, os, runparams);
+ return plaintext(buf, os, runparams);
}
void InsetFormulaMacro::read(std::istream & is)
{
auto_ptr<MathMacroTemplate> p(new MathMacroTemplate(is));
- setInsetName(p->name());
+ name_ = p->name();
MathMacroTable::create(MathAtom(p.release()));
- //metrics();
}
string InsetFormulaMacro::prefix() const
{
- return bformat(_(" Macro: %1$s: "), getInsetName());
+ return bformat(_(" Macro: %1$s: "), name_);
}
void InsetFormulaMacro::metrics(MetricsInfo & mi, Dimension & dim) const
{
- par()->metrics(mi, dim_);
- dim_.asc += 5;
- dim_.des += 5;
- dim_.wid += 10 + font_metrics::width(prefix(), mi.base.font);
- dim = dim_;
-}
-
-
-MathAtom const & InsetFormulaMacro::par() const
-{
- return MathMacroTable::provide(getInsetName());
-}
-
-
-MathAtom & InsetFormulaMacro::par()
-{
- return MathMacroTable::provide(getInsetName());
-}
-
-
-InsetOld::Code InsetFormulaMacro::lyxCode() const
-{
- return InsetOld::MATHMACRO_CODE;
+ //lyxerr << "InsetFormulaMacro: " << this << " -- " << &tmpl() << endl;
+ tmpl()->metrics(mi, dim);
+ dim.asc += 5;
+ dim.des += 5;
+ dim.wid += 10 + font_metrics::width(prefix(), mi.base.font);
+ dim_ = dim;
}
LyXFont font = p.base.font;
font.setColor(LColor::math);
- PainterInfo pi(p.base.bv);
+ PainterInfo pi(p.base.bv, p.pain);
pi.base.style = LM_ST_TEXT;
pi.base.font = font;
pi.pain.fillRectangle(x, a, w, h, LColor::mathmacrobg);
pi.pain.rectangle(x, a, w, h, LColor::mathframe);
- if (mathcursor &&
- const_cast<InsetFormulaBase const *>(mathcursor->formula()) == this)
- mathcursor->drawSelection(pi);
+#ifdef WITH_WARNINGS
+#warning FIXME
+#endif
+#if 0
+ LCursor & cur = p.base.bv->cursor();
+ if (cur.isInside(this))
+ cur.drawSelection(pi);
+#endif
pi.pain.text(x + 2, y, prefix(), font);
- // formula
- par()->draw(pi, x + font_metrics::width(prefix(), p.base.font) + 5, y);
- xo_ = x;
- yo_ = y;
+ // body
+ tmpl()->draw(pi, x + font_metrics::width(prefix(), p.base.font) + 5, y);
+
+ setPosCache(pi, x, y);
+}
+
+
+MathAtom & InsetFormulaMacro::tmpl() const
+{
+ return MathMacroTable::provide(name_);
}