X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiMathMatrix.cpp;h=25555f7b01d76a2a740598d4467b264dc0181ab9;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=3b0ace1428725fd21e539689568f060d7445581a;hpb=a65738065959c266cd07df02994478b4fa10f6f1;p=lyx.git diff --git a/src/frontends/qt4/GuiMathMatrix.cpp b/src/frontends/qt4/GuiMathMatrix.cpp index 3b0ace1428..25555f7b01 100644 --- a/src/frontends/qt4/GuiMathMatrix.cpp +++ b/src/frontends/qt4/GuiMathMatrix.cpp @@ -3,7 +3,8 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Jürgen Spitzmüller + * \author Jürgen Spitzmüller + * \author Uwe Stöhr * * Full author contact details are available in file CREDITS. */ @@ -15,6 +16,8 @@ #include "EmptyTable.h" #include "qt_helpers.h" +#include "FuncRequest.h" + #include #include #include @@ -25,7 +28,7 @@ namespace lyx { namespace frontend { GuiMathMatrix::GuiMathMatrix(GuiView & lv) - : GuiMath(lv, "mathmatrix", qt_("Math Matrix")) + : GuiDialog(lv, "mathmatrix", qt_("Math Matrix")) { setupUi(this); @@ -33,6 +36,7 @@ GuiMathMatrix::GuiMathMatrix(GuiView & lv) rowsSB->setValue(5); columnsSB->setValue(5); valignCO->setCurrentIndex(1); + decorationCO->setCurrentIndex(0); connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK())); connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); @@ -53,6 +57,8 @@ GuiMathMatrix::GuiMathMatrix(GuiView & lv) this, SLOT(change_adaptor())); connect(halignED, SIGNAL(textChanged(QString)), this, SLOT(change_adaptor())); + connect(decorationCO, SIGNAL(activated(int)), + this, SLOT(decorationChanged(int))); bc().setPolicy(ButtonPolicy::IgnorantPolicy); } @@ -75,6 +81,18 @@ void GuiMathMatrix::rowsChanged(int) } +void GuiMathMatrix::decorationChanged(int deco) +{ + // a matrix with a decoration cannot have a vertical alignment + if (deco != 0) { + alignmentGB->setEnabled(false); + valignCO->setCurrentIndex(1); + halignED->clear(); + } else + alignmentGB->setEnabled(true); +} + + void GuiMathMatrix::change_adaptor() { // FIXME: We need a filter for the halign input @@ -83,13 +101,36 @@ void GuiMathMatrix::change_adaptor() void GuiMathMatrix::slotOK() { - char v_align_c[] = "tcb"; - char const c = v_align_c[valignCO->currentIndex()]; - QString const sh = halignED->text(); int const nx = columnsSB->value(); int const ny = rowsSB->value(); - dispatchMatrix(fromqstr( - QString("%1 %2 %3 %4").arg(nx).arg(ny).arg(c).arg(sh))); + // a matrix without a decoration is an array, + // otherwise it is an AMS matrix that cannot have a vertical alignment + if (decorationCO->currentIndex() == 0) { + char v_align_c[] = "tcb"; + char const c = v_align_c[valignCO->currentIndex()]; + QString const sh = halignED->text(); + string const str = fromqstr( + QString("%1 %2 %3 %4").arg(nx).arg(ny).arg(c).arg(sh)); + dispatch(FuncRequest(LFUN_MATH_MATRIX, str)); + } else { + int const deco = decorationCO->currentIndex(); + QString deco_name; + switch (deco) { + case 1: deco_name = "bmatrix"; + break; + case 2: deco_name = "pmatrix"; + break; + case 3: deco_name = "Bmatrix"; + break; + case 4: deco_name = "vmatrix"; + break; + case 5: deco_name = "Vmatrix"; + break; + } + string const str_ams = fromqstr( + QString("%1 %2 %3").arg(nx).arg(ny).arg(deco_name)); + dispatch(FuncRequest(LFUN_MATH_AMS_MATRIX, str_ams)); + } close(); } @@ -106,4 +147,4 @@ Dialog * createGuiMathMatrix(GuiView & lv) { return new GuiMathMatrix(lv); } } // namespace frontend } // namespace lyx -#include "GuiMathMatrix_moc.cpp" +#include "moc_GuiMathMatrix.cpp"