class CursorSlice;
-class InsetTabular : public UpdatableInset {
+class InsetTabular : public InsetOld {
public:
///
- InsetTabular(Buffer const &, int rows = 1, int columns = 1);
+ InsetTabular(Buffer const &, row_type rows = 1,
+ col_type columns = 1);
///
~InsetTabular();
///
///
void draw(PainterInfo & pi, int x, int y) const;
///
+ void drawSelection(PainterInfo & pi, int x, int y) const;
+ ///
std::string const editMessage() const;
///
+ EDITABLE editable() const { return HIGHLY_EDITABLE; }
+ ///
bool insetAllowed(InsetBase::Code) const { return true; }
///
bool isTextInset() const { return true; }
void validate(LaTeXFeatures & features) const;
///
Code lyxCode() const { return InsetBase::TABULAR_CODE; }
- /// get the absolute screen x,y of the cursor
- void getCursorPos(LCursor const & cur, int & x, int & y) const;
+ /// get offset of this cursor slice relative to our upper left corner
+ void cursorPos(CursorSlice const & sl, bool boundary, int & x, int & y) const;
///
bool tabularFeatures(LCursor & cur, std::string const & what);
///
/// Appends \c list with all labels found within this inset.
void getLabelList(Buffer const &, std::vector<std::string> & list) const;
/// number of cells
- size_t nargs() const;
+ size_t nargs() const { return tabular.getNumberOfCells(); }
///
- boost::shared_ptr<InsetText const> cell(int) const;
+ boost::shared_ptr<InsetText const> cell(idx_type) const;
///
- boost::shared_ptr<InsetText> cell(int);
+ boost::shared_ptr<InsetText> cell(idx_type);
///
LyXText * getText(int) const;
///
- void markErased();
+ void markErased(bool);
- // this should return true if we have a "normal" cell, otherwise true.
+ // this should return true if we have a "normal" cell, otherwise false.
// "normal" means without width set!
- bool forceDefaultParagraphs(InsetBase const * in) const;
+ /// should all paragraphs be output with "Standard" layout?
+ bool forceDefaultParagraphs(idx_type cell = 0) const;
///
void addPreview(lyx::graphics::PreviewLoader &) const;
/// lock cell with given index
void edit(LCursor & cur, bool left);
///
- InsetBase * editXY(LCursor & cur, int x, int y) const;
+ InsetBase * editXY(LCursor & cur, int x, int y);
/// can we go further down on mouse click?
bool descendable() const { return true; }
mutable LyXTabular tabular;
protected:
+ ///
InsetTabular(InsetTabular const &);
-
+ ///
virtual void doDispatch(LCursor & cur, FuncRequest & cmd);
-
///
bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const;
+ ///
+ int scroll() const { return scx_; }
+
private:
virtual std::auto_ptr<InsetBase> doClone() const;
///
- void drawCellLines(Painter &, int x, int baseline,
- int row, int cell) const;
+ void drawCellLines(Painter &, int x, int y, row_type row,
+ idx_type cell, bool erased) const;
///
- void drawCellSelection(PainterInfo &, int x, int baseline,
- int row, int column, int cell) const;
- ///
- InsetBase * setPos(LCursor & cur, int x, int y) const;
+ void setCursorFromCoordinates(LCursor & cur, int x, int y) const;
///
void moveNextCell(LCursor & cur);
///
void movePrevCell(LCursor & cur);
///
- int getCellXPos(int cell) const;
+ int getCellXPos(idx_type cell) const;
///
void resetPos(LCursor & cur) const;
///
///
bool isRightToLeft(LCursor & cur) const;
///
- void getSelection(LCursor & cur,
- int & rs, int & re, int & cs, int & ce) const;
+ void getSelection(LCursor & cur, row_type & rs, row_type & re,
+ col_type & cs, col_type & ce) const;
///
bool insertAsciiString(BufferView &, std::string const & buf, bool usePaste);
/// are we operating on several cells?
bool tablemode(LCursor & cur) const;
+ /// return the "Manhattan distance" to nearest corner
+ int dist(idx_type cell, int x, int y) const;
+ /// return the cell nearest to x, y
+ idx_type getNearestCell(int x, int y) const;
+
///
Buffer const * buffer_;
///
- mutable int cursorx_;
+ mutable idx_type first_visible_cell;
///
- mutable int first_visible_cell;
+ mutable int scx_;
};