]> git.lyx.org Git - lyx.git/commitdiff
merge booktabs branch
authorGeorg Baum <Georg.Baum@post.rwth-aachen.de>
Mon, 3 Jul 2006 19:13:56 +0000 (19:13 +0000)
committerGeorg Baum <Georg.Baum@post.rwth-aachen.de>
Mon, 3 Jul 2006 19:13:56 +0000 (19:13 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14319 a592a061-630c-0410-9148-cb99ea01b6c8

32 files changed:
development/FORMAT
lib/ChangeLog
lib/chkconfig.ltx
lib/doc/ChangeLog
lib/doc/LaTeXConfig.lyx.in
lib/doc/LyXConfig.lyx.in
lib/lyx2lyx/ChangeLog
lib/lyx2lyx/LyX.py
lib/lyx2lyx/lyx_1_5.py
src/ChangeLog
src/LaTeXFeatures.C
src/buffer.C
src/frontends/controllers/ChangeLog
src/frontends/controllers/ControlTabular.C
src/frontends/controllers/ControlTabular.h
src/frontends/gtk/GTabular.C
src/frontends/qt3/ChangeLog
src/frontends/qt3/QTabular.C
src/frontends/qt3/QTabularDialog.C
src/frontends/qt3/QTabularDialog.h
src/frontends/qt3/ui/QTabularDialogBase.ui
src/frontends/qt4/QTabular.C
src/frontends/qt4/QTabularDialog.C
src/frontends/qt4/QTabularDialog.h
src/frontends/qt4/ui/QTabularUi.ui
src/frontends/xforms/ChangeLog
src/frontends/xforms/FormTabular.C
src/frontends/xforms/forms/form_tabular.fd
src/insets/ChangeLog
src/insets/insettabular.C
src/tabular.C
src/tabular.h

index 0d10ce636db41e1cf0e14333e24f14bdb41205af..7ca9e103728a9fdde8d7b7e410480a5a5a2c511e 100644 (file)
@@ -1,6 +1,19 @@
 LyX file-format changes
 -----------------------
 
+2006-07-03  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * format incremented to 248: Basic booktabs support
+
+       The <features> tag has a new switch: booktabs="true|false".
+       An absent switch is equivalent to booktabs="false".
+       Horizontal lines are set with the booktabs package if this switch
+       is on.
+
+       The <row> tag of tabulars has the following new attributes:
+       topspace, bottomspace and interlinespace. All take a LyXLength
+       as value, or the special keyword "default".
+
 2006-06-10  Jürgen Spitzmüller  <j.spitzmueller@gmx.de>
 
        * format incremented to 247. The Grand Font Interface Rewrite.
index 771fea0db9bd57df2ee486cee12862b5cdf7d286..54221d118c86022e3714c84a46a0c376919881f8 100644 (file)
 
        * configure.m4: check for more viewers and editors
 
+2004-11-11  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * chkconfig.ltx: check package booktabs
+
 2004-11-05  Bennett Helm  <bennett.helm@fandm.edu>
 
        * bind/mac.bind: use <cmd>-Tab and <cmd>-backtab as shortcuts for
index 790eb77cd67f9c3e6370551685e16e665a1fff15..ea5a8d8c5c143bc15c3ff33b65e7a3d22a4ffbe0 100644 (file)
 \TestPackage{array}
 \TestPackage{babel}
 \TestPackage{bibtopic}
+\TestPackage{booktabs}
 \TestPackage{color} % this one should be there if graphics.sty is there.
 \TestPackage{dvipost}
 \TestPackage{fancybox}
index 47c82c31fe0021e816bf7c217a0ed8d6511da8aa..47e2b019dd0910548799680415ab01d8dfeb051b 100644 (file)
 
        * Customization.lyx: document OptionalArgs
 
+2004-11-11  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * LaTeXConfig.lyx.in, LyXConfig.lyx.in: add booktabs package
+
 2004-11-04  Christian Ridderström  <chr@home.se>
 
        * LaTeXConfig.lyx.in: remove "supported" and "other" from CTAN
index 007ba30c8c19aa90995413c56c20648b68edebc8..8f7dfa2801e4781fdb315b819bcc24c1b2960842 100644 (file)
@@ -2447,6 +2447,31 @@ longtable
  is needed by LyX to be able to output correctly multipage tables.
 \end_layout
 
+\begin_layout Subsection
+booktabs
+\end_layout
+
+\begin_layout Description
+
+Found: @chk_booktabs@
+\end_layout
+
+\begin_layout Description
+
+CTAN: 
+\family typewriter 
+macros/latex/contrib/booktabs/
+\end_layout
+
+\begin_layout Description
+
+Notes: The package 
+\family sans 
+booktabs
+\family default 
+ is needed by LyX to be able to output correctly formal tables.
+\end_layout
+
 \begin_layout Subsection
 varioref
 \end_layout
index 6c20a1158e7800b276b4dfa4d00a97400a962f6b..f27e717f66cf8810ff7b11e3ea42207f40b6b9ed 100644 (file)
@@ -1135,6 +1135,24 @@ Table of contents
  if you want to use non-English quotes.
 \layout Subsection
 
+booktabs
+\layout Description
+
+Found: @chk_booktabs@
+\layout Description
+
+CTAN: 
+\family typewriter 
+macros/latex/contrib/booktabs/
+\layout Description
+
+Notes: The package 
+\family sans 
+booktabs
+\family default 
+ is needed by LyX to be able to output correctly formal tables.
+\layout Subsection
+
 color
 \layout Description
 
index 77bb7ee3e41bcbf3e3a865befbf4ed24eabdb524..cf6919c097dcc51f50d41ed65bd1fa14fd55b861 100644 (file)
@@ -1,3 +1,9 @@
+2006-03-14  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * lyx_1_5.py: new file, handle new format 246
+       * LyX.py: handle new format 246
+       * lyx_1_4.py (revert_booktabs): move to lyx_1_5.py
+
 2006-03-06  José Matos  <jamatos@lyx.org>
 
        * lyx_1_4.py (remove_paperpackage): Only reset the papersize for
        * lyx_1_4.py: unify the call convention of convertion
        functions. Now they all accept a file.
 
+2004-12-06  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * lyx_1_4.py, LyX.py: handle new format 239
+       * lyx_1_4.py (revert_booktabs): move to 239 -> 238 conversion
+
 2004-12-03  José Matos  <jamatos@lyx.org>
 
        * LyX.py: format up to 238.
 
        * lyx_1_2.py (convert): rename opt to file, as in all other files.
 
+2004-12-06  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * lyx_1_4.py, LyX.py: handle new format 238
+       * lyx_1_4.py (revert_booktabs): new
+
 2004-10-28  José Matos  <jamatos@lyx.org>
 
        * LyX.pm: add internal documentation.
index 66e971b4aedf83dbfb714461883760cdff922377..1ee2fb0c06c55be9a44b4a4ef7cdcfe66c248c85 100644 (file)
@@ -47,9 +47,9 @@ format_relation = [("0_10",  [210], ["0.10.7","0.10"]),
                    ("1_1_6", [217], ["1.1.6","1.1.6fix1","1.1.6fix2","1.1"]),
                    ("1_1_6fix3", [218], ["1.1.6fix3","1.1.6fix4","1.1"]),
                    ("1_2", [220], ["1.2.0","1.2.1","1.2.3","1.2.4","1.2"]),
-                   ("1_3", [221], ["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3"]),
+                   ("1_3", [221], ["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3"]),
                    ("1_4", range(222,246), ["1.4.0", "1.4.1", "1.4.2svn"]),
-                   ("1_5", range(246,248), ["1.5.0svn"])]
+                   ("1_5", range(246,249), ["1.5.0svn","1.5"])]
 
 
 def formats_list():
index 1ce73f661001304d6c51c24a6eb5e02b80c6c7a9..e27dbc533672583c086b28c8c9cfa615f7b72300 100644 (file)
@@ -1,6 +1,7 @@
 # This file is part of lyx2lyx
 # -*- coding: iso-8859-1 -*-
 # Copyright (C) 2006 José Matos <jamatos@lyx.org>
+# Copyright (C) 2004-2006 Georg Baum <Georg.Baum@post.rwth-aachen.de>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-from parser_tools import find_token_exact, find_tokens, get_value
+import re
+from parser_tools import find_token, find_token_exact, find_tokens, find_end_of_inset, get_value
+from string import replace
+
 
 ##
 #  Notes: Framed/Shaded
@@ -170,16 +174,46 @@ def revert_font_settings(file):
         file.warning("Ignoring `\\font_osf = true'")
 
 
+def revert_booktabs(file):
+# we just remove the booktabs flag, everything else will become a mess.
+    re_row = re.compile(r'^<row.*space="[^"]+".*>$')
+    re_tspace = re.compile(r'\s+topspace="[^"]+"')
+    re_bspace = re.compile(r'\s+bottomspace="[^"]+"')
+    re_ispace = re.compile(r'\s+interlinespace="[^"]+"')
+    i = 0
+    while 1:
+        i = find_token(file.body, "\\begin_inset Tabular", i)
+        if i == -1:
+            return
+        j = find_end_of_inset(file.body, i + 1)
+        if j == -1:
+            file.warning("Malformed LyX file: Could not find end of tabular.")
+           continue
+        for k in range(i, j):
+            if re.search('^<features.* booktabs="true".*>$', file.body[k]):
+                file.warning("Converting 'booktabs' table to normal table.")
+                file.body[k] = replace(file.body[k], ' booktabs="true"', '')
+            if re.search(re_row, file.body[k]):
+                file.warning("Removing extra row space.")
+                file.body[k] = re_tspace.sub('', file.body[k])
+                file.body[k] = re_bspace.sub('', file.body[k])
+                file.body[k] = re_ispace.sub('', file.body[k])
+        i = i + 1
+
+
 ##
 # Conversion hub
 #
 
 convert = [[246, []],
-           [247, [convert_font_settings]]]
+           [247, [convert_font_settings]],
+           [248, []]]
 
-revert  = [[246, [revert_font_settings]],
+revert =  [[247, [revert_booktabs]],
+           [246, [revert_font_settings]],
            [245, [revert_framed]]]
 
+
 if __name__ == "__main__":
     pass
 
index 2329366cac7389585026ce980e3573cbd7a3a701..144f6dde91ca4c9dea84ac4b5564363fc4db102b 100644 (file)
 
        * MenuBackend.h (clear): new method.
 
+2006-03-14  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * buffer.C: format up to 246.
+
 2006-03-13  Martin Vermeer  <martin.vermeer@hut.fi>
 
        * rowpainter.C (paintChangeBar): fix painting of change bar with
 
        * main.C: (main): no longer pass pointers to os::init.
 
+2004-12-06  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * buffer.C: format up to 239.
+
 2004-12-06  Alfredo Braunstein  <abraunst@lyx.org>
 
        * undo.C (textUndoOrRedo): simplify logic, fix a crash
 
        * vspace.C: fix off-by-one-error, related to fix #1682
 
+2004-11-11  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * buffer.C: format up to 238.
+
+2004-11-11  Edwin Leuven
+
+       * LaTeXFeatures.C: add booktabs package
+       * tabular.[Ch] (use_booktabs, setBookTabs, useBookTabs): new members,
+       use them in several places
+
 2004-11-11  Jürgen Spitzmüller  <j.spitzmueller@gmx.de>
 
        * lengthcommon.C: a more general fix for bug 1682
index 419e5ec09890af407b331f5bfe2ac096f4c9902f..921c15ef782823be4ede8470e4be22ea591b40dc 100644 (file)
@@ -241,6 +241,7 @@ char const * simplefeatures[] = {
        "varioref",
        "prettyref",
        "float",
+       "booktabs",
        "dvipost",
        "fancybox",
        "calc",
index 7603751c806c842f5b523f166a2b314b5b05b331..d5e60413b353dcfe050e107cfa7eb1d610d60917 100644 (file)
@@ -146,7 +146,7 @@ extern BufferList bufferlist;
 
 namespace {
 
-int const LYX_FORMAT = 247;
+int const LYX_FORMAT = 248;
 
 } // namespace anon
 
index 1d33d438e189ad49ca6f2f62bdd9662d23fd87d0..47ccd4d1da983a3eec967773ba0bbc10708babbe 100644 (file)
 
        * ControlTabular.C (initialiseParams): Compute the active cell
 
+2004-11-11  Edwin Leuven
+
+       * ControlTabular.[Ch] (booktabs): new
+
 2004-11-09  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
 
        * ControlInclude.C (browse): Use GetExtension() instead of
index afbd485c5025a78ae0fbf971bacaaa1f80383ddd..513833f3fa1c65555a70268aff9b37dcf96ec210 100644 (file)
@@ -222,6 +222,15 @@ void ControlTabular::valign(ControlTabular::VALIGN v)
 }
 
 
+void ControlTabular::booktabs(bool yes)
+{
+       if (yes)
+               set(LyXTabular::SET_BOOKTABS);
+       else
+               set(LyXTabular::UNSET_BOOKTABS);
+}
+
+
 void ControlTabular::longTabular(bool yes)
 {
        if (yes)
index fcdc2bb06214045d5cc3621fa43ded851e482520..86c7f3fa1b3276b2733888487586003239a9e042 100644 (file)
@@ -69,6 +69,8 @@ public:
 
        void valign(VALIGN h);
 
+       void booktabs(bool yes);
+
        void longTabular(bool yes);
 
 private:
index bd1918f388957fc7ccad68cd0ad9902132b1f5ed..eb5c1463f911668928b0984bff1c26a5239e9794 100644 (file)
@@ -31,6 +31,10 @@ using std::string;
 using std::vector;
 
 
+#ifdef WITH_WARNINGS
+#warning Implement booktabs settings
+#endif
+
 namespace lyx {
 namespace frontend {
 
index 914d5f312c40b4c9cd7fe3bf768d8b7a3d6585ef..44a94ad795b3f5d8f206d88f0e81ed5d0789096e 100644 (file)
        * QPrefsDialog.h: include LColor.h to satisfy concept checks.
        * lcolorcache.h: ditto
 
+2004-11-16  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * QTabular.C (update_borders): disable vertical rules if using
+       booktabs
+       * QTabularDialog.C (booktabs_clicked): add a missing call to
+       form_->changed() and update the borders
+
 2004-11-15  Jean-Marc Lasgouttes  <lasgouttes@lyx.org>
 
        * QtView.C (hasFocus): new method
        * QLPopupMenu.C (populate): remove a Qt/Mac hack to disable some
        menu entries when the main window does not have focus
 
+2004-11-11  Edwin Leuven
+
+       * QTabular.C (build_dialog, update_contents): handle booktabsCB
+       * QTabularDialog.[Ch] (booktabs_clicked): new
+       * ui/QTabularDialogBase.ui (booktabsCB): new checkbox
+
 2004-11-08  Jean-Marc Lasgouttes  <lasgouttes@lyx.org>
 
        * QLToolbar.C (selected): use layoutSelected
index ee63e033381142cd59fe7714eff507ec0031b5a1..dbe60bc803eb7273da51f6d715fcdb6e02ba1115 100644 (file)
@@ -28,6 +28,7 @@
 #include <qcheckbox.h>
 #include <qlineedit.h>
 #include <qpushbutton.h>
+#include <qradiobutton.h>
 #include "qsetborder.h"
 
 using std::string;
@@ -60,6 +61,8 @@ void QTabular::build_dialog()
        bcview().addReadOnly(dialog_->borderSetPB);
        bcview().addReadOnly(dialog_->borderUnsetPB);
        bcview().addReadOnly(dialog_->borders);
+       bcview().addReadOnly(dialog_->booktabsRB);
+       bcview().addReadOnly(dialog_->borderDefaultRB);
        bcview().addReadOnly(dialog_->longTabularCB);
        bcview().addReadOnly(dialog_->headerStatusCB);
        bcview().addReadOnly(dialog_->headerBorderAboveCB);
@@ -76,10 +79,25 @@ void QTabular::build_dialog()
        bcview().addReadOnly(dialog_->lastfooterBorderBelowCB);
        bcview().addReadOnly(dialog_->lastfooterNoContentsCB);
        bcview().addReadOnly(dialog_->newpageCB);
+       bcview().addReadOnly(dialog_->topspaceED);
+       bcview().addReadOnly(dialog_->topspaceUnit);
+       bcview().addReadOnly(dialog_->topspaceCO);
+       bcview().addReadOnly(dialog_->bottomspaceED);
+       bcview().addReadOnly(dialog_->bottomspaceUnit);
+       bcview().addReadOnly(dialog_->bottomspaceCO);
+       bcview().addReadOnly(dialog_->interlinespaceED);
+       bcview().addReadOnly(dialog_->interlinespaceUnit);
+       bcview().addReadOnly(dialog_->interlinespaceCO);
 
        // initialize the length validator
        addCheckedLineEdit(bcview(), dialog_->widthED,
                dialog_->fixedWidthColLA);
+       addCheckedLineEdit(bcview(), dialog_->topspaceED,
+               dialog_->topspaceLA);
+       addCheckedLineEdit(bcview(), dialog_->bottomspaceED,
+               dialog_->bottomspaceLA);
+       addCheckedLineEdit(bcview(), dialog_->interlinespaceED,
+               dialog_->interlinespaceLA);
 }
 
 
@@ -94,10 +112,11 @@ void QTabular::update_borders()
        LyXTabular const & tabular = controller().tabular();
        LyXTabular::idx_type const cell = controller().getActiveCell();
        bool const isMulticolumnCell = tabular.isMultiColumn(cell);
+       bool const useBookTabs = tabular.useBookTabs();
 
        if (!isMulticolumnCell) {
-               dialog_->borders->setLeftEnabled(true);
-               dialog_->borders->setRightEnabled(true);
+               dialog_->borders->setLeftEnabled(!useBookTabs);
+               dialog_->borders->setRightEnabled(!useBookTabs);
                dialog_->borders->setTop(tabular.topLine(cell, true));
                dialog_->borders->setBottom(tabular.bottomLine(cell, true));
                dialog_->borders->setLeft(tabular.leftLine(cell, true));
@@ -109,18 +128,18 @@ void QTabular::update_borders()
 
        dialog_->borders->setTop(tabular.topLine(cell));
        dialog_->borders->setBottom(tabular.bottomLine(cell));
-       // pay attention to left/right lines: they are only allowed
-       // to set if we are in first/last cell of row or if the left/right
-       // cell is also a multicolumn.
+       // pay attention to left/right lines: they are only allowed to set
+       // if we don't use booktabs and if we are in first/last cell of row
+       // or if the left/right cell is also a multicolumn.
        if (tabular.isFirstCellInRow(cell) || tabular.isMultiColumn(cell - 1)) {
-               dialog_->borders->setLeftEnabled(true);
+               dialog_->borders->setLeftEnabled(!useBookTabs);
                dialog_->borders->setLeft(tabular.leftLine(cell));
        } else {
                dialog_->borders->setLeft(false);
                dialog_->borders->setLeftEnabled(false);
        }
        if (tabular.isLastCellInRow(cell) || tabular.isMultiColumn(cell + 1)) {
-               dialog_->borders->setRightEnabled(true);
+               dialog_->borders->setRightEnabled(!useBookTabs);
                dialog_->borders->setRight(tabular.rightLine(cell));
        } else {
                dialog_->borders->setRight(false);
@@ -151,6 +170,10 @@ void QTabular::update_contents()
 
        dialog_->longTabularCB->setChecked(tabular.isLongTabular());
 
+       dialog_->borderDefaultRB->setChecked(!tabular.useBookTabs());
+
+       dialog_->booktabsRB->setChecked(tabular.useBookTabs());
+
        update_borders();
 
        LyXLength pwidth;
@@ -232,6 +255,60 @@ void QTabular::update_contents()
        dialog_->hAlignCB->setEnabled(true);
        dialog_->vAlignCB->setEnabled(!pwidth.zero());
 
+       if (tabular.row_info[row].top_space.empty()
+           && !tabular.row_info[row].top_space_default) {
+               dialog_->topspaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].top_space_default) {
+               dialog_->topspaceCO->setCurrentItem(1);
+       } else {
+               dialog_->topspaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->topspaceED, 
+                               dialog_->topspaceUnit,
+                               tabular.row_info[row].top_space.asString(),
+                               default_unit);
+       }
+       dialog_->topspaceED->setEnabled(!isReadonly 
+               && (dialog_->topspaceCO->currentItem() == 2));
+       dialog_->topspaceUnit->setEnabled(!isReadonly 
+               && (dialog_->topspaceCO->currentItem() == 2));
+       dialog_->topspaceCO->setEnabled(!isReadonly);
+
+       if (tabular.row_info[row].bottom_space.empty()
+           && !tabular.row_info[row].bottom_space_default) {
+               dialog_->bottomspaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].bottom_space_default) {
+               dialog_->bottomspaceCO->setCurrentItem(1);
+       } else {
+               dialog_->bottomspaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->bottomspaceED, 
+                               dialog_->bottomspaceUnit,
+                               tabular.row_info[row].bottom_space.asString(),
+                               default_unit);
+       }
+       dialog_->bottomspaceED->setEnabled(!isReadonly 
+               && (dialog_->bottomspaceCO->currentItem() == 2));
+       dialog_->bottomspaceUnit->setEnabled(!isReadonly 
+               && (dialog_->bottomspaceCO->currentItem() == 2));
+       dialog_->bottomspaceCO->setEnabled(!isReadonly);
+
+       if (tabular.row_info[row].interline_space.empty()
+           && !tabular.row_info[row].interline_space_default) {
+               dialog_->interlinespaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].interline_space_default) {
+               dialog_->interlinespaceCO->setCurrentItem(1);
+       } else {
+               dialog_->interlinespaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->interlinespaceED, 
+                               dialog_->interlinespaceUnit,
+                               tabular.row_info[row].interline_space.asString(),
+                               default_unit);
+       }
+       dialog_->interlinespaceED->setEnabled(!isReadonly 
+               && (dialog_->interlinespaceCO->currentItem() == 2));
+       dialog_->interlinespaceUnit->setEnabled(!isReadonly 
+               && (dialog_->interlinespaceCO->currentItem() == 2));
+       dialog_->interlinespaceCO->setEnabled(!isReadonly);
+
        if (!tabular.isLongTabular()) {
                dialog_->headerStatusCB->setChecked(false);
                dialog_->headerBorderAboveCB->setChecked(false);
@@ -369,6 +446,48 @@ void QTabular::closeGUI()
                else
                        controller().set(LyXTabular::SET_PWIDTH, width);
        }
+
+       switch (dialog_->topspaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_TOP_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_TOP_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_TOP_SPACE,
+                               widgetsToLength(dialog_->topspaceED, 
+                                       dialog_->topspaceUnit));
+                       break;
+       }
+
+       switch (dialog_->bottomspaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE,
+                               widgetsToLength(dialog_->bottomspaceED, 
+                                       dialog_->bottomspaceUnit));
+                       break;
+       }
+
+       switch (dialog_->interlinespaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE,
+                               widgetsToLength(dialog_->interlinespaceED, 
+                                       dialog_->interlinespaceUnit));
+                       break;
+       }
 }
 
 } // namespace frontend
index b1fafff8bb445482170f1a01c5b216fdae43b8c1..bed77295a88a6713442ca8ab72e77f8a15e37102 100644 (file)
 
 #include "QTabularDialog.h"
 #include "QTabular.h"
+#include "lengthcombo.h"
 #include "validators.h"
 #include "qt_helpers.h"
 
+#include "controllers/ButtonController.h"
 #include "controllers/ControlTabular.h"
 
 #include <qcheckbox.h>
 #include <qpushbutton.h>
+#include <qradiobutton.h>
 #include <qlineedit.h>
 
 using std::string;
@@ -37,6 +40,9 @@ QTabularDialog::QTabularDialog(QTabular * form)
                form, SLOT(slotClose()));
 
        widthED->setValidator(unsignedLengthValidator(widthED));
+       topspaceED->setValidator(new LengthValidator(topspaceED));
+       bottomspaceED->setValidator(new LengthValidator(bottomspaceED));
+       interlinespaceED->setValidator(new LengthValidator(interlinespaceED));
 }
 
 
@@ -119,6 +125,96 @@ void QTabularDialog::width_changed()
 }
 
 
+void QTabularDialog::topspace_changed()
+{
+       switch(topspaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_TOP_SPACE, "");
+                       topspaceED->setEnabled(false);
+                       topspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_TOP_SPACE, "default");
+                       topspaceED->setEnabled(false);
+                       topspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!topspaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_TOP_SPACE,
+                                       widgetsToLength(topspaceED, topspaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               topspaceED->setEnabled(true);
+                               topspaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
+void QTabularDialog::bottomspace_changed()
+{
+       switch(bottomspaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_BOTTOM_SPACE, "");
+                               bottomspaceED->setEnabled(false);
+                               bottomspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_BOTTOM_SPACE, "default");
+                       bottomspaceED->setEnabled(false);
+                       bottomspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!bottomspaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_BOTTOM_SPACE,
+                                       widgetsToLength(bottomspaceED, bottomspaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               bottomspaceED->setEnabled(true);
+                               bottomspaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
+void QTabularDialog::interlinespace_changed()
+{
+       switch(interlinespaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_INTERLINE_SPACE, "");
+                               interlinespaceED->setEnabled(false);
+                               interlinespaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_INTERLINE_SPACE, "default");
+                       interlinespaceED->setEnabled(false);
+                       interlinespaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!interlinespaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_INTERLINE_SPACE,
+                                       widgetsToLength(interlinespaceED, interlinespaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               interlinespaceED->setEnabled(true);
+                               interlinespaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
 void QTabularDialog::multicolumn_clicked()
 {
        form_->controller().toggleMultiColumn();
@@ -344,5 +440,16 @@ void QTabularDialog::ltLastFooterEmpty_clicked()
        form_->changed();
 }
 
+
+void QTabularDialog::booktabs_clicked()
+{
+       if (booktabsRB->isChecked())
+               form_->controller().set(LyXTabular::SET_BOOKTABS);
+       else
+               form_->controller().set(LyXTabular::UNSET_BOOKTABS);
+       form_->update_borders();
+       form_->changed();
+}
+
 } // namespace frontend
 } // namespace lyx
index ede823f2fb4a5eef438968afc91ce73b36c4c4bf..13a5eb23cce045ba3b14d1aebcb1d41aa8a1cb8e 100644 (file)
@@ -43,6 +43,9 @@ protected slots:
        virtual void vAlign_changed(int align);
        virtual void specialAlignment_changed();
        virtual void width_changed();
+       virtual void topspace_changed();
+       virtual void bottomspace_changed();
+       virtual void interlinespace_changed();
        virtual void longTabular();
        virtual void ltNewpage_clicked();
        virtual void ltHeaderStatus_clicked();
@@ -59,6 +62,7 @@ protected slots:
        virtual void ltLastFooterBorderAbove_clicked();
        virtual void ltLastFooterBorderBelow_clicked();
        virtual void ltLastFooterEmpty_clicked();
+       virtual void booktabs_clicked();
 
 protected:
        virtual void closeEvent(QCloseEvent * e);
index cc607d8f9e6f7eabb666e8a5e6347ae6d919bb1a..84adcd7732532bb71b8377dfb3a6f33737381e6c 100644 (file)
@@ -18,7 +18,7 @@
     <property name="sizeGripEnabled">
         <bool>true</bool>
     </property>
-    <vbox>
+    <grid>
         <property name="name">
             <cstring>unnamed</cstring>
         </property>
         <property name="spacing">
             <number>6</number>
         </property>
-        <widget class="QTabWidget">
+        <widget class="QLayoutWidget" row="1" column="0">
+            <property name="name">
+                <cstring>Layout2</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>0</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Current cell:</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit">
+                    <property name="name">
+                        <cstring>tabularRowED</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="maximumSize">
+                        <size>
+                            <width>40</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property name="focusPolicy">
+                        <enum>NoFocus</enum>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Current row position</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit">
+                    <property name="name">
+                        <cstring>tabularColumnED</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="maximumSize">
+                        <size>
+                            <width>40</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property name="focusPolicy">
+                        <enum>NoFocus</enum>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Current column position</string>
+                    </property>
+                </widget>
+                <spacer>
+                    <property name="name">
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>closePB</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>Close</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>false</bool>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QTabWidget" row="0" column="0">
             <property name="name">
                 <cstring>TabWidget</cstring>
             </property>
                             <string>Horizontal alignment in column</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="4">
+                    <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="4">
                         <property name="name">
                             <cstring>rotateTabularCB</cstring>
                         </property>
                         <property name="text">
                             <string>&amp;Rotate table 90 degrees</string>
                         </property>
+                        <property name="accel">
+                            <string>Alt+R</string>
+                        </property>
                         <property name="toolTip" stdset="0">
                             <string>Rotate the table by 90 degrees</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="4">
+                    <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="4">
                         <property name="name">
                             <cstring>rotateCellCB</cstring>
                         </property>
                         <property name="text">
                             <string>Rotate &amp;cell 90 degrees</string>
                         </property>
+                        <property name="accel">
+                            <string>Alt+C</string>
+                        </property>
                         <property name="toolTip" stdset="0">
                             <string>Rotate this cell by 90 degrees</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="5" column="0" rowspan="1" colspan="2">
+                    <widget class="QLabel" row="6" column="0" rowspan="1" colspan="2">
                         <property name="name">
                             <cstring>specialAlignmentLA</cstring>
                         </property>
                             <cstring>specialAlignmentED</cstring>
                         </property>
                     </widget>
-                    <widget class="QLineEdit" row="5" column="2" rowspan="1" colspan="2">
+                    <widget class="QLineEdit" row="6" column="2" rowspan="1" colspan="2">
                         <property name="name">
                             <cstring>specialAlignmentED</cstring>
                         </property>
                             <string>Custom column format (LaTeX)</string>
                         </property>
                     </widget>
-                    <spacer row="6" column="2">
+                    <spacer row="7" column="2">
                         <property name="name">
                             <cstring>Spacer5</cstring>
                         </property>
                     <property name="name">
                         <cstring>unnamed</cstring>
                     </property>
-                    <property name="margin">
-                        <number>11</number>
-                    </property>
-                    <property name="spacing">
-                        <number>6</number>
-                    </property>
-                    <widget class="QGroupBox" row="0" column="0">
+                    <spacer row="1" column="0">
                         <property name="name">
-                            <cstring>setBordersGB</cstring>
+                            <cstring>spacer7</cstring>
                         </property>
-                        <property name="title">
-                            <string>Set Borders</string>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>31</width>
+                                <height>50</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QLayoutWidget" row="0" column="0">
+                        <property name="name">
+                            <cstring>layout3</cstring>
                         </property>
                         <grid>
                             <property name="name">
                                 <cstring>unnamed</cstring>
                             </property>
-                            <property name="margin">
-                                <number>11</number>
-                            </property>
-                            <property name="spacing">
-                                <number>6</number>
-                            </property>
-                            <widget class="QFrame" row="0" column="0">
+                            <widget class="QLayoutWidget" row="0" column="0">
                                 <property name="name">
-                                    <cstring>bordersF</cstring>
+                                    <cstring>layout2</cstring>
                                 </property>
-                                <property name="sizePolicy">
-                                    <sizepolicy>
-                                        <hsizetype>5</hsizetype>
-                                        <vsizetype>5</vsizetype>
-                                        <horstretch>0</horstretch>
-                                        <verstretch>0</verstretch>
-                                    </sizepolicy>
+                                <hbox>
+                                    <property name="name">
+                                        <cstring>unnamed</cstring>
+                                    </property>
+                                    <widget class="QGroupBox">
+                                        <property name="name">
+                                            <cstring>setBordersGB</cstring>
+                                        </property>
+                                        <property name="title">
+                                            <string>Set Borders</string>
+                                        </property>
+                                        <grid>
+                                            <property name="name">
+                                                <cstring>unnamed</cstring>
+                                            </property>
+                                            <property name="margin">
+                                                <number>11</number>
+                                            </property>
+                                            <property name="spacing">
+                                                <number>6</number>
+                                            </property>
+                                            <widget class="QFrame" row="0" column="0">
+                                                <property name="name">
+                                                    <cstring>bordersF</cstring>
+                                                </property>
+                                                <property name="sizePolicy">
+                                                    <sizepolicy>
+                                                        <hsizetype>5</hsizetype>
+                                                        <vsizetype>5</vsizetype>
+                                                        <horstretch>0</horstretch>
+                                                        <verstretch>0</verstretch>
+                                                    </sizepolicy>
+                                                </property>
+                                                <property name="palette">
+                                                    <palette>
+                                                        <active>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>230</red>
+                                                                <green>240</green>
+                                                                <blue>249</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>242</red>
+                                                                <green>247</green>
+                                                                <blue>252</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>115</red>
+                                                                <green>120</green>
+                                                                <blue>124</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>154</red>
+                                                                <green>160</green>
+                                                                <blue>166</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>16</red>
+                                                                <green>145</green>
+                                                                <blue>210</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                        </active>
+                                                        <disabled>
+                                                            <color>
+                                                                <red>128</red>
+                                                                <green>128</green>
+                                                                <blue>128</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>230</red>
+                                                                <green>240</green>
+                                                                <blue>249</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>115</red>
+                                                                <green>120</green>
+                                                                <blue>124</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>154</red>
+                                                                <green>160</green>
+                                                                <blue>166</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>128</red>
+                                                                <green>128</green>
+                                                                <blue>128</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>16</red>
+                                                                <green>145</green>
+                                                                <blue>210</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                        </disabled>
+                                                        <inactive>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>230</red>
+                                                                <green>240</green>
+                                                                <blue>249</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>115</red>
+                                                                <green>120</green>
+                                                                <blue>124</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>154</red>
+                                                                <green>160</green>
+                                                                <blue>166</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>16</red>
+                                                                <green>145</green>
+                                                                <blue>210</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>255</red>
+                                                                <green>255</green>
+                                                                <blue>255</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                            <color>
+                                                                <red>0</red>
+                                                                <green>0</green>
+                                                                <blue>0</blue>
+                                                            </color>
+                                                        </inactive>
+                                                    </palette>
+                                                </property>
+                                                <property name="frameShape">
+                                                    <enum>StyledPanel</enum>
+                                                </property>
+                                                <property name="frameShadow">
+                                                    <enum>Sunken</enum>
+                                                </property>
+                                                <property name="layoutMargin" stdset="0">
+                                                </property>
+                                                <grid>
+                                                    <property name="name">
+                                                        <cstring>unnamed</cstring>
+                                                    </property>
+                                                    <property name="margin">
+                                                        <number>3</number>
+                                                    </property>
+                                                    <property name="spacing">
+                                                        <number>6</number>
+                                                    </property>
+                                                    <widget class="QSetBorder" row="0" column="0">
+                                                        <property name="name">
+                                                            <cstring>borders</cstring>
+                                                        </property>
+                                                        <property name="sizePolicy">
+                                                            <sizepolicy>
+                                                                <hsizetype>1</hsizetype>
+                                                                <vsizetype>1</vsizetype>
+                                                                <horstretch>0</horstretch>
+                                                                <verstretch>0</verstretch>
+                                                            </sizepolicy>
+                                                        </property>
+                                                        <property name="toolTip" stdset="0">
+                                                            <string>Set borders of the current (selected) cell(s)</string>
+                                                        </property>
+                                                    </widget>
+                                                </grid>
+                                            </widget>
+                                        </grid>
+                                    </widget>
+                                    <widget class="QGroupBox">
+                                        <property name="name">
+                                            <cstring>allBordersGB</cstring>
+                                        </property>
+                                        <property name="title">
+                                            <string>All Borders</string>
+                                        </property>
+                                        <grid>
+                                            <property name="name">
+                                                <cstring>unnamed</cstring>
+                                            </property>
+                                            <property name="margin">
+                                                <number>11</number>
+                                            </property>
+                                            <property name="spacing">
+                                                <number>6</number>
+                                            </property>
+                                            <widget class="QPushButton" row="0" column="0">
+                                                <property name="name">
+                                                    <cstring>borderSetPB</cstring>
+                                                </property>
+                                                <property name="text">
+                                                    <string>&amp;Set</string>
+                                                </property>
+                                                <property name="toolTip" stdset="0">
+                                                    <string>Set all borders of the current (selected) cell(s)</string>
+                                                </property>
+                                            </widget>
+                                            <widget class="QPushButton" row="1" column="0">
+                                                <property name="name">
+                                                    <cstring>borderUnsetPB</cstring>
+                                                </property>
+                                                <property name="text">
+                                                    <string>C&amp;lear</string>
+                                                </property>
+                                                <property name="toolTip" stdset="0">
+                                                    <string>Unset all borders of the current (selected) cell(s)</string>
+                                                </property>
+                                            </widget>
+                                        </grid>
+                                    </widget>
+                                </hbox>
+                            </widget>
+                            <widget class="QButtonGroup" row="0" column="2">
+                                <property name="name">
+                                    <cstring>borderStyleBG</cstring>
                                 </property>
-                                <property name="palette">
-                                    <palette>
-                                        <active>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>230</red>
-                                                <green>240</green>
-                                                <blue>249</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>242</red>
-                                                <green>247</green>
-                                                <blue>252</blue>
-                                            </color>
-                                            <color>
-                                                <red>115</red>
-                                                <green>120</green>
-                                                <blue>124</blue>
-                                            </color>
-                                            <color>
-                                                <red>154</red>
-                                                <green>160</green>
-                                                <blue>166</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>16</red>
-                                                <green>145</green>
-                                                <blue>210</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                        </active>
-                                        <disabled>
-                                            <color>
-                                                <red>128</red>
-                                                <green>128</green>
-                                                <blue>128</blue>
-                                            </color>
-                                            <color>
-                                                <red>230</red>
-                                                <green>240</green>
-                                                <blue>249</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>115</red>
-                                                <green>120</green>
-                                                <blue>124</blue>
-                                            </color>
-                                            <color>
-                                                <red>154</red>
-                                                <green>160</green>
-                                                <blue>166</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>128</red>
-                                                <green>128</green>
-                                                <blue>128</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>16</red>
-                                                <green>145</green>
-                                                <blue>210</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                        </disabled>
-                                        <inactive>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>230</red>
-                                                <green>240</green>
-                                                <blue>249</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>115</red>
-                                                <green>120</green>
-                                                <blue>124</blue>
-                                            </color>
-                                            <color>
-                                                <red>154</red>
-                                                <green>160</green>
-                                                <blue>166</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>16</red>
-                                                <green>145</green>
-                                                <blue>210</blue>
-                                            </color>
-                                            <color>
-                                                <red>255</red>
-                                                <green>255</green>
-                                                <blue>255</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                            <color>
-                                                <red>0</red>
-                                                <green>0</green>
-                                                <blue>0</blue>
-                                            </color>
-                                        </inactive>
-                                    </palette>
-                                </property>
-                                <property name="frameShape">
-                                    <enum>StyledPanel</enum>
-                                </property>
-                                <property name="frameShadow">
-                                    <enum>Sunken</enum>
-                                </property>
-                                <property name="layoutMargin" stdset="0">
+                                <property name="title">
+                                    <string>Style</string>
                                 </property>
                                 <grid>
                                     <property name="name">
                                         <cstring>unnamed</cstring>
                                     </property>
-                                    <property name="margin">
-                                        <number>3</number>
-                                    </property>
-                                    <property name="spacing">
-                                        <number>6</number>
-                                    </property>
-                                    <widget class="QSetBorder" row="0" column="0">
+                                    <widget class="QRadioButton" row="1" column="0">
+                                        <property name="name">
+                                            <cstring>booktabsRB</cstring>
+                                        </property>
+                                        <property name="text">
+                                            <string>Fo&amp;rmal</string>
+                                        </property>
+                                        <property name="accel">
+                                            <string>Alt+R</string>
+                                        </property>
+                                        <property name="toolTip" stdset="0">
+                                            <string>Use formal (a.k.a. booktabs) border style (no vertical borders)</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="QRadioButton" row="0" column="0">
                                         <property name="name">
-                                            <cstring>borders</cstring>
+                                            <cstring>borderDefaultRB</cstring>
                                         </property>
-                                        <property name="sizePolicy">
-                                            <sizepolicy>
-                                                <hsizetype>1</hsizetype>
-                                                <vsizetype>1</vsizetype>
-                                                <horstretch>0</horstretch>
-                                                <verstretch>0</verstretch>
-                                            </sizepolicy>
+                                        <property name="text">
+                                            <string>De&amp;fault</string>
+                                        </property>
+                                        <property name="accel">
+                                            <string>Alt+F</string>
                                         </property>
                                         <property name="toolTip" stdset="0">
-                                            <string>Set borders of the current (selected) cell(s)</string>
+                                            <string>Use default (grid-like) border style</string>
                                         </property>
                                     </widget>
                                 </grid>
                             </widget>
-                        </grid>
-                    </widget>
-                    <widget class="QGroupBox" row="0" column="1">
-                        <property name="name">
-                            <cstring>allBordersGB</cstring>
-                        </property>
-                        <property name="title">
-                            <string>All Borders</string>
-                        </property>
-                        <grid>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <property name="margin">
-                                <number>11</number>
-                            </property>
-                            <property name="spacing">
-                                <number>6</number>
-                            </property>
-                            <widget class="QPushButton" row="0" column="0">
+                            <spacer row="1" column="0">
                                 <property name="name">
-                                    <cstring>borderSetPB</cstring>
+                                    <cstring>spacer8</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>&amp;Set</string>
+                                <property name="orientation">
+                                    <enum>Vertical</enum>
                                 </property>
-                                <property name="toolTip" stdset="0">
-                                    <string>Set all borders of the current (selected) cell(s)</string>
+                                <property name="sizeType">
+                                    <enum>Expanding</enum>
                                 </property>
-                            </widget>
-                            <widget class="QPushButton" row="1" column="0">
+                                <property name="sizeHint">
+                                    <size>
+                                        <width>21</width>
+                                        <height>30</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <widget class="QGroupBox" row="2" column="0" rowspan="1" colspan="3">
                                 <property name="name">
-                                    <cstring>borderUnsetPB</cstring>
+                                    <cstring>spacesGB</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>C&amp;lear</string>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>3</hsizetype>
+                                        <vsizetype>3</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
-                                <property name="toolTip" stdset="0">
-                                    <string>Unset all borders of the current (selected) cell(s)</string>
+                                <property name="title">
+                                    <string>Additional Space</string>
                                 </property>
-                            </widget>
-                        </grid>
-                    </widget>
-                    <spacer row="0" column="2">
-                        <property name="name">
-                            <cstring>Spacer6</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Horizontal</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>20</width>
-                                <height>20</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <spacer row="1" column="0">
-                        <property name="name">
-                            <cstring>Spacer7</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>20</width>
-                                <height>20</height>
-                            </size>
-                        </property>
-                    </spacer>
-                </grid>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>tab</cstring>
-                </property>
-                <attribute name="title">
-                    <string>&amp;Longtable</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <property name="margin">
-                        <number>11</number>
-                    </property>
-                    <property name="spacing">
-                        <number>6</number>
-                    </property>
-                    <widget class="QCheckBox" row="0" column="0">
-                        <property name="name">
-                            <cstring>longTabularCB</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&amp;Use long table</string>
-                        </property>
+                                <grid>
+                                    <property name="name">
+                                        <cstring>unnamed</cstring>
+                                    </property>
+                                    <widget class="LengthCombo" row="0" column="3">
+                                        <property name="name">
+                                            <cstring>topspaceUnit</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>50</width>
+                                                <height>0</height>
+                                            </size>
+                                        </property>
+                                        <property name="focusPolicy">
+                                            <enum>StrongFocus</enum>
+                                        </property>
+                                    </widget>
+                                    <widget class="LengthCombo" row="1" column="3">
+                                        <property name="name">
+                                            <cstring>bottomspaceUnit</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>50</width>
+                                                <height>0</height>
+                                            </size>
+                                        </property>
+                                        <property name="focusPolicy">
+                                            <enum>StrongFocus</enum>
+                                        </property>
+                                    </widget>
+                                    <widget class="LengthCombo" row="2" column="3">
+                                        <property name="name">
+                                            <cstring>interlinespaceUnit</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>50</width>
+                                                <height>0</height>
+                                            </size>
+                                        </property>
+                                        <property name="focusPolicy">
+                                            <enum>StrongFocus</enum>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLineEdit" row="2" column="2">
+                                        <property name="name">
+                                            <cstring>interlinespaceED</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                        <property name="" stdset="0">
+                                        </property>
+                                    </widget>
+                                    <widget class="QLineEdit" row="1" column="2">
+                                        <property name="name">
+                                            <cstring>bottomspaceED</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                        <property name="" stdset="0">
+                                        </property>
+                                    </widget>
+                                    <widget class="QLineEdit" row="0" column="2">
+                                        <property name="name">
+                                            <cstring>topspaceED</cstring>
+                                        </property>
+                                        <property name="enabled">
+                                            <bool>true</bool>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                        <property name="" stdset="0">
+                                        </property>
+                                    </widget>
+                                    <widget class="QComboBox" row="0" column="1">
+                                        <item>
+                                            <property name="text">
+                                                <string>None</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Default</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Custom</string>
+                                            </property>
+                                        </item>
+                                        <property name="name">
+                                            <cstring>topspaceCO</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget class="QComboBox" row="1" column="1">
+                                        <item>
+                                            <property name="text">
+                                                <string>None</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Default</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Custom</string>
+                                            </property>
+                                        </item>
+                                        <property name="name">
+                                            <cstring>bottomspaceCO</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget class="QComboBox" row="2" column="1">
+                                        <item>
+                                            <property name="text">
+                                                <string>None</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Default</string>
+                                            </property>
+                                        </item>
+                                        <item>
+                                            <property name="text">
+                                                <string>Custom</string>
+                                            </property>
+                                        </item>
+                                        <property name="name">
+                                            <cstring>interlinespaceCO</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="0" column="0">
+                                        <property name="name">
+                                            <cstring>topspaceLA</cstring>
+                                        </property>
+                                        <property name="text">
+                                            <string>T&amp;op of row:</string>
+                                        </property>
+                                        <property name="buddy" stdset="0">
+                                            <cstring>topspaceED</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="1" column="0">
+                                        <property name="name">
+                                            <cstring>bottomspaceLA</cstring>
+                                        </property>
+                                        <property name="text">
+                                            <string>Botto&amp;m of row:</string>
+                                        </property>
+                                        <property name="buddy" stdset="0">
+                                            <cstring>bottomspaceED</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="2" column="0">
+                                        <property name="name">
+                                            <cstring>interlinespaceLA</cstring>
+                                        </property>
+                                        <property name="text">
+                                            <string>Bet&amp;ween rows:</string>
+                                        </property>
+                                        <property name="buddy" stdset="0">
+                                            <cstring>interlinespaceED</cstring>
+                                        </property>
+                                    </widget>
+                                </grid>
+                            </widget>
+                            <spacer row="0" column="1">
+                                <property name="name">
+                                    <cstring>spacer9</cstring>
+                                </property>
+                                <property name="orientation">
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property name="sizeType">
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property name="sizeHint">
+                                    <size>
+                                        <width>171</width>
+                                        <height>31</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                        </grid>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>tab</cstring>
+                </property>
+                <attribute name="title">
+                    <string>&amp;Longtable</string>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <property name="margin">
+                        <number>11</number>
+                    </property>
+                    <property name="spacing">
+                        <number>6</number>
+                    </property>
+                    <widget class="QCheckBox" row="0" column="0">
+                        <property name="name">
+                            <cstring>longTabularCB</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Use long table</string>
+                        </property>
                         <property name="toolTip" stdset="0">
                             <string>Select for tables that span multiple pages</string>
                         </property>
                 </grid>
             </widget>
         </widget>
-        <widget class="QLayoutWidget">
-            <property name="name">
-                <cstring>Layout2</cstring>
-            </property>
-            <hbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <property name="margin">
-                    <number>0</number>
-                </property>
-                <property name="spacing">
-                    <number>6</number>
-                </property>
-                <widget class="QLabel">
-                    <property name="name">
-                        <cstring>TextLabel1</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Current cell:</string>
-                    </property>
-                </widget>
-                <widget class="QLineEdit">
-                    <property name="name">
-                        <cstring>tabularRowED</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>1</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="maximumSize">
-                        <size>
-                            <width>40</width>
-                            <height>32767</height>
-                        </size>
-                    </property>
-                    <property name="focusPolicy">
-                        <enum>NoFocus</enum>
-                    </property>
-                    <property name="toolTip" stdset="0">
-                        <string>Current row position</string>
-                    </property>
-                </widget>
-                <widget class="QLineEdit">
-                    <property name="name">
-                        <cstring>tabularColumnED</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>1</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="maximumSize">
-                        <size>
-                            <width>40</width>
-                            <height>32767</height>
-                        </size>
-                    </property>
-                    <property name="focusPolicy">
-                        <enum>NoFocus</enum>
-                    </property>
-                    <property name="toolTip" stdset="0">
-                        <string>Current column position</string>
-                    </property>
-                </widget>
-                <spacer>
-                    <property name="name">
-                        <cstring>Spacer1</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Expanding</enum>
-                    </property>
-                    <property name="sizeHint">
-                        <size>
-                            <width>20</width>
-                            <height>20</height>
-                        </size>
-                    </property>
-                </spacer>
-                <widget class="QPushButton">
-                    <property name="name">
-                        <cstring>closePB</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>1</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="text">
-                        <string>Close</string>
-                    </property>
-                    <property name="autoDefault">
-                        <bool>false</bool>
-                    </property>
-                </widget>
-            </hbox>
-        </widget>
-    </vbox>
+    </grid>
 </widget>
 <customwidgets>
     <customwidget>
 </customwidgets>
 <images>
     <image name="image0">
-        <data format="PNG" length="256">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000c749444154388dad55db1184200c4c180bb81a28c73aad811228c356f42b3792db3cc0db2fc724bb7901dc7b270f27ed17fa5fa9b117b7cd90211f4ba0ac906a7f1453b4d30ca917bb590681552af23f69bfc4ffa71519d2c8f62546ea5ea03738b1c18c33a4d156f0d13f43b61952e4af6d6e8fb3a408f080448419a433d6486d85052fdba892a295f5d45785cd8c51a9d6de6a814a8d2131da51f98e7a3b64ec9da04a8db53d43be3c3c0b22cacf17e4cdb5a931649ceddf34b190cf0aa019f03f1fd3e7457f03b5a66c9ed26e86130000000049454e44ae426082</data>
+        <data format="PNG" length="256">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000c749444154388dad55db1184200c4c180bb005eab1cd6b8112b40d4bf1bee2486ef3006fbf1c93ece605f07eece4e1a4ed42ff2b35f6e2961132e46309941952ed8f628a761a21f56217cb20b04a45fe276d97f8ffb422431ad96e62a4ee057a83131bcc38431a6d057f8eb5cb36438afcb5cded719614011e9088308374c61aa9adb0e0651b5552b4b29efaacb099312ad5da5b2d50a93124463b2adf516fbb8cbd1354a9b1b667c8a787674144f9f982bcb93635ba8cb3fd1b2616f251013403fee763fabce8bff0aa6c98500331e50000000049454e44ae426082</data>
     </image>
 </images>
 <connections>
     <connection>
-        <sender>borderSetPB</sender>
-        <signal>clicked()</signal>
-        <receiver>QTabularDialogBase</receiver>
-        <slot>borderSet_clicked()</slot>
-    </connection>
-    <connection>
-        <sender>borderUnsetPB</sender>
+        <sender>closePB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>borderUnset_clicked()</slot>
-    </connection>
-    <connection>
-        <sender>longTabularCB</sender>
-        <signal>toggled(bool)</signal>
-        <receiver>longtableGB</receiver>
-        <slot>setEnabled(bool)</slot>
+        <slot>close_clicked()</slot>
     </connection>
     <connection>
         <sender>longTabularCB</sender>
         <receiver>newpageCB</receiver>
         <slot>setEnabled(bool)</slot>
     </connection>
-    <connection>
-        <sender>hAlignCB</sender>
-        <signal>activated(int)</signal>
-        <receiver>QTabularDialogBase</receiver>
-        <slot>hAlign_changed(int)</slot>
-    </connection>
-    <connection>
-        <sender>vAlignCB</sender>
-        <signal>activated(int)</signal>
-        <receiver>QTabularDialogBase</receiver>
-        <slot>vAlign_changed(int)</slot>
-    </connection>
-    <connection>
-        <sender>multicolumnCB</sender>
-        <signal>clicked()</signal>
-        <receiver>QTabularDialogBase</receiver>
-        <slot>multicolumn_clicked()</slot>
-    </connection>
     <connection>
         <sender>newpageCB</sender>
         <signal>clicked()</signal>
         <slot>ltNewpage_clicked()</slot>
     </connection>
     <connection>
-        <sender>headerStatusCB</sender>
+        <sender>firstheaderNoContentsCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltHeaderStatus_clicked()</slot>
+        <slot>ltFirstHeaderEmpty_clicked()</slot>
     </connection>
     <connection>
-        <sender>headerBorderAboveCB</sender>
+        <sender>lastfooterNoContentsCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltHeaderBorderAbove_clicked()</slot>
+        <slot>ltLastFooterEmpty_clicked()</slot>
     </connection>
     <connection>
         <sender>headerBorderBelowCB</sender>
         <slot>ltHeaderBorderBelow_clicked()</slot>
     </connection>
     <connection>
-        <sender>firstheaderStatusCB</sender>
+        <sender>firstheaderBorderBelowCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFirstHeaderStatus_clicked()</slot>
+        <slot>ltFirstHeaderBorderBelow_clicked()</slot>
     </connection>
     <connection>
-        <sender>firstheaderBorderAboveCB</sender>
+        <sender>footerBorderBelowCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFirstHeaderBorderAbove_clicked()</slot>
+        <slot>ltFooterBorderBelow_clicked()</slot>
     </connection>
     <connection>
-        <sender>firstheaderBorderBelowCB</sender>
+        <sender>lastfooterBorderBelowCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFirstHeaderBorderBelow_clicked()</slot>
+        <slot>ltLastFooterBorderBelow_clicked()</slot>
     </connection>
     <connection>
-        <sender>firstheaderNoContentsCB</sender>
+        <sender>lastfooterBorderAboveCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFirstHeaderEmpty_clicked()</slot>
+        <slot>ltLastFooterBorderAbove_clicked()</slot>
     </connection>
     <connection>
-        <sender>footerStatusCB</sender>
+        <sender>footerBorderAboveCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFooterStatus_clicked()</slot>
+        <slot>ltFooterBorderAbove_clicked()</slot>
     </connection>
     <connection>
-        <sender>footerBorderAboveCB</sender>
+        <sender>firstheaderBorderAboveCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFooterBorderAbove_clicked()</slot>
+        <slot>ltFirstHeaderBorderAbove_clicked()</slot>
     </connection>
     <connection>
-        <sender>footerBorderBelowCB</sender>
+        <sender>headerBorderAboveCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltFooterBorderBelow_clicked()</slot>
+        <slot>ltHeaderBorderAbove_clicked()</slot>
     </connection>
     <connection>
         <sender>lastfooterStatusCB</sender>
         <slot>ltLastFooterStatus_clicked()</slot>
     </connection>
     <connection>
-        <sender>lastfooterBorderAboveCB</sender>
+        <sender>footerStatusCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltLastFooterBorderAbove_clicked()</slot>
+        <slot>ltFooterStatus_clicked()</slot>
     </connection>
     <connection>
-        <sender>lastfooterBorderBelowCB</sender>
+        <sender>firstheaderStatusCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltLastFooterBorderBelow_clicked()</slot>
+        <slot>ltFirstHeaderStatus_clicked()</slot>
     </connection>
     <connection>
-        <sender>lastfooterNoContentsCB</sender>
+        <sender>headerStatusCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>ltLastFooterEmpty_clicked()</slot>
+        <slot>ltHeaderStatus_clicked()</slot>
     </connection>
     <connection>
-        <sender>specialAlignmentED</sender>
-        <signal>returnPressed()</signal>
-        <receiver>QTabularDialogBase</receiver>
-        <slot>specialAlignment_changed()</slot>
+        <sender>longTabularCB</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>longtableGB</receiver>
+        <slot>setEnabled(bool)</slot>
     </connection>
     <connection>
-        <sender>widthED</sender>
-        <signal>returnPressed()</signal>
+        <sender>longTabularCB</sender>
+        <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>width_changed()</slot>
+        <slot>longTabular()</slot>
     </connection>
     <connection>
-        <sender>widthUnit</sender>
-        <signal>selectionChanged(LyXLength::UNIT)</signal>
+        <sender>borderUnsetPB</sender>
+        <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>width_changed()</slot>
+        <slot>borderUnset_clicked()</slot>
     </connection>
     <connection>
-        <sender>closePB</sender>
+        <sender>borderSetPB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>close_clicked()</slot>
+        <slot>borderSet_clicked()</slot>
     </connection>
     <connection>
         <sender>borders</sender>
         <slot>leftBorder_changed()</slot>
     </connection>
     <connection>
-        <sender>rotateTabularCB</sender>
+        <sender>vAlignCB</sender>
+        <signal>activated(int)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>vAlign_changed(int)</slot>
+    </connection>
+    <connection>
+        <sender>widthED</sender>
+        <signal>returnPressed()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>width_changed()</slot>
+    </connection>
+    <connection>
+        <sender>widthUnit</sender>
+        <signal>selectionChanged(LyXLength::UNIT)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>width_changed()</slot>
+    </connection>
+    <connection>
+        <sender>multicolumnCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>rotateTabular()</slot>
+        <slot>multicolumn_clicked()</slot>
+    </connection>
+    <connection>
+        <sender>specialAlignmentED</sender>
+        <signal>returnPressed()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>specialAlignment_changed()</slot>
     </connection>
     <connection>
         <sender>rotateCellCB</sender>
         <slot>rotateCell()</slot>
     </connection>
     <connection>
-        <sender>longTabularCB</sender>
+        <sender>rotateTabularCB</sender>
         <signal>clicked()</signal>
         <receiver>QTabularDialogBase</receiver>
-        <slot>longTabular()</slot>
+        <slot>rotateTabular()</slot>
+    </connection>
+    <connection>
+        <sender>hAlignCB</sender>
+        <signal>activated(int)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>hAlign_changed(int)</slot>
+    </connection>
+    <connection>
+        <sender>topspaceCO</sender>
+        <signal>activated(int)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>topspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>bottomspaceCO</sender>
+        <signal>activated(int)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>bottomspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>interlinespaceCO</sender>
+        <signal>activated(int)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>interlinespace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>topspaceED</sender>
+        <signal>returnPressed()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>topspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>bottomspaceED</sender>
+        <signal>returnPressed()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>bottomspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>interlinespaceED</sender>
+        <signal>returnPressed()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>interlinespace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>topspaceUnit</sender>
+        <signal>selectionChanged(LyXLength::UNIT)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>topspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>bottomspaceUnit</sender>
+        <signal>selectionChanged(LyXLength::UNIT)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>bottomspace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>interlinespaceUnit</sender>
+        <signal>selectionChanged(LyXLength::UNIT)</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>interlinespace_changed()</slot>
+    </connection>
+    <connection>
+        <sender>booktabsRB</sender>
+        <signal>clicked()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>booktabs_clicked()</slot>
+    </connection>
+    <connection>
+        <sender>borderDefaultRB</sender>
+        <signal>clicked()</signal>
+        <receiver>QTabularDialogBase</receiver>
+        <slot>booktabs_clicked()</slot>
     </connection>
 </connections>
 <tabstops>
     <tabstop>rotateTabularCB</tabstop>
     <tabstop>rotateCellCB</tabstop>
     <tabstop>specialAlignmentED</tabstop>
+    <tabstop>closePB</tabstop>
     <tabstop>borderSetPB</tabstop>
     <tabstop>borderUnsetPB</tabstop>
+    <tabstop>borderDefaultRB</tabstop>
+    <tabstop>booktabsRB</tabstop>
+    <tabstop>topspaceCO</tabstop>
+    <tabstop>bottomspaceCO</tabstop>
+    <tabstop>interlinespaceCO</tabstop>
+    <tabstop>topspaceED</tabstop>
+    <tabstop>bottomspaceED</tabstop>
+    <tabstop>interlinespaceED</tabstop>
+    <tabstop>topspaceUnit</tabstop>
+    <tabstop>bottomspaceUnit</tabstop>
+    <tabstop>interlinespaceUnit</tabstop>
     <tabstop>longTabularCB</tabstop>
     <tabstop>headerStatusCB</tabstop>
     <tabstop>headerBorderAboveCB</tabstop>
     <tabstop>lastfooterBorderBelowCB</tabstop>
     <tabstop>lastfooterNoContentsCB</tabstop>
     <tabstop>newpageCB</tabstop>
-    <tabstop>closePB</tabstop>
 </tabstops>
 <includes>
     <include location="global" impldecl="in implementation">config.h</include>
     <include location="local" impldecl="in implementation">qt_helpers.h</include>
 </includes>
 <slots>
+    <slot access="protected">booktabs_clicked()</slot>
     <slot access="protected">borderSet_clicked()</slot>
     <slot access="protected">borderUnset_clicked()</slot>
     <slot access="protected">bottomBorder_changed()</slot>
     <slot access="protected">topBorder_changed()</slot>
     <slot access="protected">vAlign_changed(int)</slot>
     <slot access="protected">width_changed()</slot>
+    <slot access="protected">topspace_changed()</slot>
+    <slot access="protected">bottomspace_changed()</slot>
+    <slot access="protected">interlinespace_changed()</slot>
 </slots>
 <layoutdefaults spacing="6" margin="11"/>
 <includehints>
     <includehint>lengthcombo.h</includehint>
     <includehint>qsetborder.h</includehint>
+    <includehint>lengthcombo.h</includehint>
+    <includehint>lengthcombo.h</includehint>
+    <includehint>lengthcombo.h</includehint>
 </includehints>
 </UI>
index e8a03e32ba71954f59343f42bb6dd9cc65c7f757..04d5a83e604e4d979a9f3c7767686c8c2cd0ad1e 100644 (file)
@@ -28,6 +28,7 @@
 #include <qcheckbox.h>
 #include <qlineedit.h>
 #include <qpushbutton.h>
+#include <qradiobutton.h>
 #include "qsetborder.h"
 
 using std::string;
@@ -49,6 +50,18 @@ void QTabular::build_dialog()
 
        bcview().setCancel(dialog_->closePB);
 
+       bcview().addReadOnly(dialog_->topspaceED);
+       bcview().addReadOnly(dialog_->topspaceUnit);
+       bcview().addReadOnly(dialog_->topspaceCO);
+       bcview().addReadOnly(dialog_->bottomspaceED);
+       bcview().addReadOnly(dialog_->bottomspaceUnit);
+       bcview().addReadOnly(dialog_->bottomspaceCO);
+       bcview().addReadOnly(dialog_->interlinespaceED);
+       bcview().addReadOnly(dialog_->interlinespaceUnit);
+       bcview().addReadOnly(dialog_->interlinespaceCO);
+       bcview().addReadOnly(dialog_->borderDefaultRB);
+       bcview().addReadOnly(dialog_->booktabsRB);
+
        bcview().addReadOnly(dialog_->multicolumnCB);
        bcview().addReadOnly(dialog_->rotateCellCB);
        bcview().addReadOnly(dialog_->rotateTabularCB);
@@ -80,6 +93,12 @@ void QTabular::build_dialog()
        // initialize the length validator
        addCheckedLineEdit(bcview(), dialog_->widthED,
                dialog_->fixedWidthColLA);
+       addCheckedLineEdit(bcview(), dialog_->topspaceED,
+               dialog_->topspaceLA);
+       addCheckedLineEdit(bcview(), dialog_->bottomspaceED,
+               dialog_->bottomspaceLA);
+       addCheckedLineEdit(bcview(), dialog_->interlinespaceED,
+               dialog_->interlinespaceLA);
 }
 
 
@@ -171,6 +190,63 @@ void QTabular::update_contents()
 
        LyXLength::UNIT default_unit = controller().useMetricUnits() ? LyXLength::CM : LyXLength::IN;
 
+       dialog_->borderDefaultRB->setChecked(!tabular.useBookTabs());
+       dialog_->booktabsRB->setChecked(tabular.useBookTabs());
+
+       if (tabular.row_info[row].top_space.empty()
+           && !tabular.row_info[row].top_space_default) {
+               dialog_->topspaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].top_space_default) {
+               dialog_->topspaceCO->setCurrentItem(1);
+       } else {
+               dialog_->topspaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->topspaceED, 
+                               dialog_->topspaceUnit,
+                               tabular.row_info[row].top_space.asString(),
+                               default_unit);
+       }
+       dialog_->topspaceED->setEnabled(!isReadonly 
+               && (dialog_->topspaceCO->currentItem() == 2));
+       dialog_->topspaceUnit->setEnabled(!isReadonly 
+               && (dialog_->topspaceCO->currentItem() == 2));
+       dialog_->topspaceCO->setEnabled(!isReadonly);
+
+       if (tabular.row_info[row].bottom_space.empty()
+           && !tabular.row_info[row].bottom_space_default) {
+               dialog_->bottomspaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].bottom_space_default) {
+               dialog_->bottomspaceCO->setCurrentItem(1);
+       } else {
+               dialog_->bottomspaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->bottomspaceED, 
+                               dialog_->bottomspaceUnit,
+                               tabular.row_info[row].bottom_space.asString(),
+                               default_unit);
+       }
+       dialog_->bottomspaceED->setEnabled(!isReadonly 
+               && (dialog_->bottomspaceCO->currentItem() == 2));
+       dialog_->bottomspaceUnit->setEnabled(!isReadonly 
+               && (dialog_->bottomspaceCO->currentItem() == 2));
+       dialog_->bottomspaceCO->setEnabled(!isReadonly);
+
+       if (tabular.row_info[row].interline_space.empty()
+           && !tabular.row_info[row].interline_space_default) {
+               dialog_->interlinespaceCO->setCurrentItem(0);
+       } else if (tabular.row_info[row].interline_space_default) {
+               dialog_->interlinespaceCO->setCurrentItem(1);
+       } else {
+               dialog_->interlinespaceCO->setCurrentItem(2);
+               lengthToWidgets(dialog_->interlinespaceED, 
+                               dialog_->interlinespaceUnit,
+                               tabular.row_info[row].interline_space.asString(),
+                               default_unit);
+       }
+       dialog_->interlinespaceED->setEnabled(!isReadonly 
+               && (dialog_->interlinespaceCO->currentItem() == 2));
+       dialog_->interlinespaceUnit->setEnabled(!isReadonly 
+               && (dialog_->interlinespaceCO->currentItem() == 2));
+       dialog_->interlinespaceCO->setEnabled(!isReadonly);
+
        string colwidth;
        if (!pwidth.zero())
                colwidth = pwidth.asString();
@@ -369,6 +445,50 @@ void QTabular::closeGUI()
                else
                        controller().set(LyXTabular::SET_PWIDTH, width);
        }
+
+       /* DO WE NEED THIS?
+       switch (dialog_->topspaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_TOP_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_TOP_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_TOP_SPACE,
+                               widgetsToLength(dialog_->topspaceED, 
+                                       dialog_->topspaceUnit));
+                       break;
+       }
+
+       switch (dialog_->bottomspaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE,
+                               widgetsToLength(dialog_->bottomspaceED, 
+                                       dialog_->bottomspaceUnit));
+                       break;
+       }
+
+       switch (dialog_->interlinespaceCO->currentItem()) {
+               case 0:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, "");
+                       break;
+               case 1:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, "default");
+                       break;
+               case 2:
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE,
+                               widgetsToLength(dialog_->interlinespaceED, 
+                                       dialog_->interlinespaceUnit));
+                       break;
+       }
+*/
 }
 
 } // namespace frontend
index ecadd4763bd22768991dda638592b727c505ab93..4fbc00fade73bb9e71f27cd645d47942ff4e2986 100644 (file)
 #include "validators.h"
 #include "qt_helpers.h"
 
+#include "controllers/ButtonController.h"
 #include "controllers/ControlTabular.h"
 
 #include <QCloseEvent>
 #include <QCheckBox>
 #include <QPushButton>
+#include <QRadioButton>
 #include <QLineEdit>
 
 using std::string;
@@ -36,40 +38,59 @@ QTabularDialog::QTabularDialog(QTabular * form)
        setupUi(this);
 
        widthED->setValidator(unsignedLengthValidator(widthED));
-
-    connect( borderSetPB, SIGNAL( clicked() ), this, SLOT( borderSet_clicked() ) );
-    connect( borderUnsetPB, SIGNAL( clicked() ), this, SLOT( borderUnset_clicked() ) );
-    connect( longTabularCB, SIGNAL( toggled(bool) ), longtableGB, SLOT( setEnabled(bool) ) );
-    connect( longTabularCB, SIGNAL( toggled(bool) ), newpageCB, SLOT( setEnabled(bool) ) );
-    connect( hAlignCB, SIGNAL( activated(int) ), this, SLOT( hAlign_changed(int) ) );
-    connect( vAlignCB, SIGNAL( activated(int) ), this, SLOT( vAlign_changed(int) ) );
-    connect( multicolumnCB, SIGNAL( clicked() ), this, SLOT( multicolumn_clicked() ) );
-    connect( newpageCB, SIGNAL( clicked() ), this, SLOT( ltNewpage_clicked() ) );
-    connect( headerStatusCB, SIGNAL( clicked() ), this, SLOT( ltHeaderStatus_clicked() ) );
-    connect( headerBorderAboveCB, SIGNAL( clicked() ), this, SLOT( ltHeaderBorderAbove_clicked() ) );
-    connect( headerBorderBelowCB, SIGNAL( clicked() ), this, SLOT( ltHeaderBorderBelow_clicked() ) );
-    connect( firstheaderStatusCB, SIGNAL( clicked() ), this, SLOT( ltFirstHeaderStatus_clicked() ) );
-    connect( firstheaderBorderAboveCB, SIGNAL( clicked() ), this, SLOT( ltFirstHeaderBorderAbove_clicked() ) );
-    connect( firstheaderBorderBelowCB, SIGNAL( clicked() ), this, SLOT( ltFirstHeaderBorderBelow_clicked() ) );
-    connect( firstheaderNoContentsCB, SIGNAL( clicked() ), this, SLOT( ltFirstHeaderEmpty_clicked() ) );
-    connect( footerStatusCB, SIGNAL( clicked() ), this, SLOT( ltFooterStatus_clicked() ) );
-    connect( footerBorderAboveCB, SIGNAL( clicked() ), this, SLOT( ltFooterBorderAbove_clicked() ) );
-    connect( footerBorderBelowCB, SIGNAL( clicked() ), this, SLOT( ltFooterBorderBelow_clicked() ) );
-    connect( lastfooterStatusCB, SIGNAL( clicked() ), this, SLOT( ltLastFooterStatus_clicked() ) );
-    connect( lastfooterBorderAboveCB, SIGNAL( clicked() ), this, SLOT( ltLastFooterBorderAbove_clicked() ) );
-    connect( lastfooterBorderBelowCB, SIGNAL( clicked() ), this, SLOT( ltLastFooterBorderBelow_clicked() ) );
-    connect( lastfooterNoContentsCB, SIGNAL( clicked() ), this, SLOT( ltLastFooterEmpty_clicked() ) );
-    connect( specialAlignmentED, SIGNAL( returnPressed() ), this, SLOT( specialAlignment_changed() ) );
-    connect( widthED, SIGNAL( returnPressed() ), this, SLOT( width_changed() ) );
-    connect( widthUnit, SIGNAL( selectionChanged(LyXLength::UNIT) ), this, SLOT( width_changed() ) );
-    connect( closePB, SIGNAL( clicked() ), this, SLOT( close_clicked() ) );
-    connect( borders, SIGNAL( topSet(bool) ), this, SLOT( topBorder_changed() ) );
-    connect( borders, SIGNAL( bottomSet(bool) ), this, SLOT( bottomBorder_changed() ) );
-    connect( borders, SIGNAL( rightSet(bool) ), this, SLOT( rightBorder_changed() ) );
-    connect( borders, SIGNAL( leftSet(bool) ), this, SLOT( leftBorder_changed() ) );
-    connect( rotateTabularCB, SIGNAL( clicked() ), this, SLOT( rotateTabular() ) );
-    connect( rotateCellCB, SIGNAL( clicked() ), this, SLOT( rotateCell() ) );
-    connect( longTabularCB, SIGNAL( clicked() ), this, SLOT( longTabular() ) );
+       topspaceED->setValidator(new LengthValidator(topspaceED));
+       bottomspaceED->setValidator(new LengthValidator(bottomspaceED));
+       interlinespaceED->setValidator(new LengthValidator(interlinespaceED));
+
+       connect(topspaceED, SIGNAL(returnPressed()),
+               this, SLOT(topspace_changed()));
+       connect(topspaceUnit, SIGNAL(selectionChanged(LyXLength::UNIT)),
+               this, SLOT(topspace_changed()));
+       connect(topspaceCO, SIGNAL(activated(int)), this, SLOT(topspace_changed()));
+       connect(bottomspaceED, SIGNAL(returnPressed()),
+               this, SLOT(bottomspace_changed()));
+       connect(bottomspaceUnit, SIGNAL(selectionChanged(LyXLength::UNIT)),
+               this, SLOT(bottomspace_changed()));
+       connect(bottomspaceCO, SIGNAL(activated(int)), this, SLOT(bottomspace_changed()));
+       connect(interlinespaceED, SIGNAL(returnPressed()),
+               this, SLOT(interlinespace_changed()));
+       connect(interlinespaceUnit, SIGNAL(selectionChanged(LyXLength::UNIT)),
+               this, SLOT(interlinespace_changed()));
+       connect(interlinespaceCO, SIGNAL(activated(int)), this, SLOT(interlinespace_changed()));
+       connect(booktabsRB, SIGNAL(clicked()), this, SLOT(on_booktabsRB_toggled()));
+       connect(borderSetPB, SIGNAL(clicked()), this, SLOT(borderSet_clicked()));
+       connect(borderUnsetPB, SIGNAL(clicked()), this, SLOT(borderUnset_clicked()));
+       connect(longTabularCB, SIGNAL(toggled(bool)), longtableGB, SLOT(setEnabled(bool)));
+       connect(longTabularCB, SIGNAL(toggled(bool)), newpageCB, SLOT(setEnabled(bool)));
+       connect(hAlignCB, SIGNAL(activated(int)), this, SLOT(hAlign_changed(int)));
+       connect(vAlignCB, SIGNAL(activated(int)), this, SLOT(vAlign_changed(int)));
+       connect(multicolumnCB, SIGNAL(clicked()), this, SLOT(multicolumn_clicked()));
+       connect(newpageCB, SIGNAL(clicked()), this, SLOT(ltNewpage_clicked()));
+       connect(headerStatusCB, SIGNAL(clicked()), this, SLOT(ltHeaderStatus_clicked()));
+       connect(headerBorderAboveCB, SIGNAL(clicked()), this, SLOT(ltHeaderBorderAbove_clicked()));
+       connect(headerBorderBelowCB, SIGNAL(clicked()), this, SLOT(ltHeaderBorderBelow_clicked()));
+       connect(firstheaderStatusCB, SIGNAL(clicked()), this, SLOT(ltFirstHeaderStatus_clicked()));
+       connect(firstheaderBorderAboveCB, SIGNAL(clicked()), this, SLOT(ltFirstHeaderBorderAbove_clicked()));
+       connect(firstheaderBorderBelowCB, SIGNAL(clicked()), this, SLOT(ltFirstHeaderBorderBelow_clicked()));
+       connect(firstheaderNoContentsCB, SIGNAL(clicked()), this, SLOT(ltFirstHeaderEmpty_clicked()));
+       connect(footerStatusCB, SIGNAL(clicked()), this, SLOT(ltFooterStatus_clicked()));
+       connect(footerBorderAboveCB, SIGNAL(clicked()), this, SLOT(ltFooterBorderAbove_clicked()));
+       connect(footerBorderBelowCB, SIGNAL(clicked()), this, SLOT(ltFooterBorderBelow_clicked()));
+       connect(lastfooterStatusCB, SIGNAL(clicked()), this, SLOT(ltLastFooterStatus_clicked()));
+       connect(lastfooterBorderAboveCB, SIGNAL(clicked()), this, SLOT(ltLastFooterBorderAbove_clicked()));
+       connect(lastfooterBorderBelowCB, SIGNAL(clicked()), this, SLOT(ltLastFooterBorderBelow_clicked()));
+       connect(lastfooterNoContentsCB, SIGNAL(clicked()), this, SLOT(ltLastFooterEmpty_clicked()));
+       connect(specialAlignmentED, SIGNAL(returnPressed()), this, SLOT(specialAlignment_changed()));
+       connect(widthED, SIGNAL(returnPressed()), this, SLOT(width_changed()));
+       connect(widthUnit, SIGNAL(selectionChanged(LyXLength::UNIT)), this, SLOT(width_changed()));
+       connect(closePB, SIGNAL(clicked()), this, SLOT(close_clicked()));
+       connect(borders, SIGNAL(topSet(bool)), this, SLOT(topBorder_changed()));
+       connect(borders, SIGNAL(bottomSet(bool)), this, SLOT(bottomBorder_changed()));
+       connect(borders, SIGNAL(rightSet(bool)), this, SLOT(rightBorder_changed()));
+       connect(borders, SIGNAL(leftSet(bool)), this, SLOT(leftBorder_changed()));
+       connect(rotateTabularCB, SIGNAL(clicked()), this, SLOT(rotateTabular()));
+       connect(rotateCellCB, SIGNAL(clicked()), this, SLOT(rotateCell()));
+       connect(longTabularCB, SIGNAL(clicked()), this, SLOT(longTabular()));
 }
 
 
@@ -86,6 +107,104 @@ void QTabularDialog::closeEvent(QCloseEvent * e)
 }
 
 
+void QTabularDialog::on_booktabsRB_toggled()
+{
+       form_->changed();
+       form_->controller().booktabs(booktabsRB->isChecked());
+       form_->update_borders();
+}
+
+
+void QTabularDialog::topspace_changed()
+{
+       switch(topspaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_TOP_SPACE, "");
+                               topspaceED->setEnabled(false);
+                               topspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_TOP_SPACE, "default");
+                       topspaceED->setEnabled(false);
+                       topspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!topspaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_TOP_SPACE,
+                                       widgetsToLength(topspaceED, topspaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               topspaceED->setEnabled(true);
+                               topspaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
+void QTabularDialog::bottomspace_changed()
+{
+       switch(bottomspaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_BOTTOM_SPACE, "");
+                               bottomspaceED->setEnabled(false);
+                               bottomspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_BOTTOM_SPACE, "default");
+                       bottomspaceED->setEnabled(false);
+                       bottomspaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!bottomspaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_BOTTOM_SPACE,
+                                       widgetsToLength(bottomspaceED, bottomspaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               bottomspaceED->setEnabled(true);
+                               bottomspaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
+void QTabularDialog::interlinespace_changed()
+{
+       switch(interlinespaceCO->currentItem()) {
+               case 0: {
+                       form_->controller().set(LyXTabular::SET_INTERLINE_SPACE, "");
+                               interlinespaceED->setEnabled(false);
+                               interlinespaceUnit->setEnabled(false);
+                       break;
+               }
+               case 1: {
+                       form_->controller().set(LyXTabular::SET_INTERLINE_SPACE, "default");
+                       interlinespaceED->setEnabled(false);
+                       interlinespaceUnit->setEnabled(false);
+                       break;
+               }
+               case 2: {
+                       if (!interlinespaceED->text().isEmpty())
+                               form_->controller().set(LyXTabular::SET_INTERLINE_SPACE,
+                                       widgetsToLength(interlinespaceED, interlinespaceUnit));
+                       if (!form_->bc().bp().isReadOnly()) {
+                               interlinespaceED->setEnabled(true);
+                               interlinespaceUnit->setEnabled(true);
+                       }
+                       break;
+               }
+       }
+       form_->changed();
+}
+
+
 void QTabularDialog::close_clicked()
 {
        form_->closeGUI();
index 4f0fb2e40601edc222636a1afaa221c2a0e15020..3b150ce63d0a29e15ab5c6976431e4fa6efff5c9 100644 (file)
@@ -32,6 +32,10 @@ public:
 protected Q_SLOTS:
        virtual void change_adaptor();
 
+       virtual void topspace_changed();
+       virtual void bottomspace_changed();
+       virtual void interlinespace_changed();
+       virtual void on_booktabsRB_toggled();
        virtual void close_clicked();
        virtual void borderSet_clicked();
        virtual void borderUnset_clicked();
index a8109d6fa7efe5237524f0aed24603aa0e82e06d..d14949115bd4b3185bbf00f69f241d07966c4026 100644 (file)
@@ -8,8 +8,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>447</width>
-    <height>408</height>
+    <width>439</width>
+    <height>360</height>
    </rect>
   </property>
   <property name="windowTitle" >
   <property name="sizeGripEnabled" >
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" >
+  <layout class="QGridLayout" >
    <property name="margin" >
-    <number>11</number>
+    <number>9</number>
    </property>
    <property name="spacing" >
     <number>6</number>
    </property>
-   <item>
+   <item row="0" column="0" >
     <widget class="QTabWidget" name="TabWidget" >
      <property name="toolTip" >
       <string/>
      <property name="tabShape" >
       <enum>QTabWidget::Rounded</enum>
      </property>
+     <property name="currentIndex" >
+      <number>2</number>
+     </property>
      <widget class="QWidget" name="Settings" >
       <attribute name="title" >
        <string>&amp;Table Settings</string>
       </attribute>
       <layout class="QGridLayout" >
        <property name="margin" >
-        <number>11</number>
+        <number>9</number>
        </property>
        <property name="spacing" >
         <number>6</number>
        </property>
-       <item row="0" column="0" colspan="2" >
+       <item row="1" column="0" colspan="3" >
+        <widget class="QGroupBox" name="GroupBox12" >
+         <property name="title" >
+          <string>Column Width</string>
+         </property>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="0" column="2" >
+           <widget class="LengthCombo" name="widthUnit" />
+          </item>
+          <item row="0" column="1" >
+           <widget class="QLineEdit" name="widthED" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+            <property name="toolTip" >
+             <string>Fixed width of the column</string>
+            </property>
+            <property name="text" >
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" colspan="2" >
+           <widget class="QComboBox" name="vAlignCB" >
+            <property name="toolTip" >
+             <string>Vertical alignment for fixed width columns</string>
+            </property>
+            <item>
+             <property name="text" >
+              <string>Top</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Middle</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Bottom</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="fixedWidthColLA" >
+            <property name="text" >
+             <string>&amp;Width:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>widthED</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="vAlignCO" >
+            <property name="text" >
+             <string>&amp;Vertical alignment:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>vAlignCB</cstring>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="0" >
         <widget class="QLabel" name="hAlignCO" >
          <property name="text" >
           <string>&amp;Horizontal alignment:</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="2" >
+       <item row="0" column="1" >
         <widget class="QComboBox" name="hAlignCB" >
          <property name="toolTip" >
           <string>Horizontal alignment in column</string>
          </item>
         </widget>
        </item>
-       <item row="3" column="0" colspan="4" >
+       <item row="0" column="2" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="3" column="0" colspan="2" >
         <widget class="QCheckBox" name="rotateTabularCB" >
          <property name="enabled" >
           <bool>true</bool>
          </property>
         </widget>
        </item>
-       <item row="4" column="0" colspan="4" >
+       <item row="4" column="0" colspan="2" >
         <widget class="QCheckBox" name="rotateCellCB" >
          <property name="toolTip" >
           <string>Rotate this cell by 90 degrees</string>
          </property>
         </widget>
        </item>
-       <item row="5" column="0" colspan="2" >
+       <item row="2" column="0" >
+        <widget class="QCheckBox" name="multicolumnCB" >
+         <property name="toolTip" >
+          <string>Merge cells</string>
+         </property>
+         <property name="text" >
+          <string>&amp;Multicolumn</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0" >
         <widget class="QLabel" name="specialAlignmentLA" >
          <property name="text" >
           <string>LaTe&amp;X argument:</string>
          </property>
         </widget>
        </item>
-       <item row="5" column="2" colspan="2" >
+       <item row="5" column="1" colspan="2" >
         <widget class="QLineEdit" name="specialAlignmentED" >
          <property name="toolTip" >
           <string>Custom column format (LaTeX)</string>
          </property>
         </widget>
        </item>
-       <item row="6" column="2" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Expanding</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="0" column="3" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Expanding</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="2" column="0" >
-        <widget class="QCheckBox" name="multicolumnCB" >
-         <property name="toolTip" >
-          <string>Merge cells</string>
-         </property>
-         <property name="text" >
-          <string>&amp;Multicolumn</string>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="0" colspan="4" >
-        <widget class="QGroupBox" name="GroupBox12" >
-         <property name="title" >
-          <string>Column Width</string>
-         </property>
-         <layout class="QGridLayout" >
-          <property name="margin" >
-           <number>11</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item row="1" column="0" >
-           <widget class="QLabel" name="vAlignCO" >
-            <property name="text" >
-             <string>&amp;Vertical alignment:</string>
-            </property>
-            <property name="buddy" >
-             <cstring>vAlignCB</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="2" >
-           <widget class="LengthCombo" name="widthUnit" >
-            <property name="enabled" >
-             <bool>true</bool>
-            </property>
-            <property name="minimumSize" >
-             <size>
-              <width>50</width>
-              <height>0</height>
-             </size>
-            </property>
-            <property name="focusPolicy" >
-             <enum>Qt::StrongFocus</enum>
-            </property>
-            <property name="toolTip" >
-             <string>Width unit</string>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1" >
-           <widget class="QLineEdit" name="widthED" >
-            <property name="enabled" >
-             <bool>true</bool>
-            </property>
-            <property name="toolTip" >
-             <string>Fixed width of the column</string>
-            </property>
-            <property name="text" >
-             <string/>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="0" >
-           <widget class="QLabel" name="fixedWidthColLA" >
-            <property name="text" >
-             <string>&amp;Width:</string>
-            </property>
-            <property name="buddy" >
-             <cstring>widthED</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="1" >
-           <widget class="QComboBox" name="vAlignCB" >
-            <property name="toolTip" >
-             <string>Vertical alignment for fixed width columns</string>
-            </property>
-            <item>
-             <property name="text" >
-              <string>Top</string>
-             </property>
-            </item>
-            <item>
-             <property name="text" >
-              <string>Middle</string>
-             </property>
-            </item>
-            <item>
-             <property name="text" >
-              <string>Bottom</string>
-             </property>
-            </item>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="Borders" >
       </attribute>
       <layout class="QGridLayout" >
        <property name="margin" >
-        <number>11</number>
+        <number>9</number>
        </property>
        <property name="spacing" >
         <number>6</number>
        </property>
        <item row="0" column="0" >
-        <widget class="QGroupBox" name="setBordersGB" >
-         <property name="title" >
-          <string>Set Borders</string>
+        <layout class="QGridLayout" >
+         <property name="margin" >
+          <number>0</number>
          </property>
-         <layout class="QGridLayout" >
-          <property name="margin" >
-           <number>11</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item row="0" column="0" >
-           <widget class="QFrame" name="bordersF" >
-            <property name="sizePolicy" >
-             <sizepolicy>
-              <hsizetype>5</hsizetype>
-              <vsizetype>5</vsizetype>
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item row="0" column="1" >
+          <widget class="QGroupBox" name="allBordersGB" >
+           <property name="title" >
+            <string>All Borders</string>
+           </property>
+           <layout class="QGridLayout" >
+            <property name="margin" >
+             <number>11</number>
+            </property>
+            <property name="spacing" >
+             <number>6</number>
+            </property>
+            <item row="0" column="0" >
+             <widget class="QPushButton" name="borderSetPB" >
+              <property name="toolTip" >
+               <string>Set all borders of the current (selected) cell(s)</string>
+              </property>
+              <property name="text" >
+               <string>&amp;Set</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0" >
+             <widget class="QPushButton" name="borderUnsetPB" >
+              <property name="toolTip" >
+               <string>Unset all borders of the current (selected) cell(s)</string>
+              </property>
+              <property name="text" >
+               <string>C&amp;lear</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item row="0" column="2" >
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType" >
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" >
+            <size>
+             <width>20</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item row="0" column="3" >
+          <widget class="QGroupBox" name="borderStyleGB" >
+           <property name="title" >
+            <string>Style</string>
+           </property>
+           <layout class="QGridLayout" >
+            <property name="margin" >
+             <number>9</number>
             </property>
-            <property name="palette" >
-             <palette>
-              <active>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>230</red>
-                <green>240</green>
-                <blue>249</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>242</red>
-                <green>247</green>
-                <blue>252</blue>
-               </color>
-               <color>
-                <red>115</red>
-                <green>120</green>
-                <blue>124</blue>
-               </color>
-               <color>
-                <red>154</red>
-                <green>160</green>
-                <blue>166</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>16</red>
-                <green>145</green>
-                <blue>210</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>232</red>
-                <green>232</green>
-                <blue>232</blue>
-               </color>
-              </active>
-              <inactive>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>230</red>
-                <green>240</green>
-                <blue>249</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>115</red>
-                <green>120</green>
-                <blue>124</blue>
-               </color>
-               <color>
-                <red>154</red>
-                <green>160</green>
-                <blue>166</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>16</red>
-                <green>145</green>
-                <blue>210</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>232</red>
-                <green>232</green>
-                <blue>232</blue>
-               </color>
-              </inactive>
-              <disabled>
-               <color>
-                <red>128</red>
-                <green>128</green>
-                <blue>128</blue>
-               </color>
-               <color>
-                <red>230</red>
-                <green>240</green>
-                <blue>249</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>115</red>
-                <green>120</green>
-                <blue>124</blue>
-               </color>
-               <color>
-                <red>154</red>
-                <green>160</green>
-                <blue>166</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>128</red>
-                <green>128</green>
-                <blue>128</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>0</blue>
-               </color>
-               <color>
-                <red>16</red>
-                <green>145</green>
-                <blue>210</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>255</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>0</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>255</red>
-                <green>0</green>
-                <blue>255</blue>
-               </color>
-               <color>
-                <red>232</red>
-                <green>232</green>
-                <blue>232</blue>
-               </color>
-              </disabled>
-             </palette>
+            <property name="spacing" >
+             <number>6</number>
             </property>
-            <property name="frameShape" >
-             <enum>QFrame::StyledPanel</enum>
+            <item row="1" column="0" >
+             <widget class="QRadioButton" name="booktabsRB" >
+              <property name="toolTip" >
+               <string>Use formal (a.k.a. booktabs) border style (no vertical borders)</string>
+              </property>
+              <property name="text" >
+               <string>Fo&amp;rmal</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="0" >
+             <widget class="QRadioButton" name="borderDefaultRB" >
+              <property name="toolTip" >
+               <string>Use default (grid-like) border style</string>
+              </property>
+              <property name="text" >
+               <string>De&amp;fault</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item row="1" column="1" >
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" >
+            <size>
+             <width>20</width>
+             <height>31</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item row="0" column="0" >
+          <widget class="QGroupBox" name="setBordersGB" >
+           <property name="title" >
+            <string>Set Borders</string>
+           </property>
+           <layout class="QGridLayout" >
+            <property name="margin" >
+             <number>11</number>
             </property>
-            <property name="frameShadow" >
-             <enum>QFrame::Sunken</enum>
+            <property name="spacing" >
+             <number>6</number>
             </property>
-            <layout class="QGridLayout" >
-             <property name="margin" >
-              <number>3</number>
-             </property>
-             <property name="spacing" >
-              <number>6</number>
-             </property>
-             <item row="0" column="0" >
-              <widget class="QSetBorder" name="borders" >
-               <property name="sizePolicy" >
-                <sizepolicy>
-                 <hsizetype>1</hsizetype>
-                 <vsizetype>1</vsizetype>
-                 <horstretch>0</horstretch>
-                 <verstretch>0</verstretch>
-                </sizepolicy>
+            <item row="0" column="0" >
+             <widget class="QFrame" name="bordersF" >
+              <property name="sizePolicy" >
+               <sizepolicy>
+                <hsizetype>5</hsizetype>
+                <vsizetype>5</vsizetype>
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="palette" >
+               <palette>
+                <active>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>230</red>
+                  <green>240</green>
+                  <blue>249</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>242</red>
+                  <green>247</green>
+                  <blue>252</blue>
+                 </color>
+                 <color>
+                  <red>115</red>
+                  <green>120</green>
+                  <blue>124</blue>
+                 </color>
+                 <color>
+                  <red>154</red>
+                  <green>160</green>
+                  <blue>166</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>16</red>
+                  <green>145</green>
+                  <blue>210</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>232</red>
+                  <green>232</green>
+                  <blue>232</blue>
+                 </color>
+                </active>
+                <inactive>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>230</red>
+                  <green>240</green>
+                  <blue>249</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>115</red>
+                  <green>120</green>
+                  <blue>124</blue>
+                 </color>
+                 <color>
+                  <red>154</red>
+                  <green>160</green>
+                  <blue>166</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>16</red>
+                  <green>145</green>
+                  <blue>210</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>232</red>
+                  <green>232</green>
+                  <blue>232</blue>
+                 </color>
+                </inactive>
+                <disabled>
+                 <color>
+                  <red>128</red>
+                  <green>128</green>
+                  <blue>128</blue>
+                 </color>
+                 <color>
+                  <red>230</red>
+                  <green>240</green>
+                  <blue>249</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>115</red>
+                  <green>120</green>
+                  <blue>124</blue>
+                 </color>
+                 <color>
+                  <red>154</red>
+                  <green>160</green>
+                  <blue>166</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>128</red>
+                  <green>128</green>
+                  <blue>128</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                 </color>
+                 <color>
+                  <red>16</red>
+                  <green>145</green>
+                  <blue>210</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>255</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>255</red>
+                  <green>0</green>
+                  <blue>255</blue>
+                 </color>
+                 <color>
+                  <red>232</red>
+                  <green>232</green>
+                  <blue>232</blue>
+                 </color>
+                </disabled>
+               </palette>
+              </property>
+              <property name="frameShape" >
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow" >
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" >
+               <property name="margin" >
+                <number>3</number>
                </property>
-               <property name="toolTip" >
-                <string>Set borders of the current (selected) cell(s)</string>
+               <property name="spacing" >
+                <number>6</number>
                </property>
-              </widget>
-             </item>
-            </layout>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item row="0" column="1" >
-        <widget class="QGroupBox" name="allBordersGB" >
-         <property name="title" >
-          <string>All Borders</string>
-         </property>
-         <layout class="QGridLayout" >
-          <property name="margin" >
-           <number>11</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item row="0" column="0" >
-           <widget class="QPushButton" name="borderSetPB" >
-            <property name="toolTip" >
-             <string>Set all borders of the current (selected) cell(s)</string>
-            </property>
-            <property name="text" >
-             <string>&amp;Set</string>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="0" >
-           <widget class="QPushButton" name="borderUnsetPB" >
-            <property name="toolTip" >
-             <string>Unset all borders of the current (selected) cell(s)</string>
+               <item row="0" column="0" >
+                <widget class="QSetBorder" name="borders" >
+                 <property name="sizePolicy" >
+                  <sizepolicy>
+                   <hsizetype>1</hsizetype>
+                   <vsizetype>1</vsizetype>
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="toolTip" >
+                  <string>Set borders of the current (selected) cell(s)</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item row="2" column="0" colspan="4" >
+          <widget class="QGroupBox" name="SpaceGB" >
+           <property name="title" >
+            <string>Additional Space</string>
+           </property>
+           <layout class="QGridLayout" >
+            <property name="margin" >
+             <number>9</number>
             </property>
-            <property name="text" >
-             <string>C&amp;lear</string>
+            <property name="spacing" >
+             <number>6</number>
             </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item row="0" column="2" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Expanding</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="1" column="0" >
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Expanding</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
+            <item row="0" column="0" >
+             <widget class="QLabel" name="topspaceLA" >
+              <property name="text" >
+               <string>T&amp;op of row:</string>
+              </property>
+              <property name="buddy" >
+               <cstring>topspaceCO</cstring>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="2" >
+             <widget class="QLineEdit" name="topspaceED" />
+            </item>
+            <item row="0" column="3" >
+             <widget class="LengthCombo" name="topspaceUnit" />
+            </item>
+            <item row="0" column="1" >
+             <widget class="QComboBox" name="topspaceCO" >
+              <item>
+               <property name="text" >
+                <string>None</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Default</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Custom</string>
+               </property>
+              </item>
+             </widget>
+            </item>
+            <item row="1" column="1" >
+             <widget class="QComboBox" name="bottomspaceCO" >
+              <item>
+               <property name="text" >
+                <string>None</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Default</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Custom</string>
+               </property>
+              </item>
+             </widget>
+            </item>
+            <item row="1" column="3" >
+             <widget class="LengthCombo" name="bottomspaceUnit" />
+            </item>
+            <item row="1" column="2" >
+             <widget class="QLineEdit" name="bottomspaceED" />
+            </item>
+            <item row="1" column="0" >
+             <widget class="QLabel" name="bottomspaceLA" >
+              <property name="text" >
+               <string>Botto&amp;m of row:</string>
+              </property>
+              <property name="buddy" >
+               <cstring>bottomspaceCO</cstring>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="2" >
+             <widget class="QLineEdit" name="interlinespaceED" />
+            </item>
+            <item row="2" column="0" >
+             <widget class="QLabel" name="interlinespaceLA" >
+              <property name="text" >
+               <string>Bet&amp;ween rows:</string>
+              </property>
+              <property name="buddy" >
+               <cstring>interlinespaceCO</cstring>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1" >
+             <widget class="QComboBox" name="interlinespaceCO" >
+              <item>
+               <property name="text" >
+                <string>None</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Default</string>
+               </property>
+              </item>
+              <item>
+               <property name="text" >
+                <string>Custom</string>
+               </property>
+              </item>
+             </widget>
+            </item>
+            <item row="2" column="3" >
+             <widget class="LengthCombo" name="interlinespaceUnit" />
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
        </item>
       </layout>
      </widget>
       </attribute>
       <layout class="QGridLayout" >
        <property name="margin" >
-        <number>11</number>
+        <number>9</number>
        </property>
        <property name="spacing" >
         <number>6</number>
        </property>
-       <item row="0" column="0" >
-        <widget class="QCheckBox" name="longTabularCB" >
+       <item row="3" column="0" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="2" column="0" >
+        <widget class="QCheckBox" name="newpageCB" >
+         <property name="enabled" >
+          <bool>false</bool>
+         </property>
          <property name="toolTip" >
-          <string>Select for tables that span multiple pages</string>
+          <string>Set a page break on the current row</string>
          </property>
          <property name="text" >
-          <string>&amp;Use long table</string>
+          <string>Page &amp;break on current row</string>
          </property>
         </widget>
        </item>
          </layout>
         </widget>
        </item>
-       <item row="2" column="0" >
-        <widget class="QCheckBox" name="newpageCB" >
-         <property name="enabled" >
-          <bool>false</bool>
-         </property>
+       <item row="0" column="0" >
+        <widget class="QCheckBox" name="longTabularCB" >
          <property name="toolTip" >
-          <string>Set a page break on the current row</string>
+          <string>Select for tables that span multiple pages</string>
          </property>
          <property name="text" >
-          <string>Page &amp;break on current row</string>
+          <string>&amp;Use long table</string>
          </property>
         </widget>
        </item>
      </widget>
     </widget>
    </item>
-   <item>
+   <item row="1" column="0" >
     <layout class="QHBoxLayout" >
      <property name="margin" >
       <number>0</number>
  <pixmapfunction></pixmapfunction>
  <customwidgets>
   <customwidget>
-   <class>QSetBorder</class>
-   <extends></extends>
-   <header>qsetborder.h</header>
+   <class>LengthCombo</class>
+   <extends>QComboBox</extends>
+   <header>lengthcombo.h</header>
    <container>0</container>
    <pixmap></pixmap>
   </customwidget>
   <customwidget>
-   <class>LengthCombo</class>
-   <extends></extends>
-   <header>lengthcombo.h</header>
+   <class>QSetBorder</class>
+   <extends>QWidget</extends>
+   <header>qsetborder.h</header>
    <container>0</container>
    <pixmap></pixmap>
   </customwidget>
   <tabstop>rotateTabularCB</tabstop>
   <tabstop>rotateCellCB</tabstop>
   <tabstop>specialAlignmentED</tabstop>
+  <tabstop>closePB</tabstop>
   <tabstop>borderSetPB</tabstop>
   <tabstop>borderUnsetPB</tabstop>
+  <tabstop>borderDefaultRB</tabstop>
+  <tabstop>booktabsRB</tabstop>
+  <tabstop>topspaceCO</tabstop>
+  <tabstop>bottomspaceCO</tabstop>
+  <tabstop>interlinespaceCO</tabstop>
+  <tabstop>topspaceED</tabstop>
+  <tabstop>bottomspaceED</tabstop>
+  <tabstop>interlinespaceED</tabstop>
+  <tabstop>topspaceUnit</tabstop>
+  <tabstop>bottomspaceUnit</tabstop>
+  <tabstop>interlinespaceUnit</tabstop>
   <tabstop>longTabularCB</tabstop>
   <tabstop>headerStatusCB</tabstop>
   <tabstop>headerBorderAboveCB</tabstop>
   <tabstop>lastfooterBorderBelowCB</tabstop>
   <tabstop>lastfooterNoContentsCB</tabstop>
   <tabstop>newpageCB</tabstop>
-  <tabstop>closePB</tabstop>
  </tabstops>
  <resources/>
  <connections/>
index 458485fe038fc6708bce731d678aee0d07fecd30..43343dbcc52519416d5321d2cf7045581c759378 100644 (file)
        * FormFileDialog.C: add #include "filefilterlist.h"
        * FormBibtex.C: remove #include "globbing.h".
 
+2004-11-16  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
+
+       * FormTabular.C (update): disable vertical rules if using
+       booktabs
+
 2004-11-16  Lars Gullik Bjonnes  <larsbj@gullik.net>
 
        * Layoutengine.[Ch]: Break up circular dependency between Box and
 
        * XFormsView.C (hasFocus): new method, always returns true for now
 
+2004-11-11  Edwin Leuven
+
+       * FormTabular.C (update, input): handle check_booktabs
+       * forms/form_tabular.fd (check_booktabs): new checkbox
+
 2004-11-08  Jean-Marc Lasgouttes  <lasgouttes@lyx.org>
 
        * XFormsToolbar.C (selected): use layoutSelected
index cfb81319dc542ebf0962d541646a11d9f0cb7fbd..5133dcb703f808b9d1edc4831b4676b347a40b96 100644 (file)
@@ -100,15 +100,30 @@ void FormTabular::build()
 
        fl_set_input_return(column_options_->input_column_width,
                            FL_RETURN_END);
+       fl_set_input_return(column_options_->input_topspace,
+                           FL_RETURN_END);
+       fl_set_input_return(column_options_->input_bottomspace,
+                           FL_RETURN_END);
+       fl_set_input_return(column_options_->input_interlinespace,
+                           FL_RETURN_END);
        fl_set_input_return(column_options_->input_special_alignment,
                            FL_RETURN_END);
 
        // trigger an input event for cut&paste with middle mouse button.
        setPrehandler(column_options_->input_column_width);
+       setPrehandler(column_options_->input_topspace);
+       setPrehandler(column_options_->input_bottomspace);
+       setPrehandler(column_options_->input_interlinespace);
        setPrehandler(column_options_->input_special_alignment);
 
        fl_addto_choice(column_options_->choice_value_column_width,
                        units.c_str());
+       fl_addto_choice(column_options_->choice_value_topspace,
+                       units.c_str());
+       fl_addto_choice(column_options_->choice_value_bottomspace,
+                       units.c_str());
+       fl_addto_choice(column_options_->choice_value_interlinespace,
+                       units.c_str());
 
        // cell options form
        cell_options_.reset(build_tabular_cell(this));
@@ -164,6 +179,12 @@ void FormTabular::update()
        fl_activate_object(cell_options_->input_special_multialign);
        fl_activate_object(column_options_->input_column_width);
        fl_activate_object(column_options_->choice_value_column_width);
+       fl_activate_object(column_options_->input_topspace);
+       fl_activate_object(column_options_->choice_value_topspace);
+       fl_activate_object(column_options_->input_bottomspace);
+       fl_activate_object(column_options_->choice_value_bottomspace);
+       fl_activate_object(column_options_->input_interlinespace);
+       fl_activate_object(column_options_->choice_value_interlinespace);
        fl_set_input(dialog_->input_tabular_column,
                     convert<string>(column).c_str());
        fl_deactivate_object(dialog_->input_tabular_column);
@@ -180,13 +201,15 @@ void FormTabular::update()
                              tabular.bottomLine(cell)?1:0);
                setEnabled(cell_options_->check_border_bottom, true);
                // pay attention to left/right lines they are only allowed
-               // to set if we are in first/last cell of row or if the left/right
-               // cell is also a multicolumn.
+               // to set if we don't use booktabs and if we are in
+               // first/last cell of row or if the left/right cell is also a
+               // multicolumn.
                if (tabular.isFirstCellInRow(cell) ||
                    tabular.isMultiColumn(cell-1)) {
                        fl_set_button(cell_options_->check_border_left,
                                      tabular.leftLine(cell)?1:0);
-                       setEnabled(cell_options_->check_border_left, true);
+                       setEnabled(cell_options_->check_border_left,
+                                  !tabular.useBookTabs());
                } else {
                        fl_set_button(cell_options_->check_border_left, 0);
                        setEnabled(cell_options_->check_border_left, false);
@@ -195,7 +218,8 @@ void FormTabular::update()
                    tabular.isMultiColumn(cell+1)) {
                        fl_set_button(cell_options_->check_border_right,
                                      tabular.rightLine(cell)?1:0);
-                       setEnabled(cell_options_->check_border_right, true);
+                       setEnabled(cell_options_->check_border_right,
+                                  !tabular.useBookTabs());
                } else {
                        fl_set_button(cell_options_->check_border_right, 0);
                        setEnabled(cell_options_->check_border_right, false);
@@ -320,6 +344,39 @@ void FormTabular::update()
        setEnabled(column_options_->input_column_width, !isReadonly);
        setEnabled(column_options_->choice_value_column_width, !isReadonly);
 
+       if (tabular.row_info[row].top_space_default)
+               fl_set_input(column_options_->input_topspace, "default");
+       else {
+               updateWidgetsFromLength(column_options_->input_topspace,
+                               column_options_->choice_value_topspace,
+                               tabular.row_info[row].top_space,
+                               default_unit);
+       }
+       setEnabled(column_options_->input_topspace, !isReadonly);
+       setEnabled(column_options_->choice_value_topspace, !isReadonly);
+
+       if (tabular.row_info[row].bottom_space_default)
+               fl_set_input(column_options_->input_bottomspace, "default");
+       else {
+               updateWidgetsFromLength(column_options_->input_bottomspace,
+                               column_options_->choice_value_bottomspace,
+                               tabular.row_info[row].bottom_space,
+                               default_unit);
+       }
+       setEnabled(column_options_->input_bottomspace, !isReadonly);
+       setEnabled(column_options_->choice_value_bottomspace, !isReadonly);
+
+       if (tabular.row_info[row].interline_space_default)
+               fl_set_input(column_options_->input_interlinespace, "default");
+       else {
+               updateWidgetsFromLength(column_options_->input_interlinespace,
+                               column_options_->choice_value_interlinespace,
+                               tabular.row_info[row].interline_space,
+                               default_unit);
+       }
+       setEnabled(column_options_->input_interlinespace, !isReadonly);
+       setEnabled(column_options_->choice_value_interlinespace, !isReadonly);
+
        setEnabled(cell_options_->check_useminipage, !pwidth.zero());
        if (!pwidth.zero()) {
                if (tabular.getUsebox(cell) == 2)
@@ -361,6 +418,9 @@ void FormTabular::update()
        setEnabled(column_options_->radio_valign_bottom, !pwidth.zero());
        setEnabled(column_options_->radio_valign_middle, !pwidth.zero());
 
+       fl_set_button(tabular_options_->check_booktabs,
+                     tabular.useBookTabs());
+
        fl_set_button(tabular_options_->check_longtable,
                      tabular.isLongTabular());
 
@@ -564,6 +624,72 @@ ButtonPolicy::SMInput FormTabular::input(FL_OBJECT * ob, long)
                return ButtonPolicy::SMI_VALID;
        }
 
+       if ((ob == column_options_->input_topspace) ||
+           (ob == column_options_->choice_value_topspace)) {
+               string const input = getString(column_options_->input_topspace);
+               if (input == "default")
+                       controller().set(LyXTabular::SET_TOP_SPACE, "default");
+               else {
+                       string const str = getLengthFromWidgets(
+                               column_options_->input_topspace,
+                               column_options_->choice_value_topspace);
+                       controller().set(LyXTabular::SET_TOP_SPACE, str);
+
+                       //check if the input is valid
+                       if (!input.empty() && !isValidLength(input) && !isStrDbl(input)) {
+                               postWarning(_("Invalid Length (valid example: 10mm)"));
+                               return ButtonPolicy::SMI_INVALID;
+                       }
+               }
+
+               update(); // update for alignment
+               return ButtonPolicy::SMI_VALID;
+       }
+
+       if ((ob == column_options_->input_bottomspace) ||
+           (ob == column_options_->choice_value_bottomspace)) {
+               string const input = getString(column_options_->input_bottomspace);
+               if (input == "default")
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, "default");
+               else {
+                       string const str = getLengthFromWidgets(
+                               column_options_->input_bottomspace,
+                               column_options_->choice_value_bottomspace);
+                       controller().set(LyXTabular::SET_BOTTOM_SPACE, str);
+
+                       //check if the input is valid
+                       if (!input.empty() && !isValidLength(input) && !isStrDbl(input)) {
+                               postWarning(_("Invalid Length (valid example: 10mm)"));
+                               return ButtonPolicy::SMI_INVALID;
+                       }
+               }
+
+               update(); // update for alignment
+               return ButtonPolicy::SMI_VALID;
+       }
+
+       if ((ob == column_options_->input_interlinespace) ||
+           (ob == column_options_->choice_value_interlinespace)) {
+               string const input = getString(column_options_->input_interlinespace);
+               if (input == "default")
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, "default");
+               else {
+                       string const str = getLengthFromWidgets(
+                               column_options_->input_interlinespace,
+                               column_options_->choice_value_interlinespace);
+                       controller().set(LyXTabular::SET_INTERLINE_SPACE, str);
+
+                       //check if the input is valid
+                       if (!input.empty() && !isValidLength(input) && !isStrDbl(input)) {
+                               postWarning(_("Invalid Length (valid example: 10mm)"));
+                               return ButtonPolicy::SMI_INVALID;
+                       }
+               }
+
+               update(); // update for alignment
+               return ButtonPolicy::SMI_VALID;
+       }
+
        if ((ob == cell_options_->input_mcolumn_width) ||
            (ob == cell_options_->choice_value_mcolumn_width)) {
                string const str =
@@ -622,6 +748,11 @@ ButtonPolicy::SMInput FormTabular::input(FL_OBJECT * ob, long)
                        num = LyXTabular::SET_LONGTABULAR;
                else
                        num = LyXTabular::UNSET_LONGTABULAR;
+       } else if (ob == tabular_options_->check_booktabs) {
+               if (fl_get_button(tabular_options_->check_booktabs))
+                       num = LyXTabular::SET_BOOKTABS;
+               else
+                       num = LyXTabular::UNSET_BOOKTABS;
        } else if (ob == tabular_options_->check_rotate_tabular) {
                s = fl_get_button(tabular_options_->check_rotate_tabular);
                if (s)
index 8ec9671329b54178d783b91577e721b8c8a22bbe..b0a71054facd7e5a88e9cc57a8457b526fa47b49 100644 (file)
@@ -10,13 +10,13 @@ SnapGrid: 5
 =============== FORM ===============
 Name: form_tabular
 Width: 510
-Height: 325
+Height: 400
 Number of Objects: 6
 
 --------------------
 class: FL_BOX
 type: FLAT_BOX
-box: 0 0 510 325
+box: 0 0 510 400
 boxtype: FL_FLAT_BOX
 colors: FL_COL1 FL_COL1
 alignment: FL_ALIGN_CENTER
@@ -34,7 +34,7 @@ argument:
 --------------------
 class: FL_TABFOLDER
 type: TOP_TABFOLDER
-box: 0 0 505 250
+box: 0 0 505 335
 boxtype: FL_UP_BOX
 colors: FL_COL1 FL_COL1
 alignment: FL_ALIGN_TOP_LEFT
@@ -52,7 +52,7 @@ argument:
 --------------------
 class: FL_BUTTON
 type: NORMAL_BUTTON
-box: 415 290 90 30
+box: 415 365 90 30
 boxtype: FL_UP_BOX
 colors: FL_COL1 FL_COL1
 alignment: FL_ALIGN_CENTER
@@ -70,7 +70,7 @@ argument: 0
 --------------------
 class: FL_INPUT
 type: NORMAL_INPUT
-box: 65 290 60 30
+box: 65 365 60 30
 boxtype: FL_DOWN_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_TOP_LEFT
@@ -88,7 +88,7 @@ argument:
 --------------------
 class: FL_INPUT
 type: NORMAL_INPUT
-box: 5 290 60 30
+box: 5 365 60 30
 boxtype: FL_DOWN_BOX
 colors: FL_COL1 FL_MCOL
 alignment: FL_ALIGN_TOP_LEFT
@@ -125,7 +125,7 @@ argument:
 Name: form_tabular_options
 Width: 505
 Height: 225
-Number of Objects: 10
+Number of Objects: 11
 
 --------------------
 class: FL_BOX
@@ -292,7 +292,7 @@ argument: 0
 --------------------
 class: FL_LABELFRAME
 type: ENGRAVED_FRAME
-box: 280 20 120 75
+box: 280 20 120 90
 boxtype: FL_NO_BOX
 colors: FL_BLACK FL_COL1
 alignment: FL_ALIGN_TOP_LEFT
@@ -307,16 +307,34 @@ name:
 callback: 
 argument: 
 
+--------------------
+class: FL_CHECKBUTTON
+type: PUSH_BUTTON
+box: 280 80 95 25
+boxtype: FL_NO_BOX
+colors: FL_COL1 FL_YELLOW
+alignment: FL_ALIGN_CENTER
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label: Formal table|#F
+shortcut:
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: check_booktabs
+callback: C_FormDialogView_InputCB
+argument: 0
+
 =============== FORM ===============
 Name: form_tabular_column
 Width: 505
-Height: 225
-Number of Objects: 24
+Height: 315
+Number of Objects: 31
 
 --------------------
 class: FL_BOX
 type: FLAT_BOX
-box: 0 0 505 225
+box: 0 0 505 315
 boxtype: FL_FLAT_BOX
 colors: FL_COL1 FL_COL1
 alignment: FL_ALIGN_CENTER
@@ -349,6 +367,24 @@ name:
 callback: 
 argument: 
 
+--------------------
+class: FL_LABELFRAME
+type: ENGRAVED_FRAME
+box: 20 230 475 75
+boxtype: FL_NO_BOX
+colors: FL_BLACK FL_COL1
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_BOLD_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Vertical Space
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: 
+callback: 
+argument: 
+
 --------------------
 class: FL_LABELFRAME
 type: ENGRAVED_FRAME
@@ -747,6 +783,114 @@ name: radio_align_block
 callback: C_FormDialogView_InputCB
 argument: 0
 
+--------------------
+class: FL_INPUT
+type: NORMAL_INPUT
+box: 30 270 75 30
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_MCOL
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Top|#T
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: input_topspace
+callback: C_FormDialogView_InputCB
+argument: 0
+
+--------------------
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 110 270 60 30
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label:  |#L
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: choice_value_topspace
+callback: C_FormDialogView_InputCB
+argument: 0
+
+--------------------
+class: FL_INPUT
+type: NORMAL_INPUT
+box: 190 270 75 30
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_MCOL
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Bottom|#B
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: input_bottomspace
+callback: C_FormDialogView_InputCB
+argument: 0
+
+--------------------
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 270 270 60 30
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label:  |#L
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: choice_value_bottomspace
+callback: C_FormDialogView_InputCB
+argument: 0
+
+--------------------
+class: FL_INPUT
+type: NORMAL_INPUT
+box: 350 270 75 30
+boxtype: FL_DOWN_BOX
+colors: FL_COL1 FL_MCOL
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label: Interline|#I
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: input_interlinespace
+callback: C_FormDialogView_InputCB
+argument: 0
+
+--------------------
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 430 270 60 30
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_TOP_LEFT
+style: FL_NORMAL_STYLE
+size: FL_NORMAL_SIZE
+lcol: FL_BLACK
+label:  |#L
+shortcut: 
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: choice_value_interlinespace
+callback: C_FormDialogView_InputCB
+argument: 0
+
 =============== FORM ===============
 Name: form_tabular_cell
 Width: 505
index 7477138e45eeb25c7bae8169be65c4e6f411b590..5d3ffcd9932b814f275d7e23d402328d9479efe8 100644 (file)
        * insettabular.[Ch] (string2params): Don't pretend to return the
        active cell anymore and simplify keyword parsing.
 
+2004-11-11  Edwin Leuven
+
+       * insettabular.C (getStatus, tabularFeatures): handle booktabs feature
+
 2004-11-10  Jean-Marc Lasgouttes  <lasgouttes@lyx.org>
 
        * insetlatexaccent.h (isLetter): implement, so that word selection
index 51f70a8f47031d1d7fc199c73a7246b879551dc0..a8c9d8d95d60f3da4681e501e58a09adde5c6ca7 100644 (file)
@@ -72,6 +72,7 @@ namespace {
 
 int const ADD_TO_HEIGHT = 2;
 int const ADD_TO_TABULAR_WIDTH = 2;
+int const default_line_space = 10;
 
 ///
 boost::scoped_ptr<LyXTabular> paste_tabular;
@@ -133,6 +134,11 @@ TabularFeature tabularFeature[] =
        { LyXTabular::SET_LTNEWPAGE, "set-ltnewpage" },
        { LyXTabular::SET_SPECIAL_COLUMN, "set-special-column" },
        { LyXTabular::SET_SPECIAL_MULTI, "set-special-multi" },
+       { LyXTabular::SET_BOOKTABS, "set-booktabs" },
+       { LyXTabular::UNSET_BOOKTABS, "unset-booktabs" },
+       { LyXTabular::SET_TOP_SPACE, "set-top-space" },
+       { LyXTabular::SET_BOTTOM_SPACE, "set-bottom-space" },
+       { LyXTabular::SET_INTERLINE_SPACE, "set-interline-space" },
        { LyXTabular::LAST_ACTION, "" }
 };
 
@@ -268,8 +274,14 @@ void InsetTabular::metrics(MetricsInfo & mi, Dimension & dim) const
                        tabular.setWidthOfCell(cell, dim.wid);
                        ++cell;
                }
-               tabular.setAscentOfRow(i, maxAsc + ADD_TO_HEIGHT);
-               tabular.setDescentOfRow(i, maxDesc + ADD_TO_HEIGHT);
+               int const top_space = tabular.row_info[i].top_space_default ?
+                       default_line_space :
+                       tabular.row_info[i].top_space.inPixels(mi.base.textwidth);
+               tabular.setAscentOfRow(i, maxAsc + ADD_TO_HEIGHT + top_space);
+               int const bottom_space = tabular.row_info[i].bottom_space_default ?
+                       default_line_space :
+                       tabular.row_info[i].bottom_space.inPixels(mi.base.textwidth);
+               tabular.setDescentOfRow(i, maxDesc + ADD_TO_HEIGHT + bottom_space);
        }
 
        dim.asc = tabular.getAscentOfRow(0);
@@ -808,6 +820,9 @@ bool InsetTabular::getStatus(LCursor & cur, FuncRequest const & cmd,
                case LyXTabular::DELETE_COLUMN:
                case LyXTabular::SET_ALL_LINES:
                case LyXTabular::UNSET_ALL_LINES:
+               case LyXTabular::SET_TOP_SPACE:
+               case LyXTabular::SET_BOTTOM_SPACE:
+               case LyXTabular::SET_INTERLINE_SPACE:
                        status.clear();
                        return true;
 
@@ -946,6 +961,14 @@ bool InsetTabular::getStatus(LCursor & cur, FuncRequest const & cmd,
                case LyXTabular::SET_LTNEWPAGE:
                        status.setOnOff(tabular.getLTNewPage(sel_row_start));
                        break;
+                       
+               case LyXTabular::SET_BOOKTABS:
+                       status.setOnOff(tabular.useBookTabs());
+                       break;
+                       
+               case LyXTabular::UNSET_BOOKTABS:
+                       status.setOnOff(!tabular.useBookTabs());
+                       break;
 
                default:
                        status.clear();
@@ -1127,11 +1150,10 @@ int InsetTabular::dist(idx_type const cell, int x, int y) const
        Point o = theCoords.getInsets().xy(&inset);
        int const xbeg = o.x_ - tabular.getBeginningOfTextInCell(cell);
        int const xend = xbeg + tabular.getWidthOfColumn(cell);
-       int const ybeg = o.y_ - inset.ascent();
        row_type const row = tabular.row_of_cell(cell);
-       int const rowheight = tabular.getAscentOfRow(row)
-                       + tabular.getDescentOfRow(row);
-       int const yend = ybeg + rowheight;
+       int const ybeg = o.y_ - tabular.getAscentOfRow(row) -
+                        tabular.getAdditionalHeight(row);
+       int const yend = o.y_ + tabular.getDescentOfRow(row);
 
        if (x < xbeg)
                xx = xbeg - x;
@@ -1634,6 +1656,68 @@ void InsetTabular::tabularFeatures(LCursor & cur,
                tabular.setLTNewPage(row, !tabular.getLTNewPage(row));
                break;
 
+       case LyXTabular::SET_BOOKTABS:
+               tabular.setBookTabs(true);
+               break;
+
+       case LyXTabular::UNSET_BOOKTABS:
+               tabular.setBookTabs(false);
+               break;
+
+       case LyXTabular::SET_TOP_SPACE: {
+               LyXLength len;
+               if (value == "default")
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i)
+                               tabular.row_info[i].top_space_default = true;
+               else if (isValidLength(value, &len))
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].top_space_default = false;
+                               tabular.row_info[i].top_space = len;
+                       }
+               else
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].top_space_default = false;
+                               tabular.row_info[i].top_space = len;
+                       }
+               break;
+       }
+
+       case LyXTabular::SET_BOTTOM_SPACE: {
+               LyXLength len;
+               if (value == "default")
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i)
+                               tabular.row_info[i].bottom_space_default = true;
+               else if (isValidLength(value, &len))
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].bottom_space_default = false;
+                               tabular.row_info[i].bottom_space = len;
+                       }
+               else
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].bottom_space_default = false;
+                               tabular.row_info[i].bottom_space = len;
+                       }
+               break;
+       }
+
+       case LyXTabular::SET_INTERLINE_SPACE: {
+               LyXLength len;
+               if (value == "default")
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i)
+                               tabular.row_info[i].interline_space_default = true;
+               else if (isValidLength(value, &len))
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].interline_space_default = false;
+                               tabular.row_info[i].interline_space = len;
+                       }
+               else
+                       for (row_type i = sel_row_start; i <= sel_row_end; ++i) {
+                               tabular.row_info[i].interline_space_default = false;
+                               tabular.row_info[i].interline_space = len;
+                       }
+               break;
+       }
+
        // dummy stuff just to avoid warnings
        case LyXTabular::LAST_ACTION:
                break;
index 7bb2cf78a7970acd7cf2c5985d9a276d0096bc6a..cdfa5e320fe03eadcc71bcbe89268b85c03d417e 100644 (file)
@@ -64,6 +64,8 @@ using std::strlen;
 namespace {
 
 int const WIDTH_OF_LINE = 5;
+int const default_line_space = 10;
+
 
 template <class T>
 string const write_attribute(string const & name, T const & t)
@@ -299,6 +301,21 @@ bool getTokenValue(string const & str, char const * token, LyXLength & len)
 }
 
 
+bool getTokenValue(string const & str, char const * token, LyXLength & len, bool & flag)
+{
+       len = LyXLength();
+       flag = false;
+       string tmp;
+       if (!getTokenValue(str, token, tmp))
+               return false;
+       if (tmp == "default") {
+               flag = true;
+               return  true;
+       }
+       return isValidLength(tmp, &len);
+}
+
+
 void l_getline(istream & is, string & str)
 {
        str.erase();
@@ -380,6 +397,9 @@ LyXTabular::rowstruct::rowstruct()
          descent_of_row(0),
          top_line(true),
          bottom_line(false),
+         top_space_default(false),
+         bottom_space_default(false),
+         interline_space_default(false),
          endhead(false),
          endfirsthead(false),
          endfoot(false),
@@ -432,6 +452,7 @@ void LyXTabular::init(BufferParams const & bp, row_type rows_arg,
        column_info.back().right_line = true;
        is_long_tabular = false;
        rotate = false;
+       use_booktabs = false;
 }
 
 
@@ -607,10 +628,10 @@ LyXTabular::idx_type LyXTabular::numberOfCellsInRow(idx_type const cell) const
 }
 
 
-// returns 1 if there is a topline, returns 0 if not
 bool LyXTabular::topLine(idx_type const cell, bool const onlycolumn) const
 {
-       if (!onlycolumn && isMultiColumn(cell))
+       if (!onlycolumn && isMultiColumn(cell) &&
+           !(use_booktabs && row_of_cell(cell) == 0))
                return cellinfo_of_cell(cell).top_line;
        return row_info[row_of_cell(cell)].top_line;
 }
@@ -618,7 +639,8 @@ bool LyXTabular::topLine(idx_type const cell, bool const onlycolumn) const
 
 bool LyXTabular::bottomLine(idx_type const cell, bool onlycolumn) const
 {
-       if (!onlycolumn && isMultiColumn(cell))
+       if (!onlycolumn && isMultiColumn(cell) &&
+           !(use_booktabs && isLastRow(cell)))
                return cellinfo_of_cell(cell).bottom_line;
        return row_info[row_of_cell(cell)].bottom_line;
 }
@@ -626,6 +648,8 @@ bool LyXTabular::bottomLine(idx_type const cell, bool onlycolumn) const
 
 bool LyXTabular::leftLine(idx_type cell, bool onlycolumn) const
 {
+       if (use_booktabs)
+               return false;
        if (!onlycolumn && isMultiColumn(cell) &&
                (isFirstCellInRow(cell) || isMultiColumn(cell-1)))
        {
@@ -641,6 +665,8 @@ bool LyXTabular::leftLine(idx_type cell, bool onlycolumn) const
 
 bool LyXTabular::rightLine(idx_type cell, bool onlycolumn) const
 {
+       if (use_booktabs)
+               return false;
        if (!onlycolumn && isMultiColumn(cell) &&
                (isLastCellInRow(cell) || isMultiColumn(cell + 1)))
        {
@@ -721,9 +747,12 @@ int LyXTabular::getAdditionalHeight(row_type row) const
                        top = row_info[row].top_line;
                }
        }
+       int const interline_space = row_info[row - 1].interline_space_default ?
+               default_line_space :
+               row_info[row - 1].interline_space.inPixels(width_of_tabular);
        if (top && bottom)
-               return WIDTH_OF_LINE;
-       return 0;
+               return interline_space + WIDTH_OF_LINE;
+       return interline_space;
 }
 
 
@@ -1193,6 +1222,7 @@ void LyXTabular::write(Buffer const & buf, ostream & os) const
        // global longtable options
        os << "<features"
           << write_attribute("rotate", rotate)
+          << write_attribute("booktabs", use_booktabs)
           << write_attribute("islongtable", is_long_tabular)
           << write_attribute("firstHeadTopDL", endfirsthead.topDL)
           << write_attribute("firstHeadBottomDL", endfirsthead.bottomDL)
@@ -1218,8 +1248,21 @@ void LyXTabular::write(Buffer const & buf, ostream & os) const
        for (row_type i = 0; i < rows_; ++i) {
                os << "<row"
                   << write_attribute("topline", row_info[i].top_line)
-                  << write_attribute("bottomline", row_info[i].bottom_line)
-                  << write_attribute("endhead", row_info[i].endhead)
+                  << write_attribute("bottomline", row_info[i].bottom_line);
+               static const string def("default");
+               if (row_info[i].top_space_default)
+                       os << write_attribute("topspace", def);
+               else
+                       os << write_attribute("topspace", row_info[i].top_space);
+               if (row_info[i].bottom_space_default)
+                       os << write_attribute("bottomspace", def);
+               else
+                       os << write_attribute("bottomspace", row_info[i].bottom_space);
+               if (row_info[i].interline_space_default)
+                       os << write_attribute("interlinespace", def);
+               else
+                       os << write_attribute("interlinespace", row_info[i].interline_space);
+               os << write_attribute("endhead", row_info[i].endhead)
                   << write_attribute("endfirsthead", row_info[i].endfirsthead)
                   << write_attribute("endfoot", row_info[i].endfoot)
                   << write_attribute("endlastfoot", row_info[i].endlastfoot)
@@ -1281,6 +1324,7 @@ void LyXTabular::read(Buffer const & buf, LyXLex & lex)
                return;
        }
        getTokenValue(line, "rotate", rotate);
+       getTokenValue(line, "booktabs", use_booktabs);
        getTokenValue(line, "islongtable", is_long_tabular);
        getTokenValue(line, "firstHeadTopDL", endfirsthead.topDL);
        getTokenValue(line, "firstHeadBottomDL", endfirsthead.bottomDL);
@@ -1317,6 +1361,12 @@ void LyXTabular::read(Buffer const & buf, LyXLex & lex)
                }
                getTokenValue(line, "topline", row_info[i].top_line);
                getTokenValue(line, "bottomline", row_info[i].bottom_line);
+               getTokenValue(line, "topspace", row_info[i].top_space,
+                             row_info[i].top_space_default);
+               getTokenValue(line, "bottomspace", row_info[i].bottom_space,
+                             row_info[i].bottom_space_default);
+               getTokenValue(line, "interlinespace", row_info[i].interline_space,
+                             row_info[i].interline_space_default);
                getTokenValue(line, "endfirsthead", row_info[i].endfirsthead);
                getTokenValue(line, "endhead", row_info[i].endhead);
                getTokenValue(line, "endfoot", row_info[i].endfoot);
@@ -1443,6 +1493,18 @@ LyXTabular::idx_type LyXTabular::unsetMultiColumn(idx_type cell)
 }
 
 
+void LyXTabular::setBookTabs(bool what)
+{
+       use_booktabs = what;
+}
+
+
+bool LyXTabular::useBookTabs() const
+{
+       return use_booktabs;
+}
+
+
 void LyXTabular::setLongTabular(bool what)
 {
        is_long_tabular = what;
@@ -1743,12 +1805,14 @@ int LyXTabular::TeXTopHLine(ostream & os, row_type row) const
                if (topLine(i))
                        ++tmp;
        }
-       if (tmp == n - fcell) {
-               os << "\\hline ";
+       if (use_booktabs && row == 0) {
+               os << "\\toprule ";
+       } else if (tmp == n - fcell) {
+               os << (use_booktabs ? "\\midrule " : "\\hline ");
        } else if (tmp) {
                for (idx_type i = fcell; i < n; ++i) {
                        if (topLine(i)) {
-                               os << "\\cline{"
+                               os << (use_booktabs ? "\\cmidrule{" : "\\cline{")
                                   << column_of_cell(i) + 1
                                   << '-'
                                   << right_column_of_cell(i) + 1
@@ -1777,12 +1841,14 @@ int LyXTabular::TeXBottomHLine(ostream & os, row_type row) const
                if (bottomLine(i))
                        ++tmp;
        }
-       if (tmp == n - fcell) {
-               os << "\\hline";
+       if (use_booktabs && row == rows_ - 1) {
+               os << "\\bottomrule";
+       } else if (tmp == n - fcell) {
+               os << (use_booktabs ? "\\midrule" : "\\hline");
        } else if (tmp) {
                for (idx_type i = fcell; i < n; ++i) {
                        if (bottomLine(i)) {
-                               os << "\\cline{"
+                               os << (use_booktabs ? "\\cmidrule{" : "\\cline{")
                                   << column_of_cell(i) + 1
                                   << '-'
                                   << right_column_of_cell(i) + 1
@@ -2013,8 +2079,23 @@ int LyXTabular::TeXRow(ostream & os, row_type i, Buffer const & buf,
                       OutputParams const & runparams) const
 {
        idx_type cell = getCellNumber(i, 0);
-
        int ret = TeXTopHLine(os, i);
+       if (row_info[i].top_space_default) {
+               if (use_booktabs)
+                       os << "\\addlinespace\n";
+               else
+                       os << "\\noalign{\\vskip\\doublerulesep}\n";
+       } else if(!row_info[i].top_space.zero()) {
+               if (use_booktabs)
+                       os << "\\addlinespace["
+                          << row_info[i].top_space.asLatexString() << "]\n";
+               else {
+                       os << "\\noalign{\\vskip"
+                          << row_info[i].top_space.asLatexString() << "}\n";
+               }
+               ++ret;
+       }
+       
        for (col_type j = 0; j < columns_; ++j) {
                if (isPartOfMultiColumn(i, j))
                        continue;
@@ -2039,9 +2120,36 @@ int LyXTabular::TeXRow(ostream & os, row_type i, Buffer const & buf,
                }
                ++cell;
        }
-       os << "\\tabularnewline\n";
+       os << "\\tabularnewline";
+       if (row_info[i].bottom_space_default) {
+               if (use_booktabs)
+                       os << "\\addlinespace";
+               else
+                       os << "[\\doublerulesep]";
+       } else if (!row_info[i].bottom_space.zero()) {
+               if (use_booktabs)
+                       os << "\\addlinespace";
+               os << '[' << row_info[i].bottom_space.asLatexString() << ']';
+       }
+       os << '\n';
        ++ret;
        ret += TeXBottomHLine(os, i);
+       if (row_info[i].interline_space_default) {
+               if (use_booktabs)
+                       os << "\\addlinespace\n";
+               else
+                       os << "\\noalign{\\vskip\\doublerulesep}\n";
+       } else if (!row_info[i].interline_space.zero()) {
+               if (use_booktabs)
+                       os << "\\addlinespace["
+                          << row_info[i].interline_space.asLatexString()
+                          << "]\n";
+               else
+                       os << "\\noalign{\\vskip"
+                          << row_info[i].interline_space.asLatexString()
+                          << "}\n";
+               ++ret;
+       }
        return ret;
 }
 
@@ -2067,7 +2175,7 @@ int LyXTabular::latex(Buffer const & buf, ostream & os,
                if (!column_info[i].align_special.empty()) {
                        os << column_info[i].align_special;
                } else {
-                       if (column_info[i].left_line)
+                       if (!use_booktabs && column_info[i].left_line)
                                os << '|';
                        if (!column_info[i].p_width.zero()) {
                                switch (column_info[i].alignment) {
@@ -2114,7 +2222,7 @@ int LyXTabular::latex(Buffer const & buf, ostream & os,
                                        break;
                                }
                        }
-                       if (column_info[i].right_line)
+                       if (!use_booktabs && column_info[i].right_line)
                                os << '|';
                }
        }
@@ -2594,6 +2702,8 @@ LyXTabular::getCellFromInset(InsetBase const * inset) const
 void LyXTabular::validate(LaTeXFeatures & features) const
 {
        features.require("NeedTabularnewline");
+       if (useBookTabs())
+               features.require("booktabs");
        if (isLongTabular())
                features.require("longtable");
        if (needRotating())
index 0f64c9e54f81c289ab3ccd7c112a3ecb451c6f62..77da49b087b52e6d78e45ad20bd1bd03c4e4968d 100644 (file)
@@ -127,6 +127,16 @@ public:
                ///
                SET_SPECIAL_MULTI,
                ///
+               SET_BOOKTABS,
+               ///
+               UNSET_BOOKTABS,
+               ///
+               SET_TOP_SPACE,
+               ///
+               SET_BOTTOM_SPACE,
+               ///
+               SET_INTERLINE_SPACE,
+               ///
                LAST_ACTION
        };
        ///
@@ -203,7 +213,8 @@ public:
        ///
        bool isLastRow(idx_type cell) const;
 
-       ///
+       /// return space occupied by the second horizontal line and
+       /// interline space above row \p row in pixels
        int getAdditionalHeight(row_type row) const;
        ///
        int getAdditionalWidth(idx_type cell) const;
@@ -321,6 +332,10 @@ public:
        ///
        col_type right_column_of_cell(idx_type cell) const;
        ///
+       void setBookTabs(bool);
+       ///
+       bool useBookTabs() const;
+       ///
        void setLongTabular(bool);
        ///
        bool isLongTabular() const;
@@ -458,6 +473,18 @@ public:
                bool top_line;
                ///
                bool bottom_line;
+               /// Extra space between the top line and this row
+               LyXLength top_space;
+               /// Ignore top_space if true and use the default top space
+               bool top_space_default;
+               /// Extra space between this row and the bottom line
+               LyXLength bottom_space;
+               /// Ignore bottom_space if true and use the default bottom space
+               bool bottom_space_default;
+               /// Extra space between the bottom line and the next top line
+               LyXLength interline_space;
+               /// Ignore interline_space if true and use the default interline space
+               bool interline_space_default;
                /// This are for longtabulars only
                /// a row of endhead
                bool endhead;
@@ -515,6 +542,8 @@ public:
        ///
        int width_of_tabular;
        ///
+       bool use_booktabs;
+       ///
        bool rotate;
        //
        // for long tabulars