Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
464 subik 1
/*! This is the Scribus Short Words configuratin implementation.
2
There will be interface for the future Scribus central plugin
3
config center. maybe :)
4
 
5
This code is based on the Scribus-Vlna plug in rewritten for
6
international use.
7
 
8
2004 Petr Vanek <petr@yarpen.cz>
9
with contributions by good people listed in AUTHORS file
10
 
11
This program is free software - see LICENSE file in the distribution
12
or documentation
13
*/
14
 
15
#include "config.h"
16
#include "configuration.h"
17
#include "version.h"
18
#include "shortwords.h"
19
 
20
#include <scribus.h>
936 subik 21
#include <prefsfile.h>
464 subik 22
#include <qdir.h>
904 subik 23
#include <qstringlist.h>
464 subik 24
 
25
extern ScribusApp *ScApp;
26
extern ShortWords *shortWords;
936 subik 27
extern PrefsFile *prefsFile;
464 subik 28
 
29
Config::Config()
30
{
936 subik 31
        prefs = prefsFile->getPluginContext("short-words");
32
        action = prefs->getUInt("action", 0);
33
        userConfig = prefs->getUInt("userConfig", 0);
464 subik 34
}
35
 
36
Config::~Config()
37
{
1181 subik 38
}
39
 
40
void Config::saveConfig()
41
{
936 subik 42
        prefs->set("action", action);
43
        prefs->set("userConfig", userConfig);
464 subik 44
}
45
 
46
QStringList Config::getShortWordsFromFile(QString lang, QString filename)
47
{
48
        // all shorts for one language
49
        QString shorts = "";
50
        // one line in cfg. file
51
        QString aRow;
52
        // cfg (doesn't) exists for the selected language indicator
53
        bool success = FALSE;
54
        // path to the cfg. file
55
        QFile f;
56
 
57
        f.setName(filename);
58
        if (!f.exists())
59
                return QStringList();
60
        if (f.open(IO_ReadOnly))
61
        {
62
                QTextStream t(&f);
63
                while (!t.eof())
64
                {
65
                        aRow = t.readLine();
66
                        if (aRow.left(2) == lang)
67
                        {
68
                                success = TRUE;
69
                                shorts += aRow.remove(0, 3);
70
                        }
71
                }
72
                f.close();
73
        }
74
        if (success)
75
                return QStringList::split(",", shorts);
76
        return QStringList();
77
}
78
 
79
QStringList Config::getShortWords(QString lang)
80
{
81
        QStringList allShorts;
82
        if (userConfig && QFile::exists(RC_PATH_USR))
83
                return getShortWordsFromFile(lang, RC_PATH_USR);
84
        if (!userConfig && QFile::exists(RC_PATH_USR))
85
                allShorts = getShortWordsFromFile(lang, RC_PATH_USR);
86
        return allShorts + getShortWordsFromFile(lang, RC_PATH);
87
}
88
 
89
QString Config::getAvailableLanguagesFromFile(QString filename)
90
{
91
        QStringList langs;
92
        QStringList nations;
93
        QString aRow;
94
 
95
        QFile f(filename);
96
        if (f.open(IO_ReadOnly))
97
        {
98
                QTextStream t(&f);
99
                while (!t.eof())
100
                {
101
                        aRow = t.readLine();
102
                        if (aRow.left(1) != "#" && aRow.length() != 0 && aRow.left(1) != " " && !langs.contains(aRow.left(2)))
103
                        {
104
                                nations.append(getLangFromCode(aRow.left(2)));
105
                                langs.append(aRow.left(2));
106
                        }
107
                }
108
                f.close();
109
        }
110
        else
111
        {
112
                return QString();
113
        }
114
        if (filename == RC_PATH_USR)
115
                return shortWords->tr("Custom (optional) configuration: ") + " " + nations.join(", ");
116
        if (filename == RC_PATH)
117
                return shortWords->tr("Standard configuration: ") + " " + nations.join(", ");
118
        return nations.join(", "); // save return only
119
}
120
 
121
QString Config::getAvailableLanguages()
122
{
123
        QString allConfig = getAvailableLanguagesFromFile(RC_PATH);
124
        if (QFile::exists(RC_PATH_USR))
125
                allConfig += "<br>" + getAvailableLanguagesFromFile(RC_PATH_USR) + "";
126
        return  allConfig;
127
}
128
 
129
QString Config::getLangCodeFromHyph(QString hyphenCode)
130
{
131
        hyphenCode.remove(0, 5);
132
        return hyphenCode.remove(2, 10);
133
}
134
 
135
QString Config::getLangFromCode(QString code)
136
{
137
        QMap<QString,QString>::Iterator it;
138
        QString lang;
139
 
140
        for (it = ScApp->Sprachen.begin(); it != ScApp->Sprachen.end(); ++it)
141
        {
142
                lang = getLangCodeFromHyph(it.data());
143
                if (lang == code)
144
                        return it.key();
145
        }
146
        return code;
147
}