]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/Validator.cpp
On Linux show in crash message box the backtrace
[lyx.git] / src / frontends / qt4 / Validator.cpp
index 34141894971f0ca8020f2556b2adacc1909a9be3..13f813e9f39a2f2a52760c58a014875bb4d99a91 100644 (file)
@@ -24,6 +24,7 @@
 #include "support/lstrings.h"
 
 #include <QLineEdit>
+#include <QLocale>
 #include <QWidget>
 
 using namespace std;
@@ -39,10 +40,13 @@ LengthValidator::LengthValidator(QWidget * parent)
 
 QValidator::State LengthValidator::validate(QString & qtext, int &) const
 {
-       string const text = fromqstr(qtext);
-       if (text.empty() || support::isStrDbl(text))
+       bool ok;
+       qtext.trimmed().toDouble(&ok);
+       if (qtext.isEmpty() || ok)
                return QValidator::Acceptable;
 
+       string const text = fromqstr(qtext);
+
        if (glue_length_) {
                GlueLength gl;
                return (isValidGlueLength(text, &gl)) ?
@@ -85,7 +89,15 @@ LengthValidator * unsignedLengthValidator(QLineEdit * ed)
 }
 
 
-LengthAutoValidator::LengthAutoValidator(QWidget * parent, QString const autotext)
+LengthValidator * unsignedGlueLengthValidator(QLineEdit * ed)
+{
+       LengthValidator * v = new LengthValidator(ed);
+       v->setBottom(GlueLength());
+       return v;
+}
+
+
+LengthAutoValidator::LengthAutoValidator(QWidget * parent, QString const & autotext)
        : LengthValidator(parent),
          autotext_(autotext)
 {}
@@ -99,7 +111,7 @@ QValidator::State LengthAutoValidator::validate(QString & qtext, int & dummy) co
 }
 
 
-LengthAutoValidator * unsignedLengthAutoValidator(QLineEdit * ed, QString const autotext)
+LengthAutoValidator * unsignedLengthAutoValidator(QLineEdit * ed, QString const autotext)
 {
        LengthAutoValidator * v = new LengthAutoValidator(ed, autotext);
        v->setBottom(Length());
@@ -107,7 +119,7 @@ LengthAutoValidator * unsignedLengthAutoValidator(QLineEdit * ed, QString const
 }
 
 
-DoubleAutoValidator::DoubleAutoValidator(QWidget * parent, QString const autotext)
+DoubleAutoValidator::DoubleAutoValidator(QWidget * parent, QString const autotext)
        : QDoubleValidator(parent),
          autotext_(autotext)
 {}
@@ -126,6 +138,18 @@ QValidator::State DoubleAutoValidator::validate(QString & input, int & pos) cons
 }
 
 
+NoNewLineValidator::NoNewLineValidator(QWidget * parent)
+       : QValidator(parent)
+{}
+
+
+QValidator::State NoNewLineValidator::validate(QString & qtext, int &) const
+{
+       qtext.remove(QRegExp("[\\n\\r]"));
+       return QValidator::Acceptable;
+}
+
+
 PathValidator::PathValidator(bool acceptable_if_empty,
                             QWidget * parent)
        : QValidator(parent),