X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettabular.h;h=2cb39167ee47836390876e6f2d50b79dd1d8b69e;hb=729f944d8805e888af25c703a4fd6e4322c47764;hp=bf91314f64b3ee6096f61174a6da11e8196eddc7;hpb=c6150425e56563ab9bb311b5785efc5e9d4928da;p=lyx.git diff --git a/src/insets/insettabular.h b/src/insets/insettabular.h index bf91314f64..2cb39167ee 100644 --- a/src/insets/insettabular.h +++ b/src/insets/insettabular.h @@ -61,6 +61,15 @@ class Buffer; class InsetTabular : public UpdatableInset { public: + /// + enum UpdateCodes { + NONE = 0, + INIT, + FULL, + CELL, + CURSOR, + SELECTION + }; /// InsetTabular(Buffer *, int rows=1, int columns=1); /// @@ -68,11 +77,11 @@ public: /// ~InsetTabular(); /// - InsetTabular * InsetTabular::Clone() const; + Inset * Clone() const; /// - void Read(LyXLex &); + void Read(Buffer const *, LyXLex &); /// - void Write(std::ostream &) const; + void Write(Buffer const *, std::ostream &) const; /// int ascent(Painter &, LyXFont const &) const; /// @@ -80,22 +89,34 @@ public: /// int width(Painter &, LyXFont const & f) const; /// - void draw(Painter & pain, const LyXFont &, int , float &) const; + void draw(BufferView *, const LyXFont &, int , float &, bool) const; + /// + void update(BufferView *, LyXFont const &, bool =false); /// const char * EditMessage() const; /// void Edit(BufferView *, int x, int y, unsigned int); /// + bool doClearArea() const { return !locked; }; + /// void InsetUnlock(BufferView *); /// - bool LockInsetInInset(UpdatableInset *); + void UpdateLocal(BufferView *, UpdateCodes, bool mark_dirty); /// - bool UnlockInsetInInset(BufferView *, UpdatableInset *, bool lr=false); + bool LockInsetInInset(BufferView *, UpdatableInset *); /// - void UpdateLocal(BufferView *, bool flag = true); + bool UnlockInsetInInset(BufferView *, UpdatableInset *, bool lr=false); /// bool UpdateInsetInInset(BufferView *, Inset *); /// + int InsetInInsetY(); + /// + UpdatableInset * GetLockingInset(); + /// + UpdatableInset * GetFirstLockingInsetOfType(Inset::Code); + /// + bool InsertInset(BufferView *, Inset *); + /// bool display() const { return tabular->IsLongTabular(); } /// void InsetButtonRelease(BufferView *, int, int, int); @@ -108,36 +129,45 @@ public: /// UpdatableInset::RESULT LocalDispatch(BufferView *, int, string const &); /// - int Latex(std::ostream &, bool, bool) const; + int Latex(Buffer const *, std::ostream &, bool, bool) const; /// - int Ascii(std::ostream &) const; + int Ascii(Buffer const *, std::ostream &) const; /// - int Linuxdoc(std::ostream &) const; + int Linuxdoc(Buffer const *, std::ostream &) const; /// - int DocBook(std::ostream &) const; + int DocBook(Buffer const *, std::ostream &) const; /// void Validate(LaTeXFeatures & features) const; /// Inset::Code LyxCode() const { return Inset::TABULAR_CODE; } /// - void GetCursorPos(int & x, int & y); + void GetCursorPos(BufferView *, int & x, int & y) const; /// void ToggleInsetCursor(BufferView *); /// - void TabularFeatures(int feature, string val=""); + void TabularFeatures(BufferView * bv, int feature, string val=""); /// int GetActCell() { return actcell; } /// - void SetFont(LyXFont const &); + void SetFont(BufferView *, LyXFont const &, bool toggleall = false); + /// + int getMaxWidth(Painter & pain, UpdatableInset const *) const; + /// + Buffer * BufferOwner() const { return buffer; } + /// /// Public structures and variables /// LyXTabular * tabular; private: - void calculate_width_of_cells(Painter &, LyXFont const &) const; + bool calculate_dimensions_of_cells(BufferView *, LyXFont const &, bool =false) const; + /// + void DrawCellLines(Painter &, int x, int baseline, int row, int cell) + const; /// - void DrawCellLines(Painter &, int x, int baseline, int row, int cell) const; + void DrawCellSelection(Painter &, int x, int baseline, + int row, int column, int cell) const; /// void ShowInsetCursor(BufferView *); /// @@ -145,27 +175,35 @@ private: /// void setPos(Painter &, int x, int y) const; /// - void setWidthOfCell(int pos, int cell, int row); - /// - UpdatableInset::RESULT moveRight(BufferView *); - UpdatableInset::RESULT moveLeft(); - UpdatableInset::RESULT moveUp(); - UpdatableInset::RESULT moveDown(); - bool moveNextCell(); - bool movePrevCell(); + UpdatableInset::RESULT moveRight(BufferView *, bool lock=true); + UpdatableInset::RESULT moveLeft(BufferView *, bool lock=true); + UpdatableInset::RESULT moveUp(BufferView *); + UpdatableInset::RESULT moveDown(BufferView *); + bool moveNextCell(BufferView *); + bool movePrevCell(BufferView *); bool Delete(); /// - void resetPos(BufferView *); + int getCellXPos(int cell) const; + void resetPos(Painter &) const; /// void RemoveTabularRow(); /// - bool hasCharSelection() const {return (sel_pos_start != sel_pos_end);} - bool hasCellSelection() const {return hasCharSelection() && - (sel_cell_start != sel_cell_end);} + bool hasSelection() const {return ((sel_pos_start != sel_pos_end) || + (sel_cell_start != sel_cell_end));} + /// + bool ActivateCellInset(BufferView *, int x=0, int y=0, int button=0, + bool behind = false); + /// + bool InsetHit(BufferView * bv, int x, int y) const; + /// + int GetMaxWidthOfCell(Painter &, int cell) const; + /// + void recomputeTextInsets(BufferView *, const LyXFont &) const; + /// /// Private structures and variables /// - UpdatableInset + InsetText * the_locking_inset; Buffer * buffer; @@ -180,11 +218,11 @@ private: sel_cell_start, sel_cell_end, actcell, + oldcell, actcol, actrow; - bool - no_selection; - mutable bool - init; + bool no_selection; + mutable bool locked; + mutable UpdateCodes need_update; }; #endif