]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathSplit.cpp
Years forgotten files.
[lyx.git] / src / mathed / InsetMathSplit.cpp
index d05b5f25e303c3f8054311f25dc836c8d9f70c89..240126d122e2d774f4531ff340baa1ccd64cc499 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author André Pönitz
+ * \author André Pönitz
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -32,8 +32,9 @@ namespace lyx {
 using support::bformat;
 
 
-InsetMathSplit::InsetMathSplit(docstring const & name, char valign)
-       : InsetMathGrid(1, 1, valign, docstring()), name_(name)
+InsetMathSplit::InsetMathSplit(Buffer * buf, docstring const & name,
+       char valign)
+       : InsetMathGrid(buf, 1, 1, valign, docstring()), name_(name)
 {
 }
 
@@ -68,25 +69,32 @@ void InsetMathSplit::draw(PainterInfo & pi, int x, int y) const
 bool InsetMathSplit::getStatus(Cursor & cur, FuncRequest const & cmd,
                FuncStatus & flag) const
 {
-       switch (cmd.action) {
-       case LFUN_TABULAR_FEATURE: {
-               docstring const & s = cmd.argument();
+       switch (cmd.action()) {
+       case LFUN_INSET_MODIFY: {
+               istringstream is(to_utf8(cmd.argument()));
+               string s;
+               is >> s;
+               if (s != "tabular")
+                       break;
+               is >> s;
                if (s == "add-vline-left" || s == "add-vline-right") {
                        flag.message(bformat(
                                from_utf8(N_("Can't add vertical grid lines in '%1$s'")),       name_));
                        flag.setEnabled(false);
                        return true;
                }
-               return InsetMathGrid::getStatus(cur, cmd, flag);
+               break;
        }
        default:
-               return InsetMathGrid::getStatus(cur, cmd, flag);
+               break;
        }
+       return InsetMathGrid::getStatus(cur, cmd, flag);
 }
 
 
 void InsetMathSplit::write(WriteStream & ws) const
 {
+       MathEnsurer ensurer(ws);
        if (ws.fragile())
                ws << "\\protect";
        ws << "\\begin{" << name_ << '}';
@@ -109,11 +117,38 @@ void InsetMathSplit::infoize(odocstream & os) const
 }
 
 
+void InsetMathSplit::mathmlize(MathStream & ms) const
+{
+       // split, gathered, aligned, alignedat
+       // At the moment, those seem to display just fine without any
+       // special treatment.
+       // FIXME
+       // lgathered and rgathered could use the proper alignment, but
+       // it's not clear how to do that without copying a lot of code.
+       // One idea would be to wrap the table in an <mrow>, and set the
+       // alignment there via CSS.
+       InsetMathGrid::mathmlize(ms);
+}
+
+
+void InsetMathSplit::htmlize(HtmlStream & ms) const
+{
+       // split, gathered, aligned, alignedat
+       // At the moment, those seem to display just fine without any
+       // special treatment.
+       // FIXME
+       // lgathered and rgathered could use the proper alignment.
+       InsetMathGrid::htmlize(ms);
+}
+
+
 void InsetMathSplit::validate(LaTeXFeatures & features) const
 {
        if (name_ == "split" || name_ == "gathered" || name_ == "aligned" ||
            name_ == "alignedat")
                features.require("amsmath");
+       else if (name_ == "lgathered" || name_ == "rgathered")
+               features.require("mathtools");
        InsetMathGrid::validate(features);
 }