Subversion Repositories Scribus

Rev

Rev 17163 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4606 cbradney 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
        copyright            : (C) 2006 by Craig Bradney
9
        email                : cbradney@zip.com.au
10
***************************************************************************/
11
 
12
#include "colorsetmanager.h"
13
#include "scpaths.h"
8031 fschmid 14
#include "util.h"
15
#include "commonstrings.h"
10601 mrdocs 16
#include "prefsstructs.h"
10223 cbradney 17
#include <QDomElement>
8538 subik 18
#include <QTextStream>
9535 fschmid 19
#include <QByteArray>
8501 cbradney 20
//Added by qt3to4:
4606 cbradney 21
 
22
ColorSetManager::ColorSetManager()
23
{
24
}
25
 
26
ColorSetManager::~ColorSetManager()
27
{
28
}
29
 
30
void ColorSetManager::initialiseDefaultPrefs(struct ApplicationPrefs& appPrefs)
31
{
17179 craig 32
        QString pfadC = ScPaths::instance().shareDir()+"swatches/";
14059 cbradney 33
        QString pfadC2 = pfadC + "Scribus_Basic.xml";
4606 cbradney 34
        QFile fiC(pfadC2);
35
        if (!fiC.exists())
36
        {
37
                appPrefs.DColors.insert("White", ScColor(0, 0, 0, 0));
38
                appPrefs.DColors.insert("Black", ScColor(0, 0, 0, 255));
11095 fschmid 39
                ScColor cc = ScColor(255, 255, 255, 255);
40
                cc.setRegistrationColor(true);
41
                appPrefs.DColors.insert("Registration", cc);
4606 cbradney 42
                appPrefs.DColors.insert("Blue", ScColor(255, 255, 0, 0));
43
                appPrefs.DColors.insert("Cyan", ScColor(255, 0, 0, 0));
44
                appPrefs.DColors.insert("Green", ScColor(255, 0, 255, 0));
45
                appPrefs.DColors.insert("Red", ScColor(0, 255, 255, 0));
46
                appPrefs.DColors.insert("Yellow", ScColor(0, 0, 255, 0));
47
                appPrefs.DColors.insert("Magenta", ScColor(0, 255, 0, 0));
16484 craig 48
                appPrefs.DColorSet = "Scribus_Small";
4606 cbradney 49
        }
50
        else
51
        {
8501 cbradney 52
                if (fiC.open(QIODevice::ReadOnly))
4606 cbradney 53
                {
54
                        QString ColorEn, Cname;
55
                        int Rval, Gval, Bval;
8538 subik 56
                        QTextStream tsC(&fiC);
4606 cbradney 57
                        ColorEn = tsC.readLine();
8031 fschmid 58
                        if (ColorEn.startsWith("<?xml version="))
4606 cbradney 59
                        {
9535 fschmid 60
                                QByteArray docBytes("");
8031 fschmid 61
                                loadRawText(pfadC2, docBytes);
62
                                QString docText("");
63
                                docText = QString::fromUtf8(docBytes);
64
                                QDomDocument docu("scridoc");
65
                                docu.setContent(docText);
66
                                ScColor lf = ScColor();
67
                                QDomElement elem = docu.documentElement();
68
                                QDomNode PAGE = elem.firstChild();
69
                                while(!PAGE.isNull())
70
                                {
71
                                        QDomElement pg = PAGE.toElement();
72
                                        if(pg.tagName()=="COLOR" && pg.attribute("NAME")!=CommonStrings::None)
73
                                        {
74
                                                if (pg.hasAttribute("CMYK"))
75
                                                        lf.setNamedColor(pg.attribute("CMYK"));
76
                                                else
77
                                                        lf.fromQColor(QColor(pg.attribute("RGB")));
78
                                                if (pg.hasAttribute("Spot"))
79
                                                        lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt()));
80
                                                else
81
                                                        lf.setSpotColor(false);
82
                                                if (pg.hasAttribute("Register"))
83
                                                        lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt()));
84
                                                else
85
                                                        lf.setRegistrationColor(false);
86
                                                appPrefs.DColors.insert(pg.attribute("NAME"), lf);
87
                                        }
88
                                        PAGE=PAGE.nextSibling();
89
                                }
4606 cbradney 90
                        }
8031 fschmid 91
                        else
92
                        {
93
                                while (!tsC.atEnd())
94
                                {
95
                                        ColorEn = tsC.readLine();
8538 subik 96
                                        QTextStream CoE(&ColorEn, QIODevice::ReadOnly);
8031 fschmid 97
                                        CoE >> Rval;
98
                                        CoE >> Gval;
99
                                        CoE >> Bval;
100
                                        CoE >> Cname;
101
                                        ScColor tmp;
102
                                        tmp.setColorRGB(Rval, Gval, Bval);
103
                                        appPrefs.DColors.insert(Cname, tmp);
104
                                }
105
                        }
4606 cbradney 106
                        fiC.close();
107
                }
10807 cbradney 108
                appPrefs.DColorSet = "Scribus Basic";
4606 cbradney 109
        }
110
}
111
 
112
void ColorSetManager::findPaletteLocations()
113
{
114
        paletteLocations.clear();
4805 cbradney 115
        QStringList locations=ScPaths::instance().getSystemCreateSwatchesDirs();
17179 craig 116
        locations << ScPaths::instance().shareDir()+"swatches/";
15680 fschmid 117
        locations << ScPaths::getApplicationDataDir() + "swatches/locked/";
15931 fschmid 118
        locations << ScPaths::getApplicationDataDir() + "swatches/";
4606 cbradney 119
        for ( QStringList::Iterator it = locations.begin(); it != locations.end(); ++it )
120
        {
121
                QFile createDir(*it);
122
                if (createDir.exists())
123
                        paletteLocations << (*it);
124
    }
125
}
126
 
127
void ColorSetManager::findPalettes()
128
{
129
        palettes.clear();
130
        QString path;
131
        for ( QStringList::Iterator it = paletteLocations.begin(); it != paletteLocations.end(); ++it )
132
        {
133
                path=(*it);
15722 fschmid 134
                QDir dir(path , "*.xml *.gpl *.eps", QDir::Name, QDir::Files | QDir::NoSymLinks);
4606 cbradney 135
                if (dir.exists() && (dir.count() != 0))
136
                        for (uint i = 0; i < dir.count(); ++i)
137
                        {
138
                                QFileInfo file(path + dir[i]);
139
                                QString setName=file.baseName();
140
                                setName.replace("_", " ");
10427 cbradney 141
                                palettes.insert(setName, file.absoluteFilePath());
4606 cbradney 142
                        }
143
        }
144
}
145
 
146
QStringList ColorSetManager::paletteNames( )
147
{
148
        QStringList nameList;
149
        for ( QMap<QString, QString>::Iterator it = palettes.begin(); it != palettes.end(); ++it )
150
                nameList << it.key();
151
        return nameList;
152
}
153
 
8584 subik 154
QString ColorSetManager::paletteFileFromName(const QString& paletteName)
4606 cbradney 155
{
156
        if (palettes.contains(paletteName))
157
                return palettes[paletteName];
8584 subik 158
        return QString();
4606 cbradney 159
}