]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiMathMatrix.cpp
Use QMessageBox for toggleWarning if possible
[lyx.git] / src / frontends / qt4 / GuiMathMatrix.cpp
index 8cc8089d098a0076332c5e0cae907db8c8d84625..e4e3f8878b04da28fed0d9dd3c01794c08a0e8d9 100644 (file)
@@ -18,6 +18,8 @@
 
 #include "FuncRequest.h"
 
+#include "support/gettext.h"
+
 #include <QLineEdit>
 #include <QPushButton>
 #include <QSpinBox>
@@ -27,11 +29,45 @@ using namespace std;
 namespace lyx {
 namespace frontend {
 
+static char const * const DecoChars[] = {
+       N_("None"),
+       N_("[x]"),
+       N_("(x)"),
+       N_("{x}"),
+       N_("|x|"),
+       N_("||x||"),
+       ""
+};
+
+static char const * const DecoNames[] = {
+       N_("bmatrix"),
+       N_("pmatrix"),
+       N_("Bmatrix"),
+       N_("vmatrix"),
+       N_("Vmatrix"),
+       ""
+};
+
+static char const * const VertAligns[] = {
+       N_("Top"),
+       N_("Middle"),
+       N_("Bottom"),
+       ""
+};
+
+static char const v_align_c[] = "tcb";
+
+
 GuiMathMatrix::GuiMathMatrix(GuiView & lv)
        : GuiDialog(lv, "mathmatrix", qt_("Math Matrix"))
 {
        setupUi(this);
 
+       for (int i = 0; *VertAligns[i]; ++i)
+               valignCO->addItem(qt_(VertAligns[i]));
+       for (int i = 0; *DecoChars[i]; ++i)
+               decorationCO->addItem(qt_(DecoChars[i]));
+
        table->setMinimumSize(100, 100);
        rowsSB->setValue(5);
        columnsSB->setValue(5);
@@ -95,8 +131,7 @@ void GuiMathMatrix::slotOK()
        // a matrix without a decoration is an array,
        // otherwise it is an AMS matrix
        // decorated matrices cannot have a vertical alignment
-       
-       char v_align_c[] = "tcb";
+
        char const c = v_align_c[valignCO->currentIndex()];
        QString const sh = halignED->text();
        string const str = fromqstr(
@@ -104,25 +139,7 @@ void GuiMathMatrix::slotOK()
 
        if (decorationCO->currentIndex() != 0) {
                int const deco = decorationCO->currentIndex();
-               QString deco_name;
-               // FIXME This is very dangerous way of coding.
-               // The order is defined in .ui file and anybody who will touch it
-               // will destroy the whole math decorations machinery.
-               // For better way look on MathDelimiter Size-combo solution and biggui[] array.
-               // Similarly for the v_align_c stuff -- at least we should push it into
-               // constructor and have it in one file...
-               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;
-               }
+               QString deco_name = DecoNames[deco - 1];
                // only if a special alignment is set create a 1x1 AMS array in which
                // a normal array will be created, otherwise create just a normal AMS array
                if (sh.contains('l') || sh.contains('r')) {