]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/formulamacro.C
small cleanup, doxygen, formatting changes
[lyx.git] / src / mathed / formulamacro.C
index ac81cbaea6d8ab18bfc4d3c0b993767cf13acd03..be5a9c60f658ec18fbff2b7642d60a1c5451c0fa 100644 (file)
@@ -5,7 +5,7 @@
  *  Created:     January 1996
  *  Description: Allows the edition of math paragraphs inside Lyx. 
  *
- *  Copyright: (c) 1996, 1997 Alejandro Aguilar Sierra
+ *  Copyright: 1996, 1997 Alejandro Aguilar Sierra
  *
  *  Version: 0.4, Lyx project.
  *
  */
 
 #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 "lyx_cb.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);
 }
 
 
-void InsetFormulaMacro::Write(ostream & os) const
+void InsetFormulaMacro::Write(Buffer const *, ostream & os) const
 {
        os << "FormulaMacro ";
-       Latex(os, 0);
-}
-
-
-int InsetFormulaMacro::Latex(ostream & os, signed char /*fragile*/) const
-{
-    int ret = 1;
-    tmacro->WriteDef(os);
-    return ret;
+       tmacro->WriteDef(os, false);
 }
 
 
-int InsetFormulaMacro::Latex(string &file, signed char /*fragile*/) const
+int InsetFormulaMacro::Latex(Buffer const *, ostream & os, bool /*fragile*/, 
+                            bool /*free_spacing*/) const
 {
-    int ret = 1;
-    tmacro->WriteDef(file);
-    return ret;
+       tmacro->WriteDef(os, true); // or false?
+       return 2;
 }
 
 
-int InsetFormulaMacro::Linuxdoc(string &/*file*/) const
+int InsetFormulaMacro::Linuxdoc(Buffer const * buf, ostream & os) const
 {
-    return 0;
+       return Ascii(buf, os, 0);
 }
 
 
-int InsetFormulaMacro::DocBook(string &/*file*/) const
+int InsetFormulaMacro::DocBook(Buffer const * buf, ostream & os) const
 {
-    return 0;
+       return Ascii(buf, os, 0);
 }
 
 
-void InsetFormulaMacro::Read(LyXLex & lex)
+void InsetFormulaMacro::Read(Buffer const *, LyXLex & lex)
 {
        istream & is = lex.getStream();
        mathed_parser_file(is, lex.GetLineNo());   
@@ -111,57 +109,63 @@ void InsetFormulaMacro::Read(LyXLex & lex)
        MathMacroTable::mathMTable.addTemplate(tmacro);
        name = tmacro->GetName();
        par = tmacro;
+       // reading of end_inset in the inset!!!
+       while (lex.IsOK()) {
+               lex.nextToken();
+               if (lex.GetString() == "\\end_inset")
+                       break;
+       }
 }
 
 
-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 f.maxAscent()+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 f.maxDescent()+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 + f.stringWidth(ilabel);
+       if (opened) {
+               tmacro->update();
+               return InsetFormula::width(bv, f);
+       }
+       string ilabel(_("Macro: "));
+       ilabel += name;
+       return 6 + lyxfont::width(ilabel, f);
 }
 
 
-void InsetFormulaMacro::draw(Painter & pain, LyXFont const & f,
-                            int baseline, float & x) const
+void InsetFormulaMacro::draw(BufferView * bv, LyXFont const & f,
+                            int baseline, float & x, bool cleared) const
 {
+       Painter & pain = bv->painter();
        LyXFont font(f);
        tmacro->update();
        if (opened) {
                tmacro->setEditMode(true);
-               InsetFormula::draw(pain, font, baseline, x);
+               InsetFormula::draw(bv, font, baseline, x, cleared);
                tmacro->setEditMode(false);     
        } 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);
@@ -169,46 +173,55 @@ void InsetFormulaMacro::draw(Painter & pain, LyXFont const & f,
                string s(_("Macro: "));
                s += name;
                pain.text(int(x + 2), baseline, s, font);
-               x +=  width(pain, font) - 1;
+               x +=  width(bv, font) - 1;
        }
 }
 
 
-void InsetFormulaMacro::Edit(int x, int y)
+string const InsetFormulaMacro::EditMessage() const 
 {
-    opened = true;
-    par = static_cast<MathParInset*>(tmacro->Clone());
-    InsetFormula::Edit(x, y);
+       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);
 }
 
               
-void InsetFormulaMacro::InsetUnlock()
+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();
+       opened = false;
+       MathedArray * tarray = tmacro->GetData();
+       MathedIter it(tarray);
+       it.Clear();
+       tmacro->setData(par->GetData());
+       tmacro->setEditMode(false);
+       InsetFormula::InsetUnlock(bv);
 }
 
 
-bool InsetFormulaMacro::LocalDispatch(int action, char const * arg)
+UpdatableInset::RESULT
+InsetFormulaMacro::LocalDispatch(BufferView * bv,
+                                int action, string const & arg)
 {
-    if (action == LFUN_MATH_MACROARG) {
-       int i = atoi(arg) - 1;
-       if (i >= 0 && i < tmacro->getNoArgs()) {
-           mathcursor->Insert(tmacro->getMacroPar(i), LM_TC_INSET);
-           InsetFormula::UpdateLocal();
-       }
+       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 true;
-    }
-    tmacro->setEditMode(true);
-    tmacro->Metrics();
-    bool result = InsetFormula::LocalDispatch(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;
 }