///
explicit MathCursor(InsetFormulaBase *, bool left);
///
+ ~MathCursor();
+ ///
void insert(MathAtom const &);
///
void insert(MathArray const &);
///
void paste(MathArray const &);
///
+ void paste(MathGridInset const & data);
+ ///
void erase();
///
void backspace();
/// current inset
MathInset * par() const;
/// return the next enclosing grid inset and the cursor's index in it
- MathGridInset * enclosingGrid(idx_type &) const;
- /// return the next enclosing grid inset and the cursor's index in it
+ MathGridInset * enclosingGrid(idx_type & idx) const;
+ /// return the next enclosing hull inset and the cursor's index in it
+ MathHullInset * enclosingHull(idx_type & idx) const;
+ /// go up to enclosing grid
void popToEnclosingGrid();
+ /// go up to the hull inset
+ void popToEnclosingHull();
///
- InsetFormulaBase * formula();
+ InsetFormulaBase * formula() const;
/// current offset in the current cell
pos_type pos() const;
/// current cell
bool script(bool);
///
bool interpret(string const &);
- ///
+ ///
bool interpret(char);
///
bool toggleLimits();
MathCursorPos & cursor();
/// reference to the last item of the path, i.e. "The Cursor"
MathCursorPos const & cursor() const;
+ /// how deep are we nested?
+ unsigned depth() const;
+ /// local dispatcher
+ int dispatch(string const & cmd);
/// describe the situation
string info() const;
/// dump selection information for debugging
void seldump(char const * str) const;
/// dump selection information for debugging
void dump(char const * str) const;
- ///
- void stripFromLastEqualSign();
/// moves on
void setSelection(cursor_type const & where, size_type n);
///
- void insert(char);
+ void insert(char c);
+ ///
+ void insert(string const & str);
/// lock/unlock inset
void insetToggle();
/// hack for reveal codes
void markInsert();
void markErase();
+ void handleExtern(string const & arg);
///
friend class Selection;
+
private:
- /// moves cursor position one cell to the left
- bool posLeft();
- /// moves cursor position one cell to the right
- bool posRight();
/// moves cursor index one cell to the left
bool idxLeft();
/// moves cursor index one cell to the right
bool idxRight();
+ /// moves cursor to beginning first cell of current line
+ bool idxLineFirst();
+ /// moves cursor to end of last cell of current line
+ bool idxLineLast();
+ /// moves cursor position one cell to the left
+ bool posLeft();
+ /// moves cursor position one cell to the right
+ bool posRight();
/// moves position somehow up or down
bool goUpDown(bool up);
/// moves position into box
bool bruteFind(int xo, int yo, int xlow, int xhigh, int ylow, int yhigh);
+
+ /// grab grid marked by anchor and current cursor
+ MathGridInset grabSelection() const;
+ /// erase the selected part and re-sets the cursor
+ void eraseSelection();
+ /// guess what
+ MathGridInset grabAndEraseSelection();
+
///
string macroName() const;
///
/// write access to cursor cell index
idx_type & idx();
- /// path of positions the cursor had to go if it were leving each inset
+ /// path of positions the cursor had to go if it were leaving each inset
cursor_type Cursor_;
- /// path of positions the anchor had to go if it were leving each inset
+ /// path of positions the anchor had to go if it were leaving each inset
mutable cursor_type Anchor_;
/// pointer to enclsing LyX inset
InsetFormulaBase * formula_;
bool selection_;
/// are we entering a macro name?
bool macromode_;
+ /// are we targeting a certain x coordinate, if so, which one?
+ int targetx_;
};
extern MathCursor * mathcursor;