]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_inset.h
fix #1073
[lyx.git] / src / mathed / math_inset.h
index 680955197d734708c950283221566b3f688e8a43..2bd1a232330fc5fb0d8be22a503b3805e9b37116 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/*
+/**
  *  File:        math_inset.h
  *  Purpose:     Declaration of insets for mathed
  *  Author:      Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
 #ifndef MATH_INSET_H
 #define MATH_INSET_H
 
-#include <config.h>
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include <config.h>
 
 #include "LString.h"
 #include "frontends/mouse_state.h"
+#include "insets/insetbase.h"
 #include "math_data.h"
 
 /**
@@ -53,6 +51,7 @@ class MathCharInset;
 class MathDelimInset;
 class MathGridInset;
 class MathFracInset;
+class MathFontInset;
 class MathHullInset;
 class MathMatrixInset;
 class MathNestInset;
@@ -63,11 +62,12 @@ class MathSpaceInset;
 class MathSymbolInset;
 class MathUnknownInset;
 
-class InsetRef;
+class RefInset;
 
 class NormalStream;
 class OctaveStream;
 class MapleStream;
+class MaximaStream;
 class MathematicaStream;
 class MathMLStream;
 class WriteStream;
@@ -83,7 +83,7 @@ class Dimension;
 class FuncRequest;
 
 
-class MathInset {
+class MathInset : public InsetBase {
 public:
        /// short of anything else reasonable
        typedef MathArray::size_type        size_type;
@@ -100,8 +100,6 @@ public:
 
        /// our members behave nicely...
        MathInset() {}
-       /// the virtual base destructor
-       virtual ~MathInset() {}
 
        /// reproduce itself
        virtual MathInset * clone() const = 0;
@@ -109,11 +107,11 @@ public:
        virtual void substitute(MathMacro const & macro);
        /// compute the size of the object, sets ascend_, descend_ and width_
        // updates the (xo,yo)-caches of all contained cells
-       virtual void metrics(MathMetricsInfo & mi) const;
+       virtual void metrics(MetricsInfo & mi) const;
        /// draw the object
-       virtual void draw(MathPainterInfo & pi, int x, int y) const;
+       virtual void draw(PainterInfo & pi, int x, int y) const;
        /// draw selection between two positions
-       virtual void drawSelection(MathPainterInfo & pi,
+       virtual void drawSelection(PainterInfo & pi,
                idx_type idx1, pos_type pos1, idx_type idx2, pos_type pos2) const;
        /// the ascent of the inset above the baseline
        /// compute the size of the object for text based drawing
@@ -134,6 +132,9 @@ public:
        /// Where should we go when we press the up or down cursor key?
        virtual bool idxUpDown(idx_type & idx, pos_type & pos, bool up,
                int targetx) const;
+       /// Where should we go when we press the up or down cursor key?
+       virtual bool idxUpDown2(idx_type & idx, pos_type & pos, bool up,
+               int targetx) const;
        /// The left key
        virtual bool idxLeft(idx_type & idx, pos_type & pos) const;
        /// The right key
@@ -199,6 +200,8 @@ public:
        virtual MathDelimInset const    * asDelimInset() const    { return 0; }
        virtual MathFracInset           * asFracInset()           { return 0; }
        virtual MathFracInset const     * asFracInset() const     { return 0; }
+       virtual MathFontInset           * asFontInset()           { return 0; }
+       virtual MathFontInset const     * asFontInset() const     { return 0; }
        virtual MathGridInset           * asGridInset()           { return 0; }
        virtual MathGridInset const     * asGridInset() const     { return 0; }
        virtual MathHullInset           * asHullInset()           { return 0; }
@@ -218,7 +221,7 @@ public:
        virtual MathSymbolInset const   * asSymbolInset() const   { return 0; }
        virtual MathUnknownInset        * asUnknownInset()        { return 0; }
        virtual MathUnknownInset const  * asUnknownInset() const  { return 0; }
-       virtual InsetRef                * asInsetRef()            { return 0; }
+       virtual RefInset                * asRefInset()            { return 0; }
 
        /// identifies things that can get scripts
        virtual bool isScriptable() const { return false; }
@@ -227,13 +230,7 @@ public:
        /// is the a relational operator (used for splitting equations)
        virtual bool isRelOp() const { return false; }
        /// -1: text mode, 1: math mode, 0 undecided
-       enum mode_type {UNDECIDED_MODE, TEXT_MODE, MATH_MODE, VERBATIM_MODE};
-       /// Dispatch result codes, see inset/inset.h
-       enum result_type {
-               UNDISPATCHED = 0, DISPATCHED, DISPATCHED_NOUPDATE,
-               FINISHED, FINISHED_RIGHT, FINISHED_UP, FINISHED_DOWN,
-               DISPATCHED_POP
-       };
+       enum mode_type {UNDECIDED_MODE, TEXT_MODE, MATH_MODE};
 
        virtual mode_type currentMode() const { return UNDECIDED_MODE; }
        /// will this get written as a single block in {..}
@@ -262,22 +259,26 @@ public:
        /// access to the lock (only nest array have one)
        virtual void lock(bool) {}
        /// get notification when the cursor leaves this inset
-       virtual void notifyCursorLeaves() {}
+       virtual void notifyCursorLeaves(idx_type) {}
 
        /// write LaTeX and Lyx code
        virtual void write(WriteStream & os) const;
        /// write normalized content
        virtual void normalize(NormalStream &) const;
        /// write content as something readable by Maple
-       virtual void maplize(MapleStream &) const;
+       virtual void maple(MapleStream &) const;
+       /// write content as something readable by Maxima
+       virtual void maxima(MaximaStream &) const;
        /// write content as something readable by Mathematica
-       virtual void mathematicize(MathematicaStream &) const;
+       virtual void mathematica(MathematicaStream &) const;
        /// write content as something resembling MathML
        virtual void mathmlize(MathMLStream &) const;
        /// write content as something readable by Octave
-       virtual void octavize(OctaveStream &) const;
-       /// describe content
+       virtual void octave(OctaveStream &) const;
+       /// describe content if cursor inside
        virtual void infoize(std::ostream &) const {}
+       /// describe content if cursor behind
+       virtual void infoize2(std::ostream &) const {}
        /// plain ascii output
        virtual int ascii(std::ostream & os, int) const;
        /// linuxdoc output
@@ -287,9 +288,6 @@ public:
 
        /// dump content to stderr for debugging
        virtual void dump() const;
-       /// local dispatcher
-       virtual result_type dispatch
-               (FuncRequest const & cmd, idx_type & idx, pos_type & pos);
 
        /// LyXInset stuff
        /// write labels into a list
@@ -304,19 +302,20 @@ public:
        virtual string fileInsetLabel() const { return "Formula"; }
        /// usually the latex name
        virtual string name() const;
+
+protected:
+       /// a dirty hack
+       BufferView * view() const;
 };
 
 std::ostream & operator<<(std::ostream &, MathAtom const &);
 
+// converts single cell to string
 string asString(MathArray const & ar);
+// converts string to single cell
 MathArray asArray(string const & str);
-void initMath();
 
-/// here to ssave a few includes in the insets
-class Dialogs;
-class LyXFunc;
-
-Dialogs & getDialogs();
-LyXFunc & getLyXFunc();
+// initialize math
+void initMath();
 
 #endif