Make method ValidatePattern static.
--HG-- branch : feature
This commit is contained in:
parent
e184fcc6a7
commit
1b3de9e4a2
|
@ -174,13 +174,13 @@ ptrdiff_t VDetail::Edge(const quint32 &p1, const quint32 &p2) const
|
||||||
void VDetail::NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2) const
|
void VDetail::NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2) const
|
||||||
{
|
{
|
||||||
QVector<VNodeDetail> list = listNodePoint();
|
QVector<VNodeDetail> list = listNodePoint();
|
||||||
if (index < 0 || index > list.size())
|
if (index > static_cast<quint32>(list.size()))
|
||||||
{
|
{
|
||||||
qWarning()<<"Wrong edge index index ="<<index;
|
qWarning()<<"Wrong edge index index ="<<index;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p1 = list.at(index);
|
p1 = list.at(index);
|
||||||
if (index + 1 > list.size() - 1)
|
if (index + 1 > static_cast<quint32>(list.size()) - 1)
|
||||||
{
|
{
|
||||||
p2 = list.at(0);
|
p2 = list.at(0);
|
||||||
}
|
}
|
||||||
|
@ -196,9 +196,9 @@ VDetail VDetail::RemoveEdge(const quint32 &index) const
|
||||||
det.ClearNodes();
|
det.ClearNodes();
|
||||||
|
|
||||||
QVector<VNodeDetail> list = this->listNodePoint();
|
QVector<VNodeDetail> list = this->listNodePoint();
|
||||||
qint32 edge = list.size();
|
quint32 edge = static_cast<quint32>(list.size());
|
||||||
ptrdiff_t k = 0;
|
quint32 k = 0;
|
||||||
for (ptrdiff_t i=0; i<edge; ++i)
|
for (quint32 i=0; i<edge; ++i)
|
||||||
{
|
{
|
||||||
if (i == index)
|
if (i == index)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,36 +44,8 @@
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QXmlSchema>
|
|
||||||
#include <QXmlSchemaValidator>
|
|
||||||
#include <QSourceLocation>
|
#include <QSourceLocation>
|
||||||
#include <QAbstractMessageHandler>
|
|
||||||
|
|
||||||
//This class need for validation pattern file using XSD shema
|
|
||||||
class MessageHandler : public QAbstractMessageHandler
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MessageHandler() : QAbstractMessageHandler(0), m_messageType(QtMsgType()), m_description(QString()),
|
|
||||||
m_sourceLocation(QSourceLocation()){}
|
|
||||||
inline QString statusMessage() const {return m_description;}
|
|
||||||
inline qint64 line() const {return m_sourceLocation.line();}
|
|
||||||
inline qint64 column() const {return m_sourceLocation.column();}
|
|
||||||
protected:
|
|
||||||
virtual void handleMessage(QtMsgType type, const QString &description,
|
|
||||||
const QUrl &identifier, const QSourceLocation &sourceLocation)
|
|
||||||
{
|
|
||||||
Q_UNUSED(type);
|
|
||||||
Q_UNUSED(identifier);
|
|
||||||
|
|
||||||
m_messageType = type;
|
|
||||||
m_description = description;
|
|
||||||
m_sourceLocation = sourceLocation;
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
QtMsgType m_messageType;
|
|
||||||
QString m_description;
|
|
||||||
QSourceLocation m_sourceLocation;
|
|
||||||
};
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
:QMainWindow(parent), ui(new Ui::MainWindow), pattern(0), doc(0), tool(Tool::ArrowTool), currentScene(0),
|
:QMainWindow(parent), ui(new Ui::MainWindow), pattern(0), doc(0), tool(Tool::ArrowTool), currentScene(0),
|
||||||
|
@ -1146,56 +1118,6 @@ void MainWindow::MinimumScrollBar()
|
||||||
verScrollBar->setValue(verScrollBar->minimum());
|
verScrollBar->setValue(verScrollBar->minimum());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::ValidatePattern(const QString &schema, const QString &fileName, QString &errorMsg, qint64 &errorLine,
|
|
||||||
qint64 &errorColumn) const
|
|
||||||
{
|
|
||||||
errorLine = -1;
|
|
||||||
errorColumn = -1;
|
|
||||||
QFile pattern(fileName);
|
|
||||||
if (pattern.open(QIODevice::ReadOnly) == false)
|
|
||||||
{
|
|
||||||
errorMsg = QString(tr("Can't open pattern file %1:\n%2.").arg(fileName).arg(pattern.errorString()));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
QFile fileSchema(schema);
|
|
||||||
if (fileSchema.open(QIODevice::ReadOnly) == false)
|
|
||||||
{
|
|
||||||
errorMsg = QString(tr("Can't open schema file %1:\n%2.").arg(schema).arg(fileSchema.errorString()));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageHandler messageHandler;
|
|
||||||
QXmlSchema sch;
|
|
||||||
sch.setMessageHandler(&messageHandler);
|
|
||||||
sch.load(&fileSchema, QUrl::fromLocalFile(fileSchema.fileName()));
|
|
||||||
|
|
||||||
bool errorOccurred = false;
|
|
||||||
if (sch.isValid() == false)
|
|
||||||
{
|
|
||||||
errorOccurred = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QXmlSchemaValidator validator(sch);
|
|
||||||
if (validator.validate(&pattern, QUrl::fromLocalFile(pattern.fileName())) == false)
|
|
||||||
{
|
|
||||||
errorOccurred = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errorOccurred)
|
|
||||||
{
|
|
||||||
errorMsg = messageHandler.statusMessage();
|
|
||||||
errorLine = messageHandler.line();
|
|
||||||
errorColumn = messageHandler.column();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MainWindow::SavePattern(const QString &fileName)
|
bool MainWindow::SavePattern(const QString &fileName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1455,7 +1377,7 @@ void MainWindow::LoadPattern(const QString &fileName)
|
||||||
qint64 errorColumn = 0;
|
qint64 errorColumn = 0;
|
||||||
if (file.open(QIODevice::ReadOnly))
|
if (file.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
if (ValidatePattern("://schema/pattern.xsd", fileName, errorMsg, errorLine, errorColumn))
|
if (VDomDocument::ValidatePattern("://schema/pattern.xsd", fileName, errorMsg, errorLine, errorColumn))
|
||||||
{
|
{
|
||||||
qint32 errorLine = 0;
|
qint32 errorLine = 0;
|
||||||
qint32 errorColumn = 0;
|
qint32 errorColumn = 0;
|
||||||
|
|
|
@ -516,17 +516,6 @@ private:
|
||||||
* @brief MinimumScrollBar set scroll bar to minimum.
|
* @brief MinimumScrollBar set scroll bar to minimum.
|
||||||
*/
|
*/
|
||||||
void MinimumScrollBar();
|
void MinimumScrollBar();
|
||||||
/**
|
|
||||||
* @brief ValidatePattern validate pattern file by xsd schema.
|
|
||||||
* @param schema path to schema file.
|
|
||||||
* @param fileName name of pattern file.
|
|
||||||
* @param errorMsg error message.
|
|
||||||
* @param errorLine number error line.
|
|
||||||
* @param errorColumn number error column.
|
|
||||||
* @return true if validation successful.
|
|
||||||
*/
|
|
||||||
bool ValidatePattern(const QString &schema, const QString &curFile, QString &errorMsg, qint64 &errorLine,
|
|
||||||
qint64 &errorColumn) const;
|
|
||||||
template <typename DrawTool>
|
template <typename DrawTool>
|
||||||
/**
|
/**
|
||||||
* @brief ClosedDialog handle close dialog
|
* @brief ClosedDialog handle close dialog
|
||||||
|
|
|
@ -56,8 +56,8 @@ void VToolAlongLine::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
basePointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
basePointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
secondPointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
secondPointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,9 +155,9 @@ void VToolBisector::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
firstPointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
firstPointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
basePointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
basePointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
thirdPointId = domElement.attribute(AttrThirdPoint, "").toLongLong();
|
thirdPointId = domElement.attribute(AttrThirdPoint, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,7 @@ void VToolCutArc::FullUpdateFromFile()
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
arcId = domElement.attribute(AttrArc, "").toLongLong();
|
arcId = domElement.attribute(AttrArc, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ void VToolCutSpline::FullUpdateFromFile()
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
splineId = domElement.attribute(AttrSpline, "").toLongLong();
|
splineId = domElement.attribute(AttrSpline, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,7 +247,7 @@ void VToolCutSplinePath::FullUpdateFromFile()
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
splinePathId = domElement.attribute(AttrSplinePath, "").toLongLong();
|
splinePathId = domElement.attribute(AttrSplinePath, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ void VToolEndLine::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
basePointId = domElement.attribute(AttrBasePoint, "").toLongLong();
|
basePointId = domElement.attribute(AttrBasePoint, "").toUInt();
|
||||||
angle = domElement.attribute(AttrAngle, "").toInt();
|
angle = domElement.attribute(AttrAngle, "").toInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
|
|
|
@ -131,9 +131,9 @@ void VToolHeight::FullUpdateFromFile()
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
basePointId = domElement.attribute(AttrBasePoint, "").toLongLong();
|
basePointId = domElement.attribute(AttrBasePoint, "").toUInt();
|
||||||
p1LineId = domElement.attribute(AttrP1Line, "").toLongLong();
|
p1LineId = domElement.attribute(AttrP1Line, "").toUInt();
|
||||||
p2LineId = domElement.attribute(AttrP2Line, "").toLongLong();
|
p2LineId = domElement.attribute(AttrP2Line, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
|
|
||||||
|
|
|
@ -136,10 +136,10 @@ void VToolLineIntersect::FullUpdateFromFile()
|
||||||
QDomElement domElement = doc->elementById(QString().setNum(id));
|
QDomElement domElement = doc->elementById(QString().setNum(id));
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
p1Line1 = domElement.attribute(AttrP1Line1, "").toLongLong();
|
p1Line1 = domElement.attribute(AttrP1Line1, "").toUInt();
|
||||||
p2Line1 = domElement.attribute(AttrP2Line1, "").toLongLong();
|
p2Line1 = domElement.attribute(AttrP2Line1, "").toUInt();
|
||||||
p1Line2 = domElement.attribute(AttrP1Line2, "").toLongLong();
|
p1Line2 = domElement.attribute(AttrP1Line2, "").toUInt();
|
||||||
p2Line2 = domElement.attribute(AttrP2Line2, "").toLongLong();
|
p2Line2 = domElement.attribute(AttrP2Line2, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshPointGeometry(*VAbstractTool::data.GeometricObject<const VPointF *>(id));
|
RefreshPointGeometry(*VAbstractTool::data.GeometricObject<const VPointF *>(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,8 +140,8 @@ void VToolNormal::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
basePointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
basePointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
secondPointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
secondPointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
angle = domElement.attribute(AttrAngle, "").toDouble();
|
angle = domElement.attribute(AttrAngle, "").toDouble();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
|
|
|
@ -160,9 +160,9 @@ void VToolPointOfContact::FullUpdateFromFile()
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
arcRadius = domElement.attribute(AttrRadius, "");
|
arcRadius = domElement.attribute(AttrRadius, "");
|
||||||
center = domElement.attribute(AttrCenter, "").toLongLong();
|
center = domElement.attribute(AttrCenter, "").toUInt();
|
||||||
firstPointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
firstPointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
secondPointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
secondPointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshPointGeometry(*VAbstractTool::data.GeometricObject<const VPointF *>(id));
|
RefreshPointGeometry(*VAbstractTool::data.GeometricObject<const VPointF *>(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,8 +111,8 @@ void VToolPointOfIntersection::FullUpdateFromFile()
|
||||||
QDomElement domElement = doc->elementById(QString().setNum(id));
|
QDomElement domElement = doc->elementById(QString().setNum(id));
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
firstPointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
firstPointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
secondPointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
secondPointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
}
|
}
|
||||||
VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
|
VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,9 +162,9 @@ void VToolShoulderPoint::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
typeLine = domElement.attribute(AttrTypeLine, "");
|
typeLine = domElement.attribute(AttrTypeLine, "");
|
||||||
formula = domElement.attribute(AttrLength, "");
|
formula = domElement.attribute(AttrLength, "");
|
||||||
basePointId = domElement.attribute(AttrP1Line, "").toLongLong();
|
basePointId = domElement.attribute(AttrP1Line, "").toUInt();
|
||||||
p2Line = domElement.attribute(AttrP2Line, "").toLongLong();
|
p2Line = domElement.attribute(AttrP2Line, "").toUInt();
|
||||||
pShoulder = domElement.attribute(AttrPShoulder, "").toLongLong();
|
pShoulder = domElement.attribute(AttrPShoulder, "").toUInt();
|
||||||
}
|
}
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,10 +163,10 @@ void VToolTriangle::FullUpdateFromFile()
|
||||||
QDomElement domElement = doc->elementById(QString().setNum(id));
|
QDomElement domElement = doc->elementById(QString().setNum(id));
|
||||||
if (domElement.isElement())
|
if (domElement.isElement())
|
||||||
{
|
{
|
||||||
axisP1Id = domElement.attribute(AttrAxisP1, "").toLongLong();
|
axisP1Id = domElement.attribute(AttrAxisP1, "").toUInt();
|
||||||
axisP2Id = domElement.attribute(AttrAxisP2, "").toLongLong();
|
axisP2Id = domElement.attribute(AttrAxisP2, "").toUInt();
|
||||||
firstPointId = domElement.attribute(AttrFirstPoint, "").toLongLong();
|
firstPointId = domElement.attribute(AttrFirstPoint, "").toUInt();
|
||||||
secondPointId = domElement.attribute(AttrSecondPoint, "").toLongLong();
|
secondPointId = domElement.attribute(AttrSecondPoint, "").toUInt();
|
||||||
}
|
}
|
||||||
VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
|
VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,37 @@
|
||||||
#include "../exception/vexceptionemptyparameter.h"
|
#include "../exception/vexceptionemptyparameter.h"
|
||||||
#include "../exception/vexceptionbadid.h"
|
#include "../exception/vexceptionbadid.h"
|
||||||
|
|
||||||
|
#include <QAbstractMessageHandler>
|
||||||
|
#include <QXmlSchema>
|
||||||
|
#include <QXmlSchemaValidator>
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
|
//This class need for validation pattern file using XSD shema
|
||||||
|
class MessageHandler : public QAbstractMessageHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MessageHandler() : QAbstractMessageHandler(0), m_messageType(QtMsgType()), m_description(QString()),
|
||||||
|
m_sourceLocation(QSourceLocation()){}
|
||||||
|
inline QString statusMessage() const {return m_description;}
|
||||||
|
inline qint64 line() const {return m_sourceLocation.line();}
|
||||||
|
inline qint64 column() const {return m_sourceLocation.column();}
|
||||||
|
protected:
|
||||||
|
virtual void handleMessage(QtMsgType type, const QString &description,
|
||||||
|
const QUrl &identifier, const QSourceLocation &sourceLocation)
|
||||||
|
{
|
||||||
|
Q_UNUSED(type);
|
||||||
|
Q_UNUSED(identifier);
|
||||||
|
|
||||||
|
m_messageType = type;
|
||||||
|
m_description = description;
|
||||||
|
m_sourceLocation = sourceLocation;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
QtMsgType m_messageType;
|
||||||
|
QString m_description;
|
||||||
|
QSourceLocation m_sourceLocation;
|
||||||
|
};
|
||||||
|
|
||||||
VDomDocument::VDomDocument(VContainer *data)
|
VDomDocument::VDomDocument(VContainer *data)
|
||||||
: QDomDocument(), data(data), map(QHash<QString, QDomElement>())
|
: QDomDocument(), data(data), map(QHash<QString, QDomElement>())
|
||||||
{
|
{
|
||||||
|
@ -162,3 +193,53 @@ QString VDomDocument::UniqueTagText(const QString &tagName, const QString &defVa
|
||||||
}
|
}
|
||||||
return defVal;
|
return defVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VDomDocument::ValidatePattern(const QString &schema, const QString &fileName, QString &errorMsg, qint64 &errorLine,
|
||||||
|
qint64 &errorColumn)
|
||||||
|
{
|
||||||
|
errorLine = -1;
|
||||||
|
errorColumn = -1;
|
||||||
|
QFile pattern(fileName);
|
||||||
|
if (pattern.open(QIODevice::ReadOnly) == false)
|
||||||
|
{
|
||||||
|
errorMsg = QString(tr("Can't open file %1:\n%2.").arg(fileName).arg(pattern.errorString()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QFile fileSchema(schema);
|
||||||
|
if (fileSchema.open(QIODevice::ReadOnly) == false)
|
||||||
|
{
|
||||||
|
errorMsg = QString(tr("Can't open schema file %1:\n%2.").arg(schema).arg(fileSchema.errorString()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageHandler messageHandler;
|
||||||
|
QXmlSchema sch;
|
||||||
|
sch.setMessageHandler(&messageHandler);
|
||||||
|
sch.load(&fileSchema, QUrl::fromLocalFile(fileSchema.fileName()));
|
||||||
|
|
||||||
|
bool errorOccurred = false;
|
||||||
|
if (sch.isValid() == false)
|
||||||
|
{
|
||||||
|
errorOccurred = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QXmlSchemaValidator validator(sch);
|
||||||
|
if (validator.validate(&pattern, QUrl::fromLocalFile(pattern.fileName())) == false)
|
||||||
|
{
|
||||||
|
errorOccurred = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorOccurred)
|
||||||
|
{
|
||||||
|
errorMsg = messageHandler.statusMessage();
|
||||||
|
errorLine = messageHandler.line();
|
||||||
|
errorColumn = messageHandler.column();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -101,6 +101,17 @@ public:
|
||||||
*/
|
*/
|
||||||
qreal GetParametrDouble(const QDomElement& domElement, const QString &name, const QString &defValue) const;
|
qreal GetParametrDouble(const QDomElement& domElement, const QString &name, const QString &defValue) const;
|
||||||
QString UniqueTagText(const QString &tagName, const QString &defVal = QString()) const;
|
QString UniqueTagText(const QString &tagName, const QString &defVal = QString()) const;
|
||||||
|
/**
|
||||||
|
* @brief ValidatePattern validate pattern file by xsd schema.
|
||||||
|
* @param schema path to schema file.
|
||||||
|
* @param fileName name of pattern file.
|
||||||
|
* @param errorMsg error message.
|
||||||
|
* @param errorLine number error line.
|
||||||
|
* @param errorColumn number error column.
|
||||||
|
* @return true if validation successful.
|
||||||
|
*/
|
||||||
|
static bool ValidatePattern(const QString &schema, const QString &fileName, QString &errorMsg, qint64 &errorLine,
|
||||||
|
qint64 &errorColumn);
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* @brief data container with data.
|
* @brief data container with data.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user