Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 16735 → Rev 16736

/trunk/Scribus/scribus/nftrcreader.cpp
1,205 → 1,205
/*
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.
/*
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("Advertisements"), QObject::tr("Advertisements"));
cats.insert(QString("Announcements") , QObject::tr("Announcements"));
cats.insert(QString("Brochures") , QObject::tr("Brochures"));
223,5 → 223,5
cats.insert(QString("Posters") , QObject::tr("Posters"));
cats.insert(QString("Programs") , QObject::tr("Programs"));
cats.insert(QString("Signs") , QObject::tr("Signs"));
cats.insert(QString("Text Documents"), QObject::tr("Text Documents"));
}
cats.insert(QString("Text Documents"), QObject::tr("Text Documents"));
}