summaryrefslogtreecommitdiffstats
path: root/scribus/nftrcreader.cpp
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/nftrcreader.cpp
downloadscribus-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.cpp226
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"));
+}