Engauge Digitizer 2
Loading...
Searching...
No Matches
Xml.cpp
Go to the documentation of this file.
1/******************************************************************************************************
2 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7#include "Logger.h"
8#include <QFileDevice>
9#include <QMessageBox>
10#include <QObject>
11#include "QtToString.h"
12#include "Xml.h"
13
14QXmlStreamReader::TokenType loadNextFromReader (QXmlStreamReader &reader)
15{
16 QXmlStreamReader::TokenType tokenType = reader.readNext();
17
18 LOG4CPP_DEBUG_S ((*mainCat)) << "loadNextFromReader "
19 << " tokenType=" << QXmlStreamReaderTokenTypeToString (tokenType).toLatin1().data()
20 << " tag=" << reader.name().toLatin1().data();
21
22 return tokenType;
23}
24
26 const QString &message)
27{
28 // Try to extract as much useful context as possible
29 QString context;
30 QFileDevice *fileDevice = dynamic_cast<QFileDevice*> (reader.device());
31 if (fileDevice == nullptr) {
32
33 context = QString ("%1 %2: ")
34 .arg (QObject::tr ("Start at line"))
35 .arg (reader.lineNumber());
36
37 } else {
38
39 context = QString ("%1 %2 %3 %4: ")
40 .arg (QObject::tr ("File"))
41 .arg (fileDevice->fileName())
42 .arg (QObject::tr ("at line"))
43 .arg (reader.lineNumber());
44
45 }
46
47 // Context plus original message gets displayed
48 QString adornedMsg = QString ("%1%2. %3")
49 .arg (context)
50 .arg (message)
51 .arg (QObject::tr ("Quitting"));
52
53 QMessageBox::critical (nullptr,
54 QObject::tr ("Error reading xml"),
56
57 LOG4CPP_ERROR_S ((*mainCat)) << "xmlExitWithError error='" << adornedMsg.toLatin1().data() << "'";
58
59 exit (-1);
60}
const int INNER_RADIUS_MIN
log4cpp::Category * mainCat
Definition Logger.cpp:14
QString QXmlStreamReaderTokenTypeToString(QXmlStreamReader::TokenType tokenType)
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition Xml.cpp:14
void xmlExitWithError(QXmlStreamReader &reader, const QString &message)
Show specified message for an error while reading xml, then quit.
Definition Xml.cpp:25
#define LOG4CPP_DEBUG_S(logger)
Definition convenience.h:20
#define LOG4CPP_ERROR_S(logger)
Definition convenience.h:12