Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
2834 cbradney 1
/***************************************************************************
2
        copyright            : (C) 2005 by Craig Bradney
3
        email                : cbradney@zip.com.au
4
***************************************************************************/
5
 
6
/***************************************************************************
7
*                                                                         *
8
*   This program is free software; you can redistribute it and/or modify  *
9
*   it under the terms of the GNU General Public License as published by  *
10
*   the Free Software Foundation; either version 2 of the License, or     *
11
*   (at your option) any later version.                                   *
12
*                                                                         *
13
***************************************************************************/
2835 cbradney 14
 
15
#include <qcolor.h>
16
#include <qdir.h>
2889 cbradney 17
#include <qdom.h>
2835 cbradney 18
#include <qfile.h>
19
#include <qmessagebox.h>
20
#include <qstring.h>
2889 cbradney 21
#include <qstylefactory.h>
2835 cbradney 22
#include <qwmatrix.h>
23
 
2834 cbradney 24
#include "prefsmanager.h"
3120 fschmid 25
#include "prefsmanager.moc"
2859 cbradney 26
#include "filewatcher.h"
2889 cbradney 27
#include "missing.h"
2865 cbradney 28
#include "pagesize.h"
2835 cbradney 29
#include "pdfoptions.h"
30
#include "prefsfile.h"
31
#include "scfonts.h"
32
#include "scpaths.h"
33
#include "scribus.h"
34
#include "scribusstructs.h"
35
#include "scribusapp.h"
36
#include "util.h"
2859 cbradney 37
#include "werktoolb.h"
2835 cbradney 38
 
39
extern ScribusApp* ScApp;
40
extern ScribusQApp* ScQApp;
2859 cbradney 41
extern bool emergencyActivated;
2835 cbradney 42
 
2834 cbradney 43
PrefsManager* PrefsManager::_instance = 0;
44
 
45
PrefsManager::PrefsManager(QObject *parent, const char *name)
46
 : QObject(parent, name)
47
{
48
}
49
 
50
PrefsManager::~PrefsManager()
51
{
2871 cbradney 52
        appPrefs.AvailFonts.~SCFonts();
2856 cbradney 53
        delete prefsFile;
2834 cbradney 54
}
55
 
56
PrefsManager* PrefsManager::instance()
57
{
58
    if (_instance == 0)
59
        _instance = new PrefsManager();
60
 
61
    return _instance;
62
}
63
 
64
void PrefsManager::deleteInstance()
65
{
66
    if (_instance)
67
        delete _instance;
68
    _instance = 0;
69
}
70
 
71
 
72
ApplicationPrefs* PrefsManager::applicationPrefs()
73
{
74
        return &appPrefs;
75
}
2835 cbradney 76
 
2856 cbradney 77
PrefsFile* PrefsManager::applicationPrefsFile()
78
{
79
        return prefsFile;
80
}
81
 
82
const bool PrefsManager::importingFrom12x()
83
{
84
        return importingFrom12;
85
}
86
 
87
 
88
void PrefsManager::setup()
89
{
90
        setupPreferencesLocation();
91
 
92
        importingFrom12=copy12Preferences();
93
        prefsFile = new PrefsFile(QDir::convertSeparators(prefsLocation + "/prefs13.xml"));
94
        if (importingFrom12)
95
                convert12Preferences();
96
        //<<CB TODO Reset keyboard shortcuts of all 1.3 users as too many
97
        //     have conflicts if they dont nuke their settings.
98
        // - Remove for 1.3.0 release: importingFrom12=true;
99
        //>>CB
100
}
101
 
2835 cbradney 102
void PrefsManager::initDefaults()
103
{
104
        /** Default font and size **/
105
        SCFontsIterator it(appPrefs.AvailFonts);
106
        appPrefs.toolSettings.defFont = it.currentKey();
107
        appPrefs.toolSettings.defSize = 120;
108
 
109
        /** Default colours **/
110
        appPrefs.DColors.clear();
111
        QString pfadC = ScPaths::instance().libDir();
112
        QString pfadC2 = pfadC + "rgbscribus.txt";
113
        QFile fiC(pfadC2);
114
        if (!fiC.exists())
115
        {
2886 fschmid 116
                appPrefs.DColors.insert("White", ScColor(0, 0, 0, 0));
117
                appPrefs.DColors.insert("Black", ScColor(0, 0, 0, 255));
118
                appPrefs.DColors.insert("Blue", ScColor(255, 255, 0, 0));
119
                appPrefs.DColors.insert("Cyan", ScColor(255, 0, 0, 0));
120
                appPrefs.DColors.insert("Green", ScColor(255, 0, 255, 0));
121
                appPrefs.DColors.insert("Red", ScColor(0, 255, 255, 0));
122
                appPrefs.DColors.insert("Yellow", ScColor(0, 0, 255, 0));
123
                appPrefs.DColors.insert("Magenta", ScColor(0, 255, 0, 0));
2835 cbradney 124
                appPrefs.DColorSet = "Scribus-Small";
125
        }
126
        else
127
        {
128
                if (fiC.open(IO_ReadOnly))
129
                {
130
                        QString ColorEn, Cname;
131
                        int Rval, Gval, Bval;
132
                        QTextStream tsC(&fiC);
133
                        ColorEn = tsC.readLine();
134
                        while (!tsC.atEnd())
135
                        {
136
                                ColorEn = tsC.readLine();
137
                                QTextStream CoE(&ColorEn, IO_ReadOnly);
138
                                CoE >> Rval;
139
                                CoE >> Gval;
140
                                CoE >> Bval;
141
                                CoE >> Cname;
2886 fschmid 142
                                ScColor tmp;
2835 cbradney 143
                                tmp.setColorRGB(Rval, Gval, Bval);
144
                                appPrefs.DColors.insert(Cname, tmp);
145
                        }
146
                        fiC.close();
147
                }
148
                appPrefs.DColorSet = "X11 RGB-Set";
149
        }
150
 
151
        appPrefs.Wheelval = 40;
152
        appPrefs.guidesSettings.marginsShown = true;
153
        appPrefs.guidesSettings.framesShown = true;
154
        appPrefs.guidesSettings.gridShown = false;
155
        appPrefs.guidesSettings.guidesShown = false;
156
        appPrefs.guidesSettings.baseShown = false;
157
        appPrefs.guidesSettings.showPic = true;
158
        appPrefs.guidesSettings.showControls = false;
159
        appPrefs.guidesSettings.linkShown = false;
2863 fschmid 160
        appPrefs.guidesSettings.rulerMode = true;
2835 cbradney 161
        appPrefs.guidesSettings.grabRad = 4;
162
        appPrefs.guidesSettings.guideRad = 10;
163
        appPrefs.guidesSettings.minorGrid = 20;
164
        appPrefs.guidesSettings.majorGrid = 100;
165
        appPrefs.guidesSettings.minorColor = QColor(green);
166
        appPrefs.guidesSettings.majorColor = QColor(green);
167
        appPrefs.guidesSettings.margColor = QColor(blue);
168
        appPrefs.guidesSettings.guideColor = QColor(darkBlue);
169
        appPrefs.guidesSettings.baseColor = QColor(lightGray);
2889 cbradney 170
        appPrefs.typographicSettings.valueSuperScript = 33;
171
        appPrefs.typographicSettings.scalingSuperScript = 100;
172
        appPrefs.typographicSettings.valueSubScript = 33;
173
        appPrefs.typographicSettings.scalingSubScript = 100;
174
        appPrefs.typographicSettings.valueSmallCaps = 75;
175
        appPrefs.typographicSettings.autoLineSpacing = 20;
176
        appPrefs.typographicSettings.valueUnderlinePos = -1;
177
        appPrefs.typographicSettings.valueUnderlineWidth = -1;
178
        appPrefs.typographicSettings.valueStrikeThruPos = -1;
179
        appPrefs.typographicSettings.valueStrikeThruWidth = -1;
180
        appPrefs.typographicSettings.valueBaseGrid = 14.4;
181
        appPrefs.typographicSettings.offsetBaseGrid = 0.0;
2835 cbradney 182
        appPrefs.GUI = "Default";
183
        //FIXME
184
        //Black here causes issues when a colour set is loaded without "Black" in it.
185
        //"Black" is created with wrong values. Eg SVG colour set
186
        appPrefs.toolSettings.dPen = "Black";
187
        appPrefs.toolSettings.dBrush = "Black";
188
        appPrefs.toolSettings.dShade = 100;
189
        appPrefs.toolSettings.dShade2 = 100;
190
        appPrefs.toolSettings.dLineArt = SolidLine;
191
        appPrefs.toolSettings.dWidth = 1;
192
        appPrefs.toolSettings.dPenLine = "Black";
193
        appPrefs.toolSettings.dPenText = "Black";
194
        appPrefs.toolSettings.dStrokeText = "Black";
3093 fschmid 195
        appPrefs.toolSettings.dTextBackGround = "None";
196
        appPrefs.toolSettings.dTextLineColor = "None";
197
        appPrefs.toolSettings.dTextBackGroundShade = 100;
198
        appPrefs.toolSettings.dTextLineShade = 100;
199
        appPrefs.toolSettings.dTextPenShade = 100;
200
        appPrefs.toolSettings.dTextStrokeShade = 100;
2835 cbradney 201
        appPrefs.toolSettings.tabFillChar = "";
202
        appPrefs.toolSettings.dTabWidth = 36.0;
203
        appPrefs.DpapColor = QColor(white);
204
        appPrefs.toolSettings.dCols = 1;
205
        appPrefs.toolSettings.dGap = 0.0;
206
        appPrefs.toolSettings.dShadeLine = 100;
207
        appPrefs.toolSettings.dLstyleLine = SolidLine;
208
        appPrefs.toolSettings.dWidthLine = 1;
209
        appPrefs.toolSettings.dStartArrow = 0;
210
        appPrefs.toolSettings.dEndArrow = 0;
211
        appPrefs.toolSettings.magMin = 10;
212
        appPrefs.toolSettings.magMax = 3200;
213
        appPrefs.toolSettings.magStep = 25;
214
        appPrefs.toolSettings.dBrushPict = "White";
215
        appPrefs.toolSettings.shadePict = 100;
216
        appPrefs.toolSettings.scaleX = 1;
217
        appPrefs.toolSettings.scaleY = 1;
218
        appPrefs.guidesSettings.before = true;
219
        appPrefs.docUnitIndex = 0;
220
        appPrefs.toolSettings.polyC = 4;
221
        appPrefs.toolSettings.polyF = 0.5;
222
        appPrefs.toolSettings.polyS = false;
223
        appPrefs.toolSettings.polyFd = 0;
224
        appPrefs.toolSettings.polyR = 0;
225
        appPrefs.mainToolBarSettings.visible = true;
226
        appPrefs.pdfToolBarSettings.visible = true;
227
        appPrefs.PSize = 40;
228
        appPrefs.SaveAtQ = true;
229
        appPrefs.ClipMargin = true;
230
        appPrefs.GCRMode = false;
231
        appPrefs.RecentDocs.clear();
232
        appPrefs.RecentDCount = 5;
233
        appPrefs.marginColored = false;
234
        appPrefs.pageSize = "A4";
235
        appPrefs.pageOrientation = 0;
2865 cbradney 236
        PageSize a4("A4");
237
        appPrefs.PageWidth = a4.getPageWidth();
238
        appPrefs.PageHeight = a4.getPageHeight();
2835 cbradney 239
        appPrefs.RandOben = 40;
240
        appPrefs.RandUnten = 40;
241
        appPrefs.RandLinks = 40;
242
        appPrefs.RandRechts = 40;
243
        appPrefs.toolSettings.scaleType = true;
244
        appPrefs.toolSettings.aspectRatio = true;
245
        appPrefs.toolSettings.lowResType = 1;
246
        appPrefs.toolSettings.useEmbeddedPath = false;
247
        appPrefs.MinWordLen = 3;
248
        appPrefs.HyCount = 2;
249
        appPrefs.Language = "";
250
        appPrefs.Automatic = true;
251
        appPrefs.AutoCheck = false;
252
        appPrefs.AutoSave = false;
253
        appPrefs.AutoSaveTime = 600000;
254
        appPrefs.DisScale = 1.0;
255
        appPrefs.DocDir = QDir::homeDirPath();
256
        appPrefs.ProfileDir = "";
257
        appPrefs.ScriptDir = "";
258
        appPrefs.documentTemplatesDir = "";
259
        appPrefs.CustomColorSets.clear();
260
        appPrefs.PrPr_Mode = false;
261
        appPrefs.Gcr_Mode = true;
262
        appPrefs.PrPr_AlphaText = false;
263
        appPrefs.PrPr_AlphaGraphics = false;
264
        appPrefs.PrPr_Transparency = false;
265
        appPrefs.PrPr_C = true;
266
        appPrefs.PrPr_M = true;
267
        appPrefs.PrPr_Y = true;
268
        appPrefs.PrPr_K = true;
269
        appPrefs.imageEditorExecutable = "gimp";
270
        appPrefs.gs_AntiAliasGraphics = true;
271
        appPrefs.gs_AntiAliasText = true;
2910 fschmid 272
        appPrefs.gs_exe = getGSDefaultExeName();
2835 cbradney 273
        appPrefs.gs_Resolution = 72;
274
        appPrefs.STEcolor = QColor(white);
275
        appPrefs.DCMSset.DefaultMonitorProfile = "";
276
        appPrefs.DCMSset.DefaultPrinterProfile = "";
2984 fschmid 277
        appPrefs.DCMSset.DefaultImageRGBProfile = "";
278
        appPrefs.DCMSset.DefaultSolidColorProfile = "";
2835 cbradney 279
        appPrefs.DCMSset.CMSinUse = false;
280
        appPrefs.DCMSset.SoftProofOn = false;
281
        appPrefs.DCMSset.GamutCheck = false;
282
        appPrefs.DCMSset.BlackPoint = true;
283
        appPrefs.DCMSset.DefaultIntentMonitor = 1;
2984 fschmid 284
        appPrefs.DCMSset.DefaultIntentImages = 1;
2835 cbradney 285
        appPrefs.DCMSset.DefaultIntentPrinter = 0;
286
        appPrefs.GFontSub.clear();
287
        appPrefs.ScratchLeft = 100;
288
        appPrefs.ScratchRight = 100;
289
        appPrefs.ScratchTop = 20;
290
        appPrefs.ScratchBottom = 20;
3016 fschmid 291
        struct PageSet pageS;
292
        pageS.Name = tr( "Single Page" );
293
        pageS.FirstPage = 0;
294
        pageS.Rows = 1;
295
        pageS.Columns = 1;
296
        pageS.GapHorizontal = 0.0;
297
        pageS.GapVertical = 0.0;
298
        pageS.GapBelow = 40.0;
3026 fschmid 299
        pageS.pageNames.clear();
3016 fschmid 300
        appPrefs.pageSets.append(pageS);
301
        pageS.Name = tr( "Double sided" );
302
        pageS.FirstPage = 1;
303
        pageS.Columns = 2;
3026 fschmid 304
        pageS.pageNames.clear();
305
        pageS.pageNames.append( tr("Left Page"));
306
        pageS.pageNames.append( tr("Right Page"));
3016 fschmid 307
        appPrefs.pageSets.append(pageS);
308
        pageS.Name = tr( "3-Fold" );
309
        pageS.FirstPage = 0;
310
        pageS.Columns = 3;
3026 fschmid 311
        pageS.pageNames.clear();
312
        pageS.pageNames.append( tr("Left Page"));
313
        pageS.pageNames.append( tr("Middle"));
314
        pageS.pageNames.append( tr("Right Page"));
3016 fschmid 315
        appPrefs.pageSets.append(pageS);
316
        pageS.Name = tr( "4-Fold" );
317
        pageS.FirstPage = 0;
318
        pageS.Columns = 4;
3026 fschmid 319
        pageS.pageNames.clear();
320
        pageS.pageNames.append( tr("Left Page"));
321
        pageS.pageNames.append( tr("Middle Left"));
322
        pageS.pageNames.append( tr("Middle Right"));
323
        pageS.pageNames.append( tr("Right Page"));
3016 fschmid 324
        appPrefs.pageSets.append(pageS);
325
        appPrefs.FacingPages = singlePage;
2835 cbradney 326
        appPrefs.askBeforeSubstituite = true;
327
        appPrefs.haveStylePreview = true;
328
        // lorem ipsum defaults
329
        appPrefs.useStandardLI = false;
330
        appPrefs.paragraphsLI = 10;
331
        appPrefs.showStartupDialog = true;
3097 cbradney 332
        initDefaultCheckerPrefs(&appPrefs.checkerProfiles);    
3142 cbradney 333
        appPrefs.curCheckProfile = tr("PostScript");
2835 cbradney 334
        appPrefs.PDF_Options.Thumbnails = false;
335
        appPrefs.PDF_Options.Articles = false;
336
        appPrefs.PDF_Options.useLayers = false;
337
        appPrefs.PDF_Options.Compress = true;
338
        appPrefs.PDF_Options.CompressMethod = 0;
339
        appPrefs.PDF_Options.Quality = 0;
340
        appPrefs.PDF_Options.RecalcPic = false;
341
        appPrefs.PDF_Options.Bookmarks = false;
342
        appPrefs.PDF_Options.PicRes = 300;
343
        appPrefs.PDF_Options.Version = PDFOptions::PDFVersion_14;
344
        appPrefs.PDF_Options.Resolution = 300;
345
        appPrefs.PDF_Options.Binding = 0;
346
        appPrefs.PDF_Options.EmbedList.clear();
347
        appPrefs.PDF_Options.SubsetList.clear();
348
        appPrefs.PDF_Options.MirrorH = false;
349
        appPrefs.PDF_Options.MirrorV = false;
350
        appPrefs.PDF_Options.RotateDeg = 0;
351
        appPrefs.PDF_Options.PresentMode = false;
352
        appPrefs.PDF_Options.Datei = "";
353
        appPrefs.PDF_Options.PresentVals.clear();
354
        appPrefs.PDF_Options.isGrayscale = false;
355
        appPrefs.PDF_Options.UseRGB = true;
356
        appPrefs.PDF_Options.UseProfiles = false;
357
        appPrefs.PDF_Options.UseProfiles2 = false;
358
        appPrefs.PDF_Options.SolidProf = "";
359
        appPrefs.PDF_Options.SComp = 3;
360
        appPrefs.PDF_Options.ImageProf = "";
361
        appPrefs.PDF_Options.PrintProf = "";
362
        appPrefs.PDF_Options.Info = "";
363
        appPrefs.PDF_Options.Intent = 0;
364
        appPrefs.PDF_Options.Intent2 = 0;
365
        appPrefs.PDF_Options.BleedTop = 0;
366
        appPrefs.PDF_Options.BleedLeft = 0;
367
        appPrefs.PDF_Options.BleedRight = 0;
368
        appPrefs.PDF_Options.BleedBottom = 0;
369
        appPrefs.PDF_Options.EmbeddedI = false;
370
        appPrefs.PDF_Options.Encrypt = false;
371
        appPrefs.PDF_Options.PassOwner = "";
372
        appPrefs.PDF_Options.PassUser = "";
373
        appPrefs.PDF_Options.Permissions = -4;
374
        appPrefs.PDF_Options.UseLPI = false;
375
        appPrefs.PDF_Options.LPISettings.clear();
3079 fschmid 376
        appPrefs.PDF_Options.UseSpotColors = true;
377
        appPrefs.PDF_Options.doMultiFile = false;
2835 cbradney 378
 
379
        //Attribute setup
380
        appPrefs.defaultItemAttributes.clear();
381
        appPrefs.defaultToCSetups.clear();
382
}
383
 
384
void PrefsManager::initDefaultGUIFont(const QFont& guiFont)
385
{
386
        appPrefs.AppFontSize = guiFont.pointSize();    
387
        appPrefs.STEfont = guiFont.toString(); 
388
}
389
 
390
void PrefsManager::initArrowStyles()
391
{
392
        struct ArrowDesc arrow;
393
        FPointArray points;
394
        QWMatrix arrowScaling;
395
        arrowScaling.scale(0.5, 0.5);
396
        arrow.name = "Arrow1L";
397
        arrow.userArrow = false;
398
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
399
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
400
        points.addQuadPoint(12, 0, 12, 0, 12, 0, 12, 0);
401
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
402
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
403
        arrow.points = points.copy();
404
        appPrefs.arrowStyles.append(arrow);
405
        arrow.name = "Arrow1M";
406
        points.map(arrowScaling);
407
        arrow.points = points.copy();
408
        appPrefs.arrowStyles.append(arrow);
409
        arrow.name = "Arrow1S";
410
        points.map(arrowScaling);
411
        arrow.points = points.copy();
412
        appPrefs.arrowStyles.append(arrow);
413
        arrow.name = "SquareL";
414
        points.resize(0);
415
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
416
        points.addQuadPoint(5, -5, 5, -5, 5, -5, 5, -5);
417
        points.addQuadPoint(5, 5, 5, 5, 5, 5, 5, 5);
418
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
419
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
420
        arrow.points = points.copy();
421
        appPrefs.arrowStyles.append(arrow);
422
        arrow.name = "SquareM";
423
        points.map(arrowScaling);
424
        arrow.points = points.copy();
425
        appPrefs.arrowStyles.append(arrow);
426
        arrow.name = "SquareS";
427
        points.map(arrowScaling);
428
        arrow.points = points.copy();
429
        appPrefs.arrowStyles.append(arrow);
430
        arrow.name = "TriangleInL";
431
        points.resize(0);
432
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
433
        points.addQuadPoint(-2.88, 5, -2.88, 5, -2.88, 5, -2.88, 5);
434
        points.addQuadPoint(-2.88, -5, -2.88, -5, -2.88, -5, -2.88, -5);
435
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
436
        arrow.points = points.copy();
437
        appPrefs.arrowStyles.append(arrow);
438
        arrow.name = "TriangleInM";
439
        points.map(arrowScaling);
440
        arrow.points = points.copy();
441
        appPrefs.arrowStyles.append(arrow);
442
        arrow.name = "TriangleInS";
443
        points.map(arrowScaling);
444
        arrow.points = points.copy();
445
        appPrefs.arrowStyles.append(arrow);
446
        arrow.name = "TriangleOutL";
447
        points.resize(0);
448
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
449
        points.addQuadPoint(2.88, 5, 2.88, 5, 2.88, 5, 2.88, 5);
450
        points.addQuadPoint(2.88, -5, 2.88, -5, 2.88, -5, 2.88, -5);
451
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
452
        arrow.points = points.copy();
453
        appPrefs.arrowStyles.append(arrow);
454
        arrow.name = "TriangleOutM";
455
        points.map(arrowScaling);
456
        arrow.points = points.copy();
457
        appPrefs.arrowStyles.append(arrow);
458
        arrow.name = "TriangleOutS";
459
        points.map(arrowScaling);
460
        arrow.points = points.copy();
461
        appPrefs.arrowStyles.append(arrow);
462
}
463
 
464
/*!
465
 \fn QString PrefsManager::getPreferencesLocation()
466
 \author Craig Bradney
467
 \date Thu 18 Nov 2004
468
 \brief Set the user's preference file location. Rename any existing old preferences files
469
 \retval QString Location of the user's preferences
470
 */
471
 
472
QString PrefsManager::setupPreferencesLocation()
473
{
474
        QString Pff = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
475
        QFileInfo Pffi = QFileInfo(Pff);
476
        QString PrefsPfad;
477
        //If we are using ~/.scribus
478
        if (Pffi.exists())
479
        {
480
                if (Pffi.isDir())
481
                        PrefsPfad = Pff;
482
                else
483
                        PrefsPfad = QDir::homeDirPath();
484
        }
485
        else // Move to using ~/.scribus/scribus.* from ~/.scribus.*
486
        {
487
                QDir prefsDirectory = QDir();
488
                prefsDirectory.mkdir(Pff);
489
                PrefsPfad = Pff;
490
                QString oldPR = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus.rc");
491
                QFileInfo oldPi = QFileInfo(oldPR);
492
                if (oldPi.exists())
493
                        moveFile(oldPR, Pff+"/scribus.rc");
494
                QString oldPR2 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusfont.rc");
495
                QFileInfo oldPi2 = QFileInfo(oldPR2);
496
                if (oldPi2.exists())
497
                        moveFile(oldPR2, Pff+"/scribusfont.rc");
498
                QString oldPR3 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusscrap.scs");
499
                QFileInfo oldPi3 = QFileInfo(oldPR3);
500
                if (oldPi3.exists())
501
                        moveFile(oldPR3, Pff+"/scrap.scs");
502
        }
503
        prefsLocation=PrefsPfad;
504
        return PrefsPfad;
505
}
506
 
507
/*!
508
 \fn QString PrefsManager::getPreferencesLocation()
509
 \retval QString Location of the user's preferences
510
 */
511
const QString PrefsManager::preferencesLocation()
512
{
513
        return prefsLocation;
514
}
515
 
516
/*!
517
 \fn bool ScribusApp::copy12Preferences(const QString prefsLocation)
518
 \author Craig Bradney
519
 \date Sun 09 Jan 2005
520
 \brief Copy 1.2 prefs XML before loading, and copy rc files we don't yet convert
521
 \param prefsLocation Location of user preferences
522
 \retval bool true if prefs were imported
523
 */
524
bool PrefsManager::copy12Preferences()
525
{
526
        //Now make copies for 1.3 use and leave the old ones alone for <1.3.0 usage
527
        QString oldPR[4], newPR[4];
528
        oldPR[0]=QDir::convertSeparators(prefsLocation+"/scribus.rc");
529
        oldPR[1]=QDir::convertSeparators(prefsLocation+"/scrap.scs");
530
        oldPR[2]=QDir::convertSeparators(prefsLocation+"/prefs.xml");
531
        oldPR[3]=QDir::convertSeparators(prefsLocation+"/scripter.rc");
532
        newPR[0]=QDir::convertSeparators(prefsLocation+"/scribus13.rc");
533
        newPR[1]=QDir::convertSeparators(prefsLocation+"/scrap13.scs");
534
        newPR[2]=QDir::convertSeparators(prefsLocation+"/prefs13.xml");
535
        newPR[3]=QDir::convertSeparators(prefsLocation+"/scripter13.rc");
536
 
537
        bool existsOldPR[4], existsNewPR[4];
538
        for (uint i=0;i<4;++i)
539
        {
540
                existsOldPR[i]=QFile::exists(oldPR[i]);
541
                existsNewPR[i]=QFile::exists(newPR[i]);
542
        }
543
 
544
        bool retVal=false;
545
        //Only check for these two as they will be autocreated if they dont exist.
3151 craig 546
        if( (existsOldPR[0] && !existsNewPR[0]) || (existsOldPR[2] && !existsNewPR[2]) )
2835 cbradney 547
        {
548
                retVal=true; // converting from 1.2 prefs
549
                if (ScQApp->usingGUI())
550
                {
551
                        ScApp->showSplash(false);
552
                        if ( (QMessageBox::question( ScApp, tr("Migrate Old Scribus Settings?"),
553
                                tr("Scribus has detected existing Scribus 1.2 preferences files.\n"
554
                                                "Do you want to migrate them to the new Scribus version?"),
555
                                QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::NoButton))==QMessageBox::Yes )
556
                        {
557
                                for (uint i=0;i<4;++i)
558
                                {
559
                                        if (existsOldPR[i] && !existsNewPR[i])
560
                                                copyFile(oldPR[i], newPR[i]);
561
                                }
562
                        }
563
                        ScApp->showSplash(true);
564
                }
565
        }
566
        return retVal;
567
}
568
 
569
/*!
570
 \fn void PrefsManager::convert12Preferences()
571
 \author Craig Ringer
572
 \date Sun 26 June 2005
573
 \brief Import 1.2.x prefs rc data into new prefs xml
574
 \retval None
575
 */
2856 cbradney 576
void PrefsManager::convert12Preferences()
2835 cbradney 577
{
578
        // Import 1.2 font search path prefs
579
        QFile fontPrefsFile12(QDir::convertSeparators(prefsLocation+"/scribusfont.rc"));
580
        if (fontPrefsFile12.open(IO_ReadOnly))
581
        {
2856 cbradney 582
                PrefsContext *pc = prefsFile->getContext("Fonts");
2835 cbradney 583
                PrefsTable *fontPrefs = pc->getTable("ExtraFontDirs");
584
                QTextStream tsx(&fontPrefsFile12);
585
                QString extraPath = tsx.read();
586
                fontPrefsFile12.close();
587
                QStringList extraFonts = QStringList::split("\n",extraPath);
588
                for (uint i = 0; i < extraFonts.count(); ++i)
589
                        fontPrefs->set(i, 0, extraFonts[i]);
590
        }
591
}
2859 cbradney 592
 
593
void PrefsManager::ReadPrefs()
594
{
2889 cbradney 595
        bool erg = ReadPref(prefsLocation+"/scribus13.rc");
2859 cbradney 596
        if (!erg)
597
                return;
598
        ScApp->setDefaultPrinter(appPrefs.PrinterName, appPrefs.PrinterFile, appPrefs.PrinterCommand);
599
 
600
        uint max = QMIN(appPrefs.RecentDCount, appPrefs.RecentDocs.count());
601
        for (uint m = 0; m < max; ++m)
602
        {
603
                QFileInfo fd(appPrefs.RecentDocs[m]);
604
                if (fd.exists())
605
                {
606
                        ScApp->RecentDocs.append(appPrefs.RecentDocs[m]);
607
                        ScApp->fileWatcher->addFile(appPrefs.RecentDocs[m]);
608
                }
609
        }
610
        ScApp->rebuildRecentFileMenu();
611
        ScApp->move(appPrefs.mainWinSettings.xPosition, appPrefs.mainWinSettings.yPosition);
612
        ScApp->resize(appPrefs.mainWinSettings.width, appPrefs.mainWinSettings.height);
613
        ReadPrefsXML();
614
        if (appPrefs.checkerProfiles.count() == 0)
615
        {
3097 cbradney 616
                initDefaultCheckerPrefs(&appPrefs.checkerProfiles);    
3142 cbradney 617
                appPrefs.curCheckProfile = tr("PostScript");
2859 cbradney 618
        }
619
}
620
 
621
void PrefsManager::ReadPrefsXML()
622
{
623
    if (prefsFile)
624
    {
625
        PrefsContext* userprefsContext = prefsFile->getContext("user_preferences");
626
        if (userprefsContext) {
627
            appPrefs.guiLanguage = userprefsContext->get("gui_language","");
628
            //continue here...
629
            //Prefs."blah blah" =...
630
        }
631
    }
632
}
633
 
634
 
635
void PrefsManager::SavePrefs()
636
{
637
        // If closing because of a crash don't save prefs as we can
638
        // accidentally nuke the settings if the crash is before prefs are loaded
639
        if (emergencyActivated)
640
                return;
641
        appPrefs.mainWinSettings.xPosition = abs(ScApp->pos().x());
642
        appPrefs.mainWinSettings.yPosition = abs(ScApp->pos().y());
643
        appPrefs.mainWinSettings.width = ScApp->size().width();
644
        appPrefs.mainWinSettings.height = ScApp->size().height();
645
        appPrefs.mainToolBarSettings.visible = ScApp->mainToolBarVisible();
646
        appPrefs.pdfToolBarSettings.visible = ScApp->pdfToolBarVisible();
647
 
648
        appPrefs.RecentDocs.clear();
649
        uint max = QMIN(appPrefs.RecentDCount, ScApp->RecentDocs.count());
650
        for (uint m = 0; m < max; ++m)
651
        {
652
                appPrefs.RecentDocs.append(ScApp->RecentDocs[m]);
653
        }
654
        ScApp->getDefaultPrinter(&appPrefs.PrinterName, &appPrefs.PrinterFile, &appPrefs.PrinterCommand);
655
 
2889 cbradney 656
        WritePref(prefsLocation+"/scribus13.rc");
2859 cbradney 657
    SavePrefsXML();
658
}
659
 
660
void PrefsManager::SavePrefsXML()
661
{
662
    if (prefsFile)
663
    {
664
        PrefsContext* userprefsContext = prefsFile->getContext("user_preferences");
665
        if (userprefsContext) {
666
            userprefsContext->set("gui_language",appPrefs.guiLanguage);
667
            //continue here...
668
            //Prefs."blah blah" =...
669
        }
670
        prefsFile->write();
671
    }
672
}
2862 cbradney 673
 
674
void PrefsManager::setGhostscriptExecutable(const QString& executableName)
675
{
676
        appPrefs.gs_exe=executableName;
677
}
678
 
679
void PrefsManager::setImageEditorExecutable(const QString& executableName)
680
{
681
        appPrefs.imageEditorExecutable=executableName;
682
}
683
 
684
const QString PrefsManager::ghostscriptExecutable()
685
{
686
        return appPrefs.gs_exe;
687
}
688
 
689
const QString PrefsManager::imageEditorExecutable()
690
{
691
        return appPrefs.imageEditorExecutable;
692
}
2870 cbradney 693
 
2871 cbradney 694
const QString PrefsManager::documentDir()
695
{
696
        return appPrefs.DocDir;
697
}
698
 
699
const int PrefsManager::mouseWheelValue()
700
{
701
        return appPrefs.Wheelval;
702
}
703
 
2870 cbradney 704
//Changed to return false when we have no fonts
705
const bool PrefsManager::GetAllFonts(bool showFontInfo)
706
{
707
        appPrefs.AvailFonts.GetFonts(prefsLocation, showFontInfo);
708
        if (appPrefs.AvailFonts.isEmpty())
709
                return false;
710
        return true;
711
}
2871 cbradney 712
 
713
void PrefsManager::setShowStartupDialog(const bool showDialog)
714
{
715
        appPrefs.showStartupDialog=showDialog;
716
}
717
 
718
const ColorList& PrefsManager::colorSet()
719
{
720
        return appPrefs.DColors;
721
}
722
 
723
ColorList* PrefsManager::colorSetPtr()
724
{
725
        return &appPrefs.DColors;
726
}
727
 
728
const QString& PrefsManager::colorSetName()
729
{
730
        return appPrefs.DColorSet;
731
}
732
 
733
void PrefsManager::setColorSet(const ColorList& colorSet)
734
{
735
        appPrefs.DColors=colorSet;
736
}
737
 
738
void PrefsManager::setColorSetName(const QString& colorSetName)
739
{
740
        appPrefs.DColorSet=colorSetName;
741
}
2873 cbradney 742
 
743
 
744
void PrefsManager::setKeyEntry(const QString& actName, const QString& cleanMenuText, const QString& keyseq, const int& rowNumber)
745
{
746
        Keys ke;
2877 cbradney 747
        if (!actName.isEmpty())
2873 cbradney 748
        {
749
                if (ScApp->scrActions[actName])
750
                {
751
                        ke.actionName=actName;
752
                        ke.keySequence = keyseq;
753
                        ke.cleanMenuText=cleanMenuText;
754
                        ke.tableRow=rowNumber;
755
                        appPrefs.KeyActions.insert(actName, ke);
756
                }
757
                else
758
                        qDebug("%s", QString("Action Name: %1 does not exist").arg(actName).ascii());
759
        }
760
}
761
 
762
const double PrefsManager::displayScale()
763
{
764
        return appPrefs.DisScale;
765
}
766
 
767
const QString& PrefsManager::guiLanguage()
768
{
769
        return appPrefs.guiLanguage;
770
}
771
 
772
const QString& PrefsManager::guiStyle()
773
{
774
        return appPrefs.GUI;
775
}
776
 
777
const int& PrefsManager::guiFontSize()
778
{
779
        return appPrefs.AppFontSize;
780
}
2889 cbradney 781
 
782
void PrefsManager::WritePref(QString ho)
783
{
784
        QDomDocument docu("scribusrc");
785
        QString st="<SCRIBUSRC></SCRIBUSRC>";
786
        docu.setContent(st);
787
        QDomElement elem=docu.documentElement();
788
        QDomElement dc=docu.createElement("GUI");
789
        dc.setAttribute("STILT",appPrefs.GUI);
790
        dc.setAttribute("RAD",appPrefs.Wheelval);
791
        dc.setAttribute("APF",appPrefs.AppFontSize);
792
        dc.setAttribute("GRAB",appPrefs.guidesSettings.grabRad);
793
        dc.setAttribute("UNIT",appPrefs.docUnitIndex);
794
        dc.setAttribute("RCD", appPrefs.RecentDCount);
795
        dc.setAttribute("DOC", appPrefs.DocDir);
796
        dc.setAttribute("PROFILES", appPrefs.ProfileDir);
797
        dc.setAttribute("SCRIPTS", appPrefs.ScriptDir);
798
        dc.setAttribute("TEMPLATES", appPrefs.documentTemplatesDir);
799
        dc.setAttribute("SHOWGUIDES", static_cast<int>(appPrefs.guidesSettings.guidesShown));
800
        dc.setAttribute("FRV", static_cast<int>(appPrefs.guidesSettings.framesShown));
801
        dc.setAttribute("SHOWMARGIN", static_cast<int>(appPrefs.guidesSettings.marginsShown));
802
        dc.setAttribute("SHOWBASE", static_cast<int>(appPrefs.guidesSettings.baseShown));
803
        dc.setAttribute("SHOWLINK", static_cast<int>(appPrefs.guidesSettings.linkShown));
804
        dc.setAttribute("SHOWPICT", static_cast<int>(appPrefs.guidesSettings.showPic));
805
        dc.setAttribute("SHOWControl", static_cast<int>(appPrefs.guidesSettings.showControls));
806
        dc.setAttribute("rulerMode", static_cast<int>(appPrefs.guidesSettings.rulerMode));
807
        dc.setAttribute("ScratchBottom", appPrefs.ScratchBottom);
808
        dc.setAttribute("ScratchLeft", appPrefs.ScratchLeft);
809
        dc.setAttribute("ScratchRight", appPrefs.ScratchRight);
810
        dc.setAttribute("ScratchTop", appPrefs.ScratchTop);
811
        dc.setAttribute("STECOLOR", appPrefs.STEcolor.name());
812
        dc.setAttribute("STEFONT", appPrefs.STEfont);
813
        dc.setAttribute("STYLEPREVIEW", static_cast<int>(appPrefs.haveStylePreview));
814
        dc.setAttribute("StartUp", static_cast<int>(appPrefs.showStartupDialog));
815
        elem.appendChild(dc);
816
        QDomElement dc1=docu.createElement("GRID");
817
        dc1.setAttribute("MINOR",appPrefs.guidesSettings.minorGrid);
818
        dc1.setAttribute("MAJOR",appPrefs.guidesSettings.majorGrid);
819
        dc1.setAttribute("MINORC",appPrefs.guidesSettings.minorColor.name());
820
        dc1.setAttribute("MAJORC",appPrefs.guidesSettings.majorColor.name());
821
        dc1.setAttribute("GuideC", appPrefs.guidesSettings.guideColor.name());
822
        dc1.setAttribute("BaseC", appPrefs.guidesSettings.baseColor.name());
823
        dc1.setAttribute("GuideZ", appPrefs.guidesSettings.guideRad);
824
        dc1.setAttribute("BACKG", static_cast<int>(appPrefs.guidesSettings.before));
825
        dc1.setAttribute("SHOW", static_cast<int>(appPrefs.guidesSettings.gridShown));
826
        elem.appendChild(dc1);
827
        QDomElement dc1a=docu.createElement("PAGE");
828
        dc1a.setAttribute("PAGEC",appPrefs.DpapColor.name());
829
        dc1a.setAttribute("MARGC",appPrefs.guidesSettings.margColor.name());
830
        dc1a.setAttribute("RANDF", static_cast<int>(appPrefs.marginColored));
831
        dc1a.setAttribute("DScale",appPrefs.DisScale);
832
        elem.appendChild(dc1a);
833
        QDomElement dc2=docu.createElement("FONTS");
834
        dc2.setAttribute("FACE",appPrefs.toolSettings.defFont);
835
        dc2.setAttribute("SIZE",appPrefs.toolSettings.defSize / 10.0);
836
        dc2.setAttribute("AutomaticSubst", static_cast<int>(appPrefs.askBeforeSubstituite));
837
        elem.appendChild(dc2);
838
        QDomElement dc3=docu.createElement("TYPO");
839
        dc3.setAttribute("TIEF",appPrefs.typographicSettings.valueSubScript);
840
        dc3.setAttribute("TIEFSC",appPrefs.typographicSettings.scalingSubScript);
841
        dc3.setAttribute("HOCH",appPrefs.typographicSettings.valueSuperScript);
842
        dc3.setAttribute("HOCHSC",appPrefs.typographicSettings.scalingSuperScript);
843
        dc3.setAttribute("SMCAPS",appPrefs.typographicSettings.valueSmallCaps);
844
        dc3.setAttribute("AUTOL", appPrefs.typographicSettings.autoLineSpacing);
845
        dc3.setAttribute("BASE", appPrefs.typographicSettings.valueBaseGrid);
846
        dc3.setAttribute("BASEO", appPrefs.typographicSettings.offsetBaseGrid);
847
        if (appPrefs.typographicSettings.valueUnderlinePos == -1)
848
                dc3.setAttribute("UnderlinePos", appPrefs.typographicSettings.valueUnderlinePos);
849
        else
850
                dc3.setAttribute("UnderlinePos", appPrefs.typographicSettings.valueUnderlinePos / 10.0);
851
        if (appPrefs.typographicSettings.valueUnderlineWidth == -1)
852
                dc3.setAttribute("UnderlineWidth", appPrefs.typographicSettings.valueUnderlineWidth);
853
        else
854
                dc3.setAttribute("UnderlineWidth", appPrefs.typographicSettings.valueUnderlineWidth / 10.0);
855
        if (appPrefs.typographicSettings.valueStrikeThruPos == -1)
856
                dc3.setAttribute("StrikeThruPos", appPrefs.typographicSettings.valueStrikeThruPos);
857
        else
858
                dc3.setAttribute("StrikeThruPos", appPrefs.typographicSettings.valueStrikeThruPos / 10.0);
859
        if (appPrefs.typographicSettings.valueStrikeThruWidth == -1)
860
                dc3.setAttribute("StrikeThruWidth", appPrefs.typographicSettings.valueStrikeThruWidth);
861
        else
862
                dc3.setAttribute("StrikeThruWidth", appPrefs.typographicSettings.valueStrikeThruWidth / 10.0);
863
        elem.appendChild(dc3);
864
        QDomElement dc9=docu.createElement("TOOLS");
865
        dc9.setAttribute("PEN",appPrefs.toolSettings.dPen);
866
        dc9.setAttribute("BRUSH",appPrefs.toolSettings.dBrush);
867
        dc9.setAttribute("PENLINE",appPrefs.toolSettings.dPenLine);
868
        dc9.setAttribute("PENTEXT",appPrefs.toolSettings.dPenText);
869
        dc9.setAttribute("StrokeText",appPrefs.toolSettings.dStrokeText);
3093 fschmid 870
        dc9.setAttribute("TextBackGround", appPrefs.toolSettings.dTextBackGround);
871
        dc9.setAttribute("TextLineColor", appPrefs.toolSettings.dTextLineColor);
872
        dc9.setAttribute("TextBackGroundShade", appPrefs.toolSettings.dTextBackGroundShade);
873
        dc9.setAttribute("TextLineShade", appPrefs.toolSettings.dTextLineShade);
874
        dc9.setAttribute("TextPenShade", appPrefs.toolSettings.dTextPenShade);
875
        dc9.setAttribute("TextStrokeShade", appPrefs.toolSettings.dTextStrokeShade);
2889 cbradney 876
        dc9.setAttribute("TEXTCOL",appPrefs.toolSettings.dCols);
877
        dc9.setAttribute("TEXTGAP",appPrefs.toolSettings.dGap);
878
        dc9.setAttribute("TabWidth",appPrefs.toolSettings.dTabWidth);
879
        dc9.setAttribute("TabFill",appPrefs.toolSettings.tabFillChar);
880
        dc9.setAttribute("STIL",appPrefs.toolSettings.dLineArt);
881
        dc9.setAttribute("STILLINE",appPrefs.toolSettings.dLstyleLine);
882
        dc9.setAttribute("WIDTH",appPrefs.toolSettings.dWidth);
883
        dc9.setAttribute("WIDTHLINE",appPrefs.toolSettings.dWidthLine);
884
        dc9.setAttribute("PENSHADE",appPrefs.toolSettings.dShade2);
885
        dc9.setAttribute("LINESHADE",appPrefs.toolSettings.dShadeLine);
886
        dc9.setAttribute("BRUSHSHADE",appPrefs.toolSettings.dShade);
887
        dc9.setAttribute("MAGMIN",appPrefs.toolSettings.magMin);
888
        dc9.setAttribute("MAGMAX",appPrefs.toolSettings.magMax);
889
        dc9.setAttribute("MAGSTEP",appPrefs.toolSettings.magStep);
890
        dc9.setAttribute("CPICT",appPrefs.toolSettings.dBrushPict);
891
        dc9.setAttribute("PICTSHADE",appPrefs.toolSettings.shadePict);
892
        dc9.setAttribute("PICTSCX",appPrefs.toolSettings.scaleX);
893
        dc9.setAttribute("PICTSCY",appPrefs.toolSettings.scaleY);
894
        dc9.setAttribute("POLYC", appPrefs.toolSettings.polyC);
895
        dc9.setAttribute("POLYF", appPrefs.toolSettings.polyF);
896
        dc9.setAttribute("POLYR", appPrefs.toolSettings.polyR);
897
        dc9.setAttribute("POLYFD", appPrefs.toolSettings.polyFd);
898
        dc9.setAttribute("POLYS", static_cast<int>(appPrefs.toolSettings.polyS));
899
        dc9.setAttribute("PSCALE", static_cast<int>(appPrefs.toolSettings.scaleType));
900
        dc9.setAttribute("PASPECT", static_cast<int>(appPrefs.toolSettings.aspectRatio));
901
        dc9.setAttribute("EmbeddedPath", static_cast<int>(appPrefs.toolSettings.useEmbeddedPath));
902
        dc9.setAttribute("HalfRes", appPrefs.toolSettings.lowResType);
903
        dc9.setAttribute("StartArrow", appPrefs.toolSettings.dStartArrow);
904
        dc9.setAttribute("EndArrow", appPrefs.toolSettings.dEndArrow);
905
        elem.appendChild(dc9);
906
        QDomElement dc4=docu.createElement("MAINWINDOW");
907
        dc4.setAttribute("XPOS",appPrefs.mainWinSettings.xPosition);
908
        dc4.setAttribute("YPOS",appPrefs.mainWinSettings.yPosition);
909
        dc4.setAttribute("WIDTH",appPrefs.mainWinSettings.width);
910
        dc4.setAttribute("HEIGHT",appPrefs.mainWinSettings.height);
911
        elem.appendChild(dc4);
912
        QDomElement dc5=docu.createElement("TOOLPALETTE");
913
        dc5.setAttribute("VISIBLE", static_cast<int>(appPrefs.mainToolBarSettings.visible));
914
        dc5.setAttribute("PDFVISIBLE", static_cast<int>(appPrefs.pdfToolBarSettings.visible));
915
        elem.appendChild(dc5);
916
        QDomElement dc73=docu.createElement("SCRAPBOOK");
917
        dc73.setAttribute("PREVIEW",appPrefs.PSize);
918
        dc73.setAttribute("SAVE", static_cast<int>(appPrefs.SaveAtQ));
919
        elem.appendChild(dc73);
920
        QDomElement dc75=docu.createElement("PAGEPALETTE");
921
        dc75.setAttribute("THUMBS", static_cast<int>(appPrefs.SepalT));
922
        dc75.setAttribute("NAMES", static_cast<int>(appPrefs.SepalN));
923
        elem.appendChild(dc75);
924
        QDomElement dc76=docu.createElement("DOKUMENT");
925
        dc76.setAttribute("PAGESIZE",appPrefs.pageSize);
926
        dc76.setAttribute("AUSRICHTUNG",appPrefs.pageOrientation);
927
        dc76.setAttribute("BREITE",appPrefs.PageWidth);
928
        dc76.setAttribute("HOEHE",appPrefs.PageHeight);
929
        dc76.setAttribute("RANDO",appPrefs.RandOben);
930
        dc76.setAttribute("RANDU",appPrefs.RandUnten);
931
        dc76.setAttribute("RANDL",appPrefs.RandLinks);
932
        dc76.setAttribute("RANDR",appPrefs.RandRechts);
2894 fschmid 933
        dc76.setAttribute("DOPPEL", appPrefs.FacingPages);
2889 cbradney 934
        dc76.setAttribute("AutoSave", static_cast<int>(appPrefs.AutoSave));
935
        dc76.setAttribute("AutoSaveTime", appPrefs.AutoSaveTime);
936
        elem.appendChild(dc76);
3016 fschmid 937
        QDomElement pageSetAttr = docu.createElement("PageSets");
938
        QValueList<PageSet>::Iterator itpgset;
939
        for(itpgset = appPrefs.pageSets.begin(); itpgset != appPrefs.pageSets.end(); ++itpgset )
940
        {
941
                QDomElement pgst = docu.createElement("Set");
942
                pgst.setAttribute("Name", (*itpgset).Name);
943
                pgst.setAttribute("FirstPage", (*itpgset).FirstPage);
944
                pgst.setAttribute("Rows", (*itpgset).Rows);
945
                pgst.setAttribute("Columns", (*itpgset).Columns);
946
                pgst.setAttribute("GapHorizontal", (*itpgset).GapHorizontal);
947
                pgst.setAttribute("GapVertical", (*itpgset).GapVertical);
948
                pgst.setAttribute("GapBelow", (*itpgset).GapBelow);
3026 fschmid 949
                QStringList pNames = (*itpgset).pageNames;
950
                QStringList::Iterator itpgsetN;
951
                for(itpgsetN = pNames.begin(); itpgsetN != pNames.end(); ++itpgsetN )
952
                {
953
                        QDomElement pgstN = docu.createElement("PageNames");
954
                        pgstN.setAttribute("Name", (*itpgsetN));
955
                        pgst.appendChild(pgstN);
956
                }
3016 fschmid 957
                pageSetAttr.appendChild(pgst);
958
        }
959
        elem.appendChild(pageSetAttr);
3033 cbradney 960
        CheckerPrefsList::Iterator itcp;
961
        CheckerPrefsList::Iterator itcpend=appPrefs.checkerProfiles.end();
962
        for (itcp = appPrefs.checkerProfiles.begin(); itcp != itcpend; ++itcp)
2889 cbradney 963
        {
964
                QDomElement dc79a=docu.createElement("CheckProfile");
965
                dc79a.setAttribute("Name",itcp.key());
966
                dc79a.setAttribute("ignoreErrors", static_cast<int>(itcp.data().ignoreErrors));
967
                dc79a.setAttribute("autoCheck", static_cast<int>(itcp.data().autoCheck));
968
                dc79a.setAttribute("checkGlyphs", static_cast<int>(itcp.data().checkGlyphs));
969
                dc79a.setAttribute("checkOrphans", static_cast<int>(itcp.data().checkOrphans));
970
                dc79a.setAttribute("checkOverflow", static_cast<int>(itcp.data().checkOverflow));
971
                dc79a.setAttribute("checkPictures", static_cast<int>(itcp.data().checkPictures));
972
                dc79a.setAttribute("checkResolution", static_cast<int>(itcp.data().checkResolution));
973
                dc79a.setAttribute("checkTransparency", static_cast<int>(itcp.data().checkTransparency));
974
                dc79a.setAttribute("checkAnnotations", static_cast<int>(itcp.data().checkAnnotations));
975
                dc79a.setAttribute("checkRasterPDF", static_cast<int>(itcp.data().checkRasterPDF));
976
                dc79a.setAttribute("minResolution",itcp.data().minResolution);
977
                elem.appendChild(dc79a);
978
        }
979
        QDomElement dc81=docu.createElement("CMS");
980
        dc81.setAttribute("DPSo", static_cast<int>(appPrefs.DCMSset.SoftProofOn));
981
        dc81.setAttribute("DPuse", static_cast<int>(appPrefs.DCMSset.CMSinUse));
982
        dc81.setAttribute("DPgam", static_cast<int>(appPrefs.DCMSset.GamutCheck));
983
        dc81.setAttribute("DPbla", static_cast<int>(appPrefs.DCMSset.BlackPoint));
984
        dc81.setAttribute("DPMo",appPrefs.DCMSset.DefaultMonitorProfile);
985
        dc81.setAttribute("DPPr",appPrefs.DCMSset.DefaultPrinterProfile);
2984 fschmid 986
        dc81.setAttribute("DPIn",appPrefs.DCMSset.DefaultImageRGBProfile);
987
        dc81.setAttribute("DPInCMYK",appPrefs.DCMSset.DefaultImageCMYKProfile);
988
        dc81.setAttribute("DPIn2",appPrefs.DCMSset.DefaultSolidColorProfile);
2889 cbradney 989
        dc81.setAttribute("DIPr",appPrefs.DCMSset.DefaultIntentPrinter);
990
        dc81.setAttribute("DIMo",appPrefs.DCMSset.DefaultIntentMonitor);
2984 fschmid 991
        dc81.setAttribute("DIMo2",appPrefs.DCMSset.DefaultIntentImages);
2889 cbradney 992
        elem.appendChild(dc81);
993
        QDomElement dc82=docu.createElement("PRINTER");
994
        dc82.setAttribute("NAME",appPrefs.PrinterName);
995
        dc82.setAttribute("FILE",appPrefs.PrinterFile);
996
        dc82.setAttribute("COMMAND",appPrefs.PrinterCommand);
997
        dc82.setAttribute("CLIPMARGIN", static_cast<int>(appPrefs.ClipMargin));
998
        dc82.setAttribute("GMODE", static_cast<int>(appPrefs.GCRMode));
999
        elem.appendChild(dc82);
1000
        QDomElement dc8Pr=docu.createElement("PRINTPREVIEW");
1001
        dc8Pr.setAttribute("Mode", static_cast<int>(appPrefs.PrPr_Mode));
1002
        dc8Pr.setAttribute("GcrMode", static_cast<int>(appPrefs.Gcr_Mode));
1003
        dc8Pr.setAttribute("AlphaText", static_cast<int>(appPrefs.PrPr_AlphaText));
1004
        dc8Pr.setAttribute("AlphaGraphics", static_cast<int>(appPrefs.PrPr_AlphaGraphics));
1005
        dc8Pr.setAttribute("Transparency", static_cast<int>(appPrefs.PrPr_Transparency));
1006
        dc8Pr.setAttribute("Cyan", static_cast<int>(appPrefs.PrPr_C));
1007
        dc8Pr.setAttribute("Magenta", static_cast<int>(appPrefs.PrPr_M));
1008
        dc8Pr.setAttribute("Yellow", static_cast<int>(appPrefs.PrPr_Y));
1009
        dc8Pr.setAttribute("Black", static_cast<int>(appPrefs.PrPr_K));
1010
        elem.appendChild(dc8Pr);
1011
        QDomElement dc8Ex = docu.createElement("EXTERNAL");
1012
        dc8Ex.setAttribute("GIMP", imageEditorExecutable());
1013
        dc8Ex.setAttribute("GS", ghostscriptExecutable());
1014
        dc8Ex.setAttribute("AlphaGraphics", static_cast<int>(appPrefs.gs_AntiAliasGraphics));
1015
        dc8Ex.setAttribute("AlphaText", static_cast<int>(appPrefs.gs_AntiAliasText));
1016
        dc8Ex.setAttribute("Resolution", appPrefs.gs_Resolution);
1017
        elem.appendChild(dc8Ex);
1018
        QDomElement rde=docu.createElement("HYPHEN");
1019
        rde.setAttribute("LANG", appPrefs.Language);
1020
        rde.setAttribute("WORDLEN", appPrefs.MinWordLen);
1021
        rde.setAttribute("HYCOUNT", appPrefs.HyCount);
1022
        rde.setAttribute("MODE", static_cast<int>(appPrefs.Automatic));
1023
        rde.setAttribute("INMODE", static_cast<int>(appPrefs.AutoCheck));
1024
        elem.appendChild(rde);
1025
        ColorList::Iterator itc;
1026
        for (itc = appPrefs.DColors.begin(); itc != appPrefs.DColors.end(); ++itc)
1027
        {
1028
                QDomElement co=docu.createElement("COLOR");
1029
                co.setAttribute("NAME",itc.key());
1030
                co.setAttribute("RGB",appPrefs.DColors[itc.key()].getRGBColor().name());
1031
                co.setAttribute("CMYK",appPrefs.DColors[itc.key()].name());
3051 fschmid 1032
                co.setAttribute("Spot",static_cast<int>(appPrefs.DColors[itc.key()].isSpotColor()));
3060 fschmid 1033
                co.setAttribute("Register",static_cast<int>(appPrefs.DColors[itc.key()].isRegistrationColor()));
2889 cbradney 1034
                elem.appendChild(co);
1035
        }
1036
        for ( SCFontsIterator itf(appPrefs.AvailFonts); itf.current(); ++itf)
1037
        {
1038
                QDomElement fn=docu.createElement("FONT");
1039
                fn.setAttribute("NAME",itf.currentKey());
1040
                fn.setAttribute("EMBED",static_cast<int>(itf.current()->EmbedPS));
1041
                fn.setAttribute("USE", static_cast<int>(itf.current()->UseFont));
1042
                fn.setAttribute("SUBSET", static_cast<int>(itf.current()->Subset));
1043
                elem.appendChild(fn);
1044
        }
1045
        for (uint rd=0; rd<appPrefs.RecentDocs.count(); ++rd)
1046
        {
1047
                QDomElement rde=docu.createElement("RECENT");
1048
                rde.setAttribute("NAME",appPrefs.RecentDocs[rd]);
1049
                elem.appendChild(rde);
1050
        }
1051
        for (QMap<QString,Keys>::Iterator ksc=appPrefs.KeyActions.begin(); ksc!=appPrefs.KeyActions.end(); ++ksc)
1052
        {
1053
                QDomElement kscc=docu.createElement("SHORTCUT");
1054
                kscc.setAttribute("ACTION",ksc.data().actionName);
1055
                kscc.setAttribute("SEQUENCE",QString(ksc.data().keySequence).utf8());
1056
                elem.appendChild(kscc);
1057
        }
1058
        QMap<QString,QString>::Iterator itfsu;
1059
        for (itfsu = appPrefs.GFontSub.begin(); itfsu != appPrefs.GFontSub.end(); ++itfsu)
1060
        {
1061
                QDomElement fosu = docu.createElement("Substitute");
1062
                fosu.setAttribute("Name",itfsu.key());
1063
                fosu.setAttribute("Replace",itfsu.data());
1064
                elem.appendChild(fosu);
1065
        }
1066
        for (uint ccs=0; ccs<appPrefs.CustomColorSets.count(); ++ccs)
1067
        {
1068
                QDomElement cos=docu.createElement("COLORSET");
1069
                cos.setAttribute("NAME",appPrefs.CustomColorSets[ccs]);
1070
                elem.appendChild(cos);
1071
        }
1072
        QDomElement cosd=docu.createElement("DCOLORSET");
1073
        cosd.setAttribute("NAME",appPrefs.DColorSet);
1074
        elem.appendChild(cosd);
1075
        QDomElement pdf = docu.createElement("PDF");
1076
        pdf.setAttribute("Thumbnails", static_cast<int>(appPrefs.PDF_Options.Thumbnails));
1077
        pdf.setAttribute("Articles", static_cast<int>(appPrefs.PDF_Options.Articles));
1078
        pdf.setAttribute("Bookmarks", static_cast<int>(appPrefs.PDF_Options.Bookmarks));
1079
        pdf.setAttribute("Compress", static_cast<int>(appPrefs.PDF_Options.Compress));
1080
        pdf.setAttribute("CMethod", appPrefs.PDF_Options.CompressMethod);
1081
        pdf.setAttribute("Quality", appPrefs.PDF_Options.Quality);
1082
        pdf.setAttribute("MirrorH", static_cast<int>(appPrefs.PDF_Options.MirrorH));
1083
        pdf.setAttribute("MirrorV", static_cast<int>(appPrefs.PDF_Options.MirrorV));
1084
        pdf.setAttribute("RotateDeg", static_cast<int>(appPrefs.PDF_Options.RotateDeg));
1085
        pdf.setAttribute("PresentMode", static_cast<int>(appPrefs.PDF_Options.PresentMode));
1086
        pdf.setAttribute("RecalcPic", static_cast<int>(appPrefs.PDF_Options.RecalcPic));
1087
        pdf.setAttribute("Grayscale", static_cast<int>(appPrefs.PDF_Options.isGrayscale));
1088
        pdf.setAttribute("RGBMode", static_cast<int>(appPrefs.PDF_Options.UseRGB));
1089
        pdf.setAttribute("UseProfiles", static_cast<int>(appPrefs.PDF_Options.UseProfiles));
1090
        pdf.setAttribute("UseProfiles2", static_cast<int>(appPrefs.PDF_Options.UseProfiles2));
1091
        pdf.setAttribute("Binding", appPrefs.PDF_Options.Binding);
1092
        pdf.setAttribute("PicRes", appPrefs.PDF_Options.PicRes);
1093
        pdf.setAttribute("Resolution", appPrefs.PDF_Options.Resolution);
1094
        pdf.setAttribute("Version", appPrefs.PDF_Options.Version);
1095
        pdf.setAttribute("Intent", appPrefs.PDF_Options.Intent);
1096
        pdf.setAttribute("Intent2", appPrefs.PDF_Options.Intent2);
1097
        pdf.setAttribute("SolidP", appPrefs.PDF_Options.SolidProf);
1098
        pdf.setAttribute("ImageP", appPrefs.PDF_Options.ImageProf);
1099
        pdf.setAttribute("PrintP", appPrefs.PDF_Options.PrintProf);
1100
        pdf.setAttribute("InfoString", appPrefs.PDF_Options.Info);
1101
        pdf.setAttribute("BTop", appPrefs.PDF_Options.BleedTop);
1102
        pdf.setAttribute("BLeft", appPrefs.PDF_Options.BleedLeft);
1103
        pdf.setAttribute("BRight", appPrefs.PDF_Options.BleedRight);
1104
        pdf.setAttribute("BBottom", appPrefs.PDF_Options.BleedBottom);
1105
        pdf.setAttribute("ImagePr", static_cast<int>(appPrefs.PDF_Options.EmbeddedI));
1106
        pdf.setAttribute("PassOwner", appPrefs.PDF_Options.PassOwner);
1107
        pdf.setAttribute("PassUser", appPrefs.PDF_Options.PassUser);
1108
        pdf.setAttribute("Permissions", appPrefs.PDF_Options.Permissions);
1109
        pdf.setAttribute("Encrypt", static_cast<int>(appPrefs.PDF_Options.Encrypt));
1110
        pdf.setAttribute("UseLayers", static_cast<int>(appPrefs.PDF_Options.useLayers));
1111
        pdf.setAttribute("UseLpi", static_cast<int>(appPrefs.PDF_Options.UseLPI));
3079 fschmid 1112
        pdf.setAttribute("UseSpotColors", static_cast<int>(appPrefs.PDF_Options.UseSpotColors));
1113
        pdf.setAttribute("doMultiFile", static_cast<int>(appPrefs.PDF_Options.doMultiFile));
2889 cbradney 1114
        QMap<QString,LPIData>::Iterator itlp;
1115
        for (itlp = appPrefs.PDF_Options.LPISettings.begin(); itlp != appPrefs.PDF_Options.LPISettings.end(); ++itlp)
1116
        {
1117
                QDomElement pdf4 = docu.createElement("LPI");
1118
                pdf4.setAttribute("Color", itlp.key());
1119
                pdf4.setAttribute("Frequency", itlp.data().Frequency);
1120
                pdf4.setAttribute("Angle", itlp.data().Angle);
1121
                pdf4.setAttribute("SpotFunction", itlp.data().SpotFunc);
1122
                pdf.appendChild(pdf4);
1123
        }
1124
        elem.appendChild(pdf);
1125
        QDomElement docItemAttrs = docu.createElement("DefaultItemAttributes");
1126
        for(ObjAttrVector::Iterator objAttrIt = appPrefs.defaultItemAttributes.begin() ; objAttrIt != appPrefs.defaultItemAttributes.end(); ++objAttrIt )
1127
        {
1128
                QDomElement itemAttr = docu.createElement("ItemAttribute");
1129
                itemAttr.setAttribute("Name", (*objAttrIt).name);
1130
                itemAttr.setAttribute("Type", (*objAttrIt).type);
1131
                itemAttr.setAttribute("Value", (*objAttrIt).value);
1132
                itemAttr.setAttribute("Parameter", (*objAttrIt).parameter);
1133
                itemAttr.setAttribute("Relationship", (*objAttrIt).relationship);
1134
                itemAttr.setAttribute("RelationshipTo", (*objAttrIt).relationshipto);
1135
                itemAttr.setAttribute("AutoAddTo", (*objAttrIt).autoaddto);
1136
                docItemAttrs.appendChild(itemAttr);
1137
        }
1138
        elem.appendChild(docItemAttrs);
1139
        QDomElement tocElem = docu.createElement("TablesOfContents");
1140
        for(ToCSetupVector::Iterator tocSetupIt = appPrefs.defaultToCSetups.begin() ; tocSetupIt != appPrefs.defaultToCSetups.end(); ++tocSetupIt )
1141
        {
1142
                QDomElement tocsetup = docu.createElement("TableOfContents");
1143
                tocsetup.setAttribute("Name", (*tocSetupIt).name);
1144
                tocsetup.setAttribute("ItemAttributeName", (*tocSetupIt).itemAttrName);
1145
                tocsetup.setAttribute("FrameName", (*tocSetupIt).frameName);
1146
                tocsetup.setAttribute("ListNonPrinting", (*tocSetupIt).listNonPrintingFrames);
1147
                tocsetup.setAttribute("Style", (*tocSetupIt).textStyle);
1148
                tocsetup.setAttribute("NumberPlacement", (*tocSetupIt).pageLocation);
1149
                tocElem.appendChild(tocsetup);
1150
        }
1151
        elem.appendChild(tocElem);
1152
        // lorem ipsum
1153
        QDomElement liElem = docu.createElement("LoremIpsum");
1154
        liElem.setAttribute("useStandardLI", static_cast<int>(appPrefs.useStandardLI));
1155
        liElem.setAttribute("paragraphsLI", appPrefs.paragraphsLI);
1156
        elem.appendChild(liElem);
1157
        // write file
1158
        QFile f(ho);
1159
        if(!f.open(IO_WriteOnly))
1160
                return;
1161
        QTextStream s(&f);
1162
        s.setEncoding(QTextStream::UnicodeUTF8);
1163
        s<<docu.toString();
1164
        f.close();
1165
}
1166
 
1167
bool PrefsManager::ReadPref(QString ho)
1168
{
1169
        QDomDocument docu("scridoc");
1170
        QFile f(ho);
1171
        if(!f.open(IO_ReadOnly))
1172
                return false;
1173
        QTextStream ts(&f);
1174
        ts.setEncoding(QTextStream::UnicodeUTF8);
1175
        QString errorMsg;
1176
        int errorLine = 0, errorColumn = 0;
1177
        if( !docu.setContent(ts.read(), &errorMsg, &errorLine, &errorColumn) )
1178
        {
1179
                qDebug("Failed to read prefs XML: %s at line %i, col %i", errorMsg.local8Bit().data(), errorLine, errorColumn);
1180
                f.close();
1181
                return false;
1182
        }
1183
        f.close();
1184
        QDomElement elem=docu.documentElement();
1185
        if (elem.tagName() != "SCRIBUSRC")
1186
                return false;
1187
        appPrefs.DColors.clear();
1188
        ScColor lf = ScColor();
1189
        appPrefs.checkerProfiles.clear();
1190
        QDomNode DOC=elem.firstChild();
1191
        while(!DOC.isNull())
1192
        {
1193
                QDomElement dc=DOC.toElement();
1194
                if (dc.tagName()=="GUI")
1195
                {
1196
                        appPrefs.GUI = dc.attribute("STILT","Default");
1197
                        appPrefs.Wheelval = QStoInt(dc.attribute("RAD"));
1198
                        appPrefs.guidesSettings.grabRad = QStoInt(dc.attribute("GRAB","4"));
1199
                        appPrefs.docUnitIndex = QStoInt(dc.attribute("UNIT","0"));
1200
                        appPrefs.AppFontSize = QStoInt(dc.attribute("APF","12"));
1201
                        appPrefs.RecentDCount = dc.attribute("RCD","5").toUInt();
1202
                        appPrefs.DocDir = dc.attribute("DOC","");
1203
                        appPrefs.ProfileDir = dc.attribute("PROFILES","");
1204
                        appPrefs.ScriptDir = dc.attribute("SCRIPTS","");
1205
                        appPrefs.documentTemplatesDir = dc.attribute("TEMPLATES","");
1206
                        appPrefs.guidesSettings.guidesShown = static_cast<bool>(QStoInt(dc.attribute("SHOWGUIDES","1")));
1207
                        appPrefs.guidesSettings.framesShown = static_cast<bool>(QStoInt(dc.attribute("FRV","1")));
1208
                        appPrefs.guidesSettings.marginsShown = static_cast<bool>(QStoInt(dc.attribute("SHOWMARGIN","1")));
1209
                        appPrefs.guidesSettings.baseShown = static_cast<bool>(QStoInt(dc.attribute("SHOWBASE","1")));
1210
                        appPrefs.guidesSettings.linkShown = static_cast<bool>(QStoInt(dc.attribute("SHOWLINK","0")));
1211
                        appPrefs.guidesSettings.showPic = static_cast<bool>(QStoInt(dc.attribute("SHOWPICT","1")));
1212
                        appPrefs.guidesSettings.showControls = static_cast<bool>(QStoInt(dc.attribute("SHOWControl","0")));
1213
                        appPrefs.guidesSettings.rulerMode = static_cast<bool>(QStoInt(dc.attribute("rulerMode","1")));
1214
                        appPrefs.haveStylePreview = static_cast<bool>(QStoInt(dc.attribute("STYLEPREVIEW","1")));
1215
                        appPrefs.showStartupDialog = static_cast<bool>(QStoInt(dc.attribute("StartUp","1")));
1216
                        appPrefs.ScratchBottom = QStodouble(dc.attribute("ScratchBottom", "20"));
3142 cbradney 1217
                        appPrefs.ScratchLeft = QStodouble(dc.attribute("ScratchLeft", "100"));
2889 cbradney 1218
                        appPrefs.ScratchRight = QStodouble(dc.attribute("ScratchRight", "100"));
1219
                        appPrefs.ScratchTop = QStodouble(dc.attribute("ScratchTop", "20"));
1220
                        if (dc.hasAttribute("STECOLOR"))
1221
                                appPrefs.STEcolor = QColor(dc.attribute("STECOLOR"));
1222
                        if (dc.hasAttribute("STEFONT"))
1223
                                appPrefs.STEfont = dc.attribute("STEFONT");
1224
                }
1225
                if (dc.tagName()=="GRID")
1226
                {
1227
                        appPrefs.guidesSettings.minorGrid = QStodouble(dc.attribute("MINOR"));
1228
                        appPrefs.guidesSettings.majorGrid = QStodouble(dc.attribute("MAJOR"));
1229
                        appPrefs.guidesSettings.minorColor = QColor(dc.attribute("MINORC"));
1230
                        appPrefs.guidesSettings.majorColor = QColor(dc.attribute("MAJORC"));
1231
                        appPrefs.guidesSettings.before = static_cast<bool>(QStoInt(dc.attribute("BACKG","1")));
1232
                        appPrefs.guidesSettings.gridShown = static_cast<bool>(QStoInt(dc.attribute("SHOW","0")));
1233
                        if (dc.hasAttribute("GuideC"))
1234
                                appPrefs.guidesSettings.guideColor = QColor(dc.attribute("GuideC"));
1235
                        if (dc.hasAttribute("GuideZ"))
1236
                                appPrefs.guidesSettings.guideRad = QStodouble(dc.attribute("GuideZ"));
1237
                        if (dc.hasAttribute("BaseC"))
1238
                                appPrefs.guidesSettings.baseColor = QColor(dc.attribute("BaseC"));
1239
                }
1240
                if (dc.tagName()=="PAGE")
1241
                {
1242
                        appPrefs.DpapColor = QColor(dc.attribute("PAGEC"));
1243
                        appPrefs.guidesSettings.margColor = QColor(dc.attribute("MARGC","#0000ff"));
1244
                        appPrefs.marginColored = static_cast<bool>(QStoInt(dc.attribute("RANDF","0")));
1245
                        appPrefs.DisScale = QStodouble(dc.attribute("DScale","1"));
1246
                }
1247
                if (dc.tagName()=="TYPO")
1248
                {
1249
                        appPrefs.typographicSettings.valueSuperScript = QStoInt(dc.attribute("HOCH"));
1250
                        appPrefs.typographicSettings.scalingSuperScript = QStoInt(dc.attribute("HOCHSC"));
1251
                        appPrefs.typographicSettings.valueSubScript = QStoInt(dc.attribute("TIEF"));
1252
                        appPrefs.typographicSettings.scalingSubScript = QStoInt(dc.attribute("TIEFSC"));
1253
                        appPrefs.typographicSettings.valueSmallCaps = QStoInt(dc.attribute("SMCAPS"));
1254
                        appPrefs.typographicSettings.valueBaseGrid = QStodouble(dc.attribute("BASE", "12"));
1255
                        appPrefs.typographicSettings.offsetBaseGrid = QStodouble(dc.attribute("BASEO", "0"));
1256
                        appPrefs.typographicSettings.autoLineSpacing = QStoInt(dc.attribute("AUTOL","20"));
1257
                        double ulp = QStodouble(dc.attribute("UnderlinePos","-1"));
1258
                        if (ulp != -1)
1259
                                appPrefs.typographicSettings.valueUnderlinePos = qRound(ulp * 10);
1260
                        else
1261
                                appPrefs.typographicSettings.valueUnderlinePos = -1;
1262
                        double ulw = QStodouble(dc.attribute("UnderlineWidth","-1"));
1263
                        if (ulw != -1)
1264
                                appPrefs.typographicSettings.valueUnderlineWidth = qRound(ulw * 10);
1265
                        else
1266
                                appPrefs.typographicSettings.valueUnderlineWidth = -1;
1267
                        double stp = QStodouble(dc.attribute("StrikeThruPos","-1"));
1268
                        if (stp != -1)
1269
                                appPrefs.typographicSettings.valueStrikeThruPos = qRound(ulp * 10);
1270
                        else
1271
                                appPrefs.typographicSettings.valueStrikeThruPos = -1;
1272
                        double stw = QStodouble(dc.attribute("StrikeThruWidth","-1"));
1273
                        if (stw != -1)
1274
                                appPrefs.typographicSettings.valueStrikeThruWidth = qRound(stw * 10);
1275
                        else
1276
                                appPrefs.typographicSettings.valueStrikeThruWidth = -1;
1277
                }
1278
                if (dc.tagName()=="TOOLS")
1279
                {
1280
                        appPrefs.toolSettings.dPen = dc.attribute("PEN");
1281
                        appPrefs.toolSettings.dBrush = dc.attribute("BRUSH");
1282
                        appPrefs.toolSettings.dPenLine = dc.attribute("PENLINE");
1283
                        appPrefs.toolSettings.dPenText = dc.attribute("PENTEXT");
1284
                        appPrefs.toolSettings.dStrokeText = dc.attribute("StrokeText", appPrefs.toolSettings.dPenText);
3093 fschmid 1285
                        appPrefs.toolSettings.dTextBackGround = dc.attribute("TextBackGround", "None");
1286
                        appPrefs.toolSettings.dTextLineColor = dc.attribute("TextLineColor", "None");
1287
                        appPrefs.toolSettings.dTextBackGroundShade = QStoInt(dc.attribute("TextBackGroundShade", "100"));
1288
                        appPrefs.toolSettings.dTextLineShade = QStoInt(dc.attribute("TextLineShade", "100"));
1289
                        appPrefs.toolSettings.dTextPenShade = QStoInt(dc.attribute("TextPenShade", "100"));
1290
                        appPrefs.toolSettings.dTextStrokeShade = QStoInt(dc.attribute("TextStrokeShade", "100"));
2889 cbradney 1291
                        appPrefs.toolSettings.dCols = QStoInt(dc.attribute("TEXTCOL", "1"));
1292
                        appPrefs.toolSettings.dGap = QStodouble(dc.attribute("TEXTGAP", "0.0"));
1293
                        appPrefs.toolSettings.tabFillChar = dc.attribute("TabFill", "");
1294
                        appPrefs.toolSettings.dTabWidth = QStodouble(dc.attribute("TabWidth", "36.0"));
1295
                        appPrefs.toolSettings.dLineArt = QStoInt(dc.attribute("STIL"));
1296
                        appPrefs.toolSettings.dLstyleLine = QStoInt(dc.attribute("STILLINE"));
1297
                        appPrefs.toolSettings.dWidth = QStodouble(dc.attribute("WIDTH"));
1298
                        appPrefs.toolSettings.dWidthLine = QStodouble(dc.attribute("WIDTHLINE"));
1299
                        appPrefs.toolSettings.dShade2 = QStoInt(dc.attribute("PENSHADE"));
1300
                        appPrefs.toolSettings.dShadeLine = QStoInt(dc.attribute("LINESHADE"));
1301
                        appPrefs.toolSettings.dShade = QStoInt(dc.attribute("BRUSHSHADE"));
1302
                        appPrefs.toolSettings.magMin = QStoInt(dc.attribute("MAGMIN","10"));
1303
                        appPrefs.toolSettings.magMax = QStoInt(dc.attribute("MAGMAX","3200"));
1304
                        appPrefs.toolSettings.magStep = QStoInt(dc.attribute("MAGSTEP","25"));
1305
                        appPrefs.toolSettings.dBrushPict = dc.attribute("CPICT");
1306
                        appPrefs.toolSettings.shadePict = QStoInt(dc.attribute("PICTSHADE","100"));
1307
                        appPrefs.toolSettings.scaleX = QStodouble(dc.attribute("PICTSCX","1"));
1308
                        appPrefs.toolSettings.scaleY = QStodouble(dc.attribute("PICTSCY","1"));
1309
                        appPrefs.toolSettings.scaleType = static_cast<bool>(QStoInt(dc.attribute("PSCALE", "1")));
1310
                        appPrefs.toolSettings.aspectRatio = static_cast<bool>(QStoInt(dc.attribute("PASPECT", "0")));
1311
                        appPrefs.toolSettings.useEmbeddedPath = static_cast<bool>(QStoInt(dc.attribute("EmbeddedPath", "0")));
1312
                        appPrefs.toolSettings.lowResType = QStoInt(dc.attribute("HalfRes", "1"));
1313
                        appPrefs.toolSettings.polyC = QStoInt(dc.attribute("POLYC", "4"));
1314
                        appPrefs.toolSettings.polyF = QStodouble(dc.attribute("POLYF", "0.5"));
1315
                        appPrefs.toolSettings.polyR = QStodouble(dc.attribute("POLYR", "0"));
1316
                        appPrefs.toolSettings.polyFd = QStoInt(dc.attribute("POLYFD", "0"));
1317
                        appPrefs.toolSettings.polyS = static_cast<bool>(QStoInt(dc.attribute("POLYS", "0")));
1318
                        appPrefs.toolSettings.dStartArrow = QStoInt(dc.attribute("StartArrow", "0"));
1319
                        appPrefs.toolSettings.dEndArrow = QStoInt(dc.attribute("EndArrow", "0"));
1320
                }
1321
                if (dc.tagName()=="MAINWINDOW")
1322
                {
1323
                        appPrefs.mainWinSettings.xPosition = QStoInt(dc.attribute("XPOS"));
1324
                        appPrefs.mainWinSettings.yPosition = QStoInt(dc.attribute("YPOS"));
1325
                        appPrefs.mainWinSettings.width = QStoInt(dc.attribute("WIDTH"));
1326
                        appPrefs.mainWinSettings.height = QStoInt(dc.attribute("HEIGHT"));
1327
                }
1328
                if (dc.tagName()=="PAGEPALETTE")
1329
                {
1330
                        appPrefs.SepalT = static_cast<bool>(QStoInt(dc.attribute("THUMBS")));
1331
                        appPrefs.SepalN = static_cast<bool>(QStoInt(dc.attribute("NAMES")));
1332
                }
1333
                if (dc.tagName()=="SCRAPBOOK")
1334
                {
1335
                        appPrefs.PSize = QStoInt(dc.attribute("PREVIEW"));
1336
                        appPrefs.SaveAtQ = static_cast<bool>(QStoInt(dc.attribute("SAVE")));
1337
                }
1338
                if (dc.tagName() == "DOKUMENT")
1339
                {
1340
                        appPrefs.pageSize = dc.attribute("PAGESIZE","A4");
1341
                        appPrefs.pageOrientation = QStoInt(dc.attribute("AUSRICHTUNG","0"));
1342
                        appPrefs.PageWidth = QStodouble(dc.attribute("BREITE","595"));
1343
                        appPrefs.PageHeight = QStodouble(dc.attribute("HOEHE","842"));
1344
                        appPrefs.RandOben = QStodouble(dc.attribute("RANDO","9"));
1345
                        appPrefs.RandUnten = QStodouble(dc.attribute("RANDU","40"));
1346
                        appPrefs.RandLinks = QStodouble(dc.attribute("RANDL","9"));
1347
                        appPrefs.RandRechts = QStodouble(dc.attribute("RANDR","9"));
2894 fschmid 1348
                        appPrefs.FacingPages = QStoInt(dc.attribute("DOPPEL","0"));
2889 cbradney 1349
                        appPrefs.AutoSave = static_cast<bool>(QStoInt(dc.attribute("AutoSave","0")));
1350
                        appPrefs.AutoSaveTime = QStoInt(dc.attribute("AutoSaveTime","600000"));
1351
                }
3016 fschmid 1352
                if (dc.tagName()=="PageSets")
1353
                {
1354
                        QDomNode PGS = DOC.firstChild();
3026 fschmid 1355
                        if  (!PGS.namedItem("PageNames").isNull())
3016 fschmid 1356
                        {
3026 fschmid 1357
                                appPrefs.pageSets.clear();
1358
                                while(!PGS.isNull())
3016 fschmid 1359
                                {
3026 fschmid 1360
                                        QDomElement PgsAttr = PGS.toElement();
1361
                                        if(PgsAttr.tagName() == "Set")
1362
                                        {
1363
                                                struct PageSet pageS;
1364
                                                pageS.Name = PgsAttr.attribute("Name");
1365
                                                pageS.FirstPage = QStoInt(PgsAttr.attribute("FirstPage","0"));
1366
                                                pageS.Rows = QStoInt(PgsAttr.attribute("Rows","1"));
1367
                                                pageS.Columns = QStoInt(PgsAttr.attribute("Columns","1"));
1368
                                                pageS.GapHorizontal = QStodouble(PgsAttr.attribute("GapHorizontal","0"));
1369
                                                pageS.GapVertical = QStodouble(PgsAttr.attribute("GapVertical","0"));
1370
                                                pageS.GapBelow = QStodouble(PgsAttr.attribute("GapBelow","0"));
1371
                                                pageS.pageNames.clear();
1372
                                                QDomNode PGSN = PGS.firstChild();
1373
                                                while(!PGSN.isNull())
1374
                                                {
1375
                                                        QDomElement PgsAttrN = PGSN.toElement();
1376
                                                        if(PgsAttrN.tagName() == "PageNames")
1377
                                                                pageS.pageNames.append(PgsAttrN.attribute("Name"));
1378
                                                        PGSN = PGSN.nextSibling();
1379
                                                }
1380
                                                appPrefs.pageSets.append(pageS);
1381
                                        }
1382
                                        PGS = PGS.nextSibling();
3016 fschmid 1383
                                }
1384
                        }
1385
                }
2889 cbradney 1386
                if (dc.tagName()=="CMS")
1387
                {
1388
                        appPrefs.DCMSset.SoftProofOn = static_cast<bool>(QStoInt(dc.attribute("DPSo","0")));
1389
                        appPrefs.DCMSset.CMSinUse = static_cast<bool>(QStoInt(dc.attribute("DPuse","0")));
1390
                        appPrefs.DCMSset.GamutCheck = static_cast<bool>(QStoInt(dc.attribute("DPgam","0")));
1391
                        appPrefs.DCMSset.BlackPoint = static_cast<bool>(QStoInt(dc.attribute("DPbla","1")));
1392
                        appPrefs.DCMSset.DefaultMonitorProfile = dc.attribute("DPMo","");
1393
                        appPrefs.DCMSset.DefaultPrinterProfile = dc.attribute("DPPr","");
2984 fschmid 1394
                        appPrefs.DCMSset.DefaultImageRGBProfile = dc.attribute("DPIn","");
1395
                        appPrefs.DCMSset.DefaultImageCMYKProfile = dc.attribute("DPInCMYK","");
1396
                        appPrefs.DCMSset.DefaultSolidColorProfile = dc.attribute("DPIn2","");
2889 cbradney 1397
                        appPrefs.DCMSset.DefaultIntentPrinter = QStoInt(dc.attribute("DIPr","0"));
1398
                        appPrefs.DCMSset.DefaultIntentMonitor = QStoInt(dc.attribute("DIMo","3"));
2984 fschmid 1399
                        appPrefs.DCMSset.DefaultIntentImages = QStoInt(dc.attribute("DIMo2","3"));
2889 cbradney 1400
                }
1401
                if (!importingFrom12 && dc.tagName()=="SHORTCUT")
1402
                {
1403
                        if (appPrefs.KeyActions.contains(dc.attribute("ACTION")))
1404
                        {
1405
                                appPrefs.KeyActions[dc.attribute("ACTION")].actionName = dc.attribute("ACTION");
1406
                                appPrefs.KeyActions[dc.attribute("ACTION")].keySequence = dc.attribute("SEQUENCE");
1407
                        }
1408
                }
1409
                if (dc.tagName()=="RECENT")
1410
                        appPrefs.RecentDocs.append(dc.attribute("NAME"));
1411
                if (dc.tagName()=="Checker")
1412
                {
3142 cbradney 1413
                        appPrefs.curCheckProfile = dc.attribute("currentProfile", tr("PostScript"));
1414
                        //#2516 work around old values until people wont have them anymore, not that these
1415
                        //translated strings should be going into prefs anyway!
1416
                        if (appPrefs.curCheckProfile == tr("Postscript"))
1417
                                appPrefs.curCheckProfile == tr("PostScript");
2889 cbradney 1418
                }
1419
 
1420
                if (dc.tagName()=="CheckProfile")
1421
                {
1422
                        QString name=dc.attribute("Name");
1423
                        if(appPrefs.checkerProfiles.contains(name))
1424
                        {
1425
                                struct checkerPrefs checkerSettings;
1426
                                checkerSettings.ignoreErrors = static_cast<bool>(QStoInt(dc.attribute("ignoreErrors", "0")));
1427
                                checkerSettings.autoCheck = static_cast<bool>(QStoInt(dc.attribute("autoCheck", "1")));
1428
                                checkerSettings.checkGlyphs = static_cast<bool>(QStoInt(dc.attribute("checkGlyphs", "1")));
1429
                                checkerSettings.checkOrphans = static_cast<bool>(QStoInt(dc.attribute("checkOrphans", "1")));
1430
                                checkerSettings.checkOverflow = static_cast<bool>(QStoInt(dc.attribute("checkOverflow", "1")));
1431
                                checkerSettings.checkPictures = static_cast<bool>(QStoInt(dc.attribute("checkPictures", "1")));
1432
                                checkerSettings.checkResolution = static_cast<bool>(QStoInt(dc.attribute("checkResolution", "1")));
1433
                                checkerSettings.checkTransparency = static_cast<bool>(QStoInt(dc.attribute("checkTransparency", "1")));
1434
                                checkerSettings.minResolution = QStodouble(dc.attribute("minResolution","72"));
1435
                                checkerSettings.checkAnnotations = static_cast<bool>(QStoInt(dc.attribute("checkAnnotations", "0")));
1436
                                checkerSettings.checkRasterPDF = static_cast<bool>(QStoInt(dc.attribute("checkRasterPDF", "1")));
1437
                                appPrefs.checkerProfiles[name] = checkerSettings;
1438
                        }
1439
 
1440
                }
1441
                if (dc.tagName()=="PRINTER")
1442
                {
1443
                        appPrefs.PrinterName = dc.attribute("NAME");
1444
                        appPrefs.PrinterFile = dc.attribute("FILE");
1445
                        appPrefs.PrinterCommand = dc.attribute("COMMAND");
1446
                        appPrefs.ClipMargin = static_cast<bool>(QStoInt(dc.attribute("CLIPMARGIN", "1")));
1447
                        appPrefs.GCRMode = static_cast<bool>(QStoInt(dc.attribute("GMODE", "1")));
1448
                }
1449
                if (dc.tagName()=="PRINTPREVIEW")
1450
                {
1451
                        appPrefs.PrPr_Mode = static_cast<bool>(QStoInt(dc.attribute("Mode", "0")));
1452
                        appPrefs.Gcr_Mode = static_cast<bool>(QStoInt(dc.attribute("GcrMode", "1")));
1453
                        appPrefs.PrPr_AlphaText = static_cast<bool>(QStoInt(dc.attribute("AlphaText", "0")));
1454
                        appPrefs.PrPr_AlphaGraphics = static_cast<bool>(QStoInt(dc.attribute("AlphaGraphics", "0")));
1455
                        appPrefs.PrPr_Transparency = static_cast<bool>(QStoInt(dc.attribute("Transparency", "0")));
1456
                        appPrefs.PrPr_C = static_cast<bool>(QStoInt(dc.attribute("Cyan", "1")));
1457
                        appPrefs.PrPr_M = static_cast<bool>(QStoInt(dc.attribute("Magenta", "1")));
1458
                        appPrefs.PrPr_Y = static_cast<bool>(QStoInt(dc.attribute("Yellow", "1")));
1459
                        appPrefs.PrPr_K = static_cast<bool>(QStoInt(dc.attribute("Black", "1")));
1460
                }
1461
                if (dc.tagName()=="EXTERNAL")
1462
                {
1463
                        setGhostscriptExecutable(dc.attribute("GS", "gs"));
1464
                        appPrefs.gs_AntiAliasText = static_cast<bool>(QStoInt(dc.attribute("AlphaText", "0")));
1465
                        appPrefs.gs_AntiAliasGraphics = static_cast<bool>(QStoInt(dc.attribute("AlphaGraphics", "0")));
1466
                        appPrefs.gs_Resolution = QStoInt(dc.attribute("Resolution", "72"));
1467
                        setImageEditorExecutable(dc.attribute("GIMP", "gimp"));
1468
                }
1469
                if (dc.tagName()=="HYPHEN")
1470
                {
1471
                        if (!dc.attribute("LANG", "").isEmpty())
1472
                                appPrefs.Language = dc.attribute("LANG");
1473
                        appPrefs.MinWordLen = QStoInt(dc.attribute("WORDLEN", "3"));
1474
                        appPrefs.HyCount = QStoInt(dc.attribute("HYCOUNT", "2"));
1475
                        appPrefs.Automatic = static_cast<bool>(QStoInt(dc.attribute("MODE", "1")));
1476
                        appPrefs.AutoCheck = static_cast<bool>(QStoInt(dc.attribute("INMODE", "1")));
1477
                }
1478
                if (dc.tagName()=="FONTS")
1479
                {
1480
                        QString tmpf = dc.attribute("FACE");
1481
                        QString newFont = "";
1482
                        if (!appPrefs.AvailFonts.find(tmpf))
1483
                        {
1484
                                ScApp->showSplash(false);      
1485
                                MissingFont *dia = new MissingFont(0, tmpf, 0);
1486
                                dia->exec();
1487
                                newFont = dia->getReplacementFont();
1488
                                delete dia;
1489
                        }
1490
                        else
1491
                                newFont = dc.attribute("FACE");
1492
                        if (!newFont.isEmpty())
1493
                                appPrefs.toolSettings.defFont = newFont;
1494
                        appPrefs.toolSettings.defSize = qRound(QStodouble(dc.attribute("SIZE")) * 10.0);
1495
                        appPrefs.askBeforeSubstituite = static_cast<bool>(QStoInt(dc.attribute("AutomaticSubst", "1")));
1496
                }
1497
                if (dc.tagName()=="FONT")
1498
                {
1499
                        if (appPrefs.AvailFonts.find(dc.attribute("NAME")))
1500
                        {
1501
                                appPrefs.AvailFonts[dc.attribute("NAME")]->EmbedPS = static_cast<bool>(QStoInt(dc.attribute("EMBED")));
1502
                                appPrefs.AvailFonts[dc.attribute("NAME")]->UseFont &= static_cast<bool>(QStoInt(dc.attribute("USE","1")));
1503
                                appPrefs.AvailFonts[dc.attribute("NAME")]->Subset = static_cast<bool>(QStoInt(dc.attribute("SUBSET","0")));
1504
                        }
1505
                }
1506
                if (dc.tagName()=="COLOR")
1507
                {
1508
                        if (dc.hasAttribute("CMYK"))
1509
                                lf.setNamedColor(dc.attribute("CMYK"));
1510
                        else
1511
                                lf.fromQColor(QColor(dc.attribute("RGB")));
3051 fschmid 1512
                        if (dc.hasAttribute("Spot"))
3057 fschmid 1513
                                lf.setSpotColor(static_cast<bool>(QStoInt(dc.attribute("Spot"))));
3051 fschmid 1514
                        else
1515
                                lf.setSpotColor(false);
3060 fschmid 1516
                        if (dc.hasAttribute("Register"))
1517
                                lf.setRegistrationColor(static_cast<bool>(QStoInt(dc.attribute("Register"))));
1518
                        else
1519
                                lf.setRegistrationColor(false);
2889 cbradney 1520
                  appPrefs.DColors[dc.attribute("NAME")] = lf;
1521
                }
1522
                if (dc.tagName()=="Substitute")
1523
                  appPrefs.GFontSub[dc.attribute("Name")] = dc.attribute("Replace");
1524
                if (dc.tagName()=="COLORSET")
1525
                        appPrefs.CustomColorSets.append(dc.attribute("NAME"));
1526
                if (dc.tagName()=="DCOLORSET")
1527
                        appPrefs.DColorSet = dc.attribute("NAME");
1528
                if(dc.tagName()=="PDF")
1529
                {
1530
                        appPrefs.PDF_Options.Articles = static_cast<bool>(QStoInt(dc.attribute("Articles")));
1531
                        appPrefs.PDF_Options.Thumbnails = static_cast<bool>(QStoInt(dc.attribute("Thumbnails")));
1532
                        appPrefs.PDF_Options.Compress = static_cast<bool>(QStoInt(dc.attribute("Compress")));
1533
                        appPrefs.PDF_Options.CompressMethod = QStoInt(dc.attribute("CMethod","0"));
1534
                        appPrefs.PDF_Options.Quality = QStoInt(dc.attribute("Quality","0"));
1535
                        appPrefs.PDF_Options.RecalcPic = static_cast<bool>(QStoInt(dc.attribute("RecalcPic")));
1536
                        appPrefs.PDF_Options.Bookmarks = static_cast<bool>(QStoInt(dc.attribute("Bookmarks")));
1537
                        appPrefs.PDF_Options.MirrorH = static_cast<bool>(QStoInt(dc.attribute("MirrorH")));
1538
                        appPrefs.PDF_Options.MirrorV = static_cast<bool>(QStoInt(dc.attribute("MirrorV")));
1539
                        appPrefs.PDF_Options.RotateDeg = QStoInt(dc.attribute("RotateDeg","0"));
1540
                        appPrefs.PDF_Options.PresentMode = static_cast<bool>(QStoInt(dc.attribute("PresentMode")));
1541
                        appPrefs.PDF_Options.PicRes = QStoInt(dc.attribute("PicRes"));
1542
                        appPrefs.PDF_Options.Version = (PDFOptions::PDFVersion)QStoInt(dc.attribute("Version"));
1543
                        appPrefs.PDF_Options.Resolution = QStoInt(dc.attribute("Resolution"));
1544
                        appPrefs.PDF_Options.Binding = QStoInt(dc.attribute("Binding"));
1545
                        appPrefs.PDF_Options.Datei = "";
1546
                        appPrefs.PDF_Options.isGrayscale = static_cast<bool>(QStoInt(dc.attribute("Grayscale","0")));
1547
                        appPrefs.PDF_Options.UseRGB = static_cast<bool>(QStoInt(dc.attribute("RGBMode","0")));
1548
                        appPrefs.PDF_Options.UseProfiles = static_cast<bool>(QStoInt(dc.attribute("UseProfiles","0")));
1549
                        appPrefs.PDF_Options.UseProfiles2 = static_cast<bool>(QStoInt(dc.attribute("UseProfiles2","0")));
1550
                        appPrefs.PDF_Options.Intent = QStoInt(dc.attribute("Intent","1"));
1551
                        appPrefs.PDF_Options.Intent2 = QStoInt(dc.attribute("Intent2","1"));
1552
                        appPrefs.PDF_Options.SolidProf = dc.attribute("SolidP", "");
1553
                        appPrefs.PDF_Options.ImageProf = dc.attribute("ImageP", "");
1554
                        appPrefs.PDF_Options.PrintProf = dc.attribute("PrintP", "");
1555
                        appPrefs.PDF_Options.Info = dc.attribute("InfoString", "");
1556
                        appPrefs.PDF_Options.BleedTop = QStodouble(dc.attribute("BTop","0"));
1557
                        appPrefs.PDF_Options.BleedLeft = QStodouble(dc.attribute("BLeft","0"));
1558
                        appPrefs.PDF_Options.BleedRight = QStodouble(dc.attribute("BRight","0"));
1559
                        appPrefs.PDF_Options.BleedBottom = QStodouble(dc.attribute("BBottom","0"));
1560
                        appPrefs.PDF_Options.EmbeddedI = static_cast<bool>(QStoInt(dc.attribute("ImagePr","0")));
1561
                        appPrefs.PDF_Options.PassOwner = dc.attribute("PassOwner", "");
1562
                        appPrefs.PDF_Options.PassUser = dc.attribute("PassUser", "");
1563
                        appPrefs.PDF_Options.Permissions = QStoInt(dc.attribute("Permissions","-4"));
1564
                        appPrefs.PDF_Options.Encrypt = static_cast<bool>(QStoInt(dc.attribute("Encrypt","0")));
1565
                        appPrefs.PDF_Options.useLayers = static_cast<bool>(QStoInt(dc.attribute("UseLayers","0")));
1566
                        appPrefs.PDF_Options.UseLPI = static_cast<bool>(QStoInt(dc.attribute("UseLpi","0")));
3079 fschmid 1567
                        appPrefs.PDF_Options.UseSpotColors = static_cast<bool>(QStoInt(dc.attribute("UseSpotColors","1")));
1568
                        appPrefs.PDF_Options.doMultiFile = static_cast<bool>(QStoInt(dc.attribute("doMultiFile","0")));
2889 cbradney 1569
                        QDomNode PFO = DOC.firstChild();
1570
                        while(!PFO.isNull())
1571
                        {
1572
                                QDomElement pdfF = PFO.toElement();
1573
                                if(pdfF.tagName() == "LPI")
1574
                                {
1575
                                        struct LPIData lpo;
1576
                                        lpo.Angle = QStoInt(pdfF.attribute("Angle"));
1577
                                        lpo.Frequency = QStoInt(pdfF.attribute("Frequency"));
1578
                                        lpo.SpotFunc = QStoInt(pdfF.attribute("SpotFunction"));
1579
                                        appPrefs.PDF_Options.LPISettings[pdfF.attribute("Color")] = lpo;
1580
                                }
1581
                                PFO = PFO.nextSibling();
1582
                        }
1583
                }
1584
                if(dc.tagName()=="DefaultItemAttributes")
1585
                {
1586
                        QDomNode DIA = DOC.firstChild();
1587
                        appPrefs.defaultItemAttributes.clear();
1588
                        while(!DIA.isNull())
1589
                        {
1590
                                QDomElement itemAttr = DIA.toElement();
1591
                                if(itemAttr.tagName() == "ItemAttribute")
1592
                                {
1593
                                        ObjectAttribute objattr;
1594
                                        objattr.name=itemAttr.attribute("Name");
1595
                                        objattr.type=itemAttr.attribute("Type");
1596
                                        objattr.value=itemAttr.attribute("Value");
1597
                                        objattr.parameter=itemAttr.attribute("Parameter");
1598
                                        objattr.relationship=itemAttr.attribute("Relationship");
1599
                                        objattr.relationshipto=itemAttr.attribute("RelationshipTo");
1600
                                        objattr.autoaddto=itemAttr.attribute("AutoAddTo");
1601
                                        appPrefs.defaultItemAttributes.append(objattr);
1602
                                }
1603
                                DIA = DIA.nextSibling();
1604
                        }
1605
                }
1606
                if(dc.tagName()=="TablesOfContents")
1607
                {
1608
                        QDomNode TOC = DOC.firstChild();
1609
                        appPrefs.defaultToCSetups.clear();
1610
                        while(!TOC.isNull())
1611
                        {
1612
                                QDomElement tocElem = TOC.toElement();
1613
                                if(tocElem.tagName() == "TableOfContents")
1614
                                {
1615
                                        ToCSetup tocsetup;
1616
                                        tocsetup.name=tocElem.attribute("Name");
1617
                                        tocsetup.itemAttrName=tocElem.attribute("ItemAttributeName");
1618
                                        tocsetup.frameName=tocElem.attribute("FrameName");
1619
                                        tocsetup.listNonPrintingFrames=tocElem.attribute("ListNonPrinting");
1620
                                        tocsetup.textStyle=tocElem.attribute("Style");
1621
                                        QString numberPlacement=tocElem.attribute("NumberPlacement");
1622
                                        if (numberPlacement=="Beginning")
1623
                                                tocsetup.pageLocation=Beginning;
1624
                                        if (numberPlacement=="End")
1625
                                                tocsetup.pageLocation=End;
1626
                                        if (numberPlacement=="NotShown")
1627
                                                tocsetup.pageLocation=NotShown;
1628
                                        appPrefs.defaultToCSetups.append(tocsetup);
1629
                                }
1630
                                TOC = TOC.nextSibling();
1631
                        }
1632
                }
1633
                // lorem ispum
1634
                if (dc.tagName() == "LoremIpsum")
1635
                {
1636
                        appPrefs.useStandardLI = static_cast<bool>(QStoInt(dc.attribute("useStandardLI", "0")));
1637
                        appPrefs.paragraphsLI = QStoInt(dc.attribute("paragraphsLI", "10"));
1638
                }
1639
                DOC=DOC.nextSibling();
1640
        }
1641
        if (appPrefs.GUI != "Default")
1642
                qApp->setStyle(QStyleFactory::create(appPrefs.GUI));
1643
        QFont apf = qApp->font();
1644
        apf.setPointSize(appPrefs.AppFontSize);
1645
        qApp->setFont(apf,true);
1646
        return true;
1647
}
3097 cbradney 1648
 
1649
void PrefsManager::initDefaultCheckerPrefs(CheckerPrefsList* cp)
1650
{
1651
        if (cp!=NULL)
1652
        {
1653
                struct checkerPrefs checkerSettings;
1654
                checkerSettings.ignoreErrors = false;
1655
                checkerSettings.autoCheck = true;
1656
                checkerSettings.checkGlyphs = true;
1657
                checkerSettings.checkOrphans = true;
1658
                checkerSettings.checkOverflow = true;
1659
                checkerSettings.checkPictures = true;
1660
                checkerSettings.checkResolution = true;
1661
                checkerSettings.checkTransparency = true;
1662
                checkerSettings.checkAnnotations = false;
1663
                checkerSettings.checkRasterPDF = true;
1664
                checkerSettings.minResolution = 72.0;
1665
                //TODO Stop translating these into settings!!!!!!!!!
3142 cbradney 1666
                cp->insert( QT_TR_NOOP("PostScript"), checkerSettings);
3097 cbradney 1667
                cp->insert( QT_TR_NOOP("PDF 1.3"), checkerSettings);
1668
                checkerSettings.checkTransparency = false;
1669
                cp->insert( QT_TR_NOOP("PDF 1.4"), checkerSettings);
1670
                checkerSettings.checkTransparency = true;
1671
                checkerSettings.checkAnnotations = true;
1672
                checkerSettings.minResolution = 144.0;
1673
                cp->insert( QT_TR_NOOP("PDF/X-3"), checkerSettings);
1674
        }
1675
}