Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
1525 cbradney 1
#include <qdom.h>
2
#include <qprogressbar.h>
506 fschmid 3
#include <qfile.h>
4
#include <qfileinfo.h>
517 fschmid 5
#include <qtl.h>
6
#include <qcursor.h>
7
#include <qregexp.h>
8
#include <qdir.h>
9
#include <qtextcodec.h>
1525 cbradney 10
#include <qcheckbox.h>
517 fschmid 11
#include <cstdlib>
12
#include <cmath>
13
#include <qtextstream.h>
838 cbradney 14
#include "fileloader.h"
506 fschmid 15
#include "scribus.h"
16
#include "scribusXml.h"
517 fschmid 17
#include "missing.h"
1428 fschmid 18
#include "fontreplacedialog.h"
1525 cbradney 19
#include "units.h"
1549 subik 20
#include "pluginmanager.h"
617 cbradney 21
#ifdef _MSC_VER
22
 #if (_MSC_VER >= 1200)
23
  #include "win-config.h"
24
 #endif
506 fschmid 25
#else
617 cbradney 26
 #include "config.h"
506 fschmid 27
#endif
28
#ifdef HAVE_LIBZ
29
        #include <zlib.h>
30
#endif
31
extern bool loadText(QString nam, QString *Buffer);
1065 cbradney 32
extern void GetItemProps(bool newVersion, QDomElement *obj, struct CopyPasteBuffer *OB);
517 fschmid 33
extern double QStodouble(QString in);
34
extern int QStoInt(QString in);
690 cbradney 35
extern QColor SetColor(ScribusDoc *currentDoc, QString color, int shad);
506 fschmid 36
 
37
/*!
1227 cbradney 38
 \fn FileLoader::FileLoader(QString fileName, ScribusApp* app)
506 fschmid 39
 \author Franz Schmid
40
 \date
41
 \brief Constructor, sets the variable "FileName" to the input parameter fileName
42
 \param QString fileName
43
 \retval None
44
 */
516 fschmid 45
FileLoader::FileLoader(QString fileName, ScribusApp* app)
506 fschmid 46
{
47
        FileName = fileName;
48
        FileType = -1;
1549 subik 49
        havePS = app->pluginManager->DLLexists(6);
50
        haveSVG = app->pluginManager->DLLexists(10);
51
        haveSXD = app->pluginManager->DLLexists(12);
506 fschmid 52
}
53
 
54
/*!
55
 \fn int FileLoader::TestFile()
56
 \author Franz Schmid
57
 \date
58
 \brief Tests if the file "FileName" exists and determines the type of the file.
59
 \param None
60
 \retval int -1 if the file doesn't exist or any other error has occured, 0 for the old Format, 1 for the new Format, 2 for EPS and PS files, 3 for SVG files and 4 for PDF files
61
 */
62
int FileLoader::TestFile()
63
{
64
        QFileInfo fi = QFileInfo(FileName);
65
        int ret = -1;
66
        if (!fi.exists())
67
                ret = -1;
68
        QString ext = fi.extension(true).lower();
550 fschmid 69
        if ((ext.endsWith("sla.gz")) || (ext.endsWith("sla")) || (ext.endsWith("scd.gz")) || (ext.endsWith("scd")))
506 fschmid 70
                ret = CheckScribus();
550 fschmid 71
        else if (((ext.endsWith("ps")) || (ext.endsWith("eps"))) && (havePS))
506 fschmid 72
                ret = 2;
550 fschmid 73
        else if (((ext.endsWith("svg")) || (ext.endsWith("svgz"))) && (haveSVG))
506 fschmid 74
                ret = 3;
550 fschmid 75
        else if ((ext.endsWith("sxd")) && (haveSXD))
541 fschmid 76
                ret = 5;
506 fschmid 77
/*      if (ext == "pdf")
78
                ret = 4; */
79
        FileType = ret;
80
        return ret;
81
}
82
 
83
/*!
84
 \fn int FileLoader::CheckScribus()
85
 \author Franz Schmid
86
 \date
87
 \brief Checks which Scribus fileformat the File in FileName has.
88
 \param None
89
 \retval 0 for old Scribus files, 1 for Scribus files created by Scribus 1.3 and above
90
 */
91
int FileLoader::CheckScribus()
92
{
93
        int ret = -1;
94
        QString fText = ReadDatei(FileName);
95
        if (fText == "")
96
                return ret;
517 fschmid 97
        if ((fText.startsWith("<SCRIBUSUTF8NEW")) && (fText.contains("<PAGE ", TRUE) != 0))
98
                return 1;
506 fschmid 99
        if ((fText.startsWith("<SCRIBUS")) && (fText.contains("<PAGE ", TRUE) != 0))
100
                return 0;
101
        return ret;
102
}
103
 
104
/*!
105
 \fn QString FileLoader::ReadDatei(QString fileName)
106
 \author Franz Schmid
107
 \date
108
 \brief Auxiliary function loads the file "fileName" into a QString and does conversion from UTF8 if required
109
 \param QString fileName
110
 \retval QString Contents of the file, converted from UTF8
111
 */
112
QString FileLoader::ReadDatei(QString fileName)
113
{
114
/**
115
  * added to support gz docs
116
  * 2.7.2002 C.Toepp
117
  * <c.toepp@gmx.de>
118
  */
119
        QString f = "";
120
#ifdef HAVE_LIBZ
121
        if(fileName.right(2) == "gz")
122
        {
123
                gzFile gzDoc;
124
                char buff[4097];
125
                int i;
126
                gzDoc = gzopen(fileName.latin1(),"rb");
127
                if(gzDoc == NULL)
128
                        return "";
129
                while((i = gzread(gzDoc,&buff,4096)) > 0)
130
                {
131
                        buff[i] = '\0';
132
                        f.append(buff);
133
                }
134
                gzclose(gzDoc);
135
        }
136
        else
137
                loadText(fileName, &f);
138
#else
139
        loadText(fileName, &f);
140
#endif
141
        QString ff = "";
142
        if (f.startsWith("<SCRIBUSUTF8"))
143
                ff = QString::fromUtf8(f);
144
        else if (f.startsWith("<SCRIBUS"))
145
                ff = f;
146
        return ff;
147
/** end changes */
148
}
149
 
150
/*!
151
 \fn bool FileLoader::LoadFile(ScribusApp* app)
152
 \author Franz Schmid
153
 \date
154
 \brief Loads the file "FileName" as a Scribus document
155
 \param ScribusApp* app, pointer to the main application class
156
 \retval bool true when loading is succsessful, false otherwise
157
 */
158
bool FileLoader::LoadFile(ScribusApp* app)
159
{
160
        bool ret = false;
1468 fschmid 161
        newReplacement = false;
879 fschmid 162
        app->doc->guidesSettings.marginsShown = app->Prefs.guidesSettings.marginsShown;
163
        app->doc->guidesSettings.framesShown = app->Prefs.guidesSettings.framesShown;
164
        app->doc->guidesSettings.gridShown = app->Prefs.guidesSettings.gridShown;
165
        app->doc->guidesSettings.guidesShown = app->Prefs.guidesSettings.guidesShown;
166
        app->doc->guidesSettings.baseShown = app->Prefs.guidesSettings.baseShown;
167
        app->doc->guidesSettings.linkShown = app->Prefs.guidesSettings.linkShown;
1194 fschmid 168
        app->doc->toolSettings.polyC = app->Prefs.toolSettings.polyC;
169
        app->doc->toolSettings.polyF = app->Prefs.toolSettings.polyF;
170
        app->doc->toolSettings.polyR = app->Prefs.toolSettings.polyR;
171
        app->doc->toolSettings.polyFd = app->Prefs.toolSettings.polyFd;
172
        app->doc->toolSettings.polyS = app->Prefs.toolSettings.polyS;
734 fschmid 173
        app->doc->AutoSave = app->Prefs.AutoSave;
174
        app->doc->AutoSaveTime = app->Prefs.AutoSaveTime;
1428 fschmid 175
        ReplacedFonts.clear();
506 fschmid 176
        switch (FileType)
177
        {
178
                case 0:
179
                        {
180
                                ScriXmlDoc *ss = new ScriXmlDoc();
181
                                QObject::connect(ss, SIGNAL(NewPage(int)), app, SLOT(slotNewPage(int)));
1166 fschmid 182
                                ss->ReplacedFonts.clear();
1468 fschmid 183
                                ss->newReplacement = false;
506 fschmid 184
                                ret = ss->ReadDoc(FileName, app->Prefs.AvailFonts, app->doc, app->view, app->FProg);
185
                                QObject::disconnect(ss, SIGNAL(NewPage(int)), app, SLOT(slotNewPage(int)));
1166 fschmid 186
                                ReplacedFonts = ss->ReplacedFonts;
1468 fschmid 187
                                newReplacement = ss->newReplacement;
506 fschmid 188
                                delete ss;
189
                        }
190
                        break;
517 fschmid 191
                case 1:
192
                        ret = ReadDoc(app, FileName, app->Prefs.AvailFonts, app->doc, app->view, app->FProg);
193
                        break;
506 fschmid 194
                case 2:
1549 subik 195
                        app->pluginManager->dllInput = FileName;
196
                        app->pluginManager->callDLL( 6 );
506 fschmid 197
                        ret = true;
198
                        break;
199
                case 3:
1549 subik 200
                        app->pluginManager->dllInput = FileName;
201
                        app->pluginManager->callDLL( 10 );
506 fschmid 202
                        ret = true;
203
                        break;
541 fschmid 204
                case 5:
1549 subik 205
                        app->pluginManager->dllInput = FileName;
206
                        app->pluginManager->callDLL( 12 );
541 fschmid 207
                        ret = true;
208
                        break;
506 fschmid 209
                default:
210
                        ret = false;
211
                        break;
212
        }
1468 fschmid 213
        if (((ReplacedFonts.count() != 0) && (app->Prefs.askBeforeSubstituite)) || ((ReplacedFonts.count() != 0) && (newReplacement)))
1428 fschmid 214
        {
215
                qApp->setOverrideCursor(QCursor(Qt::arrowCursor), true);
216
                FontReplaceDialog *dia = new FontReplaceDialog(0, &app->Prefs, &ReplacedFonts);
217
                dia->exec();
218
                for (uint d = 0; d < app->doc->MasterItems.count(); ++d)
219
                {
220
                        PageItem *it = app->doc->MasterItems.at(d);
221
                        if ((!app->doc->UsedFonts.contains(it->IFont)) && (it->IFont != ""))
222
                                it->IFont = ReplacedFonts[it->IFont];
1460 cbradney 223
                        if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
1428 fschmid 224
                        {
225
                                for (uint e = 0; e < it->itemText.count(); ++e)
226
                                {
227
                                if (!app->doc->UsedFonts.contains(it->itemText.at(e)->cfont))
228
                                        it->itemText.at(e)->cfont = ReplacedFonts[it->itemText.at(e)->cfont];
229
                                }
230
                        }
231
                }
232
                for (uint d = 0; d < app->doc->DocItems.count(); ++d)
233
                {
234
                        PageItem *it = app->doc->DocItems.at(d);
235
                        if ((!app->doc->UsedFonts.contains(it->IFont)) && (it->IFont != ""))
236
                                it->IFont = ReplacedFonts[it->IFont];
1460 cbradney 237
                        if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
1428 fschmid 238
                        {
239
                                for (uint e = 0; e < it->itemText.count(); ++e)
240
                                {
241
                                if (!app->doc->UsedFonts.contains(it->itemText.at(e)->cfont))
242
                                        it->itemText.at(e)->cfont = ReplacedFonts[it->itemText.at(e)->cfont];
243
                                }
244
                        }
245
                }
246
                for (uint a = 0; a < app->doc->docParagraphStyles.count(); ++a)
247
                {
248
                        if ((!app->doc->UsedFonts.contains(app->doc->docParagraphStyles[a].Font)) && (app->doc->docParagraphStyles[a].Font != ""))
249
                                app->doc->docParagraphStyles[a].Font = ReplacedFonts[app->doc->docParagraphStyles[a].Font];
250
                }
251
                QValueList<QString> tmpList;
252
                tmpList.clear();
1545 cbradney 253
                for (uint fe = 0; fe <  app->doc->PDF_Options.EmbedList.count(); ++fe)
1428 fschmid 254
                {
1545 cbradney 255
                        if (ReplacedFonts.contains(app->doc->PDF_Options.EmbedList[fe]))
256
                                tmpList.append(ReplacedFonts[app->doc->PDF_Options.EmbedList[fe]]);
1428 fschmid 257
                        else
1545 cbradney 258
                                tmpList.append(app->doc->PDF_Options.EmbedList[fe]);
1428 fschmid 259
                }
1545 cbradney 260
                app->doc->PDF_Options.EmbedList = tmpList;
1428 fschmid 261
                tmpList.clear();
1545 cbradney 262
                for (uint fe = 0; fe <  app->doc->PDF_Options.SubsetList.count(); ++fe)
1428 fschmid 263
                {
1545 cbradney 264
                        if (ReplacedFonts.contains(app->doc->PDF_Options.SubsetList[fe]))
265
                                tmpList.append(ReplacedFonts[app->doc->PDF_Options.SubsetList[fe]]);
1428 fschmid 266
                        else
1545 cbradney 267
                                tmpList.append(app->doc->PDF_Options.SubsetList[fe]);
1428 fschmid 268
                }
1545 cbradney 269
                app->doc->PDF_Options.SubsetList = tmpList;
1428 fschmid 270
                QMap<QString,QString>::Iterator itfsu;
271
                for (itfsu = ReplacedFonts.begin(); itfsu != ReplacedFonts.end(); ++itfsu)
272
                {
273
                        QFont fo = app->Prefs.AvailFonts[itfsu.data()]->Font;
274
                        fo.setPointSize(qRound(app->doc->toolSettings.defSize / 10.0));
275
                        app->doc->AddFont(itfsu.data(), fo);
276
                        if (dia->stickyReplacements->isChecked())
277
                                app->Prefs.GFontSub[itfsu.key()] = itfsu.data();
278
                }
279
                delete dia;
1468 fschmid 280
                ReplacedFonts.clear();
1428 fschmid 281
        }
1549 subik 282
        app->pluginManager->dllInput = "";
506 fschmid 283
        return ret;
284
}
517 fschmid 285
 
286
bool FileLoader::ReadDoc(ScribusApp* app, QString fileName, SCFonts &avail, ScribusDoc *doc, ScribusView *view, QProgressBar *dia2)
287
{
1065 cbradney 288
        struct CopyPasteBuffer OB;
289
        struct ParagraphStyle vg;
517 fschmid 290
        struct Layer la;
291
        struct ScribusDoc::BookMa bok;
292
        int counter, Pgc;
293
        bool AtFl;
294
        bool newVersion = false;
295
        QString tmp, tmpf, tmp2, tmp3, tmp4, PgNam, Defont, tmf;
296
        QFont fo;
297
        QMap<int,int> TableID;
298
        QPtrList<PageItem> TableItems;
299
        int x, a;
300
        double xf;
301
        PageItem *Neu;
302
        Page* Apage;
303
        LFrames.clear();
304
        QDomDocument docu("scridoc");
305
        QString f = "";
306
        f = ReadDatei(fileName);
307
        /* 2004/10/02 - petr vanek - bug #1092 - missing <PAGE> crash Scribus. The check constraint moved into IsScribus()
308
        FIXME: I've add test on containig tag PAGE but returning FALSE freezes S. in scribus.cpp need some hack too...  */
309
        if (!docu.setContent(f))
310
                return false;
1549 subik 311
        doc->PageColors.clear();
517 fschmid 312
        doc->Layers.clear();
313
        CMYKColor lf = CMYKColor();
314
        QDomElement elem=docu.documentElement();
315
        if (elem.tagName() != "SCRIBUSUTF8NEW")
316
                return false;
317
        if (elem.hasAttribute("Version"))
318
                newVersion = true;
319
        QDomNode DOC=elem.firstChild();
320
        dia2->setTotalSteps(DOC.childNodes().count());
321
        dia2->setProgress(0);
322
        int ObCount = 0;
323
        TableItems.clear();
324
        TableID.clear();
325
        while(!DOC.isNull())
326
        {
327
                QDomElement dc=DOC.toElement();
328
        /*
329
        * Attribute von DOCUMENT auslesen
330
        */
1542 cbradney 331
                //CB Add this in to set this in the file in memory. Its saved, why not load it. 
332
                //Will of course be replaced by per page settings although we still probably need a document default
333
                doc->PageSize = dc.attribute("PAGESIZE");
517 fschmid 334
                doc->PageOri = QStoInt(dc.attribute("ORIENTATION","0"));
335
                doc->FirstPnum = QStoInt(dc.attribute("FIRSTNUM","1"));
336
                doc->PageFP=QStoInt(dc.attribute("BOOK", "0"));
337
                doc->FirstPageLeft=QStoInt(dc.attribute("FIRSTLEFT","0"));
338
                doc->PageAT=QStoInt(dc.attribute("AUTOTEXT"));
339
                doc->PageSp=QStoInt(dc.attribute("AUTOSPALTEN"));
340
                doc->PageSpa=QStodouble(dc.attribute("ABSTSPALTEN"));
1065 cbradney 341
                doc->docUnitIndex = QStoInt(dc.attribute("UNITS","0"));
1194 fschmid 342
                doc->toolSettings.defSize=qRound(QStodouble(dc.attribute("DSIZE")) * 10);
517 fschmid 343
                Defont=dc.attribute("DFONT");
1428 fschmid 344
                if ((!avail.find(Defont)) || (!avail[Defont]->UseFont))
517 fschmid 345
                {
1428 fschmid 346
                        ReplacedFonts.insert(Defont, view->Prefs->toolSettings.defFont);
347
                        Defont = view->Prefs->toolSettings.defFont;
517 fschmid 348
                }
349
                else
1428 fschmid 350
                {
351
                        QFont fo = avail[Defont]->Font;
352
                        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
353
                        doc->AddFont(Defont, fo);
354
                }
1194 fschmid 355
                doc->toolSettings.defFont = Defont;
356
                doc->toolSettings.dCols=QStoInt(dc.attribute("DCOL", "1"));
357
                doc->toolSettings.dGap=QStodouble(dc.attribute("DGAP", "0.0"));
517 fschmid 358
                doc->DocAutor=dc.attribute("AUTHOR");
359
                doc->DocComments=dc.attribute("COMMENTS");
360
                doc->DocKeyWords=dc.attribute("KEYWORDS","");
361
                doc->DocTitel=dc.attribute("TITLE");
362
                doc->DocPublisher = dc.attribute("PUBLISHER", "");
363
                doc->DocDate = dc.attribute("DOCDATE", "");
364
                doc->DocType = dc.attribute("DOCTYPE", "");
365
                doc->DocFormat = dc.attribute("DOCFORMAT", "");
366
                doc->DocIdent = dc.attribute("DOCIDENT", "");
367
                doc->DocSource = dc.attribute("DOCSOURCE", "");
368
                doc->DocLangInfo = dc.attribute("DOCLANGINFO", "");
369
                doc->DocRelation = dc.attribute("DOCRELATION", "");
370
                doc->DocCover = dc.attribute("DOCCOVER", "");
371
                doc->DocRights = dc.attribute("DOCRIGHTS", "");
372
                doc->DocContrib = dc.attribute("DOCCONTRIB", "");
823 fschmid 373
                doc->typographicSetttings.valueSuperScript = QStoInt(dc.attribute("VHOCH"));
374
                doc->typographicSetttings.scalingSuperScript = QStoInt(dc.attribute("VHOCHSC"));
375
                doc->typographicSetttings.valueSubScript = QStoInt(dc.attribute("VTIEF"));
376
                doc->typographicSetttings.scalingSubScript = QStoInt(dc.attribute("VTIEFSC"));
377
                doc->typographicSetttings.valueSmallCaps = QStoInt(dc.attribute("VKAPIT"));
378
                doc->typographicSetttings.valueBaseGrid = QStodouble(dc.attribute("BASEGRID", "12"));
379
                doc->typographicSetttings.offsetBaseGrid = QStodouble(dc.attribute("BASEO", "0"));
380
                doc->typographicSetttings.autoLineSpacing = QStoInt(dc.attribute("AUTOL","20"));
517 fschmid 381
                doc->GroupCounter=QStoInt(dc.attribute("GROUPC","1"));
382
                doc->HasCMS = static_cast<bool>(QStoInt(dc.attribute("HCMS","0")));
383
                doc->CMSSettings.SoftProofOn = static_cast<bool>(QStoInt(dc.attribute("DPSo","0")));
384
                doc->CMSSettings.CMSinUse = static_cast<bool>(QStoInt(dc.attribute("DPuse","0")));
385
                doc->CMSSettings.GamutCheck = static_cast<bool>(QStoInt(dc.attribute("DPgam","0")));
386
                doc->CMSSettings.BlackPoint = static_cast<bool>(QStoInt(dc.attribute("DPbla","1")));
387
                doc->CMSSettings.DefaultMonitorProfile = dc.attribute("DPMo","");
388
                doc->CMSSettings.DefaultPrinterProfile = dc.attribute("DPPr","");
389
                doc->CMSSettings.DefaultInputProfile = dc.attribute("DPIn","");
390
                doc->CMSSettings.DefaultInputProfile2 = dc.attribute("DPIn2","");
391
                doc->CMSSettings.DefaultIntentPrinter = QStoInt(dc.attribute("DIPr","0"));
392
                doc->CMSSettings.DefaultIntentMonitor = QStoInt(dc.attribute("DIMo","1"));
393
                doc->CMSSettings.DefaultIntentMonitor2 = QStoInt(dc.attribute("DIMo2","1"));
394
                doc->ActiveLayer = QStoInt(dc.attribute("ALAYER","0"));
395
                doc->Language = dc.attribute("LANGUAGE", "");
396
                doc->MinWordLen = QStoInt(dc.attribute("MINWORDLEN", "3"));
397
                doc->HyCount = QStoInt(dc.attribute("HYCOUNT", "2"));
537 fschmid 398
                doc->PageB=QStodouble(dc.attribute("PAGEWITH"));
399
                doc->PageH=QStodouble(dc.attribute("PAGEHEIGHT"));
400
                doc->PageM.Left=QStodouble(dc.attribute("BORDERLEFT"));
401
                doc->PageM.Right=QStodouble(dc.attribute("BORDERRIGHT"));
402
                doc->PageM.Top=QStodouble(dc.attribute("BORDERTOP"));
403
                doc->PageM.Bottom=QStodouble(dc.attribute("BORDERBOTTOM"));
517 fschmid 404
                doc->Automatic = static_cast<bool>(QStoInt(dc.attribute("AUTOMATIC", "1")));
405
                doc->AutoCheck = static_cast<bool>(QStoInt(dc.attribute("AUTOCHECK", "0")));
406
                doc->GuideLock = static_cast<bool>(QStoInt(dc.attribute("GUIDELOCK", "0")));
879 fschmid 407
                doc->guidesSettings.minorGrid = QStodouble(dc.attribute("MINGRID", tmp.setNum(view->Prefs->guidesSettings.minorGrid)));
408
                doc->guidesSettings.majorGrid = QStodouble(dc.attribute("MAJGRID", tmp.setNum(view->Prefs->guidesSettings.majorGrid)));
409
                doc->guidesSettings.gridShown = static_cast<bool>(QStoInt(dc.attribute("SHOWGRID", "0")));
410
                doc->guidesSettings.guidesShown = static_cast<bool>(QStoInt(dc.attribute("SHOWGUIDES", "1")));
411
                doc->guidesSettings.framesShown = static_cast<bool>(QStoInt(dc.attribute("SHOWFRAME", "1")));
412
                doc->guidesSettings.marginsShown = static_cast<bool>(QStoInt(dc.attribute("SHOWMARGIN", "1")));
413
                doc->guidesSettings.baseShown = static_cast<bool>(QStoInt(dc.attribute("SHOWBASE", "0")));
414
                doc->guidesSettings.showPic = static_cast<bool>(QStoInt(dc.attribute("SHOWPICT", "1")));
415
                doc->guidesSettings.linkShown = static_cast<bool>(QStoInt(dc.attribute("SHOWLINK", "0")));
1194 fschmid 416
                doc->toolSettings.polyC = QStoInt(dc.attribute("POLYC", "4"));
417
                doc->toolSettings.polyF = QStodouble(dc.attribute("POLYF", "0.5"));
418
                doc->toolSettings.polyR = QStodouble(dc.attribute("POLYR", "0"));
419
                doc->toolSettings.polyFd = QStoInt(dc.attribute("POLYFD", "0"));
420
                doc->toolSettings.polyS = static_cast<bool>(QStoInt(dc.attribute("POLYS", "0")));
734 fschmid 421
                doc->AutoSave = static_cast<bool>(QStoInt(dc.attribute("AutoSave","0")));
422
                doc->AutoSaveTime = QStoInt(dc.attribute("AutoSaveTime","600000"));
745 fschmid 423
                doc->ScratchBottom = QStodouble(dc.attribute("ScratchBottom", "20"));
424
                doc->ScratchLeft = QStodouble(dc.attribute("ScatchLeft", "100"));
425
                doc->ScratchRight = QStodouble(dc.attribute("ScratchRight", "100"));
426
                doc->ScratchTop = QStodouble(dc.attribute("ScratchTop", "20"));
1194 fschmid 427
                doc->toolSettings.dStartArrow = QStoInt(dc.attribute("StartArrow", "0"));
428
                doc->toolSettings.dEndArrow = QStoInt(dc.attribute("EndArrow", "0"));
429
                doc->toolSettings.scaleX = QStodouble(dc.attribute("PICTSCX","1"));
430
                doc->toolSettings.scaleY = QStodouble(dc.attribute("PICTSCY","1"));
431
                doc->toolSettings.scaleType = static_cast<bool>(QStoInt(dc.attribute("PSCALE", "1")));
432
                doc->toolSettings.aspectRatio = static_cast<bool>(QStoInt(dc.attribute("PASPECT", "0")));
745 fschmid 433
                if (dc.hasAttribute("PEN"))
1194 fschmid 434
                        doc->toolSettings.dPen = dc.attribute("PEN");
745 fschmid 435
                if (dc.hasAttribute("BRUSH"))
1194 fschmid 436
                        doc->toolSettings.dBrush = dc.attribute("BRUSH");
745 fschmid 437
                if (dc.hasAttribute("PENLINE"))
1194 fschmid 438
                        doc->toolSettings.dPenLine = dc.attribute("PENLINE");
745 fschmid 439
                if (dc.hasAttribute("PENTEXT"))
1194 fschmid 440
                        doc->toolSettings.dPenText = dc.attribute("PENTEXT");
745 fschmid 441
                if (dc.hasAttribute("StrokeText"))
1194 fschmid 442
                        doc->toolSettings.dStrokeText = dc.attribute("StrokeText");
443
                doc->toolSettings.dLineArt = static_cast<Qt::PenStyle>(QStoInt(dc.attribute("STIL")));
444
                doc->toolSettings.dLstyleLine = static_cast<Qt::PenStyle>(QStoInt(dc.attribute("STILLINE")));
445
                doc->toolSettings.dWidth = QStodouble(dc.attribute("WIDTH", "1"));
446
                doc->toolSettings.dWidthLine = QStodouble(dc.attribute("WIDTHLINE", "1"));
447
                doc->toolSettings.dShade2 = QStoInt(dc.attribute("PENSHADE", "100"));
448
                doc->toolSettings.dShadeLine = QStoInt(dc.attribute("LINESHADE", "100"));
449
                doc->toolSettings.dShade = QStoInt(dc.attribute("BRUSHSHADE", "100"));
450
                doc->toolSettings.magMin = QStoInt(dc.attribute("MAGMIN","10"));
451
                doc->toolSettings.magMax = QStoInt(dc.attribute("MAGMAX","3200"));
452
                doc->toolSettings.magStep = QStoInt(dc.attribute("MAGSTEP","25"));
745 fschmid 453
                if (dc.hasAttribute("CPICT"))
1194 fschmid 454
                        doc->toolSettings.dBrushPict = dc.attribute("CPICT");
455
                doc->toolSettings.shadePict = QStoInt(dc.attribute("PICTSHADE","100"));
745 fschmid 456
                if (dc.hasAttribute("PAGEC"))
457
                        doc->papColor = QColor(dc.attribute("PAGEC"));
458
                if (dc.hasAttribute("MARGC"))
879 fschmid 459
                        doc->guidesSettings.margColor = QColor(dc.attribute("MARGC"));
745 fschmid 460
                if (dc.hasAttribute("MINORC"))
879 fschmid 461
                        doc->guidesSettings.minorColor = QColor(dc.attribute("MINORC"));
745 fschmid 462
                if (dc.hasAttribute("MAJORC"))
879 fschmid 463
                        doc->guidesSettings.majorColor = QColor(dc.attribute("MAJORC"));
745 fschmid 464
                if (dc.hasAttribute("GuideC"))
879 fschmid 465
                        doc->guidesSettings.guideColor = QColor(dc.attribute("GuideC"));
745 fschmid 466
                if (dc.hasAttribute("BaseC"))
879 fschmid 467
                        doc->guidesSettings.baseColor = QColor(dc.attribute("BaseC"));
1065 cbradney 468
                doc->marginColored = static_cast<bool>(QStoInt(dc.attribute("RANDF","0")));
1187 fschmid 469
                doc->guidesSettings.before = static_cast<bool>(QStoInt(dc.attribute("BACKG","1")));
879 fschmid 470
                doc->guidesSettings.guideRad = QStoInt(dc.attribute("GuideRad","10"));
471
                doc->guidesSettings.grabRad = QStoInt(dc.attribute("GRAB","4"));
1261 fschmid 472
                if (dc.hasAttribute("currentProfile"))
1284 fschmid 473
                {
474
                        doc->checkerProfiles.clear();
1261 fschmid 475
                        doc->curCheckProfile = dc.attribute("currentProfile");
1284 fschmid 476
                }
1016 fschmid 477
                doc->LastAuto = 0;
517 fschmid 478
                QDomNode PAGE=DOC.firstChild();
479
                counter = 0;
480
                while(!PAGE.isNull())
481
                {
482
                        ObCount++;
483
                        dia2->setProgress(ObCount);
484
                        QDomElement pg=PAGE.toElement();
1261 fschmid 485
                        if (pg.tagName()=="CheckProfile")
486
                        {
487
                                struct checkerPrefs checkerSettings;
488
                                checkerSettings.ignoreErrors = static_cast<bool>(QStoInt(pg.attribute("ignoreErrors", "0")));
489
                                checkerSettings.autoCheck = static_cast<bool>(QStoInt(pg.attribute("autoCheck", "1")));
490
                                checkerSettings.checkGlyphs = static_cast<bool>(QStoInt(pg.attribute("checkGlyphs", "1")));
491
                                checkerSettings.checkOrphans = static_cast<bool>(QStoInt(pg.attribute("checkOrphans", "1")));
492
                                checkerSettings.checkOverflow = static_cast<bool>(QStoInt(pg.attribute("checkOverflow", "1")));
493
                                checkerSettings.checkPictures = static_cast<bool>(QStoInt(pg.attribute("checkPictures", "1")));
494
                                checkerSettings.checkResolution = static_cast<bool>(QStoInt(pg.attribute("checkResolution", "1")));
495
                                checkerSettings.checkTransparency = static_cast<bool>(QStoInt(pg.attribute("checkTransparency", "1")));
496
                                checkerSettings.minResolution = QStodouble(pg.attribute("minResolution","72"));
1284 fschmid 497
                                checkerSettings.checkAnnotations = static_cast<bool>(QStoInt(pg.attribute("checkAnnotations", "0")));
498
                                checkerSettings.checkRasterPDF = static_cast<bool>(QStoInt(pg.attribute("checkRasterPDF", "1")));
1261 fschmid 499
                                doc->checkerProfiles[pg.attribute("Name")] = checkerSettings;
500
                        }
517 fschmid 501
                        // 10/25/2004 pv - None is "reserved" color. cannot be defined in any file...
502
                        if(pg.tagName()=="COLOR" && pg.attribute("NAME")!="None")
503
                        {
504
                                if (pg.hasAttribute("CMYK"))
505
                                        lf.setNamedColor(pg.attribute("CMYK"));
506
                                else
507
                                        lf.fromQColor(QColor(pg.attribute("RGB")));
508
                          doc->PageColors[pg.attribute("NAME")] = lf;
509
                        }
510
                        if(pg.tagName()=="STYLE")
511
                        {
512
                                vg.Vname = pg.attribute("NAME");
513
                                vg.LineSpa = QStodouble(pg.attribute("LINESP"));
514
                                vg.Indent = QStodouble(pg.attribute("INDENT","0"));
515
                                vg.First = QStodouble(pg.attribute("FIRST","0"));
1065 cbradney 516
                                vg.textAlignment = QStoInt(pg.attribute("ALIGN"));
517
                                vg.gapBefore = QStodouble(pg.attribute("VOR","0"));
518
                                vg.gapAfter = QStodouble(pg.attribute("NACH","0"));
1194 fschmid 519
                                tmpf = pg.attribute("FONT", doc->toolSettings.defFont);
1428 fschmid 520
                                if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
521
                                {
522
                                        if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 523
                                        {
524
                                                newReplacement = true;
1428 fschmid 525
                                                ReplacedFonts.insert(tmpf, view->Prefs->toolSettings.defFont);
1468 fschmid 526
                                        }
1428 fschmid 527
                                        else
528
                                                ReplacedFonts.insert(tmpf, view->Prefs->GFontSub[tmpf]);
529
                                }
517 fschmid 530
                                else
1428 fschmid 531
                                {
532
                                        QFont fo = avail[tmpf]->Font;
533
                                        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
534
                                        doc->AddFont(tmpf, fo);
535
                                }
517 fschmid 536
                                vg.Font = tmpf;
537
                                vg.FontSize = qRound(QStodouble(pg.attribute("FONTSIZE","12")) * 10.0);
538
                                vg.Drop = static_cast<bool>(QStoInt(pg.attribute("DROP","0")));
539
                                vg.DropLin = QStoInt(pg.attribute("DROPLIN","2"));
540
                                vg.FontEffect = QStoInt(pg.attribute("EFFECT","0"));
1194 fschmid 541
                                vg.FColor = pg.attribute("FCOLOR", doc->toolSettings.dBrush);
517 fschmid 542
                                vg.FShade = QStoInt(pg.attribute("FSHADE","100"));
1194 fschmid 543
                                vg.SColor = pg.attribute("SCOLOR", doc->toolSettings.dPen);
517 fschmid 544
                                vg.SShade = QStoInt(pg.attribute("SSHADE","100"));
545
                                vg.BaseAdj = static_cast<bool>(QStoInt(pg.attribute("BASE","0")));
546
                                if ((pg.hasAttribute("NUMTAB")) && (QStoInt(pg.attribute("NUMTAB","0")) != 0))
547
                                {
548
                                        tmp = pg.attribute("TABS");
549
                                        QTextStream tgv(&tmp, IO_ReadOnly);
550
                                        vg.TabValues.clear();
551
                                        for (int cxv = 0; cxv < QStoInt(pg.attribute("NUMTAB","0")); ++cxv)
552
                                        {
553
                                                tgv >> xf;
554
                                                vg.TabValues.append(xf);
555
                                        }
556
                                        tmp = "";
557
                                }
558
                                else
559
                                        vg.TabValues.clear();
1065 cbradney 560
                                doc->docParagraphStyles.append(vg);
517 fschmid 561
                        }
562
                        if(pg.tagName()=="JAVA")
563
                                doc->JavaScripts[pg.attribute("NAME")] = pg.attribute("SCRIPT");
564
                        if(pg.tagName()=="LAYERS")
565
                        {
566
                                la.LNr = QStoInt(pg.attribute("NUMMER"));
567
                                la.Level = QStoInt(pg.attribute("LEVEL"));
568
                                la.Name = pg.attribute("NAME");
1065 cbradney 569
                                la.isViewable = QStoInt(pg.attribute("SICHTBAR"));
570
                                la.isPrintable = QStoInt(pg.attribute("DRUCKEN"));
517 fschmid 571
                                doc->Layers.append(la);
572
                        }
573
                        if(pg.tagName()=="Bookmark")
574
                        {
575
                                bok.Title = pg.attribute("Title");
576
                                bok.Text = pg.attribute("Text");
577
                                bok.Aktion = pg.attribute("Aktion");
578
                                bok.ItemNr = QStoInt(pg.attribute("ItemNr"));
579
                                bok.Seite = QStoInt(pg.attribute("Seite"));
580
                                bok.Element = QStoInt(pg.attribute("Element"));
581
                                bok.First = QStoInt(pg.attribute("First"));
582
                                bok.Last = QStoInt(pg.attribute("Last"));
583
                                bok.Prev = QStoInt(pg.attribute("Prev"));
584
                                bok.Next = QStoInt(pg.attribute("Next"));
585
                                bok.Parent = QStoInt(pg.attribute("Parent"));
586
                                doc->BookMarks.append(bok);
587
                        }
588
                        if(pg.tagName()=="MultiLine")
589
                        {
590
                                multiLine ml;
591
                                QDomNode MuLn = PAGE.firstChild();
592
                                while(!MuLn.isNull())
593
                                {
594
                                        QDomElement MuL = MuLn.toElement();
1065 cbradney 595
                                        struct SingleLine sl;
517 fschmid 596
                                        sl.Color = MuL.attribute("Color");
597
                                        sl.Dash = QStoInt(MuL.attribute("Dash"));
598
                                        sl.LineEnd = QStoInt(MuL.attribute("LineEnd"));
599
                                        sl.LineJoin = QStoInt(MuL.attribute("LineJoin"));
600
                                        sl.Shade = QStoInt(MuL.attribute("Shade"));
601
                                        sl.Width = QStodouble(MuL.attribute("Width"));
602
                                        ml.push_back(sl);
603
                                        MuLn = MuLn.nextSibling();
604
                                }
605
                                doc->MLineStyles.insert(pg.attribute("Name"), ml);
606
                        }
741 fschmid 607
                        if(pg.tagName()=="Arrows")
608
                        {
1065 cbradney 609
                                struct ArrowDesc arrow;
760 fschmid 610
                                arrow.name = pg.attribute("Name");
776 fschmid 611
                                arrow.userArrow = true;
741 fschmid 612
                                double xa, ya;
613
                                QString tmp = pg.attribute("Points");
614
                                QTextStream fp(&tmp, IO_ReadOnly);
615
                                for (uint cx = 0; cx < pg.attribute("NumPoints").toUInt(); ++cx)
616
                                {
617
                                        fp >> xa;
618
                                        fp >> ya;
760 fschmid 619
                                        arrow.points.addPoint(xa, ya);
741 fschmid 620
                                }
621
                                doc->arrowStyles.append(arrow);
622
                        }
1642 cbradney 623
                        if(pg.tagName()=="PDF")
624
                        {
625
                                doc->PDF_Options.Articles = static_cast<bool>(QStoInt(pg.attribute("Articles")));
626
                                doc->PDF_Options.Thumbnails = static_cast<bool>(QStoInt(pg.attribute("Thumbnails")));
627
                                doc->PDF_Options.Compress = static_cast<bool>(QStoInt(pg.attribute("Compress")));
628
                                doc->PDF_Options.CompressMethod = QStoInt(pg.attribute("CMethod","0"));
629
                                doc->PDF_Options.Quality = QStoInt(pg.attribute("Quality","0"));
630
                                doc->PDF_Options.RecalcPic = static_cast<bool>(QStoInt(pg.attribute("RecalcPic")));
631
                                doc->PDF_Options.Bookmarks = static_cast<bool>(QStoInt(pg.attribute("Bookmarks")));
632
                                if (pg.hasAttribute("MirrorH"))
633
                                        doc->PDF_Options.MirrorH = static_cast<bool>(QStoInt(pg.attribute("MirrorH")));
634
                                else
635
                                        doc->PDF_Options.MirrorH = false;
636
                                if (pg.hasAttribute("MirrorV"))
637
                                        doc->PDF_Options.MirrorV = static_cast<bool>(QStoInt(pg.attribute("MirrorV")));
638
                                else
639
                                        doc->PDF_Options.MirrorV = false;
640
                                if (pg.hasAttribute("RotateDeg"))
641
                                        doc->PDF_Options.RotateDeg = QStoInt(pg.attribute("RotateDeg","0"));
642
                                else
643
                                        doc->PDF_Options.RotateDeg = 0;
644
                                doc->PDF_Options.PresentMode = static_cast<bool>(QStoInt(pg.attribute("PresentMode")));
645
                                doc->PDF_Options.PicRes = QStoInt(pg.attribute("PicRes"));
646
                                doc->PDF_Options.Version = QStoInt(pg.attribute("Version"));
647
                                doc->PDF_Options.Resolution = QStoInt(pg.attribute("Resolution"));
648
                                doc->PDF_Options.Binding = QStoInt(pg.attribute("Binding"));
649
                                doc->PDF_Options.Datei = "";
650
                                doc->PDF_Options.isGrayscale = static_cast<bool>(QStoInt(pg.attribute("Grayscale","0")));
651
                                doc->PDF_Options.UseRGB = static_cast<bool>(QStoInt(pg.attribute("RGBMode","0")));
652
                                doc->PDF_Options.UseProfiles = static_cast<bool>(QStoInt(pg.attribute("UseProfiles","0")));
653
                                doc->PDF_Options.UseProfiles2 = static_cast<bool>(QStoInt(pg.attribute("UseProfiles2","0")));
654
                                doc->PDF_Options.Intent = QStoInt(pg.attribute("Intent","1"));
655
                                doc->PDF_Options.Intent2 = QStoInt(pg.attribute("Intent2","1"));
656
                                doc->PDF_Options.SolidProf = pg.attribute("SolidP", "");
657
                                doc->PDF_Options.ImageProf = pg.attribute("ImageP", "");
658
                                doc->PDF_Options.PrintProf = pg.attribute("PrintP", "");
659
                                doc->PDF_Options.Info = pg.attribute("InfoString", "");
660
                                doc->PDF_Options.BleedTop = QStodouble(pg.attribute("BTop","0"));
661
                                doc->PDF_Options.BleedLeft = QStodouble(pg.attribute("BLeft","0"));
662
                                doc->PDF_Options.BleedRight = QStodouble(pg.attribute("BRight","0"));
663
                                doc->PDF_Options.BleedBottom = QStodouble(pg.attribute("BBottom","0"));
664
                                doc->PDF_Options.EmbeddedI = static_cast<bool>(QStoInt(pg.attribute("ImagePr","0")));
665
                                doc->PDF_Options.PassOwner = pg.attribute("PassOwner", "");
666
                                doc->PDF_Options.PassUser = pg.attribute("PassUser", "");
667
                                doc->PDF_Options.Permissions = QStoInt(pg.attribute("Permissions","-4"));
668
                                doc->PDF_Options.Encrypt = static_cast<bool>(QStoInt(pg.attribute("Encrypt","0")));
669
                                doc->PDF_Options.UseLPI = static_cast<bool>(QStoInt(pg.attribute("UseLpi","0")));
670
                                QDomNode PFO = PAGE.firstChild();
671
                                while(!PFO.isNull())
672
                                {
673
                                        QDomElement pdfF = PFO.toElement();
674
                                        if(pdfF.tagName() == "LPI")
675
                                        {
676
                                                struct LPIData lpo;
677
                                                lpo.Angle = QStoInt(pdfF.attribute("Angle"));
678
                                                lpo.Frequency = QStoInt(pdfF.attribute("Frequency"));
679
                                                lpo.SpotFunc = QStoInt(pdfF.attribute("SpotFunction"));
680
                                                doc->PDF_Options.LPISettings[pdfF.attribute("Color")] = lpo;
681
                                        }
682
                                        if(pdfF.tagName() == "Fonts")
683
                                        {
684
                                                if (!doc->PDF_Options.EmbedList.contains(pdfF.attribute("Name")))
685
                                                        doc->PDF_Options.EmbedList.append(pdfF.attribute("Name"));
686
                                        }
687
                                        if(pdfF.tagName() == "Subset")
688
                                        {
689
                                                if (!doc->PDF_Options.SubsetList.contains(pdfF.attribute("Name")))
690
                                                        doc->PDF_Options.SubsetList.append(pdfF.attribute("Name"));
691
                                        }
692
                                        if(pdfF.tagName() == "Effekte")
693
                                        {
694
                                                struct PDFPresentationData ef;
695
                                                ef.pageEffectDuration = QStoInt(pdfF.attribute("pageEffectDuration"));
696
                                                ef.pageViewDuration = QStoInt(pdfF.attribute("pageViewDuration"));
697
                                                ef.effectType = QStoInt(pdfF.attribute("effectType"));
698
                                                ef.Dm = QStoInt(pdfF.attribute("Dm"));
699
                                                ef.M = QStoInt(pdfF.attribute("M"));
700
                                                ef.Di = QStoInt(pdfF.attribute("Di"));
701
                                                doc->PDF_Options.PresentVals.append(ef);
702
                                        }
703
                                        PFO = PFO.nextSibling();
704
                                }
705
                        }
706
                        if(pg.tagName()=="DocItemAttributes")
707
                        {
708
                                QDomNode DIA = PAGE.firstChild();
709
                                int count=0;
710
                                doc->docItemAttributes.clear();
711
                                while(!DIA.isNull())
712
                                {
713
                                        QDomElement itemAttr = DIA.toElement();
714
                                        if(itemAttr.tagName() == "ItemAttribute")
715
                                        {
716
                                                ObjectAttribute objattr;
717
                                                objattr.name=itemAttr.attribute("Name");
718
                                                objattr.type=itemAttr.attribute("Type");
719
                                                objattr.value=itemAttr.attribute("Value");
720
                                                objattr.parameter=itemAttr.attribute("Parameter");
721
                                                doc->docItemAttributes.insert(count++,objattr);
722
                                        }
723
                                        DIA = DIA.nextSibling();
724
                                }
725
                        }
517 fschmid 726
                        if ((pg.tagName()=="PAGE") || (pg.tagName()=="MASTERPAGE"))
727
                        {
728
                                a = QStoInt(pg.attribute("NUM"));
729
                                PgNam = "";
730
                                PgNam = pg.attribute("NAM", "");
731
                                Pgc = doc->PageC;
732
                                AtFl = doc->PageAT;
733
                                if (PgNam == "")
734
                                {
735
                                        doc->PageC = Pgc;
736
                                        doc->Pages = doc->DocPages;
737
                                        doc->PageAT = AtFl;
738
                                        doc->MasterP = false;
739
                                }
740
                                else
741
                                {
742
                                        doc->PageC = 0;
743
                                        doc->PageAT = false;
744
                                        doc->Pages = doc->MasterPages;
745
                                        doc->MasterP = true;
746
                                }
747
                                app->slotNewPage(a);
748
                                Apage = doc->Pages.at(a);
749
                                if (PgNam == "")
750
                                        doc->DocPages = doc->Pages;
751
                                else
752
                                {
1199 tsoots 753
                                  Apage->setPageName(PgNam);
517 fschmid 754
                                        doc->MasterNames[PgNam] = a;
755
                                        doc->MasterPages = doc->Pages;
756
                                }
757
                                doc->MasterP = false;
758
                                doc->PageC = Pgc+1;
759
                                doc->PageAT = AtFl;
760
                                Apage->LeftPg=QStoInt(pg.attribute("LEFT","0"));
761
                                QString Mus = "";
762
                                Mus = pg.attribute("MNAM","Normal");
763
                                if (!doc->MasterP)
764
                                        Apage->MPageNam = Mus;
765
                                else
766
                                        Apage->MPageNam = "";
537 fschmid 767
                                Apage->Xoffset = QStodouble(pg.attribute("PAGEXPOS"));
768
                                Apage->Yoffset = QStodouble(pg.attribute("PAGEYPOS"));
517 fschmid 769
                                Apage->Width = QStodouble(pg.attribute("PAGEWITH"));
770
                                Apage->Height = QStodouble(pg.attribute("PAGEHEIGHT"));
771
                                Apage->Margins.Left = QStodouble(pg.attribute("BORDERLEFT"));
772
                                Apage->Margins.Right = QStodouble(pg.attribute("BORDERRIGHT"));
773
                                Apage->Margins.Top = QStodouble(pg.attribute("BORDERTOP"));
774
                                Apage->Margins.Bottom = QStodouble(pg.attribute("BORDERBOTTOM"));
775
                                doc->PageB = Apage->Width;
776
                                doc->PageH = Apage->Height;
777
                                doc->PageM.Left = Apage->Margins.Left;
778
                                doc->PageM.Right = Apage->Margins.Right;
779
                                doc->PageM.Top = Apage->Margins.Top;
780
                                doc->PageM.Bottom = Apage->Margins.Bottom;
781
                                if ((pg.hasAttribute("NumVGuides")) && (QStoInt(pg.attribute("NumVGuides","0")) != 0))
782
                                {
783
                                        tmp = pg.attribute("VerticalGuides");
784
                                        QTextStream fgv(&tmp, IO_ReadOnly);
785
                                        Apage->YGuides.clear();
786
                                        for (int cxv = 0; cxv < QStoInt(pg.attribute("NumVGuides","0")); ++cxv)
787
                                        {
788
                                                fgv >> xf;
789
                                                Apage->YGuides.append(xf);
790
                                        }
791
                                        qHeapSort(Apage->YGuides);
792
                                        tmp = "";
793
                                }
794
                                else
795
                                        Apage->YGuides.clear();
796
                                if ((pg.hasAttribute("NumHGuides")) && (QStoInt(pg.attribute("NumHGuides","0")) != 0))
797
                                {
798
                                        tmp = pg.attribute("HorizontalGuides");
799
                                        QTextStream fgh(&tmp, IO_ReadOnly);
800
                                        Apage->XGuides.clear();
801
                                        for (int cxh = 0; cxh < QStoInt(pg.attribute("NumHGuides","0")); ++cxh)
802
                                        {
803
                                                fgh >> xf;
804
                                                Apage->XGuides.append(xf);
805
                                        }
806
                                        qHeapSort(Apage->XGuides);
807
                                        tmp = "";
808
                                }
809
                                else
810
                                        Apage->XGuides.clear();
811
                                }
812
                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="MASTEROBJECT"))
813
                        {
814
                                        if (pg.tagName()=="PAGEOBJECT")
522 fschmid 815
                                        {
517 fschmid 816
                                                doc->Items = doc->DocItems;
522 fschmid 817
                                                doc->Pages = doc->DocPages;
818
                                                doc->MasterP = false;
819
                                        }
517 fschmid 820
                                        else
522 fschmid 821
                                        {
517 fschmid 822
                                                doc->Items = doc->MasterItems;
522 fschmid 823
                                                doc->Pages = doc->MasterPages;
824
                                                doc->MasterP = true;
825
                                        }
537 fschmid 826
                                        if (pg.attribute("OnMasterPage") != "")
1065 cbradney 827
                                                doc->currentPage = doc->MasterPages.at(doc->MasterNames[pg.attribute("OnMasterPage")]);
517 fschmid 828
                                        if ((QStoInt(pg.attribute("NEXTITEM")) != -1) || (static_cast<bool>(QStoInt(pg.attribute("AUTOTEXT")))))
829
                                        {
830
                                                if (QStoInt(pg.attribute("BACKITEM")) == -1)
537 fschmid 831
                                                        LFrames.append(doc->Items.count());
517 fschmid 832
                                        }
833
                                        GetItemProps(newVersion, &pg, &OB);
834
                                        OB.Xpos = QStodouble(pg.attribute("XPOS"));
835
                                        OB.Ypos=QStodouble(pg.attribute("YPOS"));
741 fschmid 836
                                        OB.startArrowIndex =  QStoInt(pg.attribute("startArrowIndex","0"));
837
                                        OB.endArrowIndex =  QStoInt(pg.attribute("endArrowIndex","0"));
517 fschmid 838
                                        OB.NamedLStyle = pg.attribute("NAMEDLST", "");
839
                                        OB.isBookmark=QStoInt(pg.attribute("BOOKMARK"));
840
                                        if ((OB.isBookmark) && (doc->BookMarks.count() == 0))
841
                                                doc->OldBM = true;
842
                                        OB.BMnr = QStoInt(pg.attribute("BookNr","0"));
1065 cbradney 843
                                        OB.textAlignment = QStoInt(pg.attribute("ALIGN","0"));
1194 fschmid 844
                                        tmpf = pg.attribute("IFONT", doc->toolSettings.defFont);
1428 fschmid 845
                                        if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
846
                                        {
847
                                                if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 848
                                                {
849
                                                        newReplacement = true;
1428 fschmid 850
                                                        ReplacedFonts.insert(tmpf, view->Prefs->toolSettings.defFont);
1468 fschmid 851
                                                }
1428 fschmid 852
                                                else
853
                                                        ReplacedFonts.insert(tmpf, view->Prefs->GFontSub[tmpf]);
854
                                        }
517 fschmid 855
                                        else
1428 fschmid 856
                                        {
857
                                                QFont fo = avail[tmpf]->Font;
858
                                                fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
859
                                                doc->AddFont(tmpf, fo);
860
                                        }
517 fschmid 861
                                        OB.IFont = tmpf;
862
                                        OB.LayerNr = QStoInt(pg.attribute("LAYER","0"));
863
                                        OB.Language = pg.attribute("LANGUAGE", doc->Language);
864
                                        tmp = "";
865
                                        if ((pg.hasAttribute("GROUPS")) && (QStoInt(pg.attribute("NUMGROUP","0")) != 0))
866
                                        {
867
                                                tmp = pg.attribute("GROUPS");
868
                                                QTextStream fg(&tmp, IO_ReadOnly);
869
                                                OB.Groups.clear();
870
                                                for (int cx = 0; cx < QStoInt(pg.attribute("NUMGROUP","0")); ++cx)
871
                                                {
872
                                                        fg >> x;
873
                                                        OB.Groups.push(x);
874
                                                }
875
                                                tmp = "";
876
                                        }
877
                                        else
878
                                                OB.Groups.clear();
879
                                        QDomNode IT=pg.firstChild();
880
                                        while(!IT.isNull())
881
                                        {
882
                                                QDomElement it=IT.toElement();
883
                                                if (it.tagName()=="CSTOP")
884
                                                {
885
                                                        QString name = it.attribute("NAME");
886
                                                        double ramp = QStodouble(it.attribute("RAMP","0.0"));
887
                                                        int shade = QStoInt(it.attribute("SHADE","100"));
888
                                                        double opa = QStodouble(it.attribute("TRANS","1"));
690 cbradney 889
                                                        OB.fill_gradient.addStop(SetColor(doc, name, shade), ramp, 0.5, opa, name, shade);
517 fschmid 890
                                                }
891
                                                if (it.tagName()=="ITEXT")
1428 fschmid 892
                                                        tmp += GetItemText(&it, doc, view->Prefs);
517 fschmid 893
                                                IT=IT.nextSibling();
894
                                        }
1065 cbradney 895
                                        OB.itemText = tmp;
517 fschmid 896
                                        int docGc = doc->GroupCounter;
897
                                        doc->GroupCounter = 0;
898
                                        if ((OB.PType == 5) && (OB.Height != 0))
899
                                        {
900
                                                OB.Rot += atan2(OB.Height,OB.Width)*(180.0/3.1415927);
901
                                                OB.Width = sqrt(pow(OB.Width,2)+pow(OB.Height,2));
902
                                                OB.Height = 0;
903
                                                OB.Clip.setPoints(4, -1,-1, static_cast<int>(OB.Width+1),-1, static_cast<int>(OB.Width+1),
904
                                                                                         static_cast<int>(OB.Height+1), -1, static_cast<int>(OB.Height+1));
905
                                        }
906
                                        uint last = doc->Items.count();
907
                                        view->PasteItem(&OB, true);
908
                                        doc->GroupCounter = docGc;
909
                                        Neu = doc->Items.at(last);
910
                                        Neu->isAutoText=static_cast<bool>(QStoInt(pg.attribute("AUTOTEXT")));
911
                                        if (Neu->isAutoText)
912
                                                doc->LastAuto = Neu;
913
                                        Neu->NextIt = QStoInt(pg.attribute("NEXTITEM"));
914
                                        if (Neu->isTableItem)
915
                                        {
916
                                                TableItems.append(Neu);
917
                                                TableID.insert(QStoInt(pg.attribute("OwnLINK","0")), Neu->ItemNr);
918
                                        }
919
                                        if (pg.tagName()=="PAGEOBJECT")
522 fschmid 920
                                        {
517 fschmid 921
                                                doc->DocItems = doc->Items;
522 fschmid 922
                                                doc->DocPages = doc->Pages;
923
                                        }
517 fschmid 924
                                        else
522 fschmid 925
                                        {
517 fschmid 926
                                                doc->MasterItems = doc->Items;
522 fschmid 927
                                                doc->MasterPages = doc->Pages;
928
                                        }
929
                                        doc->MasterP = false;
517 fschmid 930
                                        counter++;
931
                                }
932
                        PAGE=PAGE.nextSibling();
933
                }
1642 cbradney 934
                /*
517 fschmid 935
                PAGE=DOC.firstChild();
936
                while(!PAGE.isNull())
937
                {
938
                        QDomElement pg=PAGE.toElement();
939
                        if(pg.tagName()=="PDF")
940
                        {
1545 cbradney 941
                                doc->PDF_Options.Articles = static_cast<bool>(QStoInt(pg.attribute("Articles")));
942
                                doc->PDF_Options.Thumbnails = static_cast<bool>(QStoInt(pg.attribute("Thumbnails")));
943
                                doc->PDF_Options.Compress = static_cast<bool>(QStoInt(pg.attribute("Compress")));
944
                                doc->PDF_Options.CompressMethod = QStoInt(pg.attribute("CMethod","0"));
945
                                doc->PDF_Options.Quality = QStoInt(pg.attribute("Quality","0"));
946
                                doc->PDF_Options.RecalcPic = static_cast<bool>(QStoInt(pg.attribute("RecalcPic")));
947
                                doc->PDF_Options.Bookmarks = static_cast<bool>(QStoInt(pg.attribute("Bookmarks")));
517 fschmid 948
                                if (pg.hasAttribute("MirrorH"))
1545 cbradney 949
                                        doc->PDF_Options.MirrorH = static_cast<bool>(QStoInt(pg.attribute("MirrorH")));
517 fschmid 950
                                else
1545 cbradney 951
                                        doc->PDF_Options.MirrorH = false;
517 fschmid 952
                                if (pg.hasAttribute("MirrorV"))
1545 cbradney 953
                                        doc->PDF_Options.MirrorV = static_cast<bool>(QStoInt(pg.attribute("MirrorV")));
517 fschmid 954
                                else
1545 cbradney 955
                                        doc->PDF_Options.MirrorV = false;
517 fschmid 956
                                if (pg.hasAttribute("RotateDeg"))
1545 cbradney 957
                                        doc->PDF_Options.RotateDeg = QStoInt(pg.attribute("RotateDeg","0"));
517 fschmid 958
                                else
1545 cbradney 959
                                        doc->PDF_Options.RotateDeg = 0;
960
                                doc->PDF_Options.PresentMode = static_cast<bool>(QStoInt(pg.attribute("PresentMode")));
961
                                doc->PDF_Options.PicRes = QStoInt(pg.attribute("PicRes"));
962
                                doc->PDF_Options.Version = QStoInt(pg.attribute("Version"));
963
                                doc->PDF_Options.Resolution = QStoInt(pg.attribute("Resolution"));
964
                                doc->PDF_Options.Binding = QStoInt(pg.attribute("Binding"));
965
                                doc->PDF_Options.Datei = "";
966
                                doc->PDF_Options.isGrayscale = static_cast<bool>(QStoInt(pg.attribute("Grayscale","0")));
967
                                doc->PDF_Options.UseRGB = static_cast<bool>(QStoInt(pg.attribute("RGBMode","0")));
968
                                doc->PDF_Options.UseProfiles = static_cast<bool>(QStoInt(pg.attribute("UseProfiles","0")));
969
                                doc->PDF_Options.UseProfiles2 = static_cast<bool>(QStoInt(pg.attribute("UseProfiles2","0")));
970
                                doc->PDF_Options.Intent = QStoInt(pg.attribute("Intent","1"));
971
                                doc->PDF_Options.Intent2 = QStoInt(pg.attribute("Intent2","1"));
972
                                doc->PDF_Options.SolidProf = pg.attribute("SolidP", "");
973
                                doc->PDF_Options.ImageProf = pg.attribute("ImageP", "");
974
                                doc->PDF_Options.PrintProf = pg.attribute("PrintP", "");
975
                                doc->PDF_Options.Info = pg.attribute("InfoString", "");
976
                                doc->PDF_Options.BleedTop = QStodouble(pg.attribute("BTop","0"));
977
                                doc->PDF_Options.BleedLeft = QStodouble(pg.attribute("BLeft","0"));
978
                                doc->PDF_Options.BleedRight = QStodouble(pg.attribute("BRight","0"));
979
                                doc->PDF_Options.BleedBottom = QStodouble(pg.attribute("BBottom","0"));
980
                                doc->PDF_Options.EmbeddedI = static_cast<bool>(QStoInt(pg.attribute("ImagePr","0")));
981
                                doc->PDF_Options.PassOwner = pg.attribute("PassOwner", "");
982
                                doc->PDF_Options.PassUser = pg.attribute("PassUser", "");
983
                                doc->PDF_Options.Permissions = QStoInt(pg.attribute("Permissions","-4"));
984
                                doc->PDF_Options.Encrypt = static_cast<bool>(QStoInt(pg.attribute("Encrypt","0")));
985
                                doc->PDF_Options.UseLPI = static_cast<bool>(QStoInt(pg.attribute("UseLpi","0")));
517 fschmid 986
                                QDomNode PFO = PAGE.firstChild();
987
                                while(!PFO.isNull())
988
                                {
989
                                        QDomElement pdfF = PFO.toElement();
990
                                        if(pdfF.tagName() == "LPI")
991
                                        {
1065 cbradney 992
                                                struct LPIData lpo;
517 fschmid 993
                                                lpo.Angle = QStoInt(pdfF.attribute("Angle"));
994
                                                lpo.Frequency = QStoInt(pdfF.attribute("Frequency"));
995
                                                lpo.SpotFunc = QStoInt(pdfF.attribute("SpotFunction"));
1545 cbradney 996
                                                doc->PDF_Options.LPISettings[pdfF.attribute("Color")] = lpo;
517 fschmid 997
                                        }
998
                                        if(pdfF.tagName() == "Fonts")
999
                                        {
1545 cbradney 1000
                                                if (!doc->PDF_Options.EmbedList.contains(pdfF.attribute("Name")))
1001
                                                        doc->PDF_Options.EmbedList.append(pdfF.attribute("Name"));
517 fschmid 1002
                                        }
1003
                                        if(pdfF.tagName() == "Subset")
1004
                                        {
1545 cbradney 1005
                                                if (!doc->PDF_Options.SubsetList.contains(pdfF.attribute("Name")))
1006
                                                        doc->PDF_Options.SubsetList.append(pdfF.attribute("Name"));
517 fschmid 1007
                                        }
1008
                                        if(pdfF.tagName() == "Effekte")
1009
                                        {
1065 cbradney 1010
                                        struct PDFPresentationData ef;
1011
                                        ef.pageEffectDuration = QStoInt(pdfF.attribute("pageEffectDuration"));
1012
                                        ef.pageViewDuration = QStoInt(pdfF.attribute("pageViewDuration"));
1013
                                        ef.effectType = QStoInt(pdfF.attribute("effectType"));
517 fschmid 1014
                                        ef.Dm = QStoInt(pdfF.attribute("Dm"));
1015
                                        ef.M = QStoInt(pdfF.attribute("M"));
1016
                                        ef.Di = QStoInt(pdfF.attribute("Di"));
1545 cbradney 1017
                                                doc->PDF_Options.PresentVals.append(ef);
517 fschmid 1018
                                        }
1019
                                        PFO = PFO.nextSibling();
1020
                                }
1021
                        }
1022
                        PAGE=PAGE.nextSibling();
1642 cbradney 1023
        }*/
517 fschmid 1024
                DOC=DOC.nextSibling();
1025
        }
1026
        if (TableItems.count() != 0)
1027
        {
1028
                for (uint ttc = 0; ttc < TableItems.count(); ++ttc)
1029
                {
1030
                        PageItem* ta = TableItems.at(ttc);
1031
                        if (ta->TopLinkID != -1)
1032
                                ta->TopLink = doc->Items.at(TableID[ta->TopLinkID]);
1033
                        else
1034
                                ta->TopLink = 0;
1035
                        if (ta->LeftLinkID != -1)
1036
                                ta->LeftLink = doc->Items.at(TableID[ta->LeftLinkID]);
1037
                        else
1038
                                ta->LeftLink = 0;
1039
                        if (ta->RightLinkID != -1)
1040
                                ta->RightLink = doc->Items.at(TableID[ta->RightLinkID]);
1041
                        else
1042
                                ta->RightLink = 0;
1043
                        if (ta->BottomLinkID != -1)
1044
                                ta->BottomLink = doc->Items.at(TableID[ta->BottomLinkID]);
1045
                        else
1046
                                ta->BottomLink = 0;
1047
                }
1048
        }
1049
        doc->Pages = doc->DocPages;
1050
        doc->PageC = doc->Pages.count();
1051
        doc->Items = doc->DocItems;
1052
        doc->MasterP = false;
1053
        view->reformPages();
1054
        if (doc->Layers.count() == 0)
1055
        {
1056
                la.LNr = 0;
1057
                la.Level = 0;
1058
                la.Name = QObject::tr("Background");
1065 cbradney 1059
                la.isViewable = true;
1060
                la.isPrintable = true;
517 fschmid 1061
                doc->Layers.append(la);
1062
        }
1063
        if (LFrames.count() != 0)
1064
        {
1065
                PageItem *Its;
1066
                PageItem *Itn;
1067
                PageItem *Itr;
537 fschmid 1068
                QValueList<int>::Iterator lc;
517 fschmid 1069
                for (lc = LFrames.begin(); lc != LFrames.end(); ++lc)
1070
                {
537 fschmid 1071
                        Its = doc->Items.at((*lc));
517 fschmid 1072
                        Itr = Its;
1073
                        Its->BackBox = 0;
1074
                        if (Its->isAutoText)
1075
                                doc->FirstAuto = Its;
1076
                        while (Its->NextIt != -1)
1077
                        {
537 fschmid 1078
                                Itn = doc->Items.at(Its->NextIt);
517 fschmid 1079
                                Its->NextBox = Itn;
1080
                                Itn->BackBox = Its;
1081
                                Its = Itn;
1082
                        }
1083
                        Its->NextBox = 0;
1084
                }
1085
        }
1525 cbradney 1086
        view->UN->setText(unitGetStrFromIndex(doc->docUnitIndex));
517 fschmid 1087
        dia2->setProgress(DOC.childNodes().count());
1088
        return true;
1089
}
1090
 
1428 fschmid 1091
QString FileLoader::GetItemText(QDomElement *it, ScribusDoc *doc, ApplicationPrefs *Prefs)
517 fschmid 1092
{
1093
        QString tmp2, tmf, tmpf, tmp3, tmp;
1094
        tmp = "";
1095
        tmp2 = it->attribute("CH");
1096
        tmp2.replace(QRegExp("\r"), QChar(5));
1097
        tmp2.replace(QRegExp("\n"), QChar(5));
1098
        tmp2.replace(QRegExp("\t"), QChar(4));
1194 fschmid 1099
        tmpf = it->attribute("CFONT", doc->toolSettings.defFont);
1428 fschmid 1100
        if ((!Prefs->AvailFonts.find(tmpf)) || (!Prefs->AvailFonts[tmpf]->UseFont))
1101
        {
1102
                if ((!Prefs->GFontSub.contains(tmpf)) || (!Prefs->AvailFonts[Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 1103
                {
1104
                        newReplacement = true;
1428 fschmid 1105
                        ReplacedFonts.insert(tmpf, Prefs->toolSettings.defFont);
1468 fschmid 1106
                }
1428 fschmid 1107
                else
1108
                        ReplacedFonts.insert(tmpf, Prefs->GFontSub[tmpf]);
1109
        }
517 fschmid 1110
        else
1428 fschmid 1111
        {
1112
                QFont fo = Prefs->AvailFonts[tmpf]->Font;
1113
                fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
1114
                doc->AddFont(tmpf, fo);
1115
        }
517 fschmid 1116
        tmp3 = "\t" + tmpf + "\t";
1117
        tmp3 += it->attribute("CSIZE") + "\t";
1118
        tmp3 += it->attribute("CCOLOR") + "\t";
1119
        tmp3 += it->attribute("CEXTRA") + "\t";
1120
        tmp3 += it->attribute("CSHADE") + "\t";
1121
        tmp3 += it->attribute("CSTYLE") + "\t";
1428 fschmid 1122
        tmp3 += it->attribute("CAB","0") + "\t";
517 fschmid 1123
        tmp3 += it->attribute("CSTROKE","None") + "\t";
1124
        tmp3 += it->attribute("CSHADE2","100") + "\t";
1125
        tmp3 += it->attribute("CSCALE","100") + "\n";
1126
        for (uint cxx=0; cxx<tmp2.length(); ++cxx)
1127
                tmp += tmp2.at(cxx)+tmp3;
1128
        return tmp;
1129
}