*/
#include <config.h>
-#include <cstdlib>
#ifdef __GNUG__
-#pragma implementation "formulamacro.h"
+#pragma implementation
#endif
#include "formulamacro.h"
#include "math_cursor.h"
#include "math_parser.h"
#include "math_macro.h"
+#include "math_macrotable.h"
+#include "math_macrotemplate.h"
#include "lyx_main.h"
#include "BufferView.h"
#include "gettext.h"
#include "Painter.h"
#include "font.h"
+#include "support/lyxlib.h"
+#include "mathed/support.h"
+#include "support/LOstream.h"
using std::ostream;
using std::istream;
InsetFormulaMacro::InsetFormulaMacro()
- : InsetFormula(true)
+ : InsetFormula(true)
{
- tmacro = 0;
- opened = false;
+ tmacro = 0;
+ opened = false;
}
InsetFormulaMacro::InsetFormulaMacro(string nm, int na, bool /*e*/)
: InsetFormula(true), name(nm)
{
- tmacro = MathMacroTable::mathMTable.getTemplate(name.c_str());
- if (!tmacro) {
- tmacro = new MathMacroTemplate(name.c_str(), na);
- MathMacroTable::mathMTable.addTemplate(tmacro);
- }
- opened = false;
+ tmacro = MathMacroTable::mathMTable.getTemplate(name);
+ if (!tmacro) {
+ tmacro = new MathMacroTemplate(name.c_str(), na);
+ MathMacroTable::mathMTable.addTemplate(tmacro);
+ }
+ opened = false;
}
InsetFormulaMacro::~InsetFormulaMacro()
{
- par = 0;
+ par = 0;
}
-Inset * InsetFormulaMacro::Clone() const
+Inset * InsetFormulaMacro::Clone(Buffer const &) const
{
- return new InsetFormulaMacro(name);
+ return new InsetFormulaMacro(name);
}
bool /*free_spacing*/) const
{
tmacro->WriteDef(os, true); // or false?
- return 1;
+ return 2;
}
int InsetFormulaMacro::Linuxdoc(Buffer const * buf, ostream & os) const
{
- return Ascii(buf, os);
+ return Ascii(buf, os, 0);
}
int InsetFormulaMacro::DocBook(Buffer const * buf, ostream & os) const
{
- return Ascii(buf, os);
+ return Ascii(buf, os, 0);
}
}
-int InsetFormulaMacro::ascent(Painter & pain, LyXFont const & f) const
+int InsetFormulaMacro::ascent(BufferView * pain, LyXFont const & f) const
{
- if (opened) {
- tmacro->update();
- return InsetFormula::ascent(pain, f);
- }
- return lyxfont::maxAscent(f) + 3;
+ if (opened) {
+ tmacro->update();
+ return InsetFormula::ascent(pain, f);
+ }
+ return lyxfont::maxAscent(f) + 3;
}
-int InsetFormulaMacro::descent(Painter & pain, LyXFont const & f) const
+int InsetFormulaMacro::descent(BufferView * pain, LyXFont const & f) const
{
- if (opened) {
- tmacro->update();
- return InsetFormula::descent(pain, f);
- }
- return lyxfont::maxDescent(f) + 1;
+ if (opened) {
+ tmacro->update();
+ return InsetFormula::descent(pain, f);
+ }
+ return lyxfont::maxDescent(f) + 1;
}
-int InsetFormulaMacro::width(Painter & pain, LyXFont const & f) const
+int InsetFormulaMacro::width(BufferView * bv, LyXFont const & f) const
{
- if (opened) {
- tmacro->update();
- return InsetFormula::width(pain, f);
- }
- string ilabel(_("Macro: "));
- ilabel += name;
- return 6 + lyxfont::width(ilabel, f);
+ if (opened) {
+ tmacro->update();
+ return InsetFormula::width(bv, f);
+ }
+ string ilabel(_("Macro: "));
+ ilabel += name;
+ return 6 + lyxfont::width(ilabel, f);
}
} else {
font.setColor(LColor::math);
- int y = baseline - ascent(pain, font) + 1;
- int w = width(pain, font) - 2;
- int h = (ascent(pain, font) + descent(pain, font) - 2);
-
+ int const y = baseline - ascent(bv, font) + 1;
+ int const w = width(bv, font) - 2;
+ int const h = (ascent(bv, font) + descent(bv, font) - 2);
pain.fillRectangle(int(x), y, w, h, LColor::mathbg);
pain.rectangle(int(x), y, w, h, LColor::mathframe);
string s(_("Macro: "));
s += name;
pain.text(int(x + 2), baseline, s, font);
- x += width(pain, font) - 1;
+ x += width(bv, font) - 1;
}
}
-char const * InsetFormulaMacro::EditMessage() const
+string const InsetFormulaMacro::EditMessage() const
{
return _("Math macro editor mode");
}
void InsetFormulaMacro::Edit(BufferView * bv, int x, int y,unsigned int button)
{
- opened = true;
- par = static_cast<MathParInset*>(tmacro->Clone());
- InsetFormula::Edit(bv, x, y, button);
+ opened = true;
+ par = static_cast<MathParInset*>(tmacro->Clone());
+ InsetFormula::Edit(bv, x, y, button);
}
void InsetFormulaMacro::InsetUnlock(BufferView * bv)
{
- opened = false;
- LyxArrayBase * tarray = tmacro->GetData();
- MathedIter it(tarray);
- it.Clear();
- tmacro->SetData(par->GetData());
- tmacro->setEditMode(false);
- InsetFormula::InsetUnlock(bv);
+ opened = false;
+ MathedArray * tarray = tmacro->GetData();
+ MathedIter it(tarray);
+ it.Clear();
+ tmacro->setData(par->GetData());
+ tmacro->setEditMode(false);
+ InsetFormula::InsetUnlock(bv);
}
InsetFormulaMacro::LocalDispatch(BufferView * bv,
int action, string const & arg)
{
- if (action == LFUN_MATH_MACROARG) {
- int i = atoi(arg.c_str()) - 1;
- if (i >= 0 && i < tmacro->getNoArgs()) {
- mathcursor->Insert(tmacro->getMacroPar(i), LM_TC_INSET);
- InsetFormula::UpdateLocal(bv);
- }
+ if (action == LFUN_MATH_MACROARG) {
+ int i = lyx::atoi(arg) - 1;
+ if (i >= 0 && i < tmacro->getNoArgs()) {
+ mathcursor->Insert(tmacro->getMacroPar(i),
+ LM_TC_INSET);
+ InsetFormula::UpdateLocal(bv);
+ }
- return DISPATCHED;
- }
- tmacro->setEditMode(true);
- tmacro->Metrics();
- RESULT result = InsetFormula::LocalDispatch(bv, action, arg);
- tmacro->setEditMode(false);
+ return DISPATCHED;
+ }
+ tmacro->setEditMode(true);
+ tmacro->Metrics();
+ RESULT result = InsetFormula::LocalDispatch(bv, action, arg);
+ tmacro->setEditMode(false);
- return result;
+ return result;
}