X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetTabular.h;h=ddb02763fcb2a5e409156c77a36dba56eac5170d;hb=71b8019d56142397994e0ef2d4244ada51f199d5;hp=de664f15be2af1694a7b7aee81baf157f3b814ac;hpb=a3b19c60a7440794933af1137ea3e538c4ffbff4;p=lyx.git diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index de664f15be..ddb02763fc 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -24,16 +24,15 @@ #ifndef INSET_TABULAR_H #define INSET_TABULAR_H -#include "Inset.h" #include "InsetText.h" #include "Length.h" -#include "support/shared_ptr.h" - #include #include +#include #include + namespace lyx { class Buffer; @@ -72,7 +71,7 @@ public: docstring xhtml(XHTMLStream &, OutputParams const &) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; private: /// unimplemented InsetTableCell(); @@ -298,6 +297,8 @@ public: /// SET_TABULAR_WIDTH, /// + SET_INNER_LINES, + /// LAST_ACTION }; /// @@ -340,7 +341,9 @@ public: /// BOX_PARBOX = 1, /// - BOX_MINIPAGE = 2 + BOX_MINIPAGE = 2, + /// + BOX_VARWIDTH = 3 }; enum CaptionType { @@ -399,9 +402,13 @@ public: /// Returns true if there is a topline, returns false if not bool bottomLine(idx_type cell) const; /// Returns true if there is a topline, returns false if not - bool leftLine(idx_type cell) const; + /// If \p ignore_bt is true, we return the state as if booktabs was + /// not used + bool leftLine(idx_type cell, bool const ignore_bt = false) const; /// Returns true if there is a topline, returns false if not - bool rightLine(idx_type cell) const; + /// If \p ignore_bt is true, we return the state as if booktabs was + /// not used + bool rightLine(idx_type cell, bool const ignore_bt = false) const; /// return space occupied by the second horizontal line and /// interline space above row \p row in pixels @@ -471,6 +478,9 @@ public: /// VAlignment getVAlignment(idx_type cell, bool onlycolumn = false) const; + /// The vertical offset of the table due to the vertical + /// alignment with respect to the baseline. + int offsetVAlignment() const; /// Length const getPWidth(idx_type cell) const; /// @@ -610,13 +620,13 @@ public: /// returns the VISIBLE cell at r,c, which may be the same as the /// cell at the previous row or column, if we're dealing with some /// multirow or multicell. - shared_ptr cellInset(idx_type cell) const; - shared_ptr cellInset(row_type row, - col_type column) const; + std::shared_ptr cellInset(idx_type cell); + std::shared_ptr cellInset(row_type row, col_type column); + InsetTableCell const * cellInset(idx_type cell) const; //@} /// void setCellInset(row_type row, col_type column, - shared_ptr) const; + std::shared_ptr); /// Search for \param inset in the tabular, with the /// void validate(LaTeXFeatures &) const; @@ -673,9 +683,12 @@ public: /// Length p_width; // this is only set for multicolumn!!! /// - shared_ptr inset; + std::shared_ptr inset; }; - CellData & cellInfo(idx_type cell) const; + /// + CellData const & cellInfo(idx_type cell) const; + /// + CellData & cellInfo(idx_type cell); /// typedef std::vector cell_vector; /// @@ -751,7 +764,7 @@ public: /// column_vector column_info; /// - mutable cell_vvector cell_info; + cell_vvector cell_info; /// Length tabular_width; /// @@ -793,20 +806,23 @@ public: /// // helper function for Latex /// - void TeXTopHLine(otexstream &, row_type row, std::string const & lang) const; + void TeXTopHLine(otexstream &, row_type row, std::string const & lang, + std::list) const; /// - void TeXBottomHLine(otexstream &, row_type row, std::string const & lang) const; + void TeXBottomHLine(otexstream &, row_type row, std::string const & lang, + std::list) const; /// - void TeXCellPreamble(otexstream &, idx_type cell, bool & ismulticol, bool & ismultirow) const; + void TeXCellPreamble(otexstream &, idx_type cell, bool & ismulticol, bool & ismultirow, + bool const bidi) const; /// void TeXCellPostamble(otexstream &, idx_type cell, bool ismulticol, bool ismultirow) const; /// - void TeXLongtableHeaderFooter(otexstream &, OutputParams const &) const; + void TeXLongtableHeaderFooter(otexstream &, OutputParams const &, std::list) const; /// bool isValidRow(row_type const row) const; /// void TeXRow(otexstream &, row_type const row, - OutputParams const &) const; + OutputParams const &, std::list) const; /// // helper functions for plain text /// @@ -830,7 +846,9 @@ public: /// change associated Buffer void setBuffer(Buffer & buffer); /// retrieve associated Buffer - Buffer & buffer() const { return *buffer_; } + Buffer const & buffer() const { return *buffer_; } + /// retrieve associated Buffer + Buffer & buffer() { return *buffer_; } private: Buffer * buffer_; @@ -875,12 +893,16 @@ public: bool allowSpellCheck() const { return true; } /// bool canTrackChanges() const { return true; } + /// + bool canPaintChange(BufferView const &) const { return true; } /** returns false if, when outputing LaTeX, font changes should be closed before generating this inset. This is needed for insets that may contain several paragraphs */ bool inheritFont() const { return false; } /// bool allowsCaptionVariation(std::string const &) const; + // + bool isTable() const { return true; } /// DisplayType display() const; /// @@ -911,9 +933,9 @@ public: /// number of cells size_t nargs() const { return tabular.numberofcells; } /// - shared_ptr cell(idx_type) const; + std::shared_ptr cell(idx_type) const; /// - shared_ptr cell(idx_type); + std::shared_ptr cell(idx_type); /// Text * getText(int) const; @@ -948,7 +970,7 @@ public: void updateBuffer(ParIterator const &, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// bool completionSupported(Cursor const &) const; @@ -970,6 +992,9 @@ public: void completionPosAndDim(Cursor const &, int & x, int & y, Dimension & dim) const; /// virtual bool usePlainLayout() const { return true; } + /// + docstring layoutName() const { return from_ascii("Tabular"); } + /// InsetTabular * asInsetTabular() { return this; } @@ -1003,6 +1028,13 @@ private: /// Inset * clone() const { return new InsetTabular(*this); } + /// + bool hitSelectRow(BufferView const & bv, int x) const; + /// + bool hitSelectColumn(BufferView const & bv, int y) const; + /// Returns true if coordinates are on row/column selection zones + bool clickable(BufferView const &, int x, int y) const; + /// void drawCellLines(PainterInfo &, int x, int y, row_type row, idx_type cell) const; @@ -1036,15 +1068,11 @@ private: /// return the cell nearest to x, y idx_type getNearestCell(BufferView &, int x, int y) const; - /// test the rotation state of the give cell range. + /// test the rotation state of the given cell range. bool oneCellHasRotationState(bool rotated, row_type row_start, row_type row_end, col_type col_start, col_type col_end) const; - /// - mutable idx_type first_visible_cell_; - /// The vertical offset of the table due to the vertical - /// alignment with respect to the baseline. - mutable int offset_valign_; + /// true when selecting rows with the mouse bool rowselect_; /// true when selecting columns with the mouse