Subversion Repositories Scribus

Rev

Rev 304 | Rev 309 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
304 Franz 1
/***************************************************************************
2
 *   Riku Leino, tsoots@welho.com                                          *
3
 ***************************************************************************/
4
#include "nftsettings.h"
5
 
6
nftsettings::nftsettings()
7
{
8
        scribusShare = PREL;
9
        scribusShare += "/share/scribus";
10
        scribusUserHome = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
11
        nftRCFile = QDir::convertSeparators(scribusUserHome+"/nftrc.xml");
12
        read();
13
}
14
 
15
void nftsettings::read()
16
{
17
        QDir scribus(scribusUserHome);
18
        if (!scribus.exists("nftrc.xml")) {
19
                getDefaults();
20
        }
21
 
22
        handler = new nftrcreader(&templates,scribusUserHome);
23
 
24
        QFile* rc = new QFile(nftRCFile);
25
        QXmlInputSource* source = new QXmlInputSource(rc);
26
 
27
        reader = new QXmlSimpleReader();
28
        reader->setContentHandler(handler);
29
        reader->parse(source);
30
        delete source;
31
        delete rc;
32
 
33
        addTemplates(scribusShare);
34
        addTemplates(scribusUserHome);
35
}
36
 
37
void nftsettings::addTemplates(QString dir) // dir will be searched for a sub folder called templates
38
{
308 Franz 39
        // Add templates from the dir itself
40
        QFile* tmplxml = new QFile(QDir::convertSeparators(dir + "/templates/template.xml"));
41
        handler->setSourceDir(dir + "/templates");
42
        if (tmplxml->exists()) {
43
                QXmlInputSource* source = new QXmlInputSource(tmplxml);
44
                reader->parse(source);
45
                delete source;
46
        }
47
        delete tmplxml;
48
 
49
 
50
        // And from all the subdirectories. template.xml file is only search one dir level deeper than the dir
304 Franz 51
        QDir tmpldir(dir + "/templates");
52
        if (tmpldir.exists()) {
53
                tmpldir.setFilter(QDir::Dirs);
54
                QStringList dirs = tmpldir.entryList();
55
                for (uint i = 0; i < dirs.size(); i++) {
308 Franz 56
                        if ((dirs[i] != ".") && (dirs[i] != "..")) {
57
                                QFile* tmplxml = new QFile(QDir::convertSeparators(dir + "/templates/" + dirs[i] + "/template.xml"));
58
                                handler->setSourceDir(dir+"/templates/"+dirs[i]);
59
                                if (tmplxml->exists()) {
60
                                        QXmlInputSource* source = new QXmlInputSource(tmplxml);
61
                                        reader->parse(source);
62
                                        delete source;
63
                                }
64
                                delete tmplxml;
304 Franz 65
                        }
66
                }
67
        }
68
}
69
 
70
void nftsettings::write()
71
{
72
//      QFile rc(nftRCFile);
73
}
74
 
75
void nftsettings::getDefaults()
76
{
77
        QString tPrel = PREL;
78
        QString tmplDir = tPrel + "/share/scribus/templates";
79
        // Create the defaults ~/.scribus/nft/nftrc.xml file
80
        QString text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
81
        text += "<nft>\n";
82
        text += "\t<settings>\n";
83
        text += "\t</settings>\n";
84
        text += "</nft>\n";
85
 
86
        QFile rc(nftRCFile);
87
        if ( rc.open( IO_WriteOnly ) ) {
88
                QTextStream stream(&rc);
89
                stream.setEncoding(QTextStream::UnicodeUTF8);
90
                stream << text;
91
                rc.close();
92
        }
93
}
94
 
95
nftsettings::~ nftsettings()
96
{
97
        delete reader;
98
        delete handler;
99
        for (uint i = 0; i < templates.size(); i++) {
100
                delete templates[i];
101
        }
102
}