Esempio n. 1
0
QVariant JsonTranslationService::parseJson(const QByteArray &json)
{
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
    QString js;
    js.reserve(json.size() + 2);
    js.append("(").append(QString::fromUtf8(json)).append(")");

    static QScriptEngine engine;
    if (!engine.canEvaluate(js)) {
        m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
                  .arg(tr("Can't evaluate JSON data"));
        return QVariant();
    }

    QScriptValue data = engine.evaluate(js);
    if (engine.hasUncaughtException()) {
        m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
                  .arg(engine.uncaughtException().toString());
        return QVariant();
    }

    return data.toVariant();
#else
    QJsonParseError err;
    QJsonDocument doc = QJsonDocument::fromJson(json, &err);

    if (err.error != QJsonParseError::NoError) {
        m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
                  .arg(err.errorString());
        return QVariant();
    }

    return doc.toVariant();
#endif
}
Esempio n. 2
0
ImageDataPtr CountPixel::startHandle(ImageDataPtr src1, const ImageDataPtr)
{
    QScriptEngine engine;
    QString originalQuery = m_listParameters[SCRIPT]->toString();

    unsigned long long int total = 0;

    auto lambda = [&total, &originalQuery, &engine](unsigned char & r, unsigned char & b, unsigned char & g)
    {
        QString query = originalQuery;
        query.replace("Gr", QString::number(0.33*b + 0.56*g + 0.11*r) );
        query.replace("B", QString::number(b) );
        query.replace("G", QString::number(g) );
        query.replace("R", QString::number(r) );
        if( ! engine.canEvaluate(query) )
            total = -1;
        QScriptValue value = engine.evaluate(query);

        total += value.toBool();
    };
    src1->forEachPixel( lambda);

    src1->addResults( m_listParameters[NAME]->toString(), total);

    return src1;
}
Esempio n. 3
0
 bool ScriptDialog::checkScript()
 {
     const QString script = trimmedScript();
     if (script.isEmpty())
         return true;
     QScriptEngine scriptEngine;
     if (scriptEngine.canEvaluate(script))
         return true;
     QMessageBox::warning (this, windowTitle(), tr("Syntax error"));
     return  false;
 }
Esempio n. 4
0
 bool ScriptDialog::checkScript()
 {
     const QString script = trimmedScript();
     if (script.isEmpty())
         return true;
     QScriptEngine scriptEngine;
     if (scriptEngine.canEvaluate(script))
         return true;
     m_dialogGui->message(this, QDesignerDialogGuiInterface::ScriptDialogMessage, QMessageBox::Warning,
                          windowTitle(), tr("Syntax error"), QMessageBox::Ok);
     return  false;
 }
Esempio n. 5
0
int main(int argc, char *argv[])
{

    if(argc<3)
    {
    	printf("%s file.ui file.js\n",argv[0]);
    	return 0;
    }

    QApplication app(argc, argv);

    QScriptEngine engine;

	QUiLoader loader;
	QFile file(argv[1]);
     	file.open(QFile::ReadOnly);

     	QWidget *formWidget = loader.load(&file);
     	file.close();

    QScriptValue scriptWidget = engine.newQObject(formWidget);
    engine.globalObject().setProperty("widget", scriptWidget);
    
    QFile ifile(argv[2]);
    ifile.open(QFile::ReadOnly);
    QByteArray code=ifile.readAll();
    ifile.close();

	if( !engine.canEvaluate(code) )
	{
		printf("Error\n");
		return 1;
	}

    engine.evaluate("widget.show()");
    QScriptValue result = engine.evaluate(code);
    
    if (engine.hasUncaughtException())
    {
         int line = engine.uncaughtExceptionLineNumber();
         qDebug() << "uncaught exception at line" << line << ":" << result.toString();
    }

    return app.exec();
}
Esempio n. 6
0
QList<BookmarksModel::Bookmark> ChromeImporter::exportBookmarks()
{
    QList<BookmarksModel::Bookmark> list;

    QString bookmarks = QString::fromUtf8(m_file.readAll());
    m_file.close();

    QStringList parsedBookmarks;
    QRegExp rx("\\{(\\s*)\"date_added(.*)\"(\\s*)\\}", Qt::CaseSensitive);
    rx.setMinimal(true);

    int pos = 0;
    while ((pos = rx.indexIn(bookmarks, pos)) != -1) {
        parsedBookmarks << rx.cap(0);
        pos += rx.matchedLength();
    }

    QScriptEngine* scriptEngine = new QScriptEngine();
    foreach(QString parsedString, parsedBookmarks) {
        parsedString = "(" + parsedString + ")";
        if (scriptEngine->canEvaluate(parsedString)) {
            QScriptValue object = scriptEngine->evaluate(parsedString);
            QString name = object.property("name").toString();
            QUrl url = QUrl::fromEncoded(object.property("url").toString().toUtf8());

            if (name.isEmpty() || url.isEmpty()) {
                continue;
            }

            BookmarksModel::Bookmark b;
            b.folder = "Chrome Import";
            b.title = name;
            b.url = url;

            list.append(b);
        }
        else {
            m_error = true;
            m_errorString = BookmarksImportDialog::tr("Cannot evaluate JSON code.");
        }
    }
void NewExperimentSettingsDialog::FormulaCheck()
{
    if (ui->tFormulaInput->toPlainText()=="")
    {
        QMessageBox::about(this,"Ошибка", QString("<p><h3>Отсутствует формула</h3></p>"));
        return;
    }

    if (haswronWaribles)
    {

        QMessageBox::about(this,"Ошибка", QString("<p><h3>Введёная формула содержит неверные имена переменных</h3></p>")+
                           QString("<p><b> Описание ошибки: <i>Проверьте синтаксис или воспользуйтесь справкой</i></b></p>")+
                           QString("<p><b>Строка: 1")+
                           QString("; Столбец: ")+QString::number(wrongpos)+QString("</p>") +
                           QString(this->EvaluateString.left(wrongpos-1)+"<font color=red>"+this->EvaluateString.at(wrongpos-1)+"</font>"+this->EvaluateString.right(this->EvaluateString.length()-wrongpos)));
        return;
    }

    if (!allowPsevdonamesForVaribles)
    {
        QVector<int> Xnumbers;
        for (int i=0;i<FactorNames.count();i++)
        {
            QString tmp= FactorNames.at(i);
            tmp=tmp.toLower().remove("x");
            Xnumbers.append(tmp.toInt());
        }
        qSort(Xnumbers);

        if (Xnumbers.at(0)!=1)
        {
            QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит не все переменные</h3></p>")+
                                       QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x1</font></i></b></p>"));
            return;
        }

        for (int i=0;i<Xnumbers.count()-1;i++)
        {
            if (Xnumbers.at(i+1)>data.FactNum)
            {
                QMessageBox::about(this,"Ошибка",QString("<p><h3>Введённая формула содержит переменные, отсутствующие в настройках плана эксперимента</h3></p>")+
                                           QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x"+QString::number(Xnumbers.at(i)+1)+"</font></i></b></p>"));
                return;
            }

            if (Xnumbers.at(i)!=Xnumbers.at(i+1)-1)
            {
                QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит не все переменные</h3></p>")+
                                           QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x"+QString::number(Xnumbers.at(i)+1)+"</font></i></b></p>"));
                return;
            }

        }//
        int FactsInFormula=GetExpressionFactorNames(this->EvaluateString).count();
                if (data.FactNum>FactsInFormula)
                {
                    QMessageBox::about(this,"Ошибка",QString("<p><h3>Не все переменные присутствуют в функциональной зависимости</h3></p>"));
                    return;
                }
    }

    QScriptEngine RunScript;

    QScriptSyntaxCheckResult ErrVal=RunScript.checkSyntax(this->EvaluateString);
// Проверка синтаксиса введёной функции
    if (ErrVal.state()== QScriptSyntaxCheckResult::Valid)
    {   // syntax correct
        // Проверка количества введёных факторов
        if (this->data.FactNum<2)
        {
            QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит менее двух переменных</h3></p>")+
                               QString("<p><b> Описание ошибки: <i>Данная программа разработана для работы с формулами, содержащими более одной переменной</i></b></p>"));
        }
        else if (!RunScript.canEvaluate(this->EvaluateString))
        {
            QMessageBox::about(this,"Ошибка",QString("<p><h3>Невозможно вычислить введёную формулу</h3></p>")+
                               QString("<p><b> Описание ошибки: <i>Проверьте синтаксис или воспользуйтесь справкой</i></b></p>"));
        }
        else if (saveFactValues())
        {
            close();
        }

    }
    else
    {
        // syntax not correct
        QString tmp_formula = this->EvaluateString;
        int ErrColum=0,ErrLine=0;
        if (ErrVal.errorColumnNumber()<1)
            ErrColum=1;
        else ErrColum= ErrVal.errorColumnNumber();

        if (ErrVal.errorLineNumber()<1)
            ErrLine=0;
        else
            ErrLine=ErrVal.errorLineNumber();

        QMessageBox::about(this,"Ошибка", QString("<p><h3>Введёная формула содержит ошибки</h3></p>")+
                           QString("<p><b> Описание ошибки: <i>"+tr(ErrVal.errorMessage().toLatin1())+"</i></b></p>")+
                           QString("<p><b>Строка: ")+QString::number(ErrLine)+
                           QString("; Столбец: ")+QString::number(ErrColum)+QString("</p>")+
                           QString(tmp_formula.left(ErrColum-1)+"<font color=red>"+tmp_formula.at(ErrColum-1)+"</font>"+tmp_formula.right(tmp_formula.length()-ErrColum)));
    }

}