]> git.sven.stormbind.net Git - sven/vym.git/blob - src/xml-base.cpp
New upstream version 2.9.22
[sven/vym.git] / src / xml-base.cpp
1 #include "xml-base.h"
2
3 #include "vymmodel.h"
4
5 parseBaseHandler::parseBaseHandler() {}
6
7 parseBaseHandler::~parseBaseHandler() {}
8
9 QString parseBaseHandler::errorProtocol() { return errorProt; }
10
11 QString parseBaseHandler::parseHREF(QString href)
12 {
13     QString type = href.section(":", 0, 0);
14     QString path = href.section(":", 1, 1);
15     if (!tmpDir.endsWith("/"))
16         return tmpDir + "/" + path;
17     else
18         return tmpDir + path;
19 }
20
21 bool parseBaseHandler::fatalError(const QXmlParseException &exception)
22 {
23     errorProt += QString("Fatal parsing error: %1 in line %2, column %3\n")
24                      .arg(exception.message())
25                      .arg(exception.lineNumber())
26                      .arg(exception.columnNumber());
27     // Try to read the bogus line
28     errorProt += QString("File is: %1\n").arg(inputFile);
29     if (!inputFile.isEmpty()) { // Input was from file
30         if (!loadStringFromDisk(inputFile, inputString)) {
31             qWarning() << "parseBaseHandler::fatalError Couldn't read from "
32                        << inputFile;
33             return QXmlDefaultHandler::fatalError(exception);
34         }
35     }
36     QString s;
37     QStringList sl = inputString.split("\n");
38     int i = 1;
39     QStringList::Iterator it = sl.begin();
40     while (i < exception.lineNumber()) {
41         it++;
42         i++;
43     }
44     s = *it;
45     s.insert(exception.columnNumber() - 1, "<ERROR>");
46     errorProt += s;
47     return QXmlDefaultHandler::fatalError(exception);
48 }
49
50 void parseBaseHandler::setModel(VymModel *m) { model = m; }
51
52 void parseBaseHandler::setTmpDir(QString tp) { tmpDir = tp; }
53
54 void parseBaseHandler::setInputFile(const QString &s) { inputFile = s; }
55
56 void parseBaseHandler::setInputString(const QString &s) { inputString = s; }
57
58 void parseBaseHandler::setLoadMode(const LoadMode &lm, int p)
59 {
60     loadMode = lm;
61     insertPos = p;
62 }
63
64 bool parseBaseHandler::readHtmlAttr(const QXmlAttributes &a)
65 {
66     for (int i = 1; i <= a.count(); i++)
67         htmldata += " " + a.localName(i - 1) + "=\"" + a.value(i - 1) + "\"";
68     return true;
69 }