Subversion Repositories Scribus

Rev

Rev 2445 | Rev 2449 | 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"
2445 cbradney 21
#include "pagestructs.h"
617 cbradney 22
#ifdef _MSC_VER
23
 #if (_MSC_VER >= 1200)
24
  #include "win-config.h"
25
 #endif
506 fschmid 26
#else
617 cbradney 27
 #include "config.h"
506 fschmid 28
#endif
29
#ifdef HAVE_LIBZ
30
        #include <zlib.h>
31
#endif
32
extern bool loadText(QString nam, QString *Buffer);
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);
1779 fschmid 36
extern QPointArray FlattenPath(FPointArray ina, QValueList<uint> &Segs);
506 fschmid 37
 
38
/*!
1227 cbradney 39
 \fn FileLoader::FileLoader(QString fileName, ScribusApp* app)
506 fschmid 40
 \author Franz Schmid
41
 \date
42
 \brief Constructor, sets the variable "FileName" to the input parameter fileName
43
 \param QString fileName
44
 \retval None
45
 */
516 fschmid 46
FileLoader::FileLoader(QString fileName, ScribusApp* app)
506 fschmid 47
{
48
        FileName = fileName;
49
        FileType = -1;
1549 subik 50
        havePS = app->pluginManager->DLLexists(6);
51
        haveSVG = app->pluginManager->DLLexists(10);
52
        haveSXD = app->pluginManager->DLLexists(12);
506 fschmid 53
}
54
 
55
/*!
56
 \fn int FileLoader::TestFile()
57
 \author Franz Schmid
58
 \date
59
 \brief Tests if the file "FileName" exists and determines the type of the file.
60
 \param None
61
 \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
62
 */
63
int FileLoader::TestFile()
64
{
65
        QFileInfo fi = QFileInfo(FileName);
66
        int ret = -1;
67
        if (!fi.exists())
68
                ret = -1;
69
        QString ext = fi.extension(true).lower();
550 fschmid 70
        if ((ext.endsWith("sla.gz")) || (ext.endsWith("sla")) || (ext.endsWith("scd.gz")) || (ext.endsWith("scd")))
506 fschmid 71
                ret = CheckScribus();
550 fschmid 72
        else if (((ext.endsWith("ps")) || (ext.endsWith("eps"))) && (havePS))
506 fschmid 73
                ret = 2;
550 fschmid 74
        else if (((ext.endsWith("svg")) || (ext.endsWith("svgz"))) && (haveSVG))
506 fschmid 75
                ret = 3;
550 fschmid 76
        else if ((ext.endsWith("sxd")) && (haveSXD))
541 fschmid 77
                ret = 5;
506 fschmid 78
/*      if (ext == "pdf")
79
                ret = 4; */
80
        FileType = ret;
81
        return ret;
82
}
83
 
84
/*!
85
 \fn int FileLoader::CheckScribus()
86
 \author Franz Schmid
87
 \date
88
 \brief Checks which Scribus fileformat the File in FileName has.
89
 \param None
90
 \retval 0 for old Scribus files, 1 for Scribus files created by Scribus 1.3 and above
91
 */
92
int FileLoader::CheckScribus()
93
{
94
        int ret = -1;
95
        QString fText = ReadDatei(FileName);
96
        if (fText == "")
97
                return ret;
517 fschmid 98
        if ((fText.startsWith("<SCRIBUSUTF8NEW")) && (fText.contains("<PAGE ", TRUE) != 0))
99
                return 1;
506 fschmid 100
        if ((fText.startsWith("<SCRIBUS")) && (fText.contains("<PAGE ", TRUE) != 0))
101
                return 0;
102
        return ret;
103
}
104
 
105
/*!
106
 \fn QString FileLoader::ReadDatei(QString fileName)
107
 \author Franz Schmid
108
 \date
109
 \brief Auxiliary function loads the file "fileName" into a QString and does conversion from UTF8 if required
110
 \param QString fileName
111
 \retval QString Contents of the file, converted from UTF8
112
 */
113
QString FileLoader::ReadDatei(QString fileName)
114
{
115
/**
116
  * added to support gz docs
117
  * 2.7.2002 C.Toepp
118
  * <c.toepp@gmx.de>
119
  */
120
        QString f = "";
121
#ifdef HAVE_LIBZ
122
        if(fileName.right(2) == "gz")
123
        {
124
                gzFile gzDoc;
125
                char buff[4097];
126
                int i;
127
                gzDoc = gzopen(fileName.latin1(),"rb");
128
                if(gzDoc == NULL)
129
                        return "";
130
                while((i = gzread(gzDoc,&buff,4096)) > 0)
131
                {
132
                        buff[i] = '\0';
133
                        f.append(buff);
134
                }
135
                gzclose(gzDoc);
136
        }
137
        else
138
                loadText(fileName, &f);
139
#else
140
        loadText(fileName, &f);
141
#endif
142
        QString ff = "";
143
        if (f.startsWith("<SCRIBUSUTF8"))
144
                ff = QString::fromUtf8(f);
145
        else if (f.startsWith("<SCRIBUS"))
146
                ff = f;
1874 fschmid 147
        if (ff.endsWith(QChar(10)) || ff.endsWith(QChar(13)))
148
                ff.truncate(ff.length()-1);
506 fschmid 149
        return ff;
150
/** end changes */
151
}
152
 
153
/*!
154
 \fn bool FileLoader::LoadFile(ScribusApp* app)
155
 \author Franz Schmid
156
 \date
157
 \brief Loads the file "FileName" as a Scribus document
158
 \param ScribusApp* app, pointer to the main application class
159
 \retval bool true when loading is succsessful, false otherwise
160
 */
161
bool FileLoader::LoadFile(ScribusApp* app)
162
{
163
        bool ret = false;
1468 fschmid 164
        newReplacement = false;
879 fschmid 165
        app->doc->guidesSettings.marginsShown = app->Prefs.guidesSettings.marginsShown;
166
        app->doc->guidesSettings.framesShown = app->Prefs.guidesSettings.framesShown;
167
        app->doc->guidesSettings.gridShown = app->Prefs.guidesSettings.gridShown;
168
        app->doc->guidesSettings.guidesShown = app->Prefs.guidesSettings.guidesShown;
169
        app->doc->guidesSettings.baseShown = app->Prefs.guidesSettings.baseShown;
170
        app->doc->guidesSettings.linkShown = app->Prefs.guidesSettings.linkShown;
1194 fschmid 171
        app->doc->toolSettings.polyC = app->Prefs.toolSettings.polyC;
172
        app->doc->toolSettings.polyF = app->Prefs.toolSettings.polyF;
173
        app->doc->toolSettings.polyR = app->Prefs.toolSettings.polyR;
174
        app->doc->toolSettings.polyFd = app->Prefs.toolSettings.polyFd;
175
        app->doc->toolSettings.polyS = app->Prefs.toolSettings.polyS;
734 fschmid 176
        app->doc->AutoSave = app->Prefs.AutoSave;
177
        app->doc->AutoSaveTime = app->Prefs.AutoSaveTime;
1428 fschmid 178
        ReplacedFonts.clear();
1789 fschmid 179
        dummyFois.clear();
180
        dummyFois.setAutoDelete(true);
506 fschmid 181
        switch (FileType)
182
        {
183
                case 0:
184
                        {
185
                                ScriXmlDoc *ss = new ScriXmlDoc();
186
                                QObject::connect(ss, SIGNAL(NewPage(int)), app, SLOT(slotNewPage(int)));
1166 fschmid 187
                                ss->ReplacedFonts.clear();
1468 fschmid 188
                                ss->newReplacement = false;
1789 fschmid 189
                                ss->dummyFois.clear();
2433 cbradney 190
                                ret = ss->ReadDoc(FileName, app->Prefs.AvailFonts, app->doc, app->view, app->mainWindowProgressBar);
506 fschmid 191
                                QObject::disconnect(ss, SIGNAL(NewPage(int)), app, SLOT(slotNewPage(int)));
1166 fschmid 192
                                ReplacedFonts = ss->ReplacedFonts;
1468 fschmid 193
                                newReplacement = ss->newReplacement;
1789 fschmid 194
                                dummyFois = ss->dummyFois;
506 fschmid 195
                                delete ss;
196
                        }
197
                        break;
517 fschmid 198
                case 1:
2433 cbradney 199
                        ret = ReadDoc(app, FileName, app->Prefs.AvailFonts, app->doc, app->view, app->mainWindowProgressBar);
517 fschmid 200
                        break;
506 fschmid 201
                case 2:
1549 subik 202
                        app->pluginManager->dllInput = FileName;
203
                        app->pluginManager->callDLL( 6 );
506 fschmid 204
                        ret = true;
205
                        break;
206
                case 3:
1549 subik 207
                        app->pluginManager->dllInput = FileName;
208
                        app->pluginManager->callDLL( 10 );
506 fschmid 209
                        ret = true;
210
                        break;
541 fschmid 211
                case 5:
1549 subik 212
                        app->pluginManager->dllInput = FileName;
213
                        app->pluginManager->callDLL( 12 );
541 fschmid 214
                        ret = true;
215
                        break;
506 fschmid 216
                default:
217
                        ret = false;
218
                        break;
219
        }
2447 fschmid 220
        for (uint d = 0; d < app->doc->MasterItems.count(); ++d)
221
        {
222
                PageItem *it = app->doc->MasterItems.at(d);
223
                if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
224
                {
225
                        for (uint e = 0; e < it->itemText.count(); ++e)
226
                        {
227
                                ScText *hl = it->itemText.at(e);
228
                                if ((hl->ch == QChar(25)) && ((int)hl->cembedded != -1))
229
                                        hl->cembedded = app->doc->FrameItems.at((int)hl->cembedded);
230
                                else
231
                                        hl->cembedded = 0;
232
                        }
233
                }
234
        }
235
        for (uint d = 0; d < app->doc->DocItems.count(); ++d)
236
        {
237
                PageItem *it = app->doc->DocItems.at(d);
238
                if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
239
                {
240
                        for (uint e = 0; e < it->itemText.count(); ++e)
241
                        {
242
                                ScText *hl = it->itemText.at(e);
243
                                if ((hl->ch == QChar(25)) && ((int)hl->cembedded != -1))
244
                                        hl->cembedded = app->doc->FrameItems.at((int)hl->cembedded);
245
                                else
246
                                        hl->cembedded = 0;
247
                        }
248
                }
249
        }
1789 fschmid 250
        if (ReplacedFonts.count() != 0)
1428 fschmid 251
        {
1789 fschmid 252
                if ((app->Prefs.askBeforeSubstituite) || (newReplacement))
253
                {
254
                        qApp->setOverrideCursor(QCursor(Qt::arrowCursor), true);
255
                        FontReplaceDialog *dia = new FontReplaceDialog(0, &app->Prefs, &ReplacedFonts);
256
                        dia->exec();
257
                        QMap<QString,QString>::Iterator itfsu;
258
                        for (itfsu = ReplacedFonts.begin(); itfsu != ReplacedFonts.end(); ++itfsu)
259
                        {
260
                                if (dia->stickyReplacements->isChecked())
261
                                        app->Prefs.GFontSub[itfsu.key()] = itfsu.data();
262
                        }
263
                        delete dia;
264
                }
1428 fschmid 265
                for (uint d = 0; d < app->doc->MasterItems.count(); ++d)
266
                {
267
                        PageItem *it = app->doc->MasterItems.at(d);
268
                        if ((!app->doc->UsedFonts.contains(it->IFont)) && (it->IFont != ""))
269
                                it->IFont = ReplacedFonts[it->IFont];
1460 cbradney 270
                        if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
1428 fschmid 271
                        {
272
                                for (uint e = 0; e < it->itemText.count(); ++e)
273
                                {
1789 fschmid 274
                                if (!app->doc->UsedFonts.contains(it->itemText.at(e)->cfont->SCName))
275
                                        it->itemText.at(e)->cfont = (*app->doc->AllFonts)[ReplacedFonts[it->itemText.at(e)->cfont->SCName]];
1428 fschmid 276
                                }
277
                        }
278
                }
279
                for (uint d = 0; d < app->doc->DocItems.count(); ++d)
280
                {
281
                        PageItem *it = app->doc->DocItems.at(d);
282
                        if ((!app->doc->UsedFonts.contains(it->IFont)) && (it->IFont != ""))
283
                                it->IFont = ReplacedFonts[it->IFont];
1460 cbradney 284
                        if ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText))
1428 fschmid 285
                        {
286
                                for (uint e = 0; e < it->itemText.count(); ++e)
287
                                {
1789 fschmid 288
                                if (!app->doc->UsedFonts.contains(it->itemText.at(e)->cfont->SCName))
289
                                        it->itemText.at(e)->cfont = (*app->doc->AllFonts)[ReplacedFonts[it->itemText.at(e)->cfont->SCName]];
1428 fschmid 290
                                }
291
                        }
292
                }
293
                for (uint a = 0; a < app->doc->docParagraphStyles.count(); ++a)
294
                {
295
                        if ((!app->doc->UsedFonts.contains(app->doc->docParagraphStyles[a].Font)) && (app->doc->docParagraphStyles[a].Font != ""))
296
                                app->doc->docParagraphStyles[a].Font = ReplacedFonts[app->doc->docParagraphStyles[a].Font];
297
                }
298
                QValueList<QString> tmpList;
299
                tmpList.clear();
1545 cbradney 300
                for (uint fe = 0; fe <  app->doc->PDF_Options.EmbedList.count(); ++fe)
1428 fschmid 301
                {
1545 cbradney 302
                        if (ReplacedFonts.contains(app->doc->PDF_Options.EmbedList[fe]))
303
                                tmpList.append(ReplacedFonts[app->doc->PDF_Options.EmbedList[fe]]);
1428 fschmid 304
                        else
1545 cbradney 305
                                tmpList.append(app->doc->PDF_Options.EmbedList[fe]);
1428 fschmid 306
                }
1545 cbradney 307
                app->doc->PDF_Options.EmbedList = tmpList;
1428 fschmid 308
                tmpList.clear();
1545 cbradney 309
                for (uint fe = 0; fe <  app->doc->PDF_Options.SubsetList.count(); ++fe)
1428 fschmid 310
                {
1545 cbradney 311
                        if (ReplacedFonts.contains(app->doc->PDF_Options.SubsetList[fe]))
312
                                tmpList.append(ReplacedFonts[app->doc->PDF_Options.SubsetList[fe]]);
1428 fschmid 313
                        else
1545 cbradney 314
                                tmpList.append(app->doc->PDF_Options.SubsetList[fe]);
1428 fschmid 315
                }
1545 cbradney 316
                app->doc->PDF_Options.SubsetList = tmpList;
1428 fschmid 317
                QMap<QString,QString>::Iterator itfsu;
318
                for (itfsu = ReplacedFonts.begin(); itfsu != ReplacedFonts.end(); ++itfsu)
319
                {
1786 fschmid 320
                        if (!app->doc->UsedFonts.contains(itfsu.data()))
321
                        {
322
                                QFont fo = app->Prefs.AvailFonts[itfsu.data()]->Font;
323
                                fo.setPointSize(qRound(app->doc->toolSettings.defSize / 10.0));
324
                                app->doc->AddFont(itfsu.data(), fo);
325
                        }
1428 fschmid 326
                }
1789 fschmid 327
                if (app->Prefs.askBeforeSubstituite)
328
                        ReplacedFonts.clear();
329
                dummyFois.clear();
1428 fschmid 330
        }
1549 subik 331
        app->pluginManager->dllInput = "";
506 fschmid 332
        return ret;
333
}
517 fschmid 334
 
335
bool FileLoader::ReadDoc(ScribusApp* app, QString fileName, SCFonts &avail, ScribusDoc *doc, ScribusView *view, QProgressBar *dia2)
336
{
1065 cbradney 337
        struct ParagraphStyle vg;
517 fschmid 338
        struct Layer la;
339
        struct ScribusDoc::BookMa bok;
340
        int counter, Pgc;
341
        bool AtFl;
342
        bool newVersion = false;
343
        QString tmp, tmpf, tmp2, tmp3, tmp4, PgNam, Defont, tmf;
344
        QFont fo;
345
        QMap<int,int> TableID;
346
        QPtrList<PageItem> TableItems;
1779 fschmid 347
        int a;
2282 fschmid 348
        double xf, xf2;
517 fschmid 349
        PageItem *Neu;
350
        Page* Apage;
351
        LFrames.clear();
352
        QDomDocument docu("scridoc");
353
        QString f = "";
354
        f = ReadDatei(fileName);
355
        /* 2004/10/02 - petr vanek - bug #1092 - missing <PAGE> crash Scribus. The check constraint moved into IsScribus()
356
        FIXME: I've add test on containig tag PAGE but returning FALSE freezes S. in scribus.cpp need some hack too...  */
357
        if (!docu.setContent(f))
358
                return false;
1549 subik 359
        doc->PageColors.clear();
517 fschmid 360
        doc->Layers.clear();
361
        CMYKColor lf = CMYKColor();
362
        QDomElement elem=docu.documentElement();
363
        if (elem.tagName() != "SCRIBUSUTF8NEW")
364
                return false;
365
        if (elem.hasAttribute("Version"))
366
                newVersion = true;
367
        QDomNode DOC=elem.firstChild();
368
        dia2->setTotalSteps(DOC.childNodes().count());
369
        dia2->setProgress(0);
370
        int ObCount = 0;
371
        TableItems.clear();
372
        TableID.clear();
373
        while(!DOC.isNull())
374
        {
375
                QDomElement dc=DOC.toElement();
376
        /*
377
        * Attribute von DOCUMENT auslesen
378
        */
1542 cbradney 379
                //CB Add this in to set this in the file in memory. Its saved, why not load it. 
380
                //Will of course be replaced by per page settings although we still probably need a document default
381
                doc->PageSize = dc.attribute("PAGESIZE");
517 fschmid 382
                doc->PageOri = QStoInt(dc.attribute("ORIENTATION","0"));
383
                doc->FirstPnum = QStoInt(dc.attribute("FIRSTNUM","1"));
384
                doc->PageFP=QStoInt(dc.attribute("BOOK", "0"));
385
                doc->FirstPageLeft=QStoInt(dc.attribute("FIRSTLEFT","0"));
386
                doc->PageAT=QStoInt(dc.attribute("AUTOTEXT"));
387
                doc->PageSp=QStoInt(dc.attribute("AUTOSPALTEN"));
388
                doc->PageSpa=QStodouble(dc.attribute("ABSTSPALTEN"));
1065 cbradney 389
                doc->docUnitIndex = QStoInt(dc.attribute("UNITS","0"));
1194 fschmid 390
                doc->toolSettings.defSize=qRound(QStodouble(dc.attribute("DSIZE")) * 10);
517 fschmid 391
                Defont=dc.attribute("DFONT");
1428 fschmid 392
                if ((!avail.find(Defont)) || (!avail[Defont]->UseFont))
517 fschmid 393
                {
1428 fschmid 394
                        ReplacedFonts.insert(Defont, view->Prefs->toolSettings.defFont);
395
                        Defont = view->Prefs->toolSettings.defFont;
517 fschmid 396
                }
397
                else
1428 fschmid 398
                {
399
                        QFont fo = avail[Defont]->Font;
400
                        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
401
                        doc->AddFont(Defont, fo);
402
                }
1194 fschmid 403
                doc->toolSettings.defFont = Defont;
404
                doc->toolSettings.dCols=QStoInt(dc.attribute("DCOL", "1"));
405
                doc->toolSettings.dGap=QStodouble(dc.attribute("DGAP", "0.0"));
2024 cbradney 406
                doc->documentInfo.setAuthor(dc.attribute("AUTHOR"));
407
                doc->documentInfo.setComments(dc.attribute("COMMENTS"));
408
                doc->documentInfo.setKeywords(dc.attribute("KEYWORDS",""));
409
                doc->documentInfo.setTitle(dc.attribute("TITLE"));
410
                doc->documentInfo.setPublisher(dc.attribute("PUBLISHER", ""));
411
                doc->documentInfo.setDate(dc.attribute("DOCDATE", ""));
412
                doc->documentInfo.setType(dc.attribute("DOCTYPE", ""));
413
                doc->documentInfo.setFormat(dc.attribute("DOCFORMAT", ""));
414
                doc->documentInfo.setIdent(dc.attribute("DOCIDENT", ""));
415
                doc->documentInfo.setSource(dc.attribute("DOCSOURCE", ""));
416
                doc->documentInfo.setLangInfo(dc.attribute("DOCLANGINFO", ""));
417
                doc->documentInfo.setRelation(dc.attribute("DOCRELATION", ""));
418
                doc->documentInfo.setCover(dc.attribute("DOCCOVER", ""));
419
                doc->documentInfo.setRights(dc.attribute("DOCRIGHTS", ""));
420
                doc->documentInfo.setContrib(dc.attribute("DOCCONTRIB", ""));
823 fschmid 421
                doc->typographicSetttings.valueSuperScript = QStoInt(dc.attribute("VHOCH"));
422
                doc->typographicSetttings.scalingSuperScript = QStoInt(dc.attribute("VHOCHSC"));
423
                doc->typographicSetttings.valueSubScript = QStoInt(dc.attribute("VTIEF"));
424
                doc->typographicSetttings.scalingSubScript = QStoInt(dc.attribute("VTIEFSC"));
425
                doc->typographicSetttings.valueSmallCaps = QStoInt(dc.attribute("VKAPIT"));
426
                doc->typographicSetttings.valueBaseGrid = QStodouble(dc.attribute("BASEGRID", "12"));
427
                doc->typographicSetttings.offsetBaseGrid = QStodouble(dc.attribute("BASEO", "0"));
428
                doc->typographicSetttings.autoLineSpacing = QStoInt(dc.attribute("AUTOL","20"));
2163 fschmid 429
                doc->typographicSetttings.valueUnderlinePos = QStoInt(dc.attribute("UnderlinePos","-1"));
430
                doc->typographicSetttings.valueUnderlineWidth = QStoInt(dc.attribute("UnderlineWidth","-1"));
431
                doc->typographicSetttings.valueStrikeThruPos = QStoInt(dc.attribute("StrikeThruPos","-1"));
432
                doc->typographicSetttings.valueStrikeThruWidth = QStoInt(dc.attribute("StrikeThruWidth","-1"));
517 fschmid 433
                doc->GroupCounter=QStoInt(dc.attribute("GROUPC","1"));
434
                doc->HasCMS = static_cast<bool>(QStoInt(dc.attribute("HCMS","0")));
435
                doc->CMSSettings.SoftProofOn = static_cast<bool>(QStoInt(dc.attribute("DPSo","0")));
436
                doc->CMSSettings.CMSinUse = static_cast<bool>(QStoInt(dc.attribute("DPuse","0")));
437
                doc->CMSSettings.GamutCheck = static_cast<bool>(QStoInt(dc.attribute("DPgam","0")));
438
                doc->CMSSettings.BlackPoint = static_cast<bool>(QStoInt(dc.attribute("DPbla","1")));
439
                doc->CMSSettings.DefaultMonitorProfile = dc.attribute("DPMo","");
440
                doc->CMSSettings.DefaultPrinterProfile = dc.attribute("DPPr","");
441
                doc->CMSSettings.DefaultInputProfile = dc.attribute("DPIn","");
442
                doc->CMSSettings.DefaultInputProfile2 = dc.attribute("DPIn2","");
443
                doc->CMSSettings.DefaultIntentPrinter = QStoInt(dc.attribute("DIPr","0"));
444
                doc->CMSSettings.DefaultIntentMonitor = QStoInt(dc.attribute("DIMo","1"));
445
                doc->CMSSettings.DefaultIntentMonitor2 = QStoInt(dc.attribute("DIMo2","1"));
446
                doc->ActiveLayer = QStoInt(dc.attribute("ALAYER","0"));
447
                doc->Language = dc.attribute("LANGUAGE", "");
448
                doc->MinWordLen = QStoInt(dc.attribute("MINWORDLEN", "3"));
449
                doc->HyCount = QStoInt(dc.attribute("HYCOUNT", "2"));
2305 cbradney 450
                if (dc.hasAttribute("PAGEWIDTH"))
451
                        doc->pageWidth=QStodouble(dc.attribute("PAGEWIDTH"));
452
                else
453
                        doc->pageWidth=QStodouble(dc.attribute("PAGEWITH"));
2142 cbradney 454
                doc->pageHeight=QStodouble(dc.attribute("PAGEHEIGHT"));
455
                doc->pageMargins.Left=QStodouble(dc.attribute("BORDERLEFT"));
456
                doc->pageMargins.Right=QStodouble(dc.attribute("BORDERRIGHT"));
457
                doc->pageMargins.Top=QStodouble(dc.attribute("BORDERTOP"));
458
                doc->pageMargins.Bottom=QStodouble(dc.attribute("BORDERBOTTOM"));
517 fschmid 459
                doc->Automatic = static_cast<bool>(QStoInt(dc.attribute("AUTOMATIC", "1")));
460
                doc->AutoCheck = static_cast<bool>(QStoInt(dc.attribute("AUTOCHECK", "0")));
461
                doc->GuideLock = static_cast<bool>(QStoInt(dc.attribute("GUIDELOCK", "0")));
879 fschmid 462
                doc->guidesSettings.minorGrid = QStodouble(dc.attribute("MINGRID", tmp.setNum(view->Prefs->guidesSettings.minorGrid)));
463
                doc->guidesSettings.majorGrid = QStodouble(dc.attribute("MAJGRID", tmp.setNum(view->Prefs->guidesSettings.majorGrid)));
464
                doc->guidesSettings.gridShown = static_cast<bool>(QStoInt(dc.attribute("SHOWGRID", "0")));
465
                doc->guidesSettings.guidesShown = static_cast<bool>(QStoInt(dc.attribute("SHOWGUIDES", "1")));
466
                doc->guidesSettings.framesShown = static_cast<bool>(QStoInt(dc.attribute("SHOWFRAME", "1")));
467
                doc->guidesSettings.marginsShown = static_cast<bool>(QStoInt(dc.attribute("SHOWMARGIN", "1")));
468
                doc->guidesSettings.baseShown = static_cast<bool>(QStoInt(dc.attribute("SHOWBASE", "0")));
469
                doc->guidesSettings.showPic = static_cast<bool>(QStoInt(dc.attribute("SHOWPICT", "1")));
470
                doc->guidesSettings.linkShown = static_cast<bool>(QStoInt(dc.attribute("SHOWLINK", "0")));
2353 fschmid 471
                doc->guidesSettings.showControls = static_cast<bool>(QStoInt(dc.attribute("SHOWControl","0")));
2407 fschmid 472
                doc->SnapGuides = static_cast<bool>(QStoInt(dc.attribute("SnapToGuides","0")));
473
                doc->useRaster = static_cast<bool>(QStoInt(dc.attribute("SnapToGrid","0")));
1194 fschmid 474
                doc->toolSettings.polyC = QStoInt(dc.attribute("POLYC", "4"));
475
                doc->toolSettings.polyF = QStodouble(dc.attribute("POLYF", "0.5"));
476
                doc->toolSettings.polyR = QStodouble(dc.attribute("POLYR", "0"));
477
                doc->toolSettings.polyFd = QStoInt(dc.attribute("POLYFD", "0"));
478
                doc->toolSettings.polyS = static_cast<bool>(QStoInt(dc.attribute("POLYS", "0")));
734 fschmid 479
                doc->AutoSave = static_cast<bool>(QStoInt(dc.attribute("AutoSave","0")));
480
                doc->AutoSaveTime = QStoInt(dc.attribute("AutoSaveTime","600000"));
745 fschmid 481
                doc->ScratchBottom = QStodouble(dc.attribute("ScratchBottom", "20"));
1719 craig 482
                // FIXME A typo in early 1.3cvs (MAR 05) means we must support loading of
483
                // FIXME 'ScatchLeft' for a while too. This can be removed in a few months.
484
                if (dc.hasAttribute("ScatchLeft"))
485
                        doc->ScratchLeft = QStodouble(dc.attribute("ScatchLeft", "100"));
486
                else
487
                        doc->ScratchLeft = QStodouble(dc.attribute("ScratchLeft", "100"));
745 fschmid 488
                doc->ScratchRight = QStodouble(dc.attribute("ScratchRight", "100"));
489
                doc->ScratchTop = QStodouble(dc.attribute("ScratchTop", "20"));
1194 fschmid 490
                doc->toolSettings.dStartArrow = QStoInt(dc.attribute("StartArrow", "0"));
491
                doc->toolSettings.dEndArrow = QStoInt(dc.attribute("EndArrow", "0"));
492
                doc->toolSettings.scaleX = QStodouble(dc.attribute("PICTSCX","1"));
493
                doc->toolSettings.scaleY = QStodouble(dc.attribute("PICTSCY","1"));
494
                doc->toolSettings.scaleType = static_cast<bool>(QStoInt(dc.attribute("PSCALE", "1")));
495
                doc->toolSettings.aspectRatio = static_cast<bool>(QStoInt(dc.attribute("PASPECT", "0")));
2025 fschmid 496
                doc->toolSettings.lowResType = QStoInt(dc.attribute("HalfRes", "1"));
2040 fschmid 497
                doc->toolSettings.useEmbeddedPath = static_cast<bool>(QStoInt(dc.attribute("EmbeddedPath", "0")));
745 fschmid 498
                if (dc.hasAttribute("PEN"))
1194 fschmid 499
                        doc->toolSettings.dPen = dc.attribute("PEN");
745 fschmid 500
                if (dc.hasAttribute("BRUSH"))
1194 fschmid 501
                        doc->toolSettings.dBrush = dc.attribute("BRUSH");
745 fschmid 502
                if (dc.hasAttribute("PENLINE"))
1194 fschmid 503
                        doc->toolSettings.dPenLine = dc.attribute("PENLINE");
745 fschmid 504
                if (dc.hasAttribute("PENTEXT"))
1194 fschmid 505
                        doc->toolSettings.dPenText = dc.attribute("PENTEXT");
745 fschmid 506
                if (dc.hasAttribute("StrokeText"))
1194 fschmid 507
                        doc->toolSettings.dStrokeText = dc.attribute("StrokeText");
508
                doc->toolSettings.dLineArt = static_cast<Qt::PenStyle>(QStoInt(dc.attribute("STIL")));
509
                doc->toolSettings.dLstyleLine = static_cast<Qt::PenStyle>(QStoInt(dc.attribute("STILLINE")));
510
                doc->toolSettings.dWidth = QStodouble(dc.attribute("WIDTH", "1"));
511
                doc->toolSettings.dWidthLine = QStodouble(dc.attribute("WIDTHLINE", "1"));
512
                doc->toolSettings.dShade2 = QStoInt(dc.attribute("PENSHADE", "100"));
513
                doc->toolSettings.dShadeLine = QStoInt(dc.attribute("LINESHADE", "100"));
514
                doc->toolSettings.dShade = QStoInt(dc.attribute("BRUSHSHADE", "100"));
515
                doc->toolSettings.magMin = QStoInt(dc.attribute("MAGMIN","10"));
516
                doc->toolSettings.magMax = QStoInt(dc.attribute("MAGMAX","3200"));
517
                doc->toolSettings.magStep = QStoInt(dc.attribute("MAGSTEP","25"));
2219 fschmid 518
                doc->toolSettings.tabFillChar = dc.attribute("TabFill","");
2285 fschmid 519
                doc->toolSettings.dTabWidth=QStodouble(dc.attribute("TabWidth", "36.0"));
745 fschmid 520
                if (dc.hasAttribute("CPICT"))
1194 fschmid 521
                        doc->toolSettings.dBrushPict = dc.attribute("CPICT");
522
                doc->toolSettings.shadePict = QStoInt(dc.attribute("PICTSHADE","100"));
745 fschmid 523
                if (dc.hasAttribute("PAGEC"))
524
                        doc->papColor = QColor(dc.attribute("PAGEC"));
525
                if (dc.hasAttribute("MARGC"))
879 fschmid 526
                        doc->guidesSettings.margColor = QColor(dc.attribute("MARGC"));
745 fschmid 527
                if (dc.hasAttribute("MINORC"))
879 fschmid 528
                        doc->guidesSettings.minorColor = QColor(dc.attribute("MINORC"));
745 fschmid 529
                if (dc.hasAttribute("MAJORC"))
879 fschmid 530
                        doc->guidesSettings.majorColor = QColor(dc.attribute("MAJORC"));
745 fschmid 531
                if (dc.hasAttribute("GuideC"))
879 fschmid 532
                        doc->guidesSettings.guideColor = QColor(dc.attribute("GuideC"));
745 fschmid 533
                if (dc.hasAttribute("BaseC"))
879 fschmid 534
                        doc->guidesSettings.baseColor = QColor(dc.attribute("BaseC"));
1065 cbradney 535
                doc->marginColored = static_cast<bool>(QStoInt(dc.attribute("RANDF","0")));
1187 fschmid 536
                doc->guidesSettings.before = static_cast<bool>(QStoInt(dc.attribute("BACKG","1")));
2169 fschmid 537
                doc->guidesSettings.guideRad = QStodouble(dc.attribute("GuideRad","10"));
879 fschmid 538
                doc->guidesSettings.grabRad = QStoInt(dc.attribute("GRAB","4"));
1261 fschmid 539
                if (dc.hasAttribute("currentProfile"))
1284 fschmid 540
                {
541
                        doc->checkerProfiles.clear();
1261 fschmid 542
                        doc->curCheckProfile = dc.attribute("currentProfile");
1284 fschmid 543
                }
1016 fschmid 544
                doc->LastAuto = 0;
517 fschmid 545
                QDomNode PAGE=DOC.firstChild();
546
                counter = 0;
547
                while(!PAGE.isNull())
548
                {
549
                        ObCount++;
550
                        dia2->setProgress(ObCount);
551
                        QDomElement pg=PAGE.toElement();
1261 fschmid 552
                        if (pg.tagName()=="CheckProfile")
553
                        {
554
                                struct checkerPrefs checkerSettings;
555
                                checkerSettings.ignoreErrors = static_cast<bool>(QStoInt(pg.attribute("ignoreErrors", "0")));
556
                                checkerSettings.autoCheck = static_cast<bool>(QStoInt(pg.attribute("autoCheck", "1")));
557
                                checkerSettings.checkGlyphs = static_cast<bool>(QStoInt(pg.attribute("checkGlyphs", "1")));
558
                                checkerSettings.checkOrphans = static_cast<bool>(QStoInt(pg.attribute("checkOrphans", "1")));
559
                                checkerSettings.checkOverflow = static_cast<bool>(QStoInt(pg.attribute("checkOverflow", "1")));
560
                                checkerSettings.checkPictures = static_cast<bool>(QStoInt(pg.attribute("checkPictures", "1")));
561
                                checkerSettings.checkResolution = static_cast<bool>(QStoInt(pg.attribute("checkResolution", "1")));
562
                                checkerSettings.checkTransparency = static_cast<bool>(QStoInt(pg.attribute("checkTransparency", "1")));
563
                                checkerSettings.minResolution = QStodouble(pg.attribute("minResolution","72"));
1284 fschmid 564
                                checkerSettings.checkAnnotations = static_cast<bool>(QStoInt(pg.attribute("checkAnnotations", "0")));
565
                                checkerSettings.checkRasterPDF = static_cast<bool>(QStoInt(pg.attribute("checkRasterPDF", "1")));
1261 fschmid 566
                                doc->checkerProfiles[pg.attribute("Name")] = checkerSettings;
567
                        }
517 fschmid 568
                        // 10/25/2004 pv - None is "reserved" color. cannot be defined in any file...
569
                        if(pg.tagName()=="COLOR" && pg.attribute("NAME")!="None")
570
                        {
571
                                if (pg.hasAttribute("CMYK"))
572
                                        lf.setNamedColor(pg.attribute("CMYK"));
573
                                else
574
                                        lf.fromQColor(QColor(pg.attribute("RGB")));
575
                          doc->PageColors[pg.attribute("NAME")] = lf;
576
                        }
577
                        if(pg.tagName()=="STYLE")
578
                        {
579
                                vg.Vname = pg.attribute("NAME");
2309 fschmid 580
                                vg.LineSpaMode = QStoInt(pg.attribute("LINESPMode","0"));
517 fschmid 581
                                vg.LineSpa = QStodouble(pg.attribute("LINESP"));
582
                                vg.Indent = QStodouble(pg.attribute("INDENT","0"));
583
                                vg.First = QStodouble(pg.attribute("FIRST","0"));
1065 cbradney 584
                                vg.textAlignment = QStoInt(pg.attribute("ALIGN"));
585
                                vg.gapBefore = QStodouble(pg.attribute("VOR","0"));
586
                                vg.gapAfter = QStodouble(pg.attribute("NACH","0"));
1194 fschmid 587
                                tmpf = pg.attribute("FONT", doc->toolSettings.defFont);
1428 fschmid 588
                                if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
589
                                {
590
                                        if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 591
                                        {
592
                                                newReplacement = true;
1428 fschmid 593
                                                ReplacedFonts.insert(tmpf, view->Prefs->toolSettings.defFont);
1468 fschmid 594
                                        }
1428 fschmid 595
                                        else
596
                                                ReplacedFonts.insert(tmpf, view->Prefs->GFontSub[tmpf]);
597
                                }
517 fschmid 598
                                else
1428 fschmid 599
                                {
1786 fschmid 600
                                        if (!doc->UsedFonts.contains(tmpf))
601
                                        {
602
                                                QFont fo = avail[tmpf]->Font;
603
                                                fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
604
                                                doc->AddFont(tmpf, fo);
605
                                        }
1428 fschmid 606
                                }
517 fschmid 607
                                vg.Font = tmpf;
608
                                vg.FontSize = qRound(QStodouble(pg.attribute("FONTSIZE","12")) * 10.0);
609
                                vg.Drop = static_cast<bool>(QStoInt(pg.attribute("DROP","0")));
610
                                vg.DropLin = QStoInt(pg.attribute("DROPLIN","2"));
2362 fschmid 611
                                vg.DropDist = QStodouble(pg.attribute("DROPDIST","0"));
517 fschmid 612
                                vg.FontEffect = QStoInt(pg.attribute("EFFECT","0"));
1194 fschmid 613
                                vg.FColor = pg.attribute("FCOLOR", doc->toolSettings.dBrush);
517 fschmid 614
                                vg.FShade = QStoInt(pg.attribute("FSHADE","100"));
1194 fschmid 615
                                vg.SColor = pg.attribute("SCOLOR", doc->toolSettings.dPen);
517 fschmid 616
                                vg.SShade = QStoInt(pg.attribute("SSHADE","100"));
617
                                vg.BaseAdj = static_cast<bool>(QStoInt(pg.attribute("BASE","0")));
2273 fschmid 618
                                vg.txtShadowX=qRound(QStodouble(pg.attribute("TXTSHX", "5")) * 10);
619
                                vg.txtShadowY=qRound(QStodouble(pg.attribute("TXTSHY", "-5")) * 10);
620
                                vg.txtOutline=qRound(QStodouble(pg.attribute("TXTOUT", "1")) * 10);
621
                                vg.txtUnderPos=qRound(QStodouble(pg.attribute("TXTULP", "-0.1")) * 10);
622
                                vg.txtUnderWidth=qRound(QStodouble(pg.attribute("TXTULW", "-0.1")) * 10);
623
                                vg.txtStrikePos=qRound(QStodouble(pg.attribute("TXTSTP", "-0.1")) * 10);
624
                                vg.txtStrikeWidth=qRound(QStodouble(pg.attribute("TXTSTW", "-0.1")) * 10);
2379 fschmid 625
                                vg.scaleH = qRound(QStodouble(pg.attribute("SCALEH", "100")) * 10);
626
                                vg.scaleV = qRound(QStodouble(pg.attribute("SCALEV", "100")) * 10);
627
                                vg.baseOff = qRound(QStodouble(pg.attribute("BASEO", "0")) * 10);
628
                                vg.kernVal = qRound(QStodouble(pg.attribute("KERN", "0")) * 10);
2282 fschmid 629
                                vg.TabValues.clear();
517 fschmid 630
                                if ((pg.hasAttribute("NUMTAB")) && (QStoInt(pg.attribute("NUMTAB","0")) != 0))
631
                                {
2282 fschmid 632
                                        struct PageItem::TabRecord tb;
517 fschmid 633
                                        tmp = pg.attribute("TABS");
634
                                        QTextStream tgv(&tmp, IO_ReadOnly);
2282 fschmid 635
                                        for (int cxv = 0; cxv < QStoInt(pg.attribute("NUMTAB","0")); cxv += 2)
517 fschmid 636
                                        {
637
                                                tgv >> xf;
2282 fschmid 638
                                                tgv >> xf2;
639
                                                tb.tabPosition = xf2;
640
                                                tb.tabType = static_cast<int>(xf);
641
                                                tb.tabFillChar =  QChar();
642
                                                vg.TabValues.append(tb);
517 fschmid 643
                                        }
644
                                        tmp = "";
645
                                }
646
                                else
2282 fschmid 647
                                {
648
                                        QDomNode IT = pg.firstChild();
649
                                        while(!IT.isNull())
650
                                        {
651
                                                QDomElement it = IT.toElement();
652
                                                if (it.tagName()=="Tabs")
653
                                                {
654
                                                        struct PageItem::TabRecord tb;
655
                                                        tb.tabPosition = QStodouble(it.attribute("Pos"));
656
                                                        tb.tabType = QStoInt(it.attribute("Type"));
657
                                                        QString tbCh = "";
658
                                                        tbCh = it.attribute("Fill","");
659
                                                        if (tbCh == "")
660
                                                                tb.tabFillChar = QChar();
661
                                                        else
662
                                                                tb.tabFillChar = tbCh[0];
663
                                                        vg.TabValues.append(tb);
664
                                                }
665
                                                IT=IT.nextSibling();
666
                                        }
667
                                }
1065 cbradney 668
                                doc->docParagraphStyles.append(vg);
517 fschmid 669
                        }
670
                        if(pg.tagName()=="JAVA")
671
                                doc->JavaScripts[pg.attribute("NAME")] = pg.attribute("SCRIPT");
672
                        if(pg.tagName()=="LAYERS")
673
                        {
674
                                la.LNr = QStoInt(pg.attribute("NUMMER"));
675
                                la.Level = QStoInt(pg.attribute("LEVEL"));
676
                                la.Name = pg.attribute("NAME");
1065 cbradney 677
                                la.isViewable = QStoInt(pg.attribute("SICHTBAR"));
678
                                la.isPrintable = QStoInt(pg.attribute("DRUCKEN"));
517 fschmid 679
                                doc->Layers.append(la);
680
                        }
681
                        if(pg.tagName()=="Bookmark")
682
                        {
683
                                bok.Title = pg.attribute("Title");
684
                                bok.Text = pg.attribute("Text");
685
                                bok.Aktion = pg.attribute("Aktion");
686
                                bok.ItemNr = QStoInt(pg.attribute("ItemNr"));
687
                                bok.Seite = QStoInt(pg.attribute("Seite"));
688
                                bok.Element = QStoInt(pg.attribute("Element"));
689
                                bok.First = QStoInt(pg.attribute("First"));
690
                                bok.Last = QStoInt(pg.attribute("Last"));
691
                                bok.Prev = QStoInt(pg.attribute("Prev"));
692
                                bok.Next = QStoInt(pg.attribute("Next"));
693
                                bok.Parent = QStoInt(pg.attribute("Parent"));
694
                                doc->BookMarks.append(bok);
695
                        }
696
                        if(pg.tagName()=="MultiLine")
697
                        {
698
                                multiLine ml;
699
                                QDomNode MuLn = PAGE.firstChild();
700
                                while(!MuLn.isNull())
701
                                {
702
                                        QDomElement MuL = MuLn.toElement();
1065 cbradney 703
                                        struct SingleLine sl;
517 fschmid 704
                                        sl.Color = MuL.attribute("Color");
705
                                        sl.Dash = QStoInt(MuL.attribute("Dash"));
706
                                        sl.LineEnd = QStoInt(MuL.attribute("LineEnd"));
707
                                        sl.LineJoin = QStoInt(MuL.attribute("LineJoin"));
708
                                        sl.Shade = QStoInt(MuL.attribute("Shade"));
709
                                        sl.Width = QStodouble(MuL.attribute("Width"));
710
                                        ml.push_back(sl);
711
                                        MuLn = MuLn.nextSibling();
712
                                }
713
                                doc->MLineStyles.insert(pg.attribute("Name"), ml);
714
                        }
741 fschmid 715
                        if(pg.tagName()=="Arrows")
716
                        {
1065 cbradney 717
                                struct ArrowDesc arrow;
760 fschmid 718
                                arrow.name = pg.attribute("Name");
776 fschmid 719
                                arrow.userArrow = true;
741 fschmid 720
                                double xa, ya;
721
                                QString tmp = pg.attribute("Points");
722
                                QTextStream fp(&tmp, IO_ReadOnly);
723
                                for (uint cx = 0; cx < pg.attribute("NumPoints").toUInt(); ++cx)
724
                                {
725
                                        fp >> xa;
726
                                        fp >> ya;
760 fschmid 727
                                        arrow.points.addPoint(xa, ya);
741 fschmid 728
                                }
729
                                doc->arrowStyles.append(arrow);
730
                        }
1642 cbradney 731
                        if(pg.tagName()=="PDF")
732
                        {
733
                                doc->PDF_Options.Articles = static_cast<bool>(QStoInt(pg.attribute("Articles")));
734
                                doc->PDF_Options.Thumbnails = static_cast<bool>(QStoInt(pg.attribute("Thumbnails")));
735
                                doc->PDF_Options.Compress = static_cast<bool>(QStoInt(pg.attribute("Compress")));
736
                                doc->PDF_Options.CompressMethod = QStoInt(pg.attribute("CMethod","0"));
737
                                doc->PDF_Options.Quality = QStoInt(pg.attribute("Quality","0"));
738
                                doc->PDF_Options.RecalcPic = static_cast<bool>(QStoInt(pg.attribute("RecalcPic")));
739
                                doc->PDF_Options.Bookmarks = static_cast<bool>(QStoInt(pg.attribute("Bookmarks")));
740
                                if (pg.hasAttribute("MirrorH"))
741
                                        doc->PDF_Options.MirrorH = static_cast<bool>(QStoInt(pg.attribute("MirrorH")));
742
                                else
743
                                        doc->PDF_Options.MirrorH = false;
744
                                if (pg.hasAttribute("MirrorV"))
745
                                        doc->PDF_Options.MirrorV = static_cast<bool>(QStoInt(pg.attribute("MirrorV")));
746
                                else
747
                                        doc->PDF_Options.MirrorV = false;
748
                                if (pg.hasAttribute("RotateDeg"))
749
                                        doc->PDF_Options.RotateDeg = QStoInt(pg.attribute("RotateDeg","0"));
750
                                else
751
                                        doc->PDF_Options.RotateDeg = 0;
752
                                doc->PDF_Options.PresentMode = static_cast<bool>(QStoInt(pg.attribute("PresentMode")));
753
                                doc->PDF_Options.PicRes = QStoInt(pg.attribute("PicRes"));
1973 craig 754
                                // Fixme: check input pdf version
755
                                doc->PDF_Options.Version = (PDFOptions::PDFVersion)QStoInt(pg.attribute("Version"));
1642 cbradney 756
                                doc->PDF_Options.Resolution = QStoInt(pg.attribute("Resolution"));
757
                                doc->PDF_Options.Binding = QStoInt(pg.attribute("Binding"));
758
                                doc->PDF_Options.Datei = "";
759
                                doc->PDF_Options.isGrayscale = static_cast<bool>(QStoInt(pg.attribute("Grayscale","0")));
760
                                doc->PDF_Options.UseRGB = static_cast<bool>(QStoInt(pg.attribute("RGBMode","0")));
761
                                doc->PDF_Options.UseProfiles = static_cast<bool>(QStoInt(pg.attribute("UseProfiles","0")));
762
                                doc->PDF_Options.UseProfiles2 = static_cast<bool>(QStoInt(pg.attribute("UseProfiles2","0")));
763
                                doc->PDF_Options.Intent = QStoInt(pg.attribute("Intent","1"));
764
                                doc->PDF_Options.Intent2 = QStoInt(pg.attribute("Intent2","1"));
765
                                doc->PDF_Options.SolidProf = pg.attribute("SolidP", "");
766
                                doc->PDF_Options.ImageProf = pg.attribute("ImageP", "");
767
                                doc->PDF_Options.PrintProf = pg.attribute("PrintP", "");
768
                                doc->PDF_Options.Info = pg.attribute("InfoString", "");
769
                                doc->PDF_Options.BleedTop = QStodouble(pg.attribute("BTop","0"));
770
                                doc->PDF_Options.BleedLeft = QStodouble(pg.attribute("BLeft","0"));
771
                                doc->PDF_Options.BleedRight = QStodouble(pg.attribute("BRight","0"));
772
                                doc->PDF_Options.BleedBottom = QStodouble(pg.attribute("BBottom","0"));
773
                                doc->PDF_Options.EmbeddedI = static_cast<bool>(QStoInt(pg.attribute("ImagePr","0")));
774
                                doc->PDF_Options.PassOwner = pg.attribute("PassOwner", "");
775
                                doc->PDF_Options.PassUser = pg.attribute("PassUser", "");
776
                                doc->PDF_Options.Permissions = QStoInt(pg.attribute("Permissions","-4"));
777
                                doc->PDF_Options.Encrypt = static_cast<bool>(QStoInt(pg.attribute("Encrypt","0")));
1738 fschmid 778
                                doc->PDF_Options.useLayers = static_cast<bool>(QStoInt(pg.attribute("UseLayers","0")));
1642 cbradney 779
                                doc->PDF_Options.UseLPI = static_cast<bool>(QStoInt(pg.attribute("UseLpi","0")));
780
                                QDomNode PFO = PAGE.firstChild();
781
                                while(!PFO.isNull())
782
                                {
783
                                        QDomElement pdfF = PFO.toElement();
784
                                        if(pdfF.tagName() == "LPI")
785
                                        {
786
                                                struct LPIData lpo;
787
                                                lpo.Angle = QStoInt(pdfF.attribute("Angle"));
788
                                                lpo.Frequency = QStoInt(pdfF.attribute("Frequency"));
789
                                                lpo.SpotFunc = QStoInt(pdfF.attribute("SpotFunction"));
790
                                                doc->PDF_Options.LPISettings[pdfF.attribute("Color")] = lpo;
791
                                        }
792
                                        if(pdfF.tagName() == "Fonts")
793
                                        {
794
                                                if (!doc->PDF_Options.EmbedList.contains(pdfF.attribute("Name")))
795
                                                        doc->PDF_Options.EmbedList.append(pdfF.attribute("Name"));
796
                                        }
797
                                        if(pdfF.tagName() == "Subset")
798
                                        {
799
                                                if (!doc->PDF_Options.SubsetList.contains(pdfF.attribute("Name")))
800
                                                        doc->PDF_Options.SubsetList.append(pdfF.attribute("Name"));
801
                                        }
802
                                        if(pdfF.tagName() == "Effekte")
803
                                        {
804
                                                struct PDFPresentationData ef;
805
                                                ef.pageEffectDuration = QStoInt(pdfF.attribute("pageEffectDuration"));
806
                                                ef.pageViewDuration = QStoInt(pdfF.attribute("pageViewDuration"));
807
                                                ef.effectType = QStoInt(pdfF.attribute("effectType"));
808
                                                ef.Dm = QStoInt(pdfF.attribute("Dm"));
809
                                                ef.M = QStoInt(pdfF.attribute("M"));
810
                                                ef.Di = QStoInt(pdfF.attribute("Di"));
811
                                                doc->PDF_Options.PresentVals.append(ef);
812
                                        }
813
                                        PFO = PFO.nextSibling();
814
                                }
815
                        }
816
                        if(pg.tagName()=="DocItemAttributes")
817
                        {
818
                                QDomNode DIA = PAGE.firstChild();
819
                                doc->docItemAttributes.clear();
820
                                while(!DIA.isNull())
821
                                {
822
                                        QDomElement itemAttr = DIA.toElement();
823
                                        if(itemAttr.tagName() == "ItemAttribute")
824
                                        {
825
                                                ObjectAttribute objattr;
826
                                                objattr.name=itemAttr.attribute("Name");
827
                                                objattr.type=itemAttr.attribute("Type");
828
                                                objattr.value=itemAttr.attribute("Value");
829
                                                objattr.parameter=itemAttr.attribute("Parameter");
1654 cbradney 830
                                                objattr.relationship=itemAttr.attribute("Relationship");
831
                                                objattr.relationshipto=itemAttr.attribute("RelationshipTo");
832
                                                objattr.autoaddto=itemAttr.attribute("AutoAddTo");
1649 cbradney 833
                                                doc->docItemAttributes.append(objattr);
1642 cbradney 834
                                        }
835
                                        DIA = DIA.nextSibling();
836
                                }
837
                        }
1694 cbradney 838
                        if(pg.tagName()=="TablesOfContents")
839
                        {
840
                                QDomNode TOC = PAGE.firstChild();
841
                                doc->docToCSetups.clear();
842
                                while(!TOC.isNull())
843
                                {
844
                                        QDomElement tocElem = TOC.toElement();
845
                                        if(tocElem.tagName() == "TableOfContents")
846
                                        {
847
                                                ToCSetup tocsetup;
848
                                                tocsetup.name=tocElem.attribute("Name");
849
                                                tocsetup.itemAttrName=tocElem.attribute("ItemAttributeName");
850
                                                tocsetup.frameName=tocElem.attribute("FrameName");
2445 cbradney 851
                                                tocsetup.textStyle=tocElem.attribute("Style");
852
                                                QString numberPlacement=tocElem.attribute("NumberPlacement");
853
                                                if (numberPlacement=="Beginning")
854
                                                        tocsetup.pageLocation=Beginning;
855
                                                if (numberPlacement=="End")
856
                                                        tocsetup.pageLocation=End;
857
                                                if (numberPlacement=="NotShown")
858
                                                        tocsetup.pageLocation=NotShown;
1694 cbradney 859
                                                doc->docToCSetups.append(tocsetup);
860
                                        }
861
                                        TOC = TOC.nextSibling();
862
                                }
863
                        }
517 fschmid 864
                        if ((pg.tagName()=="PAGE") || (pg.tagName()=="MASTERPAGE"))
865
                        {
866
                                a = QStoInt(pg.attribute("NUM"));
867
                                PgNam = "";
868
                                PgNam = pg.attribute("NAM", "");
2142 cbradney 869
                                Pgc = doc->pageCount;
517 fschmid 870
                                AtFl = doc->PageAT;
871
                                if (PgNam == "")
872
                                {
2142 cbradney 873
                                        doc->pageCount = Pgc;
517 fschmid 874
                                        doc->Pages = doc->DocPages;
875
                                        doc->PageAT = AtFl;
876
                                        doc->MasterP = false;
877
                                }
878
                                else
879
                                {
2142 cbradney 880
                                        doc->pageCount = 0;
517 fschmid 881
                                        doc->PageAT = false;
882
                                        doc->Pages = doc->MasterPages;
883
                                        doc->MasterP = true;
884
                                }
885
                                app->slotNewPage(a);
886
                                Apage = doc->Pages.at(a);
887
                                if (PgNam == "")
2109 fschmid 888
                                {
517 fschmid 889
                                        doc->DocPages = doc->Pages;
2142 cbradney 890
                                        doc->pageCount = Pgc+1;
2109 fschmid 891
                                }
517 fschmid 892
                                else
893
                                {
1794 fschmid 894
                                        Apage->setPageName(PgNam);
517 fschmid 895
                                        doc->MasterNames[PgNam] = a;
896
                                        doc->MasterPages = doc->Pages;
2142 cbradney 897
                                        doc->pageCount = Pgc;
517 fschmid 898
                                }
899
                                doc->PageAT = AtFl;
900
                                Apage->LeftPg=QStoInt(pg.attribute("LEFT","0"));
901
                                QString Mus = "";
902
                                Mus = pg.attribute("MNAM","Normal");
903
                                if (!doc->MasterP)
904
                                        Apage->MPageNam = Mus;
905
                                else
906
                                        Apage->MPageNam = "";
537 fschmid 907
                                Apage->Xoffset = QStodouble(pg.attribute("PAGEXPOS"));
908
                                Apage->Yoffset = QStodouble(pg.attribute("PAGEYPOS"));
2305 cbradney 909
                                if (pg.hasAttribute("PAGEWIDTH"))
910
                                        Apage->Width=QStodouble(pg.attribute("PAGEWIDTH"));
911
                                else
912
                                        Apage->Width=QStodouble(pg.attribute("PAGEWITH"));
517 fschmid 913
                                Apage->Height = QStodouble(pg.attribute("PAGEHEIGHT"));
1794 fschmid 914
                                if (doc->PageFP)
915
                                {
916
                                        if (doc->MasterP)
917
                                        {
918
                                                if (Apage->LeftPg)
919
                                                {
920
                                                        Apage->Margins.Right = QStodouble(pg.attribute("BORDERLEFT"));
921
                                                        Apage->Margins.Left = QStodouble(pg.attribute("BORDERRIGHT"));
922
                                                }
923
                                                else
924
                                                {
925
                                                        Apage->Margins.Left = QStodouble(pg.attribute("BORDERLEFT"));
926
                                                        Apage->Margins.Right = QStodouble(pg.attribute("BORDERRIGHT"));
927
                                                }
928
                                        }
929
                                        else
930
                                        {
931
                                                if (a % 2 == 0)
932
                                                {
933
                                                        if (doc->FirstPageLeft)
934
                                                        {
935
                                                                Apage->Margins.Right = QStodouble(pg.attribute("BORDERLEFT"));
936
                                                                Apage->Margins.Left = QStodouble(pg.attribute("BORDERRIGHT"));
937
                                                        }
938
                                                        else
939
                                                        {
940
                                                                Apage->Margins.Left = QStodouble(pg.attribute("BORDERLEFT"));
941
                                                                Apage->Margins.Right = QStodouble(pg.attribute("BORDERRIGHT"));
942
                                                        }
943
                                                }
944
                                                else
945
                                                {
946
                                                        if (doc->FirstPageLeft)
947
                                                        {
948
                                                                Apage->Margins.Left = QStodouble(pg.attribute("BORDERLEFT"));
949
                                                                Apage->Margins.Right = QStodouble(pg.attribute("BORDERRIGHT"));
950
                                                        }
951
                                                        else
952
                                                        {
953
                                                                Apage->Margins.Right = QStodouble(pg.attribute("BORDERLEFT"));
954
                                                                Apage->Margins.Left = QStodouble(pg.attribute("BORDERRIGHT"));
955
                                                        }
956
                                                }
957
                                        }
958
                                }
959
                                else
960
                                {
961
                                        Apage->Margins.Left = QStodouble(pg.attribute("BORDERLEFT"));
962
                                        Apage->Margins.Right = QStodouble(pg.attribute("BORDERRIGHT"));
963
                                }
964
                                doc->MasterP = false;
517 fschmid 965
                                Apage->Margins.Top = QStodouble(pg.attribute("BORDERTOP"));
966
                                Apage->Margins.Bottom = QStodouble(pg.attribute("BORDERBOTTOM"));
2142 cbradney 967
                                doc->pageWidth = Apage->Width;
968
                                doc->pageHeight = Apage->Height;
969
                                doc->pageMargins.Left = Apage->Margins.Left;
970
                                doc->pageMargins.Right = Apage->Margins.Right;
971
                                doc->pageMargins.Top = Apage->Margins.Top;
972
                                doc->pageMargins.Bottom = Apage->Margins.Bottom;
517 fschmid 973
                                if ((pg.hasAttribute("NumVGuides")) && (QStoInt(pg.attribute("NumVGuides","0")) != 0))
974
                                {
975
                                        tmp = pg.attribute("VerticalGuides");
976
                                        QTextStream fgv(&tmp, IO_ReadOnly);
977
                                        Apage->YGuides.clear();
978
                                        for (int cxv = 0; cxv < QStoInt(pg.attribute("NumVGuides","0")); ++cxv)
979
                                        {
980
                                                fgv >> xf;
981
                                                Apage->YGuides.append(xf);
982
                                        }
983
                                        qHeapSort(Apage->YGuides);
984
                                        tmp = "";
985
                                }
986
                                else
987
                                        Apage->YGuides.clear();
988
                                if ((pg.hasAttribute("NumHGuides")) && (QStoInt(pg.attribute("NumHGuides","0")) != 0))
989
                                {
990
                                        tmp = pg.attribute("HorizontalGuides");
991
                                        QTextStream fgh(&tmp, IO_ReadOnly);
992
                                        Apage->XGuides.clear();
993
                                        for (int cxh = 0; cxh < QStoInt(pg.attribute("NumHGuides","0")); ++cxh)
994
                                        {
995
                                                fgh >> xf;
996
                                                Apage->XGuides.append(xf);
997
                                        }
998
                                        qHeapSort(Apage->XGuides);
999
                                        tmp = "";
1000
                                }
1001
                                else
1002
                                        Apage->XGuides.clear();
1800 cbradney 1003
                        }
2447 fschmid 1004
                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="MASTEROBJECT") || (pg.tagName()=="FRAMEOBJECT"))
517 fschmid 1005
                        {
2447 fschmid 1006
                                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="FRAMEOBJECT"))
522 fschmid 1007
                                        {
517 fschmid 1008
                                                doc->Items = doc->DocItems;
522 fschmid 1009
                                                doc->Pages = doc->DocPages;
1010
                                                doc->MasterP = false;
1011
                                        }
517 fschmid 1012
                                        else
522 fschmid 1013
                                        {
517 fschmid 1014
                                                doc->Items = doc->MasterItems;
522 fschmid 1015
                                                doc->Pages = doc->MasterPages;
1016
                                                doc->MasterP = true;
1017
                                        }
1786 fschmid 1018
                                        if ((pg.attribute("OnMasterPage") != "") && (pg.tagName()=="MASTEROBJECT"))
1065 cbradney 1019
                                                doc->currentPage = doc->MasterPages.at(doc->MasterNames[pg.attribute("OnMasterPage")]);
517 fschmid 1020
                                        if ((QStoInt(pg.attribute("NEXTITEM")) != -1) || (static_cast<bool>(QStoInt(pg.attribute("AUTOTEXT")))))
1021
                                        {
1022
                                                if (QStoInt(pg.attribute("BACKITEM")) == -1)
537 fschmid 1023
                                                        LFrames.append(doc->Items.count());
517 fschmid 1024
                                        }
1779 fschmid 1025
                                        int docGc = doc->GroupCounter;
1026
                                        doc->GroupCounter = 0;
1027
                                        Neu = PasteItem(&pg, doc, view);
1786 fschmid 1028
                                        if (pg.tagName()=="PAGEOBJECT")
1029
                                                Neu->OnMasterPage = "";
1779 fschmid 1030
                                        doc->GroupCounter = docGc;
1194 fschmid 1031
                                        tmpf = pg.attribute("IFONT", doc->toolSettings.defFont);
1428 fschmid 1032
                                        if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
1033
                                        {
1034
                                                if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 1035
                                                {
1036
                                                        newReplacement = true;
1428 fschmid 1037
                                                        ReplacedFonts.insert(tmpf, view->Prefs->toolSettings.defFont);
1468 fschmid 1038
                                                }
1428 fschmid 1039
                                                else
1040
                                                        ReplacedFonts.insert(tmpf, view->Prefs->GFontSub[tmpf]);
1041
                                        }
517 fschmid 1042
                                        else
1428 fschmid 1043
                                        {
1786 fschmid 1044
                                                if (!doc->UsedFonts.contains(tmpf))
1045
                                                {
1046
                                                        QFont fo = avail[tmpf]->Font;
1047
                                                        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
1048
                                                        doc->AddFont(tmpf, fo);
1049
                                                }
1428 fschmid 1050
                                        }
1779 fschmid 1051
                                        Neu->IFont = tmpf;
517 fschmid 1052
                                        QDomNode IT=pg.firstChild();
1053
                                        while(!IT.isNull())
1054
                                        {
1055
                                                QDomElement it=IT.toElement();
1056
                                                if (it.tagName()=="CSTOP")
1057
                                                {
1058
                                                        QString name = it.attribute("NAME");
1059
                                                        double ramp = QStodouble(it.attribute("RAMP","0.0"));
1060
                                                        int shade = QStoInt(it.attribute("SHADE","100"));
1061
                                                        double opa = QStodouble(it.attribute("TRANS","1"));
1779 fschmid 1062
                                                        Neu->fill_gradient.addStop(SetColor(doc, name, shade), ramp, 0.5, opa, name, shade);
517 fschmid 1063
                                                }
1064
                                                if (it.tagName()=="ITEXT")
1779 fschmid 1065
                                                        GetItemText(&it, doc, view->Prefs, Neu);
1655 cbradney 1066
 
1067
                                                //CB PageItemAttributes
1068
                                                if(it.tagName()=="PageItemAttributes")
1069
                                                {
1070
                                                        QDomNode PIA = it.firstChild();
1071
                                                        ObjAttrVector pageItemAttributes;
1072
                                                        while(!PIA.isNull())
1073
                                                        {
1074
                                                                QDomElement itemAttr = PIA.toElement();
1075
                                                                if(itemAttr.tagName() == "ItemAttribute")
1076
                                                                {
1077
                                                                        ObjectAttribute objattr;
1078
                                                                        objattr.name=itemAttr.attribute("Name");
1079
                                                                        objattr.type=itemAttr.attribute("Type");
1080
                                                                        objattr.value=itemAttr.attribute("Value");
1081
                                                                        objattr.parameter=itemAttr.attribute("Parameter");
1082
                                                                        objattr.relationship=itemAttr.attribute("Relationship");
1083
                                                                        objattr.relationshipto=itemAttr.attribute("RelationshipTo");
1084
                                                                        objattr.autoaddto=itemAttr.attribute("AutoAddTo");
1085
                                                                        pageItemAttributes.append(objattr);
1086
                                                                }
1087
                                                                PIA = PIA.nextSibling();
1088
                                                        }
1779 fschmid 1089
                                                        Neu->setObjectAttributes(&pageItemAttributes);
1655 cbradney 1090
                                                }
517 fschmid 1091
                                                IT=IT.nextSibling();
1092
                                        }
2179 fschmid 1093
                                        if (Neu->fill_gradient.Stops() == 0)
517 fschmid 1094
                                        {
2179 fschmid 1095
                                                Neu->fill_gradient.addStop(doc->PageColors[doc->toolSettings.dBrush].getRGBColor(), 0.0, 0.5, 1.0, doc->toolSettings.dBrush, 100);
1096
                                                Neu->fill_gradient.addStop(doc->PageColors[doc->toolSettings.dPen].getRGBColor(), 1.0, 0.5, 1.0, doc->toolSettings.dPen, 100);
517 fschmid 1097
                                        }
1779 fschmid 1098
                                        Neu->Language = app->GetLang(pg.attribute("LANGUAGE", doc->Language));
2447 fschmid 1099
                                        Neu->isAutoText = static_cast<bool>(QStoInt(pg.attribute("AUTOTEXT")));
1100
                                        Neu->isEmbedded = static_cast<bool>(QStoInt(pg.attribute("isInline","0")));
2309 fschmid 1101
                                        if (Neu->LineSpMode == 3)
1102
                                        {
1103
                                                doc->docParagraphStyles[0].BaseAdj = true;
1104
                                                Neu->LineSp = doc->typographicSetttings.valueBaseGrid-1;
1105
                                        }
517 fschmid 1106
                                        if (Neu->isAutoText)
1107
                                                doc->LastAuto = Neu;
1108
                                        Neu->NextIt = QStoInt(pg.attribute("NEXTITEM"));
1109
                                        if (Neu->isTableItem)
1110
                                        {
1111
                                                TableItems.append(Neu);
1112
                                                TableID.insert(QStoInt(pg.attribute("OwnLINK","0")), Neu->ItemNr);
1113
                                        }
2447 fschmid 1114
                                        if (pg.tagName()=="FRAMEOBJECT")
522 fschmid 1115
                                        {
2447 fschmid 1116
                                                doc->FrameItems.append(doc->Items.take(Neu->ItemNr));
1117
                                                Neu->ItemNr = doc->FrameItems.count()-1;
1118
                                        }
1119
                                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="FRAMEOBJECT"))
1120
                                        {
517 fschmid 1121
                                                doc->DocItems = doc->Items;
522 fschmid 1122
                                                doc->DocPages = doc->Pages;
1123
                                        }
517 fschmid 1124
                                        else
522 fschmid 1125
                                        {
517 fschmid 1126
                                                doc->MasterItems = doc->Items;
522 fschmid 1127
                                                doc->MasterPages = doc->Pages;
1128
                                        }
1129
                                        doc->MasterP = false;
517 fschmid 1130
                                        counter++;
1131
                                }
1132
                        PAGE=PAGE.nextSibling();
1133
                }
1134
                DOC=DOC.nextSibling();
1135
        }
1136
        if (TableItems.count() != 0)
1137
        {
1138
                for (uint ttc = 0; ttc < TableItems.count(); ++ttc)
1139
                {
1140
                        PageItem* ta = TableItems.at(ttc);
1141
                        if (ta->TopLinkID != -1)
1142
                                ta->TopLink = doc->Items.at(TableID[ta->TopLinkID]);
1143
                        else
1144
                                ta->TopLink = 0;
1145
                        if (ta->LeftLinkID != -1)
1146
                                ta->LeftLink = doc->Items.at(TableID[ta->LeftLinkID]);
1147
                        else
1148
                                ta->LeftLink = 0;
1149
                        if (ta->RightLinkID != -1)
1150
                                ta->RightLink = doc->Items.at(TableID[ta->RightLinkID]);
1151
                        else
1152
                                ta->RightLink = 0;
1153
                        if (ta->BottomLinkID != -1)
1154
                                ta->BottomLink = doc->Items.at(TableID[ta->BottomLinkID]);
1155
                        else
1156
                                ta->BottomLink = 0;
1157
                }
1158
        }
1159
        doc->Pages = doc->DocPages;
2142 cbradney 1160
        doc->pageCount = doc->Pages.count();
517 fschmid 1161
        doc->Items = doc->DocItems;
1162
        doc->MasterP = false;
1828 fschmid 1163
//      view->reformPages();
517 fschmid 1164
        if (doc->Layers.count() == 0)
1165
        {
1166
                la.LNr = 0;
1167
                la.Level = 0;
1168
                la.Name = QObject::tr("Background");
1065 cbradney 1169
                la.isViewable = true;
1170
                la.isPrintable = true;
517 fschmid 1171
                doc->Layers.append(la);
1172
        }
1173
        if (LFrames.count() != 0)
1174
        {
1175
                PageItem *Its;
1176
                PageItem *Itn;
1177
                PageItem *Itr;
537 fschmid 1178
                QValueList<int>::Iterator lc;
517 fschmid 1179
                for (lc = LFrames.begin(); lc != LFrames.end(); ++lc)
1180
                {
537 fschmid 1181
                        Its = doc->Items.at((*lc));
517 fschmid 1182
                        Itr = Its;
1183
                        Its->BackBox = 0;
1184
                        if (Its->isAutoText)
1185
                                doc->FirstAuto = Its;
1186
                        while (Its->NextIt != -1)
1187
                        {
537 fschmid 1188
                                Itn = doc->Items.at(Its->NextIt);
517 fschmid 1189
                                Its->NextBox = Itn;
1190
                                Itn->BackBox = Its;
1191
                                Its = Itn;
1192
                        }
1193
                        Its->NextBox = 0;
1194
                }
1195
        }
1525 cbradney 1196
        view->UN->setText(unitGetStrFromIndex(doc->docUnitIndex));
517 fschmid 1197
        dia2->setProgress(DOC.childNodes().count());
1198
        return true;
1199
}
1200
 
1779 fschmid 1201
void FileLoader::GetItemText(QDomElement *it, ScribusDoc *doc, ApplicationPrefs *Prefs, PageItem* obj)
517 fschmid 1202
{
1779 fschmid 1203
        struct ScText *hg;
1789 fschmid 1204
        Foi* dummy;
1205
        bool unknown = false;
1779 fschmid 1206
        QString tmp2, tmpf;
517 fschmid 1207
        tmp2 = it->attribute("CH");
1779 fschmid 1208
        tmp2.replace(QRegExp("\r"), QChar(13));
1209
        tmp2.replace(QRegExp("\n"), QChar(13));
1210
        tmp2.replace(QRegExp("\t"), QChar(9));
1194 fschmid 1211
        tmpf = it->attribute("CFONT", doc->toolSettings.defFont);
1428 fschmid 1212
        if ((!Prefs->AvailFonts.find(tmpf)) || (!Prefs->AvailFonts[tmpf]->UseFont))
1213
        {
1789 fschmid 1214
                bool isThere = false;
1215
                for (uint dl = 0; dl < dummyFois.count(); ++dl)
1216
                {
1217
                        if (dummyFois.at(dl)->SCName == tmpf)
1218
                        {
1219
                                isThere = true;
1220
                                dummy = dummyFois.at(dl);
1221
                                break;
1222
                        }
1223
                }
1224
                if (!isThere)
1225
                {
1226
                        dummy = new Foi(tmpf, "", false);
1227
                        dummyFois.append(dummy);
1228
                }
1229
                unknown = true;
1428 fschmid 1230
                if ((!Prefs->GFontSub.contains(tmpf)) || (!Prefs->AvailFonts[Prefs->GFontSub[tmpf]]->UseFont))
1468 fschmid 1231
                {
1232
                        newReplacement = true;
1428 fschmid 1233
                        ReplacedFonts.insert(tmpf, Prefs->toolSettings.defFont);
1468 fschmid 1234
                }
1428 fschmid 1235
                else
1236
                        ReplacedFonts.insert(tmpf, Prefs->GFontSub[tmpf]);
1237
        }
517 fschmid 1238
        else
1428 fschmid 1239
        {
1786 fschmid 1240
                if (!doc->UsedFonts.contains(tmpf))
1241
                {
1242
                        QFont fo = Prefs->AvailFonts[tmpf]->Font;
1243
                        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
1244
                        doc->AddFont(tmpf, fo);
1245
                }
1428 fschmid 1246
        }
1779 fschmid 1247
        int size = qRound(QStodouble(it->attribute("CSIZE")) * 10);
1248
        QString fcolor = it->attribute("CCOLOR");
2382 fschmid 1249
        int extra;
1250
        if (it->hasAttribute("CEXTRA"))
1251
                extra = qRound(QStodouble(it->attribute("CEXTRA")) / QStodouble(it->attribute("CSIZE")) * 1000.0);
1252
        else
1253
                extra = QStoInt(it->attribute("CKERN"));
1779 fschmid 1254
        int shade = QStoInt(it->attribute("CSHADE"));
1255
        int style = QStoInt(it->attribute("CSTYLE"));
1256
        int ab = QStoInt(it->attribute("CAB","0"));
1257
        QString stroke = it->attribute("CSTROKE","None");
1258
        int shade2 = QStoInt(it->attribute("CSHADE2","100"));
2242 fschmid 1259
        int scale = qRound(QStodouble(it->attribute("CSCALE","100")) * 10);
1260
        int scalev = qRound(QStodouble(it->attribute("CSCALEV","100")) * 10);
1261
        int base = qRound(QStodouble(it->attribute("CBASE","0")) * 10);
2247 fschmid 1262
        int shX = qRound(QStodouble(it->attribute("CSHX","5")) * 10);
1263
        int shY = qRound(QStodouble(it->attribute("CSHY","-5")) * 10);
2257 fschmid 1264
        int outL = qRound(QStodouble(it->attribute("COUT","1")) * 10);
2262 fschmid 1265
        int ulp = qRound(QStodouble(it->attribute("CULP","-0.1")) * 10);
1266
        int ulw = qRound(QStodouble(it->attribute("CULW","-0.1")) * 10);
2272 fschmid 1267
        int stp = qRound(QStodouble(it->attribute("CSTP","-0.1")) * 10);
1268
        int stw = qRound(QStodouble(it->attribute("CSTW","-0.1")) * 10);
2447 fschmid 1269
        int iobj = QStoInt(it->attribute("COBJ","-1"));
517 fschmid 1270
        for (uint cxx=0; cxx<tmp2.length(); ++cxx)
1779 fschmid 1271
        {
1272
                hg = new ScText;
1273
                hg->ch = tmp2.at(cxx);
1274
                if (hg->ch == QChar(5))
1275
                        hg->ch = QChar(13);
1276
                if (hg->ch == QChar(4))
1277
                        hg->ch = QChar(9);
1789 fschmid 1278
                if (unknown)
1279
                        hg->cfont = dummy;
1280
                else
1281
                        hg->cfont = (*doc->AllFonts)[tmpf];
1779 fschmid 1282
                hg->csize = size;
1283
                hg->ccolor = fcolor;
1284
                hg->cextra = extra;
1285
                hg->cshade = shade;
1286
                hg->cselect = false;
1287
                hg->cstyle = style;
1288
                hg->cab = ab;
1289
                hg->cstroke = stroke;
1290
                hg->cshade2 = shade2;
2242 fschmid 1291
                hg->cscale = QMIN(QMAX(scale, 100), 4000);
1292
                hg->cscalev = QMIN(QMAX(scalev, 100), 4000);
2234 fschmid 1293
                hg->cbase = base;
2247 fschmid 1294
                hg->cshadowx = shX;
1295
                hg->cshadowy = shY;
2257 fschmid 1296
                hg->coutline = outL;
2262 fschmid 1297
                hg->cunderpos = ulp;
1298
                hg->cunderwidth = ulw;
2272 fschmid 1299
                hg->cstrikepos = stp;
1300
                hg->cstrikewidth = stw;
1779 fschmid 1301
                hg->xp = 0;
1302
                hg->yp = 0;
1303
                hg->PRot = 0;
1304
                hg->PtransX = 0;
1305
                hg->PtransY = 0;
2447 fschmid 1306
                hg->cembedded = (PageItem*)iobj;
1779 fschmid 1307
                obj->itemText.append(hg);
1308
        }
1309
        return;
517 fschmid 1310
}
1779 fschmid 1311
 
1312
PageItem* FileLoader::PasteItem(QDomElement *obj, ScribusDoc *doc, ScribusView *view)
1313
{
1314
        int z = 0;
1315
        PageItem::ItemType pt = static_cast<PageItem::ItemType>(QStoInt(obj->attribute("PTYPE")));
1316
        double x = QStodouble(obj->attribute("XPOS"));
1317
        double y = QStodouble(obj->attribute("YPOS"));
1318
        double w = QStodouble(obj->attribute("WIDTH"));
1319
        double h = QStodouble(obj->attribute("HEIGHT"));
1320
        double pw = QStodouble(obj->attribute("PWIDTH"));
1321
        double scx = QStodouble(obj->attribute("LOCALSCX"));
1322
        double scy = QStodouble(obj->attribute("LOCALSCY"));
1323
        QString Pcolor = obj->attribute("PCOLOR");
1324
        QString Pcolor2 = obj->attribute("PCOLOR2");
1325
        QColor tmpc;
1957 cbradney 1326
        PageItem *currItem;
1779 fschmid 1327
        QString tmp;
1328
        int xi;
2282 fschmid 1329
        double xf, yf, xf2;
2040 fschmid 1330
        QString clPath;
2056 fschmid 1331
        QDomNode IT;
1779 fschmid 1332
        switch (pt)
1333
        {
1334
        // OBSOLETE CR 2005-02-06
1335
        case PageItem::FrameType1:
1336
                z = view->PaintEllipse(x, y, w, h, pw, Pcolor, Pcolor2);
1957 cbradney 1337
                currItem = doc->Items.at(z);
1779 fschmid 1338
                break;
1339
        //
1340
        case PageItem::ImageFrame:
1341
                z = view->PaintPict(x, y, w, h);
1957 cbradney 1342
                currItem = doc->Items.at(z);
1343
                currItem->LocalScX = scx;
1344
                currItem->LocalScY = scy;
1345
                currItem->LocalX = QStodouble(obj->attribute("LOCALX"));
1346
                currItem->LocalY = QStodouble(obj->attribute("LOCALY"));
1347
                currItem->Pfile = obj->attribute("PFILE");
1348
                currItem->IProfile = obj->attribute("PRFILE","");
1349
                currItem->EmProfile = obj->attribute("EPROF","");
1350
                currItem->IRender = QStoInt(obj->attribute("IRENDER","1"));
1351
                currItem->UseEmbedded = QStoInt(obj->attribute("EMBEDDED","1"));
2173 fschmid 1352
                currItem->pixm.imgInfo.lowResType = QStoInt(obj->attribute("ImageRes","1"));
2056 fschmid 1353
                IT = obj->firstChild();
1354
                while(!IT.isNull())
1355
                {
1356
                        QDomElement it = IT.toElement();
1357
                        if (it.tagName()=="ImageEffect")
1358
                        {
2074 fschmid 1359
                                struct ScImage::imageEffect ef;
2056 fschmid 1360
                                ef.effectParameters = it.attribute("Param");
1361
                                ef.effectCode = QStoInt(it.attribute("Code"));
1362
                                currItem->effectsInUse.append(ef);
1363
                        }
1364
                        IT=IT.nextSibling();
1365
                }
1957 cbradney 1366
                if (currItem->Pfile != "")
2447 fschmid 1367
                        view->loadPict(currItem->Pfile, currItem, false);
1957 cbradney 1368
                currItem->LocalScX = scx;
1369
                currItem->LocalScY = scy;
2040 fschmid 1370
                clPath = obj->attribute("ImageClip", "");
1371
                if (currItem->pixm.imgInfo.PDSpathData.contains(clPath))
1372
                {
1373
                        currItem->imageClip = currItem->pixm.imgInfo.PDSpathData[clPath].copy();
1374
                        currItem->pixm.imgInfo.usedPath = clPath;
1375
                        QWMatrix cl;
1376
                        cl.translate(currItem->LocalX*currItem->LocalScX, currItem->LocalY*currItem->LocalScY);
1377
                        cl.scale(currItem->LocalScX, currItem->LocalScY);
1378
                        currItem->imageClip.map(cl);
1379
                }
1957 cbradney 1380
                currItem->PicArt = QStoInt(obj->attribute("PICART"));
1381
                currItem->BBoxX = QStodouble(obj->attribute("BBOXX"));
1382
                currItem->BBoxH = QStodouble(obj->attribute("BBOXH"));
1383
                currItem->ScaleType = QStoInt(obj->attribute("SCALETYPE","1"));
1384
                currItem->AspectRatio = QStoInt(obj->attribute("RATIO","0"));
1385
                currItem->Pwidth = pw;
1779 fschmid 1386
                break;
1387
        // OBSOLETE CR 2005-02-06
1388
        case PageItem::FrameType3:
1389
                z = view->PaintRect(x, y, w, h, pw, Pcolor, Pcolor2);
1957 cbradney 1390
                currItem = doc->Items.at(z);
1779 fschmid 1391
                break;
1392
        //
1393
        case PageItem::PathText:
1394
        case PageItem::TextFrame:
1395
                z = view->PaintText(x, y, w, h, pw, Pcolor);
1957 cbradney 1396
                currItem = doc->Items.at(z);
1779 fschmid 1397
                if ((QStoInt(obj->attribute("ANNOTATION","0"))) && (static_cast<bool>(QStoInt(obj->attribute("ANICON","0")))))
1398
                {
1957 cbradney 1399
                        currItem->LocalScX = scx;
1400
                        currItem->LocalScY = scy;
1401
                        currItem->LocalX = QStodouble(obj->attribute("LOCALX"));
1402
                        currItem->LocalY = QStodouble(obj->attribute("LOCALY"));
1403
                        currItem->Pfile = obj->attribute("PFILE");
1404
                        currItem->Pfile2 = obj->attribute("PFILE2","");
1405
                        currItem->Pfile3 = obj->attribute("PFILE3","");
1406
                        currItem->IProfile = obj->attribute("PRFILE","");
1407
                        currItem->EmProfile = obj->attribute("EPROF","");
1408
                        currItem->IRender = QStoInt(obj->attribute("IRENDER","1"));
1409
                        currItem->UseEmbedded = QStoInt(obj->attribute("EMBEDDED","1"));
1410
                        view->LoadPict(currItem->Pfile, z);
1411
                        currItem->LocalScX = scx;
1412
                        currItem->LocalScY = scy;
1413
                        currItem->PicArt = QStoInt(obj->attribute("PICART"));
1414
                        currItem->BBoxX = QStodouble(obj->attribute("BBOXX"));
1415
                        currItem->BBoxH = QStodouble(obj->attribute("BBOXH"));
1416
                        currItem->ScaleType = QStoInt(obj->attribute("SCALETYPE","1"));
1417
                        currItem->AspectRatio = QStoInt(obj->attribute("RATIO","0"));
1779 fschmid 1418
                }
1957 cbradney 1419
                currItem->LineSp = QStodouble(obj->attribute("LINESP"));
2309 fschmid 1420
                currItem->LineSpMode = QStoInt(obj->attribute("LINESPMode","0"));
1957 cbradney 1421
                currItem->convertTo(pt);
1779 fschmid 1422
                break;
1423
        case PageItem::Line:
1424
                z = view->PaintLine(x, y, w, h, pw, Pcolor2);
1957 cbradney 1425
                currItem = doc->Items.at(z);
1779 fschmid 1426
                break;
1427
        case PageItem::Polygon:
1428
                z = view->PaintPoly(x, y, w, h, pw, Pcolor, Pcolor2);
1957 cbradney 1429
                currItem = doc->Items.at(z);
1779 fschmid 1430
                break;
1431
        case PageItem::PolyLine:
1432
                z = view->PaintPolyLine(x, y, w, h, pw, Pcolor, Pcolor2);
1957 cbradney 1433
                currItem = doc->Items.at(z);
1779 fschmid 1434
                break;
1435
        }
1957 cbradney 1436
        currItem->FrameType = QStoInt(obj->attribute("FRTYPE", "0"));
1437
        currItem->startArrowIndex =  QStoInt(obj->attribute("startArrowIndex","0"));
1438
        currItem->endArrowIndex =  QStoInt(obj->attribute("endArrowIndex","0"));
1439
        currItem->NamedLStyle = obj->attribute("NAMEDLST", "");
1440
        currItem->isBookmark = QStoInt(obj->attribute("BOOKMARK"));
1441
        if ((currItem->isBookmark) && (doc->BookMarks.count() == 0))
1779 fschmid 1442
                doc->OldBM = true;
1957 cbradney 1443
        currItem->BMnr = QStoInt(obj->attribute("BookNr","0"));
1444
        currItem->textAlignment = QStoInt(obj->attribute("ALIGN","0"));
1445
        currItem->setImageFlippedH(QStoInt(obj->attribute("FLIPPEDH")));
1446
        currItem->setImageFlippedV(QStoInt(obj->attribute("FLIPPEDV")));
1447
        currItem->RadRect = QStodouble(obj->attribute("RADRECT","0"));
1448
        currItem->ClipEdited = QStoInt(obj->attribute("CLIPEDIT", "0"));
1449
        currItem->setFillColor(Pcolor);
1450
        currItem->setLineColor(Pcolor2);
1451
        currItem->setFillShade(QStoInt(obj->attribute("SHADE")));
1452
        currItem->setLineShade(QStoInt(obj->attribute("SHADE2")));
1453
        currItem->TxtStroke = obj->attribute("TXTSTROKE", "None");
1454
        currItem->TxtFill = obj->attribute("TXTFILL", "Black");
1455
        currItem->ShTxtStroke = QStoInt(obj->attribute("TXTSTRSH", "100"));
1456
        currItem->ShTxtFill = QStoInt(obj->attribute("TXTFILLSH", "100"));
2242 fschmid 1457
        currItem->TxtScale=qRound(QStodouble(obj->attribute("TXTSCALE", "100")) * 10);
1458
        currItem->TxtScaleV=qRound(QStodouble(obj->attribute("TXTSCALEV", "100")) * 10);
1459
        currItem->TxtBase=qRound(QStodouble(obj->attribute("TXTBASE", "0")) * 10);
2247 fschmid 1460
        currItem->TxtShadowX=qRound(QStodouble(obj->attribute("TXTSHX", "5")) * 10);
1461
        currItem->TxtShadowY=qRound(QStodouble(obj->attribute("TXTSHY", "-5")) * 10);
2257 fschmid 1462
        currItem->TxtOutline=qRound(QStodouble(obj->attribute("TXTOUT", "1")) * 10);
2262 fschmid 1463
        currItem->TxtUnderPos=qRound(QStodouble(obj->attribute("TXTULP", "-0.1")) * 10);
1464
        currItem->TxtUnderWidth=qRound(QStodouble(obj->attribute("TXTULW", "-0.1")) * 10);
2272 fschmid 1465
        currItem->TxtStrikePos=qRound(QStodouble(obj->attribute("TXTSTP", "-0.1")) * 10);
1466
        currItem->TxtStrikeWidth=qRound(QStodouble(obj->attribute("TXTSTW", "-0.1")) * 10);
1957 cbradney 1467
        currItem->TxTStyle = QStoInt(obj->attribute("TXTSTYLE", "0"));
1468
        currItem->Rot = QStodouble(obj->attribute("ROT"));
1469
        currItem->Extra = QStodouble(obj->attribute("EXTRA"));
1470
        currItem->TExtra = QStodouble(obj->attribute("TEXTRA", "1"));
1471
        currItem->BExtra = QStodouble(obj->attribute("BEXTRA", "1"));
1472
        currItem->RExtra = QStodouble(obj->attribute("REXTRA", "1"));
1473
        currItem->PLineArt = Qt::PenStyle(QStoInt(obj->attribute("PLINEART")));
1474
        currItem->PLineEnd = Qt::PenCapStyle(QStoInt(obj->attribute("PLINEEND","0")));
1475
        currItem->PLineJoin = Qt::PenJoinStyle(QStoInt(obj->attribute("PLINEJOIN","0")));
1476
        currItem->isPrintable = QStoInt(obj->attribute("PRINTABLE"));
1477
        currItem->isAnnotation = QStoInt(obj->attribute("ANNOTATION","0"));
1478
        currItem->AnType = QStoInt(obj->attribute("ANTYPE","0"));
1779 fschmid 1479
        QString AnName = obj->attribute("ANNAME","");
1480
        if (AnName != "")
1481
        {
1957 cbradney 1482
                if (currItem->itemName() == AnName)
1483
                        currItem->AutoName = true;
1779 fschmid 1484
                else
1485
                {
1957 cbradney 1486
                        currItem->setItemName(AnName);
1487
                        currItem->AutoName = false;
1779 fschmid 1488
                }
1489
        }
1957 cbradney 1490
        currItem->AnAction = obj->attribute("ANACTION","");
1491
        currItem->An_E_act = obj->attribute("ANEACT","");
1492
        currItem->An_X_act = obj->attribute("ANXACT","");
1493
        currItem->An_D_act = obj->attribute("ANDACT","");
1494
        currItem->An_Fo_act = obj->attribute("ANFOACT","");
1495
        currItem->An_Bl_act = obj->attribute("ANBLACT","");
1496
        currItem->An_K_act = obj->attribute("ANKACT","");
1497
        currItem->An_F_act = obj->attribute("ANFACT","");
1498
        currItem->An_V_act = obj->attribute("ANVACT","");
1499
        currItem->An_C_act = obj->attribute("ANCACT","");
1500
        currItem->AnActType = QStoInt(obj->attribute("ANACTYP","0"));
1501
        currItem->An_Extern = obj->attribute("ANEXTERN","");
1502
        if ((currItem->An_Extern != "") && (currItem->AnActType != 8))
1779 fschmid 1503
        {
1957 cbradney 1504
                QFileInfo efp(currItem->An_Extern);
1505
                currItem->An_Extern = efp.absFilePath();
1779 fschmid 1506
        }
1957 cbradney 1507
        currItem->AnZiel = QStoInt(obj->attribute("ANZIEL","0"));
1508
        currItem->AnToolTip = obj->attribute("ANTOOLTIP","");
1509
        currItem->AnRollOver = obj->attribute("ANROLL","");
1510
        currItem->AnDown = obj->attribute("ANDOWN","");
1511
        currItem->AnBwid = QStoInt(obj->attribute("ANBWID","1"));
1512
        currItem->AnBsty = QStoInt(obj->attribute("ANBSTY","0"));
1513
        currItem->AnFeed = QStoInt(obj->attribute("ANFEED","1"));
1514
        currItem->AnFlag = QStoInt(obj->attribute("ANFLAG","0"));
1515
        currItem->AnFont = QStoInt(obj->attribute("ANFONT","4"));
1516
        currItem->AnFormat = QStoInt(obj->attribute("ANFORMAT","0"));
1517
        currItem->AnVis = QStoInt(obj->attribute("ANVIS","0"));
1518
        currItem->AnIsChk = static_cast<bool>(QStoInt(obj->attribute("ANCHK","0")));
1519
        currItem->AnAAact = static_cast<bool>(QStoInt(obj->attribute("ANAA","0")));
1520
        currItem->AnHTML = static_cast<bool>(QStoInt(obj->attribute("ANHTML","0")));
1521
        currItem->AnUseIcons = static_cast<bool>(QStoInt(obj->attribute("ANICON","0")));
1522
        currItem->AnChkStil = QStoInt(obj->attribute("ANCHKS","0"));
1523
        currItem->AnMaxChar = QStoInt(obj->attribute("ANMC","-1"));
1524
        currItem->AnBColor = obj->attribute("ANBCOL","None");
1525
        currItem->AnIPlace = QStoInt(obj->attribute("ANPLACE","1"));
1526
        currItem->AnScaleW = QStoInt(obj->attribute("ANSCALE","0"));
1527
        currItem->TopLine = static_cast<bool>(QStoInt(obj->attribute("TopLine","0")));
1528
        currItem->LeftLine = static_cast<bool>(QStoInt(obj->attribute("LeftLine","0")));
1529
        currItem->RightLine = static_cast<bool>(QStoInt(obj->attribute("RightLine","0")));
1530
        currItem->BottomLine = static_cast<bool>(QStoInt(obj->attribute("BottomLine","0")));
1531
        currItem->isTableItem = static_cast<bool>(QStoInt(obj->attribute("isTableItem","0")));
1532
        currItem->TopLinkID =  QStoInt(obj->attribute("TopLINK","-1"));
1533
        currItem->LeftLinkID =  QStoInt(obj->attribute("LeftLINK","-1"));
1534
        currItem->RightLinkID =  QStoInt(obj->attribute("RightLINK","-1"));
1535
        currItem->BottomLinkID =  QStoInt(obj->attribute("BottomLINK","-1"));
1536
        currItem->PoShow = QStoInt(obj->attribute("PLTSHOW","0"));
1537
        currItem->BaseOffs = QStodouble(obj->attribute("BASEOF","0"));
1538
        currItem->setTextFlowsAroundFrame(QStoInt(obj->attribute("TEXTFLOW")));
1539
        currItem->setTextFlowUsesBoundingBox(QStoInt(obj->attribute("TEXTFLOW2","0")));
1540
        currItem->ISize = qRound(QStodouble(obj->attribute("ISIZE","12")) * 10);
2382 fschmid 1541
        if (obj->hasAttribute("EXTRAV"))
1542
                currItem->ExtraV = qRound(QStodouble(obj->attribute("EXTRAV","0")) / QStodouble(obj->attribute("ISIZE","12")) * 1000.0);
1543
        else
1544
                currItem->ExtraV = QStoInt(obj->attribute("TXTKERN"));
1957 cbradney 1545
        currItem->DashOffset = QStodouble(obj->attribute("DASHOFF","0.0"));
1546
        currItem->Reverse = static_cast<bool>(QStoInt(obj->attribute("REVERS","0")));
1547
        currItem->setLocked(static_cast<bool>(QStoInt(obj->attribute("LOCK","0"))));
1548
        currItem->setSizeLocked(static_cast<bool>(QStoInt(obj->attribute("LOCKR","0"))));
1549
        currItem->setFillTransparency(QStodouble(obj->attribute("TransValue","0.0")));
1779 fschmid 1550
        if (obj->hasAttribute("TransValueS"))
1957 cbradney 1551
                currItem->setLineTransparency(QStodouble(obj->attribute("TransValueS","0.0")));
1779 fschmid 1552
        else
1957 cbradney 1553
                currItem->setLineTransparency(QStodouble(obj->attribute("TransValue","0.0")));
1779 fschmid 1554
        if (QStoInt(obj->attribute("TRANSPARENT","0")) == 1)
1957 cbradney 1555
                currItem->setFillColor("None");
1556
        currItem->Cols = QStoInt(obj->attribute("COLUMNS","1"));
1557
        currItem->ColGap = QStodouble(obj->attribute("COLGAP","0.0"));
1779 fschmid 1558
        if (QStoInt(obj->attribute("LAYER","0")) != -1)
1957 cbradney 1559
                currItem->LayerNr = QStoInt(obj->attribute("LAYER","0"));
1560
        currItem->setTextFlowUsesContourLine(QStoInt(obj->attribute("TEXTFLOW3","0")));
1779 fschmid 1561
        tmp = "";
1562
        if ((obj->hasAttribute("GROUPS")) && (QStoInt(obj->attribute("NUMGROUP","0")) != 0))
1563
        {
1564
                tmp = obj->attribute("GROUPS");
1565
                QTextStream fg(&tmp, IO_ReadOnly);
1957 cbradney 1566
                currItem->Groups.clear();
1779 fschmid 1567
                for (int cx = 0; cx < QStoInt(obj->attribute("NUMGROUP","0")); ++cx)
1568
                {
1569
                        fg >> xi;
1957 cbradney 1570
                        currItem->Groups.push(xi);
1779 fschmid 1571
                }
1572
                tmp = "";
1573
        }
1574
        else
1957 cbradney 1575
                currItem->Groups.clear();
1779 fschmid 1576
        tmp = "";
2282 fschmid 1577
        currItem->TabValues.clear();
1779 fschmid 1578
        if ((obj->hasAttribute("NUMTAB")) && (QStoInt(obj->attribute("NUMTAB","0")) != 0))
1579
        {
2282 fschmid 1580
                struct PageItem::TabRecord tb;
1779 fschmid 1581
                tmp = obj->attribute("TABS");
1582
                QTextStream tgv(&tmp, IO_ReadOnly);
2282 fschmid 1583
                for (int cxv = 0; cxv < QStoInt(obj->attribute("NUMTAB","0")); cxv += 2)
1779 fschmid 1584
                {
1585
                        tgv >> xf;
2282 fschmid 1586
                        tgv >> xf2;
1587
                        tb.tabPosition = xf2;
1588
                        tb.tabType = static_cast<int>(xf);
1589
                        tb.tabFillChar = QChar();
1590
                        currItem->TabValues.append(tb);
1779 fschmid 1591
                }
1592
                tmp = "";
1593
        }
1594
        else
2282 fschmid 1595
        {
1596
                IT = obj->firstChild();
1597
                while(!IT.isNull())
1598
                {
1599
                        QDomElement it = IT.toElement();
1600
                        if (it.tagName()=="Tabs")
1601
                        {
1602
                                struct PageItem::TabRecord tb;
1603
                                tb.tabPosition = QStodouble(it.attribute("Pos"));
1604
                                tb.tabType = QStoInt(it.attribute("Type"));
1605
                                QString tbCh = "";
1606
                                tbCh = it.attribute("Fill","");
1607
                                if (tbCh == "")
1608
                                        tb.tabFillChar = QChar();
1609
                                else
1610
                                        tb.tabFillChar = tbCh[0];
1611
                                currItem->TabValues.append(tb);
1612
                        }
1613
                        IT=IT.nextSibling();
1614
                }
1615
        }
1779 fschmid 1616
        if ((obj->hasAttribute("NUMDASH")) && (QStoInt(obj->attribute("NUMDASH","0")) != 0))
1617
        {
1618
                tmp = obj->attribute("DASHS");
1619
                QTextStream dgv(&tmp, IO_ReadOnly);
1957 cbradney 1620
                currItem->DashValues.clear();
1779 fschmid 1621
                for (int cxv = 0; cxv < QStoInt(obj->attribute("NUMDASH","0")); ++cxv)
1622
                {
1623
                        dgv >> xf;
1957 cbradney 1624
                        currItem->DashValues.append(xf);
1779 fschmid 1625
                }
1626
                tmp = "";
1627
        }
1628
        else
1957 cbradney 1629
                currItem->DashValues.clear();
1779 fschmid 1630
        tmp = "";
1631
        if (obj->hasAttribute("NUMPO"))
1632
        {
1957 cbradney 1633
                currItem->PoLine.resize(obj->attribute("NUMPO").toUInt());
1779 fschmid 1634
                tmp = obj->attribute("POCOOR");
1635
                QTextStream fp(&tmp, IO_ReadOnly);
1636
                for (uint cx=0; cx<obj->attribute("NUMPO").toUInt(); ++cx)
1637
                {
1638
                        fp >> xf;
1639
                        fp >> yf;
1957 cbradney 1640
                        currItem->PoLine.setPoint(cx, xf, yf);
1779 fschmid 1641
                }
1642
        }
1643
        else
1957 cbradney 1644
                currItem->PoLine.resize(0);
1779 fschmid 1645
        tmp = "";
1646
        if (obj->hasAttribute("NUMCO"))
1647
        {
1957 cbradney 1648
                currItem->ContourLine.resize(obj->attribute("NUMCO").toUInt());
1779 fschmid 1649
                tmp = obj->attribute("COCOOR");
1650
                QTextStream fp(&tmp, IO_ReadOnly);
1651
                for (uint cx=0; cx<obj->attribute("NUMCO").toUInt(); ++cx)
1652
                {
1653
                        fp >> xf;
1654
                        fp >> yf;
1957 cbradney 1655
                        currItem->ContourLine.setPoint(cx, xf, yf);
1779 fschmid 1656
                }
1657
        }
1658
        else
1957 cbradney 1659
                currItem->ContourLine = currItem->PoLine.copy();
1660
        if (currItem->itemType() != PageItem::Line)
1661
                currItem->Clip = FlattenPath(currItem->PoLine, currItem->Segments);
1779 fschmid 1662
        else
1663
        {
1957 cbradney 1664
                int ph = static_cast<int>(QMAX(1.0, currItem->Pwidth / 2.0));
1665
                currItem->Segments.clear();
1666
                currItem->PoLine.resize(0);
1667
                currItem->Clip.setPoints(4, -ph,-ph, static_cast<int>(currItem->Width+ph),-ph,
1668
                                  static_cast<int>(currItem->Width+ph),static_cast<int>(currItem->Height+ph),
1669
                                  -ph,static_cast<int>(currItem->Height+ph));
1670
                currItem->Height = 1;
1779 fschmid 1671
        }
1957 cbradney 1672
        if (currItem->itemType() == PageItem::ImageFrame)
1673
                view->AdjustPictScale(currItem);
1674
        if ((currItem->itemType() != PageItem::TextFrame) && (currItem->itemType() != PageItem::PathText))
1675
                currItem->IFont = doc->toolSettings.defFont;
1676
        currItem->GrType = QStoInt(obj->attribute("GRTYP","0"));
1779 fschmid 1677
        QString GrColor;
1678
        QString GrColor2;
1679
        int GrShade;
1680
        int GrShade2;
1957 cbradney 1681
        if (currItem->GrType != 0)
1779 fschmid 1682
        {
1957 cbradney 1683
                currItem->GrStartX = QStodouble(obj->attribute("GRSTARTX","0.0"));
1684
                currItem->GrStartY = QStodouble(obj->attribute("GRSTARTY","0.0"));
1685
                currItem->GrEndX = QStodouble(obj->attribute("GRENDX","0.0"));
1686
                currItem->GrEndY = QStodouble(obj->attribute("GRENDY","0.0"));
1779 fschmid 1687
                GrColor = obj->attribute("GRCOLOR","");
1688
                if (GrColor != "")
1689
                {
1690
                        GrColor2 = obj->attribute("GRCOLOR2","");
1691
                        GrShade = QStoInt(obj->attribute("GRSHADE","100"));
1692
                        GrShade2 = QStoInt(obj->attribute("GRSHADE2","100"));
1693
                }
1694
        }
1957 cbradney 1695
        if (currItem