ErrorResult validateXML(const QString &fileName, const QString &schemaFileName) { QXmlSchema schema; schema.load(QUrl(schemaFileName)); MessageHandler schemaMessageHandler; schema.setMessageHandler(&schemaMessageHandler); if (!schema.isValid()) return ErrorResult(ErrorResultType_Critical, QObject::tr("Schena '%1' is not valid. %2"). arg(schemaFileName). arg(schemaMessageHandler.statusMessage())); QFile file(fileName); file.open(QIODevice::ReadOnly); QXmlSchemaValidator validator(schema); MessageHandler validatorMessageHandler; validator.setMessageHandler(&validatorMessageHandler); //TODO neslo mi nacist soubor se dvema poli // if (!validator.validate(&file, QUrl::fromLocalFile(file.fileName()))) // return ErrorResult(ErrorResultType_Critical, QObject::tr("File '%1' is not valid Agros2D problem file. Error (line %3, column %4): %2"). // arg(fileName). // arg(validatorMessageHandler.statusMessage()). // arg(validatorMessageHandler.line()). // arg(validatorMessageHandler.column())); return ErrorResult(); }
ErrorResult PythonEngine::parseError() { QString traceback; QString text; int line = -1; PyErr_NormalizeException(&errorType, &errorValue, &errorTraceback); if (errorTraceback) { PyTracebackObject *tb = (PyTracebackObject *) errorTraceback; line = tb->tb_lineno; text.append(QString("Line %1: ").arg(tb->tb_lineno)); while (tb) { PyFrameObject *frame = tb->tb_frame; if (frame && frame->f_code) { PyCodeObject* codeObject = frame->f_code; if (PyString_Check(codeObject->co_filename)) traceback.append(QString("File '%1'").arg(PyString_AsString(codeObject->co_filename))); int errorLine = PyCode_Addr2Line(codeObject, frame->f_lasti); traceback.append(QString(", line %1").arg(errorLine)); if (PyString_Check(codeObject->co_name)) traceback.append(QString(", in %1").arg(PyString_AsString(codeObject->co_name))); } traceback.append(QString("\n")); tb = tb->tb_next; } } traceback = traceback.trimmed(); PyObject *errorString = NULL; if (errorType != NULL && (errorString = PyObject_Str(errorType)) != NULL && (PyString_Check(errorString))) { Py_INCREF(errorString); text.append(PyString_AsString(errorString)); Py_XDECREF(errorString); } else { text.append("\n<unknown exception type>"); } if (errorValue != NULL && (errorString = PyObject_Str(errorValue)) != NULL && (PyString_Check(errorString))) { Py_INCREF(errorString); text.append("\n"); text.append(PyString_AsString(errorString)); Py_XDECREF(errorString); } else { text.append("\n<unknown exception data>"); } Py_XDECREF(errorType); errorType = NULL; Py_XDECREF(errorValue); errorValue = NULL; Py_XDECREF(errorTraceback); errorTraceback = NULL; PyErr_Clear(); return ErrorResult(text, traceback, line); }