]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ControlTabular.C
Add a buffer_path arg to InsetGraphicsMailer's params2string, string2params.
[lyx.git] / src / frontends / controllers / ControlTabular.C
index 6aa6f9c18a9b942983c1f855a6b5a8a8c6397a9c..d403a09de1fdd06aa77406b39a4e32a77cb39b53 100644 (file)
@@ -17,6 +17,8 @@
 #include "insets/insettabular.h"
 #include "support/LAssert.h"
 
+using namespace lyx::support;
+
 
 ControlTabular::ControlTabular(Dialog & parent)
        : Dialog::Controller(parent), active_cell_(-1)
@@ -32,7 +34,7 @@ bool ControlTabular::initialiseParams(string const & data)
        InsetTabular tmp(*buffer);
        int cell = InsetTabularMailer::string2params(data, tmp);
        if (cell != -1) {
-               params_.reset(new LyXTabular(*tmp.tabular.get()));
+               params_.reset(new LyXTabular(tmp.tabular));
                active_cell_ = cell;
        }
        return true;
@@ -54,7 +56,7 @@ int ControlTabular::getActiveCell() const
 
 LyXTabular const & ControlTabular::tabular() const
 {
-       lyx::Assert(params_.get());
+       Assert(params_.get());
        return *params_.get();
 }
 
@@ -70,3 +72,151 @@ bool ControlTabular::useMetricUnits() const
 {
        return lyxrc.default_papersize > BufferParams::PAPER_EXECUTIVEPAPER;
 }
+
+
+void ControlTabular::toggleTopLine()
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::M_TOGGLE_LINE_TOP);
+       else
+               set(LyXTabular::TOGGLE_LINE_TOP);
+}
+
+
+void ControlTabular::toggleBottomLine()
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::M_TOGGLE_LINE_BOTTOM);
+       else
+               set(LyXTabular::TOGGLE_LINE_BOTTOM);
+}
+
+
+void ControlTabular::toggleLeftLine()
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::M_TOGGLE_LINE_LEFT);
+       else
+               set(LyXTabular::TOGGLE_LINE_LEFT);
+}
+
+
+void ControlTabular::toggleRightLine()
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::M_TOGGLE_LINE_RIGHT);
+       else
+               set(LyXTabular::TOGGLE_LINE_RIGHT);
+}
+
+
+void ControlTabular::setSpecial(string const & special)
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::SET_SPECIAL_MULTI, special);
+       else
+               set(LyXTabular::SET_SPECIAL_COLUMN, special);
+}
+
+
+void ControlTabular::setWidth(string const & width)
+{
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(LyXTabular::SET_MPWIDTH, width);
+       else
+               set(LyXTabular::SET_PWIDTH, width);
+
+       dialog().view().update();
+}
+
+
+void ControlTabular::toggleMultiColumn()
+{
+       set(LyXTabular::MULTICOLUMN);
+       dialog().view().update();
+}
+
+
+void ControlTabular::rotateTabular(bool yes)
+{
+       if (yes)
+               set(LyXTabular::SET_ROTATE_TABULAR);
+       else
+               set(LyXTabular::UNSET_ROTATE_TABULAR);
+}
+
+
+void ControlTabular::rotateCell(bool yes)
+{
+       if (yes)
+               set(LyXTabular::SET_ROTATE_CELL);
+       else
+               set(LyXTabular::UNSET_ROTATE_CELL);
+}
+
+
+void ControlTabular::halign(ControlTabular::HALIGN h)
+{
+       LyXTabular::Feature num = LyXTabular::ALIGN_LEFT;
+       LyXTabular::Feature multi_num = LyXTabular::M_ALIGN_LEFT;
+
+       switch (h) {
+               case LEFT:
+                       num = LyXTabular::ALIGN_LEFT;
+                       multi_num = LyXTabular::M_ALIGN_LEFT;
+                       break;
+               case CENTER:
+                       num = LyXTabular::ALIGN_CENTER;
+                       multi_num = LyXTabular::M_ALIGN_CENTER;
+                       break;
+               case RIGHT:
+                       num = LyXTabular::ALIGN_RIGHT;
+                       multi_num = LyXTabular::M_ALIGN_RIGHT;
+                       break;
+               case BLOCK:
+                       num = LyXTabular::ALIGN_BLOCK;
+                       //multi_num: no equivalent
+                       break;
+       }
+
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(multi_num);
+       else
+               set(num);
+}
+
+
+void ControlTabular::valign(ControlTabular::VALIGN v)
+{
+       LyXTabular::Feature num = LyXTabular::VALIGN_CENTER;
+       LyXTabular::Feature multi_num = LyXTabular::M_VALIGN_CENTER;
+
+       switch (v) {
+               case TOP:
+                       num = LyXTabular::VALIGN_TOP;
+                       multi_num = LyXTabular::M_VALIGN_TOP;
+                       break;
+               case VCENTER:
+                       num = LyXTabular::VALIGN_CENTER;
+                       multi_num = LyXTabular::M_VALIGN_CENTER;
+                       break;
+               case BOTTOM:
+                       num = LyXTabular::VALIGN_BOTTOM;
+                       multi_num = LyXTabular::M_VALIGN_BOTTOM;
+                       break;
+       }
+
+       if (tabular().isMultiColumn(getActiveCell()))
+               set(multi_num);
+       else
+               set(num);
+}
+
+
+void ControlTabular::longTabular(bool yes)
+{
+       if (yes)
+               set(LyXTabular::SET_LONGTABULAR);
+       else
+               set(LyXTabular::UNSET_LONGTABULAR);
+}