X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetTabular.h;h=fd942049ba6d07c53d86acfb84610443196ca07b;hb=48b1e8a0aca2f3f3faa8f1f800568e47792ba9a0;hp=92ccdb6bc2a6475b57db667f904c6f80ba17fb16;hpb=cb84f752f21bb4cf4bd9ed6999df0353aba2b57e;p=lyx.git diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 92ccdb6bc2..fd942049ba 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -25,7 +25,8 @@ #define INSET_TABULAR_H #include "InsetText.h" -#include "Length.h" + +#include "support/Length.h" #include #include @@ -44,7 +45,7 @@ class FuncStatus; class Lexer; class OutputParams; class Paragraph; -class XHTMLStream; +class XMLStream; /// @@ -52,7 +53,7 @@ class InsetTableCell : public InsetText { public: /// - InsetTableCell(Buffer * buf); + explicit InsetTableCell(Buffer * buf); /// InsetCode lyxCode() const { return CELL_CODE; } /// @@ -72,12 +73,18 @@ public: /// descending into insets docstring asString(bool intoInsets = true); /// - docstring xhtml(XHTMLStream &, OutputParams const &) const; + docstring xhtml(XMLStream &, OutputParams const &) const; + /// + void docbook(XMLStream &, OutputParams const &) const; /// void addToToc(DocIterator const & di, bool output_active, UpdateType utype, TocBackend & backend) const; /// void metrics(MetricsInfo &, Dimension &) const; + /// Needs to be same as InsetTabular + bool inheritFont() const { return false; } + /// Can the cell contain several paragraphs? + bool allowMultiPar() const { return !isMultiRow && (!isMultiColumn || isFixedWidth); } private: /// unimplemented InsetTableCell(); @@ -116,7 +123,7 @@ private: // FIXME: Here the thoughts from the comment above also apply. /// LyXAlignment contentAlign; - /// should paragraph indendation be omitted in any case? + /// should paragraph indentation be omitted in any case? bool neverIndent() const { return true; } /// LyXAlignment contentAlignment() const { return contentAlign; } @@ -130,8 +137,6 @@ private: virtual bool forceLocalFontSwitch() const; /// Is the width forced to some value? bool hasFixedWidth() const { return isFixedWidth; } - /// Can the cell contain several paragraphs? - bool allowMultiPar() const { return !isMultiRow && (!isMultiColumn || isFixedWidth); } }; @@ -179,6 +184,22 @@ public: ///FIXME: remove TOGGLE_LINE_RIGHT, /// + SET_LTRIM_TOP, + /// + SET_RTRIM_TOP, + /// + SET_LTRIM_BOTTOM, + /// + SET_RTRIM_BOTTOM, + /// + TOGGLE_LTRIM_TOP, + /// + TOGGLE_RTRIM_TOP, + /// + TOGGLE_LTRIM_BOTTOM, + /// + TOGGLE_RTRIM_BOTTOM, + /// ALIGN_LEFT, /// ALIGN_RIGHT, @@ -223,6 +244,8 @@ public: /// SET_ALL_LINES, /// + RESET_FORMAL_DEFAULT, + /// UNSET_ALL_LINES, /// TOGGLE_LONGTABULAR, @@ -411,9 +434,17 @@ 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; + /// Returns whether the top line is trimmed left and/or right + std::pair topLineTrim(idx_type const cell) const; + /// Returns whether the bottom line is trimmed left and/or right + std::pair bottomLineTrim(idx_type const cell) const; /// return space occupied by the second horizontal line and /// interline space above row \p row in pixels @@ -447,6 +478,18 @@ public: /// void setBottomLine(idx_type cell, bool line); /// + void setTopLineLTrim(idx_type cell, bool val); + /// + void setBottomLineLTrim(idx_type cell, bool val); + /// + void setTopLineRTrim(idx_type cell, bool val); + /// + void setBottomLineRTrim(idx_type cell, bool val); + /// + void setTopLineTrim(idx_type cell, std::pair); + /// + void setBottomLineTrim(idx_type cell, std::pair); + /// void setLeftLine(idx_type cell, bool line); /// void setRightLine(idx_type cell, bool line); @@ -499,7 +542,7 @@ public: /// void appendRow(row_type row); /// - void deleteRow(row_type row); + void deleteRow(row_type row, bool const force = false); /// void copyRow(row_type row); /// @@ -511,15 +554,19 @@ public: /// void appendColumn(col_type column); /// - void deleteColumn(col_type column); + void deleteColumn(col_type column, bool const force = false); /// void copyColumn(col_type column); /// void insertColumn(col_type column, bool copy); /// - idx_type getFirstCellInRow(row_type row) const; + idx_type getFirstCellInRow(row_type row, bool const ct = false) const; /// - idx_type getLastCellInRow(row_type row) const; + idx_type getLastCellInRow(row_type row, bool const ct = false) const; + /// + idx_type getFirstRow(bool const ct = false) const; + /// + idx_type getLastRow(bool const ct = false) const; /// idx_type numberOfCellsInRow(row_type row) const; /// @@ -528,10 +575,10 @@ public: void read(Lexer &); /// void latex(otexstream &, OutputParams const &) const; + /// serialise the table in DocBook, according to buffer parameters + void docbook(XMLStream &, OutputParams const &) const; /// - int docbook(odocstream & os, OutputParams const &) const; - /// - docstring xhtml(XHTMLStream & os, OutputParams const &) const; + docstring xhtml(XMLStream &, OutputParams const &) const; /// void plaintext(odocstringstream &, OutputParams const & runparams, int const depth, @@ -652,7 +699,7 @@ public: class CellData { public: /// - CellData(Buffer *); + explicit CellData(Buffer *); /// CellData(CellData const &); /// @@ -686,6 +733,14 @@ public: /// bool right_line; /// + bool top_line_rtrimmed; + /// + bool top_line_ltrimmed; + /// + bool bottom_line_rtrimmed; + /// + bool bottom_line_ltrimmed; + /// BoxType usebox; /// int rotate; @@ -739,6 +794,8 @@ public: bool newpage; /// caption bool caption; + /// + Change change; }; /// typedef std::vector row_vector; @@ -762,6 +819,8 @@ public: docstring decimal_point; /// bool varwidth; + /// + Change change; }; /// typedef std::vector column_vector; @@ -819,10 +878,10 @@ public: /// // helper function for Latex /// - void TeXTopHLine(otexstream &, row_type row, std::string const & lang, + void TeXTopHLine(otexstream &, row_type row, std::list, std::list) const; /// - void TeXBottomHLine(otexstream &, row_type row, std::string const & lang, + void TeXBottomHLine(otexstream &, row_type row, std::list, std::list) const; /// void TeXCellPreamble(otexstream &, idx_type cell, bool & ismulticol, bool & ismultirow, @@ -830,12 +889,13 @@ public: /// void TeXCellPostamble(otexstream &, idx_type cell, bool ismulticol, bool ismultirow) const; /// - void TeXLongtableHeaderFooter(otexstream &, OutputParams const &, std::list) const; + void TeXLongtableHeaderFooter(otexstream &, OutputParams const &, std::list, + std::list) const; /// bool isValidRow(row_type const row) const; /// void TeXRow(otexstream &, row_type const row, - OutputParams const &, std::list) const; + OutputParams const &, std::list, std::list) const; /// // helper functions for plain text /// @@ -850,10 +910,16 @@ public: idx_type cell, row_type row, col_type column, std::vector const &, bool onlydata, size_t max_length) const; - /// auxiliary function for docbook - int docbookRow(odocstream & os, row_type, OutputParams const &) const; - /// - docstring xhtmlRow(XHTMLStream & xs, row_type, OutputParams const &, + /// auxiliary function for DocBook + void docbookRow(XMLStream &, row_type, OutputParams const &, + bool header = false) const; + /// auxiliary function for DocBook: export this row as HTML + void docbookRowAsHTML(XMLStream &, row_type, OutputParams const &, + bool header) const; + /// auxiliary function for DocBook: export this row as CALS + void docbookRowAsCALS(XMLStream &, row_type, OutputParams const &) const; + /// + docstring xhtmlRow(XMLStream & xs, row_type, OutputParams const &, bool header = false) const; /// change associated Buffer @@ -908,25 +974,27 @@ public: bool canTrackChanges() const { return true; } /// bool canPaintChange(BufferView const &) const { return true; } - /** returns false if, when outputing LaTeX, font changes should + /** returns false if, when outputting 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 allowMultiPar() const; + /// bool allowsCaptionVariation(std::string const &) const; // bool isTable() const { return true; } /// - DisplayType display() const; + RowFlags rowFlags() const; /// void latex(otexstream &, OutputParams const &) const; /// int plaintext(odocstringstream & ods, OutputParams const & op, size_t max_length = INT_MAX) const; /// - int docbook(odocstream &, OutputParams const &) const; + void docbook(XMLStream &, OutputParams const &) const; /// - docstring xhtml(XHTMLStream &, OutputParams const &) const; + docstring xhtml(XMLStream &, OutputParams const &) const; /// void validate(LaTeXFeatures & features) const; /// @@ -952,6 +1020,8 @@ public: /// Text * getText(int) const; + /// does the inset contain changes ? + bool isChanged() const; /// set the change for the entire inset void setChange(Change const & change); /// accept the changes within the inset @@ -980,7 +1050,7 @@ public: /// can we go further down on mouse click? bool descendable(BufferView const &) const { return true; } /// Update the counters of this inset and of its contents - void updateBuffer(ParIterator const &, UpdateType); + void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false); /// void addToToc(DocIterator const & di, bool output_active, UpdateType utype, TocBackend & backend) const; @@ -1018,6 +1088,8 @@ public: /// writes the cells between stidx and enidx as a string, optionally /// descending into the insets docstring asString(idx_type stidx, idx_type enidx, bool intoInsets = true); + /// + ParagraphList asParList(idx_type stidx, idx_type enidx); /// Returns whether the cell in the specified row and column is selected. bool isCellSelected(Cursor & cur, row_type row, col_type col) const;