#pragma implementation
#endif
+#include <algorithm>
+
#include "FormMathsMatrix.h"
#include "form_maths_matrix.h"
#include "Dialogs.h"
#include "Lsstream.h"
#include "lyxfunc.h"
#include "support/LAssert.h"
+#include "support/lyxalgo.h" // lyx::count
#ifndef CXX_GLOBAL_CSTD
using std::strlen;
static char h_align_str[80] = "c";
static char v_align_c[] = "tcb";
-extern "C"
-int C_FormMathsMatrixAlignFilter(FL_OBJECT * ob, char const *,
- char const * cur, int c)
-{
- lyx::Assert(ob);
- FormMathsMatrix * pre = static_cast<FormMathsMatrix *>(ob->u_vdata);
- lyx::Assert(pre);
- return pre->AlignFilter(cur, c);
+
+extern "C" {
+
+ static
+ int C_FormMathsMatrixAlignFilter(FL_OBJECT * ob, char const *,
+ char const * cur, int c)
+ {
+ lyx::Assert(ob);
+ FormMathsMatrix * pre =
+ static_cast<FormMathsMatrix *>(ob->u_vdata);
+ lyx::Assert(pre);
+ return pre->AlignFilter(cur, c);
+ }
+
}
FormMathsMatrix::FormMathsMatrix(LyXView * lv, Dialogs * d,
FormMathsPanel const & p)
- : FormMathsSub(lv, d, p, _("Maths Matrix"))
+ : FormMathsSub(lv, d, p, _("Maths Matrix"), false)
{}
int const ny = int(fl_get_slider_value(dialog_->slider_rows) + 0.5);
ostringstream ost;
- ost << nx << ' ' << ny << ' ' << c << sh;
+ ost << nx << ' ' << ny << ' ' << c << ' ' << sh;
lv_->getLyXFunc()->dispatch(LFUN_INSERT_MATRIX, ost.str().c_str());
}
int FormMathsMatrix::AlignFilter(char const * cur, int c)
{
+ size_t len = strlen(cur);
+
int const n = int(fl_get_slider_value(dialog_->slider_columns) + 0.5) -
- int(strlen(cur));
+ int(len) +
+ int(lyx::count(cur, cur + len, '|'));
if (n < 0)
return FL_INVALID;
- if (c == 'c' || c == 'l' || c == 'r')
+ if (c == 'c' || c == 'l' || c == 'r' || c == '|')
return FL_VALID;
return FL_INVALID;