#ifndef MATH_CURSOR
#define MATH_CURSOR
-
#include "math_inset.h"
+#include "math_data.h"
#include "math_iterator.h"
-#include "LString.h"
+
+#include <string>
+
class InsetFormulaBase;
class BufferView;
[Have a look at math_inset.h first]
The MathCursor is different from the kind of cursor used in the Outer
-World. It contains a stack of CursorPos, each of which is made
+World. It contains a stack of CursorSlice, each of which is made
up of a inset pointer, an index and a position offset, marking a path from
this formula's MathHullInset to the current position.
///
void insert(MathArray const &);
///
- void insert2(string const &);
+ void insert2(std::string const &);
///
- void paste(string const & data);
+ void paste(std::string const & data);
/// return false for empty math insets
bool erase();
/// return false for empty math insets
///
void niceInsert(MathAtom const &);
///
- void niceInsert(string const &);
+ void niceInsert(std::string const &);
/// in pixels from top of screen
void setPos(int x, int y);
void selClearOrDel();
/// draws light-blue selection background
void drawSelection(PainterInfo & pi) const;
- ///
- void handleNest(MathAtom const & at);
+ /// replace selected stuff with at, placing the former
+ // selection in given cell of atom
+ void handleNest(MathAtom const & at, int cell = 0);
/// remove this as soon as LyXFunc::getStatus is "localized"
- string getLastCode() const { return "mathnormal"; }
+ std::string getLastCode() const { return "mathnormal"; }
///
bool isInside(MathInset const *) const;
///
MathAtom & nextAtom();
/// returns the selection
- void getSelection(CursorPos &, CursorPos &) const;
+ void getSelection(CursorSlice &, CursorSlice &) const;
/// returns the normalized anchor of the selection
- CursorPos normalAnchor() const;
+ CursorSlice normalAnchor() const;
/// reference to the last item of the path, i.e. "The Cursor"
- CursorPos & cursor();
+ CursorSlice & cursor();
/// reference to the last item of the path, i.e. "The Cursor"
- CursorPos const & cursor() const;
+ CursorSlice const & cursor() const;
/// how deep are we nested?
unsigned depth() const;
-
- /// local dispatcher
- dispatch_result dispatch(FuncRequest const & cmd);
/// describe the situation
- string info() const;
+ std::string info() const;
/// dump selection information for debugging
void seldump(char const * str) const;
/// dump selection information for debugging
/// moves on
void setSelection(MathIterator const & where, size_type n);
/// grab selection marked by anchor and current cursor
- string grabSelection() const;
+ std::string grabSelection() const;
/// guess what
- string grabAndEraseSelection();
+ std::string grabAndEraseSelection();
///
void insert(char c);
///
- void insert(string const & str);
+ void insert(std::string const & str);
/// lock/unlock inset
void insetToggle();
/// injects content of a cell into parent
void pullArg();
/// split font inset etc
- void handleFont(string const & font);
-
+ void handleFont(std::string const & font);
+ ///
+ DispatchResult
+ dispatch(FuncRequest const & cmd);
private:
/// moves cursor index one cell to the left
bool idxLeft();
void eraseSelection();
/// the name of the macro we are currently inputting
- string macroName() const;
+ std::string macroName() const;
/// where in the curent cell does the macro name start?
difference_type macroNamePos() const;
/// can we enter the inset?