From 3bbcfda3dbf0bd9e2f79a04b26d8913481f30dfb Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 1 Apr 2019 07:08:13 +0200 Subject: [PATCH] Add option to reset to default booktabs lines Addresses: #10106 --- lib/Makefile.am | 3 + .../tabular-feature_reset-formal-default.png | Bin 0 -> 6672 bytes .../tabular-feature_reset-formal-default.svgz | Bin 0 -> 1263 bytes .../tabular-feature_reset-formal-default.svgz | Bin 0 -> 1256 bytes lib/ui/stdcontext.inc | 1 + lib/ui/stdtoolbars.inc | 1 + src/LyXAction.cpp | 3 +- src/frontends/qt4/GuiTabular.cpp | 7 ++- src/frontends/qt4/ui/TabularUi.ui | 57 +++++++++++++++--- src/insets/InsetTabular.cpp | 18 ++++++ src/insets/InsetTabular.h | 2 + 11 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 lib/images/classic/tabular-feature_reset-formal-default.png create mode 100644 lib/images/oxygen/tabular-feature_reset-formal-default.svgz create mode 100644 lib/images/tabular-feature_reset-formal-default.svgz diff --git a/lib/Makefile.am b/lib/Makefile.am index fd3ad852ec..1df01b2f9c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -680,6 +680,7 @@ dist_images_DATA1X = \ images/tabular-feature_move-row-up.svgz \ images/tabular-feature_multicolumn.svgz \ images/tabular-feature_multirow.svgz \ + images/tabular-feature_reset-formal-default.svgz \ images/tabular-feature_set-all-lines.svgz \ images/tabular-feature_set-longtabular.svgz \ images/tabular-feature_set-rotate-cell.svgz \ @@ -1962,6 +1963,7 @@ dist_imagesoxygen_DATA1X = \ images/oxygen/tabular-feature_move-row-up.svgz \ images/oxygen/tabular-feature_multicolumn.svgz \ images/oxygen/tabular-feature_multirow.svgz \ + images/oxygen/tabular-feature_reset-formal-default.svgz \ images/oxygen/tabular-feature_set-all-lines.svgz \ images/oxygen/tabular-feature_set-border-lines.svgz \ images/oxygen/tabular-feature_set-inner-lines.svgz \ @@ -2160,6 +2162,7 @@ dist_imagesclassic_DATA = \ images/classic/tabular-feature_m-valign-top.png \ images/classic/tabular-feature_multicolumn.png \ images/classic/tabular-feature_multirow.png \ + images/classic/tabular-feature_reset-formal-default.png \ images/classic/tabular-feature_set-all-lines.png \ images/classic/tabular-feature_set-border-lines.png \ images/classic/tabular-feature_set-inner-lines.png \ diff --git a/lib/images/classic/tabular-feature_reset-formal-default.png b/lib/images/classic/tabular-feature_reset-formal-default.png new file mode 100644 index 0000000000000000000000000000000000000000..382d5629fc7f7abcc820b4596b975da73c8002d8 GIT binary patch literal 6672 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 Sh3(r`@BRhLk>x;W5&!^=;DNmW literal 0 HcmV?d00001 diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc index e358ce910a..6f86dd124c 100644 --- a/lib/ui/stdcontext.inc +++ b/lib/ui/stdcontext.inc @@ -435,6 +435,7 @@ Menuset Item "Bottom|B" "tabular-feature toggle-line-bottom" Item "Left|L" "tabular-feature toggle-line-left" Item "Right|R" "tabular-feature toggle-line-right" + OptItem "Reset Formal Defaults|F" "tabular-feature reset-formal-default" End Menu "table-alignment" diff --git a/lib/ui/stdtoolbars.inc b/lib/ui/stdtoolbars.inc index f48f27b73f..10bb531b5d 100644 --- a/lib/ui/stdtoolbars.inc +++ b/lib/ui/stdtoolbars.inc @@ -161,6 +161,7 @@ ToolbarSet Item "Set all lines" "tabular-feature set-all-lines" Item "Set inner lines" "tabular-feature set-inner-lines" Item "Unset all lines" "tabular-feature unset-all-lines" + Item "Reset formal default lines" "tabular-feature reset-formal-default" Separator Item "Align left" "command-alternatives tabular-feature m-align-left;tabular-feature align-left" Item "Align center" "command-alternatives tabular-feature m-align-center;tabular-feature align-center" diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp index 1374ab5ff0..59bdbe8d1c 100644 --- a/src/LyXAction.cpp +++ b/src/LyXAction.cpp @@ -3757,7 +3757,8 @@ void LyXAction::init() valign-top|valign-bottom|valign-middle|longtabular-align-left|\n longtabular-align-center|longtabular-align-right|m-align-left|m-align-right|\n m-align-center|m-valign-top|m-valign-bottom|m-valign-middle|multicolumn|\n - set-all-lines|unset-all-lines|toggle-longtabular|set-longtabular|unset-longtabular|set-pwidth|\n + reset-formal-default|set-all-lines|unset-all-lines|toggle-longtabular|\n + set-longtabular|unset-longtabular|set-pwidth|\n set-mpwidth|set-rotate-tabular|unset-rotate-tabular|toggle-rotate-tabular|\n set-rotate-cell|unset-rotate-cell|toggle-rotate-cell|set-usebox|set-lthead|\n unset-lthead|set-ltfirsthead|unset-ltfirsthead|set-ltfoot|unset-ltfoot|\n diff --git a/src/frontends/qt4/GuiTabular.cpp b/src/frontends/qt4/GuiTabular.cpp index 8168b56a51..dd25e9dad5 100644 --- a/src/frontends/qt4/GuiTabular.cpp +++ b/src/frontends/qt4/GuiTabular.cpp @@ -86,6 +86,8 @@ GuiTabular::GuiTabular(QWidget * parent) this, SLOT(borderSet_clicked())); connect(borderUnsetPB, SIGNAL(clicked()), this, SLOT(borderUnset_clicked())); + connect(resetFormalCB, SIGNAL(clicked()), + this, SLOT(checkEnabled())); connect(hAlignCO, SIGNAL(activated(int)), this, SLOT(checkEnabled())); connect(vAlignCO, SIGNAL(activated(int)), @@ -234,6 +236,7 @@ void GuiTabular::enableWidgets() const hAlignCO->itemData(hAlignCO->currentIndex()).toString() == QString("decimal"); decimalPointED->setEnabled(dalign); decimalLA->setEnabled(dalign); + resetFormalCB->setEnabled(booktabsRB->isChecked()); bool const setwidth = TableAlignCO->currentText() == qt_("Middle"); tabularWidthLA->setEnabled(setwidth); @@ -558,7 +561,9 @@ docstring GuiTabular::dialogToParams() const } // - if (borders->topLineSet() && borders->bottomLineSet() && borders->leftLineSet() + if (resetFormalCB->isChecked()) + setParam(param_str, Tabular::RESET_FORMAL_DEFAULT); + else if (borders->topLineSet() && borders->bottomLineSet() && borders->leftLineSet() && borders->rightLineSet()) setParam(param_str, Tabular::SET_ALL_LINES); else if (borders->topLineUnset() && borders->bottomLineUnset() && borders->leftLineUnset() diff --git a/src/frontends/qt4/ui/TabularUi.ui b/src/frontends/qt4/ui/TabularUi.ui index 5ced77a086..4b26680499 100644 --- a/src/frontends/qt4/ui/TabularUi.ui +++ b/src/frontends/qt4/ui/TabularUi.ui @@ -739,6 +739,15 @@ + + + + 0 + 0 + 0 + + + @@ -894,6 +903,15 @@ + + + + 0 + 0 + 0 + + + @@ -1049,6 +1067,15 @@ + + + + 0 + 0 + 0 + + + @@ -1119,6 +1146,26 @@ true + + + + Use default (grid-like) border style + + + De&fault + + + + + + + If this is checked, the table will be reset to the formal default style (only top and bottom row have vertical lines) + + + Use Default &Formal Style + + + @@ -1132,16 +1179,6 @@ - - - - Use default (grid-like) border style - - - De&fault - - - diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 44f251a728..2bb49f8781 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -155,6 +155,7 @@ TabularFeature tabularFeature[] = { Tabular::UNSET_MULTIROW, "unset-multirow", false }, { Tabular::SET_MROFFSET, "set-mroffset", true }, { Tabular::SET_ALL_LINES, "set-all-lines", false }, + { Tabular::RESET_FORMAL_DEFAULT, "reset-formal-default", false }, { Tabular::UNSET_ALL_LINES, "unset-all-lines", false }, { Tabular::TOGGLE_LONGTABULAR, "toggle-longtabular", false }, { Tabular::SET_LONGTABULAR, "set-longtabular", false }, @@ -4983,6 +4984,10 @@ bool InsetTabular::getFeatureStatus(Cursor & cur, string const & s, status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx()))); break; + case Tabular::RESET_FORMAL_DEFAULT: + status.setEnabled(tabular.use_booktabs); + break; + case Tabular::SET_LINE_TOP: case Tabular::SET_LINE_BOTTOM: status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx()))); @@ -6165,6 +6170,19 @@ void InsetTabular::tabularFeatures(Cursor & cur, } break; + case Tabular::RESET_FORMAL_DEFAULT: + for (row_type r = 0; r < tabular.nrows(); ++r) { + bool const head_or_foot = r == 0 || r == tabular.nrows() - 1; + for (col_type c = 0; c < tabular.ncols(); ++c) { + idx_type const cell = tabular.cellIndex(r, c); + tabular.setTopLine(cell, head_or_foot); + tabular.setBottomLine(cell, head_or_foot); + tabular.setRightLine(cell, false); + tabular.setLeftLine(cell, false); + } + } + break; + case Tabular::SET_BORDER_LINES: for (row_type r = sel_row_start; r <= sel_row_end; ++r) { tabular.setLeftLine(tabular.cellIndex(r, sel_col_start), true); diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 92ccdb6bc2..9bc1746195 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -223,6 +223,8 @@ public: /// SET_ALL_LINES, /// + RESET_FORMAL_DEFAULT, + /// UNSET_ALL_LINES, /// TOGGLE_LONGTABULAR,