X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetTabular.h;h=8950077de263bd4dc71f0e2d4b9ed13f02ef4795;hb=717105bfe71d77492339b6b99557ca15ab94b007;hp=7f26ba1c9c272e12800c1f00ed73bb19e16d5e9b;hpb=32871c1284f15265f652ff01c438e539a7c8181f;p=lyx.git diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 7f26ba1c9c..8950077de2 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -37,10 +37,10 @@ #define INSETTABULAR_H #include "Inset.h" -#include "MailInset.h" -#include "Length.h" #include "InsetText.h" - +#include "Layout.h" +#include "Length.h" +#include "MailInset.h" #include @@ -66,8 +66,8 @@ class OutputParams; // // A helper struct for tables -// -class Tabular { +// +class Tabular { public: /// enum Feature { @@ -144,10 +144,14 @@ public: /// UNSET_ROTATE_TABULAR, /// + TOGGLE_ROTATE_TABULAR, + /// SET_ROTATE_CELL, /// UNSET_ROTATE_CELL, /// + TOGGLE_ROTATE_CELL, + /// SET_USEBOX, /// SET_LTHEAD, @@ -234,6 +238,8 @@ public: /// index indicating an invalid position static const idx_type npos = static_cast(-1); + /// constructor + Tabular(); /// constructor Tabular(BufferParams const &, col_type columns_arg, row_type rows_arg); @@ -262,21 +268,21 @@ public: /* returns the maximum over all rows */ /// - int getWidthOfColumn(idx_type cell) const; + int columnWidth(idx_type cell) const; /// - int getWidthOfTabular() const; + int width() const; /// - int getAscentOfRow(row_type row) const; + int height() const; /// - int getDescentOfRow(row_type row) const; + int rowAscent(row_type row) const; /// - int getHeightOfTabular() const; + int rowDescent(row_type row) const; /// - void setAscentOfRow(row_type row, int height); + void setRowAscent(row_type row, int height); /// - void setDescentOfRow(row_type row, int height); + void setRowDescent(row_type row, int height); /// - void setWidthOfCell(idx_type cell, int new_width); + void setCellWidth(idx_type cell, int new_width); /// void setAllLines(idx_type cell, bool line); /// @@ -315,7 +321,7 @@ public: /// docstring const getAlignSpecial(idx_type cell, int what) const; /// - int getWidthOfCell(idx_type cell) const; + int cellWidth(idx_type cell) const; /// int getBeginningOfTextInCell(idx_type cell) const; /// @@ -339,7 +345,7 @@ public: /// idx_type getLastCellInRow(row_type row) const; /// - idx_type getNumberOfCells() const; + idx_type cellCount() const; /// idx_type numberOfCellsInRow(idx_type cell) const; /// @@ -352,8 +358,8 @@ public: int docbook(Buffer const & buf, odocstream & os, OutputParams const &) const; /// void plaintext(Buffer const &, odocstream &, - OutputParams const & runparams, int const depth, - bool onlydata, unsigned char delim) const; + OutputParams const & runparams, int const depth, + bool onlydata, char_type delim) const; /// bool isMultiColumn(idx_type cell) const; /// @@ -365,11 +371,11 @@ public: /// bool isPartOfMultiColumn(row_type row, col_type column) const; /// - row_type row_of_cell(idx_type cell) const; + row_type cellRow(idx_type cell) const; /// - col_type column_of_cell(idx_type cell) const; + col_type cellColumn(idx_type cell) const; /// - col_type right_column_of_cell(idx_type cell) const; + col_type cellRightColumn(idx_type cell) const; /// void setBookTabs(bool); /// @@ -399,7 +405,7 @@ public: /// idx_type getLastCellBelow(idx_type cell) const; /// - idx_type getCellNumber(row_type row, col_type column) const; + idx_type cellIndex(row_type row, col_type column) const; /// void setUsebox(idx_type cell, BoxType); /// @@ -446,9 +452,9 @@ public: /// idx_type getCellFromInset(Inset const * inset) const; /// - row_type rows() const { return rows_; } + row_type rowCount() const { return row_info.size(); } /// - col_type columns() const { return columns_;} + col_type columnCount() const { return column_info.size();} /// void validate(LaTeXFeatures &) const; /// @@ -467,7 +473,7 @@ public: /// idx_type cellno; /// - int width_of_cell; + int width; /// int multicolumn; /// @@ -505,9 +511,9 @@ public: /// rowstruct(); /// - int ascent_of_row; + int ascent; /// - int descent_of_row; + int descent; /// bool top_line; /// @@ -533,7 +539,7 @@ public: bool endfoot; /// row of endlastfoot bool endlastfoot; - /// row for a pagebreak + /// row for a newpage bool newpage; }; /// @@ -553,7 +559,7 @@ public: /// bool right_line; /// - int width_of_column; + int width; /// Length p_width; /// @@ -562,10 +568,6 @@ public: /// typedef std::vector column_vector; - /// - row_type rows_; - /// - col_type columns_; /// idx_type numberofcells; /// @@ -579,8 +581,6 @@ public: /// mutable cell_vvector cell_info; /// - int width_of_tabular; - /// bool use_booktabs; /// bool rotate; @@ -601,7 +601,7 @@ public: void init(BufferParams const &, row_type rows_arg, col_type columns_arg); /// - void set_row_column_number_info(); + void updateIndexes(); /// Returns true if a complete update is necessary, otherwise false bool setWidthOfMulticolCell(idx_type cell, int new_width); /// @@ -611,10 +611,6 @@ public: /// bool calculate_width_of_column_NMC(col_type column); // no multi cells /// - void calculate_width_of_tabular(); - /// - void delete_column(col_type column); - /// idx_type cells_in_multicolumn(idx_type cell) const; /// BoxType useParbox(idx_type cell) const; @@ -640,16 +636,16 @@ public: // helper functions for plain text /// bool plaintextTopHLine(odocstream &, row_type row, - std::vector const &) const; + std::vector const &) const; /// bool plaintextBottomHLine(odocstream &, row_type row, - std::vector const &) const; + std::vector const &) const; /// void plaintextPrintCell(Buffer const &, odocstream &, - OutputParams const &, - idx_type cell, row_type row, col_type column, - std::vector const &, - bool onlydata) const; + OutputParams const &, + idx_type cell, row_type row, col_type column, + std::vector const &, + bool onlydata) const; /// auxiliary function for docbook int docbookRow(Buffer const & buf, odocstream & os, row_type, OutputParams const &) const; @@ -673,7 +669,7 @@ public: /// void write(Buffer const &, std::ostream &) const; /// - bool metrics(MetricsInfo &, Dimension &) const; + void metrics(MetricsInfo &, Dimension &) const; /// void draw(PainterInfo & pi, int x, int y) const; /// @@ -683,7 +679,7 @@ public: /// EDITABLE editable() const { return HIGHLY_EDITABLE; } /// - bool insetAllowed(Inset::Code) const { return true; } + bool insetAllowed(InsetCode) const { return true; } /// bool allowSpellCheck() const { return true; } /// @@ -693,20 +689,20 @@ public: insets that may contain several paragraphs */ bool noFontChange() const { return true; } /// - bool display() const { return tabular.isLongTabular(); } + DisplayType display() const { return tabular.isLongTabular() ? AlignCenter : Inline; } /// int latex(Buffer const &, odocstream &, - OutputParams const &) const; + OutputParams const &) const; /// int plaintext(Buffer const &, odocstream &, - OutputParams const &) const; + OutputParams const &) const; /// int docbook(Buffer const &, odocstream &, - OutputParams const &) const; + OutputParams const &) const; /// void validate(LaTeXFeatures & features) const; /// - Code lyxCode() const { return Inset::TABULAR_CODE; } + InsetCode lyxCode() const { return TABULAR_CODE; } /// get offset of this cursor slice relative to our upper left corner void cursorPos(BufferView const & bv, CursorSlice const & sl, bool boundary, int & x, int & y) const; @@ -720,13 +716,13 @@ public: /// bool showInsetDialog(BufferView *) const; /// number of cells - size_t nargs() const { return tabular.getNumberOfCells(); } + size_t nargs() const { return tabular.cellCount(); } /// boost::shared_ptr cell(idx_type) const; /// boost::shared_ptr cell(idx_type); /// - LyXText * getText(int) const; + Text * getText(int) const; /// set the change for the entire inset void setChange(Change const & change); @@ -754,6 +750,8 @@ public: Inset * editXY(Cursor & cur, int x, int y); /// can we go further down on mouse click? bool descendable() const { return true; } + // Update the counters of this inset and of its contents + virtual void updateLabels(Buffer const &, ParIterator const &); // // Public structures and variables @@ -771,7 +769,7 @@ protected: int scroll() const { return scx_; } private: - virtual std::auto_ptr doClone() const; + virtual Inset * clone() const; /// void drawCellLines(frontend::Painter &, int x, int y, row_type row, @@ -810,15 +808,16 @@ 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. + bool oneCellHasRotationState(bool rotated, + row_type row_start, row_type row_end, + col_type col_start, col_type col_end) const; /// Buffer const * buffer_; /// mutable idx_type first_visible_cell; /// mutable int scx_; - /// Ugly boolean used when this inset is dissolved and - /// InsetTabularMailer should not be used. - bool is_deleted_; };