]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathHull.C
Support lgathered and rgathered math environments
[lyx.git] / src / mathed / InsetMathHull.C
index 81af5ffa747914ad4e631ec4682452eb29d61cb9..1a3a85fe51e9f570c7cf3c3b4bec41e6ff729e36 100644 (file)
@@ -50,9 +50,6 @@
 #include "insets/render_preview.h"
 #include "insets/insetlabel.h"
 
-#include "frontends/Dialogs.h"
-#include "frontends/LyXView.h"
-
 #include "graphics/PreviewImage.h"
 #include "graphics/PreviewLoader.h"
 
@@ -511,37 +508,46 @@ void InsetMathHull::header_write(WriteStream & os) const
 {
        bool n = numberedType();
 
-       if (type_ == hullNone)
-               ;
+       switch(type_) {
+       case hullNone:
+               break;
 
-       else if (type_ == hullSimple) {
+       case hullSimple:
                os << '$';
                if (cell(0).empty())
                        os << ' ';
-       }
+               break;
 
-       else if (type_ == hullEquation) {
+       case hullEquation:
                if (n)
                        os << "\\begin{equation" << star(n) << "}\n";
                else
                        os << "\\[\n";
-       }
+               break;
 
-       else if (type_ == hullEqnArray || type_ == hullAlign || type_ ==
-hullFlAlign
-                || type_ == hullGather || type_ == hullMultline)
-                       os << "\\begin{" << type_ << star(n) << "}\n";
+       case hullEqnArray:
+       case hullAlign:
+       case hullFlAlign:
+       case hullGather:
+       case hullMultline:
+               os << "\\begin{" << hullName(type_) << star(n) << "}\n";
+               break;
 
-       else if (type_ == hullAlignAt || type_ == hullXAlignAt)
-               os << "\\begin{" << type_ << star(n) << '}'
+       case hullAlignAt:
+       case hullXAlignAt:
+               os << "\\begin{" << hullName(type_) << star(n) << '}'
                  << '{' << static_cast<unsigned int>((ncols() + 1)/2) << "}\n";
+               break;
 
-       else if (type_ == hullXXAlignAt)
-               os << "\\begin{" << type_ << '}'
+       case hullXXAlignAt:
+               os << "\\begin{" << hullName(type_) << '}'
                  << '{' << static_cast<unsigned int>((ncols() + 1)/2) << "}\n";
+               break;
 
-       else
+       default:
                os << "\\begin{unknown" << star(n) << '}';
+               break;
+       }
 }
 
 
@@ -549,29 +555,40 @@ void InsetMathHull::footer_write(WriteStream & os) const
 {
        bool n = numberedType();
 
-       if (type_ == hullNone)
+       switch(type_) {
+       case hullNone:
                os << "\n";
+               break;
 
-       else if (type_ == hullSimple)
+       case hullSimple:
                os << '$';
+               break;
 
-       else if (type_ == hullEquation)
+       case hullEquation:
                if (n)
                        os << "\\end{equation" << star(n) << "}\n";
                else
                        os << "\\]\n";
+               break;
 
-       else if (type_ == hullEqnArray || type_ == hullAlign || type_ ==
-hullFlAlign
-                || type_ == hullAlignAt || type_ == hullXAlignAt
-                || type_ == hullGather || type_ == hullMultline)
-               os << "\\end{" << type_ << star(n) << "}\n";
+       case hullEqnArray:
+       case hullAlign:
+       case hullFlAlign:
+       case hullAlignAt:
+       case hullXAlignAt:
+       case hullGather:
+       case hullMultline:
+               os << "\\end{" << hullName(type_) << star(n) << "}\n";
+               break;
 
-       else if (type_ == hullXXAlignAt)
-               os << "\\end{" << type_ << "}\n";
+       case hullXXAlignAt:
+               os << "\\end{" << hullName(type_) << "}\n";
+               break;
 
-       else
+       default:
                os << "\\end{unknown" << star(n) << '}';
+               break;
+       }
 }
 
 
@@ -876,8 +893,9 @@ void InsetMathHull::mutate(HullType newtype)
        }
 
        else {
-               lyxerr << "mutation from '" << type_
-                      << "' to '" << newtype << "' not implemented" << endl;
+               lyxerr << "mutation from '" << hullName(type_)
+                      << "' to '" << hullName(newtype)
+                      << "' not implemented" << endl;
        }
 }
 
@@ -905,7 +923,7 @@ void InsetMathHull::write(WriteStream & os) const
 
 void InsetMathHull::normalize(NormalStream & os) const
 {
-       os << "[formula " << type_ << ' ';
+       os << "[formula " << hullName(type_) << ' ';
        InsetMathGrid::normalize(os);
        os << "] ";
 }
@@ -919,7 +937,7 @@ void InsetMathHull::mathmlize(MathMLStream & os) const
 
 void InsetMathHull::infoize(ostream & os) const
 {
-       os << "Type: " << type_;
+       os << "Type: " << hullName(type_);
 }
 
 
@@ -1081,7 +1099,7 @@ void InsetMathHull::doDispatch(LCursor & cur, FuncRequest & cmd)
                string const data = InsetCommandMailer::params2string("label", p);
 
                if (cmd.argument().empty())
-                       cur.bv().owner()->getDialogs().show("label", data, 0);
+                       cur.bv().showInsetDialog("label", data, 0);
                else {
                        FuncRequest fr(LFUN_INSET_INSERT, data);
                        dispatch(cur, fr);
@@ -1108,13 +1126,8 @@ void InsetMathHull::doDispatch(LCursor & cur, FuncRequest & cmd)
                        }
                        break;
                }
-               MathArray ar;
-               if (createInsetMath_fromDialogStr(lyx::to_utf8(cmd.argument()), ar)) {
-                       recordUndo(cur);
-                       cur.insert(ar);
-               } else
-                       cur.undispatched();
-               break;
+               InsetMathGrid::doDispatch(cur, cmd);
+               return;
        }
 
        case LFUN_MATH_EXTERN:
@@ -1176,15 +1189,12 @@ bool InsetMathHull::getStatus(LCursor & cur, FuncRequest const & cmd,
        case LFUN_LABEL_INSERT:
                status.enabled(type_ != hullSimple);
                return true;
-       case LFUN_INSET_INSERT: {
-               // Don't test createInsetMath_fromDialogStr(), since
-               // getStatus is not called with a valid reference and the
-               // dialog would not be applyable.
-               string const name = cmd.getArg(0);
-               status.enabled(name == "ref" ||
-                              (name == "label" && type_ != hullSimple));
-               break;
-       }
+       case LFUN_INSET_INSERT:
+               if (cmd.getArg(0) == "label") {
+                       status.enabled(type_ != hullSimple);
+                       return true;
+               }
+               return InsetMathGrid::getStatus(cur, cmd, status);
        case LFUN_TABULAR_FEATURE: {
                istringstream is(lyx::to_utf8(cmd.argument()));
                string s;
@@ -1261,10 +1271,10 @@ void InsetMathHull::mutateToText()
        string::const_iterator cit = str.begin();
        string::const_iterator end = str.end();
        for (; cit != end; ++cit)
-               view_->owner()->getIntl()->getTransManager().TranslateAndInsert(*cit, lt);
+               view_->getIntl()->getTransManager().TranslateAndInsert(*cit, lt);
 
        // remove ourselves
-       //view_->owner()->dispatch(LFUN_ESCAPE);
+       //theApp->lyxFunc().dispatch(LFUN_ESCAPE);
 #endif
 }