Subversion Repositories Scribus

Rev

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