Engauge Digitizer  2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 
14 QXmlStreamReader::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 
25 void xmlExitWithError (QXmlStreamReader &reader,
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"),
55  adornedMsg);
56 
57  LOG4CPP_ERROR_S ((*mainCat)) << "xmlExitWithError error='" << adornedMsg.toLatin1().data() << "'";
58 
59  exit (-1);
60 }
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition: Xml.cpp:14
QString QXmlStreamReaderTokenTypeToString(QXmlStreamReader::TokenType tokenType)
Definition: QtToString.cpp:89
#define LOG4CPP_ERROR_S(logger)
Definition: convenience.h:12
log4cpp::Category * mainCat
Definition: Logger.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