diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/nftrcreader.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/nftrcreader.cpp')
| -rw-r--r-- | scribus/nftrcreader.cpp | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/scribus/nftrcreader.cpp b/scribus/nftrcreader.cpp new file mode 100644 index 0000000..4eb4065 --- /dev/null +++ b/scribus/nftrcreader.cpp @@ -0,0 +1,226 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +/*************************************************************************** + * Riku Leino, tsoots@gmail.com * + ***************************************************************************/ + +#include "nftrcreader.h" + +using namespace std; + +nftrcreader::nftrcreader(std::vector<nfttemplate*> *tmplts,QString sourceDir) +{ + templates = tmplts; + currentDir = sourceDir; + setupCategories(); +} + +bool nftrcreader::startDocument() +{ + inSettings = false; + inTemplate = false; + inName = false; + inFile = false; + inTNail = false; + inImg = false; + inPSize = false; + inColor = false; + inDescr = false; + inUsage = false; + inScribusVersion = false; + inDate = false; + inAuthor = false; + inEmail = false; + return true; +} + +bool nftrcreader::startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs) +{ + if (name == "name") + inName = true; + else if (name == "file") + inFile = true; + else if (name == "tnail") + inTNail = true; + else if (name == "img") + inImg = true; + else if (name == "psize") + inPSize = true; + else if (name == "color") + inColor = true; + else if (name == "descr") + inDescr = true; + else if (name == "usage") + inUsage = true; + else if (name == "scribus_version") + inScribusVersion = true; + else if (name == "date") + inDate = true; + else if (name == "author") + inAuthor = true; + else if (name == "email") + inEmail = true; + + + if (name == "template") // new template starts here + { + inTemplate = true; + QString category; + QString enCat; + for (int i = 0; i < attrs.count(); i++) + { + if (attrs.localName(i) == "category") + { + category = getCategory(attrs.value(i)); + enCat = attrs.value(i); + } + } + tmpTemplate = new nfttemplate(new QFile(currentFile), category); // create a new template + tmpTemplate->enCategory = enCat; + } + + if (name == "settings") + inSettings = true; + + return true; +} + +bool nftrcreader::characters(const QString &ch) +{ + QString tmp(ch); + if (inName) + tmpTemplate->name = tmp; + else if (inFile) + { + if (tmp.left(1) == "/") + tmpTemplate->file = tmp; + else + tmpTemplate->file = currentDir + "/" + tmp; + } else if (inTNail) + { + if (tmp.left(1) == "/") + tmpTemplate->tnail = tmp; + else + tmpTemplate->tnail = currentDir + "/" + tmp; + } else if (inImg) + { + if (tmp.left(1) == "/") + tmpTemplate->img = tmp; + else + tmpTemplate->img = currentDir + "/" + tmp; + } else if (inPSize) + tmpTemplate->psize = tmp; + else if (inColor) + tmpTemplate->color = tmp; + else if (inDescr) + tmpTemplate->descr = tmp; + else if (inUsage) + tmpTemplate->usage = tmp; + else if (inScribusVersion) + tmpTemplate->scribusVersion = tmp; + else if (inDate) + tmpTemplate->date = tmp; + else if (inAuthor) + tmpTemplate->author = tmp; + else if (inEmail) + tmpTemplate->email = tmp; + + return true; +} + +bool nftrcreader::endElement(const QString&, const QString&, const QString &name) +{ + if (name == "template") + { // new template starts here + inTemplate = false; + if (tmpTemplate != NULL) // If we have a template already created + if (tmpTemplate->isValid()) // and the template really exists push + templates->push_back(tmpTemplate); // it to the templates vector and start a new one + } + if (inTemplate) { + if (inName && name == "name") + inName = false; + else if (inFile && name == "file") + inFile = false; + else if (inTNail && name == "tnail") + inTNail = false; + else if (inImg && name == "img") + inImg = false; + else if (inPSize && name == "psize") + inPSize = false; + else if (inColor && name == "color") + inColor = false; + else if (inDescr && name == "descr") + inDescr = false; + else if (inUsage && name == "usage") + inUsage = false; + else if (inScribusVersion && name == "scribus_version") + inScribusVersion = false; + else if (inDate && name == "date") + inDate = false; + else if (inAuthor && name == "author") + inAuthor = false; + else if (inEmail && name == "email") + inEmail = false; + else if (inTemplate && name == "template") + inTemplate = false; + } + + if (inSettings && name == "settings") + inSettings = false; + + return true; +} + +void nftrcreader::setSourceDir(QString source) +{ + currentDir = source; +} + +void nftrcreader::setSourceFile(QString sourceFile) +{ + currentFile = sourceFile; +} + +QString nftrcreader::getCategory(QString cat) +{ + QMap<QString, QString>::iterator it = cats.find(cat); + if (it==cats.end()) + cats.insert(cat, cat); + if (it != cats.end()) + return it.value(); + return cat; +} + +void nftrcreader::setupCategories() +{ + // en will be used in template.xml and it will be then replaced with the lang when used for users + // to get the categories in their language. + cats.insert(QString("Newsletters"), QObject::tr("Newsletters")); + cats.insert(QString("Brochures") , QObject::tr("Brochures")); + cats.insert(QString("Catalogs") , QObject::tr("Catalogs")); + cats.insert(QString("Flyers") , QObject::tr("Flyers")); + cats.insert(QString("Signs") , QObject::tr("Signs")); + cats.insert(QString("Cards") , QObject::tr("Cards")); + cats.insert(QString("Letterheads"), QObject::tr("Letterheads")); + cats.insert(QString("Envelopes") , QObject::tr("Envelopes")); + cats.insert(QString("Business Cards"), QObject::tr("Business Cards")); + cats.insert(QString("Calendars") , QObject::tr("Calendars")); + cats.insert(QString("Advertisements"), QObject::tr("Advertisements")); + cats.insert(QString("Labels") , QObject::tr("Labels")); + cats.insert(QString("Menus") , QObject::tr("Menus")); + cats.insert(QString("Programs") , QObject::tr("Programs")); + cats.insert(QString("PDF Forms") , QObject::tr("PDF Forms")); + cats.insert(QString("PDF Presentations") , QObject::tr("PDF Presentations")); + cats.insert(QString("Magazines") , QObject::tr("Magazines")); + cats.insert(QString("Posters") , QObject::tr("Posters")); + cats.insert(QString("Announcements") , QObject::tr("Announcements")); + cats.insert(QString("Text Documents"), QObject::tr("Text Documents")); + cats.insert(QString("Folds") , QObject::tr("Folds")); + cats.insert(QString("Media Cases") , QObject::tr("Media Cases")); + cats.insert(QString("Own Templates"), QObject::tr("Own Templates")); +} |
