]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_nestinset.h
remove unneeded member
[lyx.git] / src / mathed / math_nestinset.h
index f2f37a22aef401f8fcfd88a95f4f40fbd2a57d42..dfe7c3f0e37d2ed002067002e97dca94ea9b88e5 100644 (file)
 
 #include "math_diminset.h"
 
-/** Abstract base class for all math objects that conatin nested items.
+/** Abstract base class for all math objects that contain nested items.
+    This is basically everything that is not a single character or a
+    single symbol.
 */
 
 
 class LaTeXFeatures;
 
 class MathNestInset : public MathDimInset {
-public: 
-       ///
-       explicit MathNestInset(int na = 0, string const & nm = string());
-
-       /// draw the object, sets xo_ and yo_ cached values 
-       virtual void draw(Painter &, int x, int baseline);
+public:
+       /// nestinsets have a fixed size to start with
+       explicit MathNestInset(idx_type ncells);
+
+       /// the size is usuall some sort of convex hull of the cells
+       void metrics(MathMetricsInfo const & mi) const;
+       /// add space for markers
+       void metricsMarkers() const;
+       /// add space for markers
+       void metricsMarkers2() const;
+       /// draw background if locked
+       void draw(MathPainterInfo & pi, int x, int y) const;
+       /// draw two angular markers
+       void drawMarkers(MathPainterInfo & pi, int x, int y) const;
+       /// draw four angular markers
+       void drawMarkers2(MathPainterInfo & pi, int x, int y) const;
        /// appends itself with macro arguments substituted
-       virtual void substitute(MathArray & array, MathMacro const & macro) const;
-       /// compute the size of the object, sets ascend_, descend_ and width_
-       virtual void metrics(MathStyles st) = 0;
-
-       /// The left key
-       virtual bool idxLeft(int & idx, int & pos) const;
-       /// The right key
-       virtual bool idxRight(int & idx, int & pos) const;
-
-       /// Move one physical cell up
-       virtual bool idxNext(int & idx, int & pos) const;
-       /// Move one physical cell down
-       virtual bool idxPrev(int & idx, int & pos) const;
-
-       /// Target pos when we enter the inset from the left by pressing "Right"
-       virtual bool idxFirst(int & idx, int & pos) const;
-       /// Target pos when we enter the inset from the right by pressing "Left"
-       virtual bool idxLast(int & idx, int & pos) const;
-
-       /// Where should we go if we press home?
-       virtual bool idxHome(int & idx, int & pos) const;
-       /// Where should we go if we press end?
-       virtual bool idxEnd(int & idx, int & pos) const;
-
-       ///
-       int nargs() const;
-
-       ///
-       MathArray & cell(int);
-       ///
-       MathArray const & cell(int) const;
-       ///
-       MathXArray & xcell(int);
-       ///
-       MathXArray const & xcell(int) const;
-                       
-       ///
-       bool isActive() const { return nargs() > 0; }
-       ///
-       void push_back(MathInset *);
-       ///
-       void push_back(unsigned char ch, MathTextCodes fcode);
-       ///
-       void dump() const;
-
-       ///
+       void substitute(MathMacro const & macro);
+       /// identifies NestInsets
+       MathNestInset * asNestInset() { return this; }
+
+       /// order of movement through the cells when pressing the left key
+       bool idxLeft(idx_type & idx, pos_type & pos) const;
+       /// order of movement through the cells when pressing the right key
+       bool idxRight(idx_type & idx, pos_type & pos) const;
+
+       /// move one physical cell up
+       bool idxNext(idx_type & idx, pos_type & pos) const;
+       /// move one physical cell down
+       bool idxPrev(idx_type & idx, pos_type & pos) const;
+
+       /// target pos when we enter the inset from the left by pressing "Right"
+       bool idxFirst(idx_type & idx, pos_type & pos) const;
+       /// target pos when we enter the inset from the right by pressing "Left"
+       bool idxLast(idx_type & idx, pos_type & pos) const;
+
+       /// where should we go if we press home?
+       bool idxHome(idx_type & idx, pos_type & pos) const;
+       /// where should we go if we press end?
+       bool idxEnd(idx_type & idx, pos_type & pos) const;
+
+       /// number of cells currently governed by us
+       idx_type nargs() const;
+       /// access to the lock
+       bool lock() const;
+       /// access to the lock
+       void lock(bool);
+       /// get notification when the cursor leaves this inset
+       void notifyCursorLeaves();
+
+       /// direct access to the cell
+       MathArray & cell(idx_type);
+       /// direct access to the cell
+       MathArray const & cell(idx_type) const;
+       /// direct access to the cell including the drawing cache
+       MathXArray & xcell(idx_type);
+       /// direct access to the cell including the drawing cache
+       MathXArray const & xcell(idx_type) const;
+
+       /// can we move into this cell (see macroarg.h)
+       bool isActive() const;
+       /// request "external features"
        void validate(LaTeXFeatures & features) const;
 
+       /// match in all cells
+       bool match(MathInset *) const;
+       /// replace in all cells
+       void replace(ReplaceData &);
+       /// do we contain a given pattern?
+       bool contains(MathArray const &);
+       /// glue everything to a single cell
+       MathArray glue() const;
+
+       /// debug helper
+       void dump() const;
+       /// is the cursor currently somewhere within this inset?
+       virtual bool editing() const;
+
 protected:
-       ///
+       /// we store the cells in a vector
        typedef std::vector<MathXArray> cells_type;
-       /// The nested contents of the inset are contained here.
+       /// thusly:
        cells_type cells_;
+       /// if the inset is locked, it can't be entered with the cursor
+       bool lock_;
 };
 
 #endif