Subversion Repositories Scribus

Rev

Rev 15417 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
13188 fschmid 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
/***************************************************************************
8
 *   Riku Leino, tsoots@gmail.com                                          *
9
 ***************************************************************************/
10
#include "nftrcreader.h"
11
 
12
using namespace std;
13
 
14
nftrcreader::nftrcreader(std::vector<nfttemplate*> *tmplts,QString sourceDir)
15
{
16
        templates = tmplts;
17
        currentDir = sourceDir;
18
        setupCategories();
19
}
20
 
21
bool nftrcreader::startDocument()
22
{
23
        inSettings       = false;
24
        inTemplate       = false;
25
        inName           = false;
26
        inFile           = false;
27
        inTNail          = false;
28
        inImg            = false;
29
        inPSize          = false;
30
        inColor          = false;
31
        inDescr          = false;
32
        inUsage          = false;
33
        inScribusVersion = false;
34
        inDate           = false;
35
        inAuthor         = false;
36
        inEmail          = false;
37
        return true;
38
}
39
 
40
bool nftrcreader::startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs)
41
{
42
        if (name == "name")
43
                inName = true;
44
        else if (name == "file")
45
                inFile = true;
46
        else if (name == "tnail")
47
                inTNail = true;
48
        else if (name == "img")
49
                inImg = true;
50
        else if (name == "psize")
51
                inPSize = true;
52
        else if (name == "color")
53
                inColor = true;
54
        else if (name == "descr")
55
                inDescr = true;
56
        else if (name == "usage")
57
                inUsage = true;
58
        else if (name == "scribus_version")
59
                inScribusVersion = true;
60
        else if (name == "date")
61
                inDate = true;
62
        else if (name == "author")
63
                inAuthor = true;
64
        else if (name == "email")
65
                inEmail = true;
66
 
67
 
68
        if (name == "template") { // new template starts here
69
                inTemplate = true;
70
                QString category;
71
                QString enCat;
72
                for (int i = 0; i < attrs.count(); i++)
73
                {
74
                        if (attrs.localName(i) == "category")
75
                        {
76
                                category = getCategory(attrs.value(i));
77
                                enCat = attrs.value(i);
78
                        }
79
                }
80
                tmpTemplate = new nfttemplate(new QFile(currentFile), category); // create a new template
81
                tmpTemplate->enCategory = enCat;
82
        }
83
 
84
        if (name == "settings")
85
                inSettings = true;
86
 
87
        return true;
88
}
89
 
90
bool nftrcreader::characters(const QString &ch)
91
{
92
        QString tmp(ch);
93
        if (inName)
94
                tmpTemplate->name = tmp;
95
        else if (inFile)
96
        {
97
                if (tmp.left(1) == "/")
98
                        tmpTemplate->file = tmp;
99
                else
100
                        tmpTemplate->file = currentDir + "/" + tmp;
101
        } else if (inTNail)
102
        {
103
                if (tmp.left(1) == "/")
104
                        tmpTemplate->tnail = tmp;
105
                else
106
                        tmpTemplate->tnail = currentDir + "/" + tmp;
107
        } else if (inImg)
108
        {
109
                if (tmp.left(1) == "/")
110
                        tmpTemplate->img = tmp;
111
                else
112
                        tmpTemplate->img = currentDir + "/" + tmp;
113
        } else if (inPSize)
114
                tmpTemplate->psize = tmp;
115
        else if (inColor)
116
                tmpTemplate->color = tmp;
117
        else if (inDescr)
118
                tmpTemplate->descr = tmp;
119
        else if (inUsage)
120
                tmpTemplate->usage = tmp;
121
        else if (inScribusVersion)
122
                tmpTemplate->scribusVersion = tmp;
123
        else if (inDate)
124
                tmpTemplate->date = tmp;
125
        else if (inAuthor)
126
                tmpTemplate->author = tmp;
127
        else if (inEmail)
128
                tmpTemplate->email = tmp;
129
 
130
        return true;
131
}
132
 
133
bool nftrcreader::endElement(const QString&, const QString&, const QString &name)
134
{
135
        if (name == "template")
136
        { // new template starts here
137
                inTemplate = false;
138
                if (tmpTemplate != NULL) // If we have a template already created
139
                        if (tmpTemplate->isValid()) // and the template really exists push
140
                                templates->push_back(tmpTemplate); // it to the templates vector and start a new one
141
        }
142
        if (inTemplate) {
143
                if (inName && name == "name")
144
                        inName = false;
145
                else if (inFile && name == "file")
146
                        inFile = false;
147
                else if (inTNail && name == "tnail")
148
                        inTNail = false;
149
                else if (inImg && name == "img")
150
                        inImg = false;
151
                else if (inPSize && name == "psize")
152
                        inPSize = false;
153
                else if (inColor && name == "color")
154
                        inColor = false;
155
                else if (inDescr && name == "descr")
156
                        inDescr = false;
157
                else if (inUsage && name == "usage")
158
                        inUsage = false;
159
                else if (inScribusVersion && name == "scribus_version")
160
                        inScribusVersion = false;
161
                else if (inDate && name == "date")
162
                        inDate = false;
163
                else if (inAuthor && name == "author")
164
                        inAuthor = false;
165
                else if (inEmail && name == "email")
166
                        inEmail = false;
167
                else if (inTemplate && name == "template")
168
                        inTemplate = false;
169
        }
170
 
171
        if (inSettings && name == "settings")
172
                inSettings = false;
173
 
174
        return true;
175
}
176
 
177
void nftrcreader::setSourceDir(QString source)
178
{
179
        currentDir = source;
180
}
181
 
182
void nftrcreader::setSourceFile(QString sourceFile)
183
{
184
        currentFile = sourceFile;
185
}
186
 
187
QString nftrcreader::getCategory(QString cat)
188
{
189
        QMap<QString, QString>::iterator it = cats.find(cat);
190
        if (it != cats.end())
191
                return it.value();
192
        return cat;
193
}
194
 
195
void nftrcreader::setupCategories()
196
{
197
        // en will be used in template.xml and it will be then replaced with the lang when used for users
198
        // to get the categories in their language.
199
        cats.insert(QString("Newsletters"), QObject::tr("Newsletters"));
200
        cats.insert(QString("Brochures")  , QObject::tr("Brochures"));
201
        cats.insert(QString("Catalogs")   , QObject::tr("Catalogs"));
202
        cats.insert(QString("Flyers")     , QObject::tr("Flyers"));
203
        cats.insert(QString("Signs")      , QObject::tr("Signs"));
204
        cats.insert(QString("Cards")      , QObject::tr("Cards"));
205
        cats.insert(QString("Letterheads"), QObject::tr("Letterheads"));
206
        cats.insert(QString("Envelopes")  , QObject::tr("Envelopes"));
207
        cats.insert(QString("Business Cards"), QObject::tr("Business Cards"));
208
        cats.insert(QString("Calendars")  , QObject::tr("Calendars"));
209
        cats.insert(QString("Advertisements"), QObject::tr("Advertisements"));
210
        cats.insert(QString("Labels")     , QObject::tr("Labels"));
211
        cats.insert(QString("Menus")      , QObject::tr("Menus"));
212
        cats.insert(QString("Programs")   , QObject::tr("Programs"));
213
        cats.insert(QString("PDF Forms")  , QObject::tr("PDF Forms"));
214
        cats.insert(QString("PDF Presentations") , QObject::tr("PDF Presentations"));
215
        cats.insert(QString("Magazines")  , QObject::tr("Magazines"));
216
        cats.insert(QString("Posters")    , QObject::tr("Posters"));
217
        cats.insert(QString("Announcements") , QObject::tr("Announcements"));
218
        cats.insert(QString("Text Documents"), QObject::tr("Text Documents"));
219
        cats.insert(QString("Folds")        , QObject::tr("Folds"));
220
        cats.insert(QString("Media Cases")  , QObject::tr("Media Cases"));
221
        cats.insert(QString("Own Templates"), QObject::tr("Own Templates"));
222
}