Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
5653 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
#include "scribus134format.h"
8
#include "scribus134format.moc"
9
#include "scribus134formatimpl.h"
10
 
11
#include "../../formatidlist.h"
12
#include "commonstrings.h"
13
#include "missing.h"
14
#include "prefsmanager.h"
15
#include "scconfig.h"
16
#include "scribusdoc.h"
17
#include "scribusview.h"
18
 
19
#include "units.h"
20
#include "util.h"
6125 cbradney 21
#include "colorutil.h"
5653 cbradney 22
#ifdef HAVE_LIBZ
23
        #include <zlib.h>
24
#endif
25
#include <qcursor.h>
26
#include <qfileinfo.h>
27
#include <qvaluelist.h>
28
 
29
 
30
// See scplugin.h and pluginmanager.{cpp,h} for detail on what these methods
31
// do. That documentatation is not duplicated here.
32
// Please don't implement the functionality of your plugin here; do that
33
// in scribus134formatimpl.h and scribus134formatimpl.cpp .
34
 
35
Scribus134Format::Scribus134Format() :
36
        LoadSavePlugin()
37
{
38
        // Set action info in languageChange, so we only have to do
39
        // it in one place. This includes registering file formats.
40
        languageChange();
41
}
42
 
43
Scribus134Format::~Scribus134Format()
44
{
45
        unregisterAll();
46
};
47
 
48
void Scribus134Format::languageChange()
49
{
50
        //(Re)register file formats.
51
        unregisterAll();
52
        registerFormats();
53
}
54
 
55
const QString Scribus134Format::fullTrName() const
56
{
57
        return QObject::tr("Scribus 1.3.4 Support");
58
}
59
 
60
const ScActionPlugin::AboutData* Scribus134Format::getAboutData() const
61
{
62
        AboutData* about = new AboutData;
63
        Q_CHECK_PTR(about);
64
        return about;
65
}
66
 
67
void Scribus134Format::deleteAboutData(const AboutData* about) const
68
{
69
        Q_ASSERT(about);
70
        delete about;
71
}
72
 
73
void Scribus134Format::registerFormats()
74
{
75
        FileFormat fmt(this);
76
        fmt.trName = tr("Scribus 1.3.4 Document");
77
        fmt.formatId = FORMATID_SLA134IMPORT;
78
        fmt.load = true;
79
        fmt.save = true;
80
#ifdef HAVE_LIBZ
81
        fmt.filter = fmt.trName + " (*.sla *.SLA *.sla.gz *.SLA.GZ *.scd *.SCD *.scd.gz *.SCD.GZ)";
82
        fmt.nameMatch = QRegExp("\\.(sla|scd)(\\.gz)?", false);
83
#else
84
        fmt.filter = fmt.trName + " (*.sla *.SLA *.scd *.SCD)";
85
        fmt.nameMatch = QRegExp("\\.(sla|scd)", false);
86
#endif
87
        fmt.mimeTypes = QStringList();
88
        fmt.mimeTypes.append("application/x-scribus");
89
        fmt.priority = 64;
90
        registerFormat(fmt);
91
}
92
 
93
bool Scribus134Format::fileSupported(QIODevice* /* file */, const QString & fileName) const
94
{
95
        QCString docBytes("");
96
        if(fileName.right(2) == "gz")
97
        {
98
#ifdef HAVE_LIBZ
99
                static const int gzipExpansionFactor=8;
100
                // The file is gzip encoded and we can load gzip files.
101
                // Set up to read the gzip file
102
                gzFile gzDoc;
103
                int i;
104
                gzDoc = gzopen(fileName.latin1(),"rb");
105
                if(gzDoc == NULL)
106
                {
107
                        // FIXME: Needs better error return
108
                        return "";
109
                }
110
                // Allocate a buffer of a multiple of the compressed size of the file
111
                // as a starting point for loading. We'll expand this buffer by powers
112
                // of two if we run out of space.
113
                const QFileInfo fi(fileName);
114
                uint bufSize = QMIN(4096, fi.size()*gzipExpansionFactor);
115
                docBytes = QCString(bufSize);
116
                char* buf = docBytes.data();
117
                uint bytesRead = 0;
118
                // While there's free space, read into the buffer....
119
                while (bytesRead<4096 && (i = gzread(gzDoc,buf,bufSize-bytesRead-1)) > 0)
120
                {
121
                        // Ensure the string is null-terminated and move the
122
                        // write pointer to the current position.
123
                        buf[i]=0;
124
                        buf+=i;
125
                        bytesRead += i;
126
                        // And check that there's free space to work with, expanding the
127
                        // buffer if there's not.
128
                        if (bufSize - bytesRead < 4096)
129
                        {
130
                                bufSize *= 2;
131
                                docBytes.resize(bufSize);
132
                                buf = docBytes.data() + bytesRead;
133
                        }
134
                }
135
                gzclose(gzDoc);
136
#else
137
                // The file is gzip encoded but we can't load gzip files.
138
                // Leave `f' empty, since we have no way to
139
                // report a failure condition from here.
140
                return false;
141
#endif
142
        }
143
        else
144
        {
145
                // Not gzip encoded, just load it
146
                loadRawText(fileName, docBytes);
147
        }
148
        if (docBytes.left(16) == "<SCRIBUSUTF8NEW " && docBytes.left(35).contains("Version=\"1.3.4"))
149
                return true;
150
        return false;
151
}
152
 
153
QString Scribus134Format::readSLA(const QString & fileName)
154
{
155
        QCString docBytes("");
156
        if(fileName.right(2) == "gz")
157
        {
158
#ifdef HAVE_LIBZ
159
                static const int gzipExpansionFactor=8;
160
                // The file is gzip encoded and we can load gzip files.
161
                // Set up to read the gzip file
162
                gzFile gzDoc;
163
                int i;
164
                gzDoc = gzopen(fileName.latin1(),"rb");
165
                if(gzDoc == NULL)
166
                {
167
                        // FIXME: Needs better error return
168
                        return "";
169
                }
170
                // Allocate a buffer of a multiple of the compressed size of the file
171
                // as a starting point for loading. We'll expand this buffer by powers
172
                // of two if we run out of space.
173
                const QFileInfo fi(fileName);
174
                uint bufSize = fi.size()*gzipExpansionFactor;
175
                docBytes = QCString(bufSize);
176
                char* buf = docBytes.data();
177
                uint bytesRead = 0;
178
                // While there's free space, read into the buffer....
179
                while ((i = gzread(gzDoc,buf,bufSize-bytesRead-1)) > 0)
180
                {
181
                        // Ensure the string is null-terminated and move the
182
                        // write pointer to the current position.
183
                        buf[i]=0;
184
                        buf+=i;
185
                        bytesRead += i;
186
                        // And check that there's free space to work with, expanding the
187
                        // buffer if there's not.
188
                        if (bufSize - bytesRead < 4096)
189
                        {
190
                                bufSize *= 2;
191
                                docBytes.resize(bufSize);
192
                                buf = docBytes.data() + bytesRead;
193
                        }
194
                }
195
                gzclose(gzDoc);
196
#else
197
                // The file is gzip encoded but we can't load gzip files.
198
                // Leave `f' empty, since we have no way to
199
                // report a failure condition from here.
200
                return false;
201
#endif
202
        }
203
        else
204
        {
205
                // Not gzip encoded, just load it
206
                loadRawText(fileName, docBytes);
207
        }
208
        QString docText("");
209
        if (docBytes.left(16) == "<SCRIBUSUTF8NEW " && docBytes.left(35).contains("Version=\"1.3.4"))
210
                docText = QString::fromUtf8(docBytes);
211
        else
212
                return QString::null;
213
        if (docText.endsWith(QChar(10)) || docText.endsWith(QChar(13)))
214
                docText.truncate(docText.length()-1);
215
        return docText;
216
}
217
 
5980 avox 218
void Scribus134Format::getReplacedFontData(bool & getNewReplacement, QMap<QString,QString> &getReplacedFonts, QValueList<ScFace> &getDummyScFaces)
5653 cbradney 219
{
220
        getNewReplacement=newReplacement;
221
        getReplacedFonts=ReplacedFonts;
5980 avox 222
        getDummyScFaces=dummyScFaces;
5653 cbradney 223
}
224
 
225
bool Scribus134Format::loadFile(const QString & fileName, const FileFormat & /* fmt */, int /* flags */, int /* index */)
226
{
227
        if (m_Doc==0 || m_AvailableFonts==0)
228
        {
229
                Q_ASSERT(m_Doc==0 || m_AvailableFonts==0);
230
                return false;
231
        }
232
        ReplacedFonts.clear();
233
        newReplacement = false;
5980 avox 234
        dummyScFaces.clear();
5653 cbradney 235
        ParagraphStyle vg;
236
        struct Layer la;
237
        struct ScribusDoc::BookMa bok;
238
        int counter;//, Pgc;
239
        //bool AtFl;
240
        bool newVersion = false;
241
        QString tmp, tmpf, tmp2, tmp3, tmp4, PgNam, Defont, tmf;
242
        QFont fo;
243
        QMap<int,int> TableID;
244
        QPtrList<PageItem> TableItems;
6451 fschmid 245
        QMap<PageItem*, int> groupID;
5653 cbradney 246
        int a;
247
        PageItem *Neu;
248
        Page* Apage;
249
        LFrames.clear();
250
        QDomDocument docu("scridoc");
251
        QString f(readSLA(fileName));
252
        if (f.isEmpty())
253
                return false;
254
        /* 2004/10/02 - petr vanek - bug #1092 - missing <PAGE> crash Scribus. The check constraint moved into IsScribus()
255
        FIXME: I've add test on containig tag PAGE but returning false freezes S. in scribus.cpp need some hack too...  */
256
        if (!docu.setContent(f))
257
                return false;
258
        m_Doc->PageColors.clear();
259
        m_Doc->Layers.clear();
260
        int layerToSetActive=0;
261
        ScColor lf = ScColor();
262
        QDomElement elem=docu.documentElement();
263
        if (elem.tagName() != "SCRIBUSUTF8NEW")
264
                return false;
265
        if (elem.hasAttribute("Version"))
266
                newVersion = true;
267
        QDomNode DOC=elem.firstChild();
268
        if (m_mwProgressBar!=0)
269
        {
270
                m_mwProgressBar->setTotalSteps(DOC.childNodes().count());
271
                m_mwProgressBar->setProgress(0);
272
        }
273
        int ObCount = 0;
274
        TableItems.clear();
275
        TableID.clear();
276
        PrefsManager* prefsManager=PrefsManager::instance();
277
        while(!DOC.isNull())
278
        {
279
                QDomElement dc=DOC.toElement();
280
        /*
281
        * Attribute von DOCUMENT auslesen
282
        */
283
                //CB Add this in to set this in the file in memory. Its saved, why not load it.
284
                //Will of course be replaced by per page settings although we still probably need a document default
5789 cbradney 285
                m_Doc->m_pageSize = dc.attribute("PAGESIZE");
5653 cbradney 286
                m_Doc->PageOri = dc.attribute("ORIENTATION", "0").toInt();
287
                m_Doc->FirstPnum = dc.attribute("FIRSTNUM", "1").toInt();
288
                m_Doc->currentPageLayout=dc.attribute("BOOK", "0").toInt();
289
                int fp;
290
                if (m_Doc->currentPageLayout == 0)
291
                        fp = 0;
292
                else
293
                {
294
                        if (dc.attribute("FIRSTLEFT", "0").toInt() == 1)
295
                                fp = 0;
296
                        else
297
                                fp = 1;
298
                }
299
                if (DOC.namedItem("PageSets").isNull())
300
                {
301
                        m_Doc->pageSets[m_Doc->currentPageLayout].FirstPage = fp;
302
                        m_Doc->pageSets[m_Doc->currentPageLayout].GapHorizontal = dc.attribute("GapHorizontal", "0").toDouble();
303
                        m_Doc->pageSets[m_Doc->currentPageLayout].GapVertical = 0.0;
304
                        m_Doc->pageSets[m_Doc->currentPageLayout].GapBelow = dc.attribute("GapVertical", "40").toDouble();
305
                }
306
                m_Doc->setUsesAutomaticTextFrames(dc.attribute("AUTOTEXT").toInt());
307
                m_Doc->PageSp=dc.attribute("AUTOSPALTEN").toInt();
308
                m_Doc->PageSpa=dc.attribute("ABSTSPALTEN").toDouble();
309
                m_Doc->setUnitIndex(dc.attribute("UNITS", "0").toInt());
310
                m_Doc->toolSettings.defSize=qRound(dc.attribute("DSIZE").toDouble() * 10);
311
                Defont=dc.attribute("DFONT");
5980 avox 312
                if ((!m_AvailableFonts->contains(Defont)) || (!(*m_AvailableFonts)[Defont].usable()))
5653 cbradney 313
                {
314
                        ReplacedFonts.insert(Defont, prefsManager->appPrefs.toolSettings.defFont);
315
                        Defont = prefsManager->appPrefs.toolSettings.defFont;
316
                }
317
                else
318
                {
319
//                      QFont fo = avail[Defont]->Font;
320
//                      fo.setPointSize(qRound(m_Doc->toolSettings.defSize / 10.0));
321
                        m_Doc->AddFont(Defont, qRound(m_Doc->toolSettings.defSize / 10.0));
322
                }
323
                m_Doc->toolSettings.defFont = Defont;
324
                m_Doc->toolSettings.dCols=dc.attribute("DCOL", "1").toInt();
325
                m_Doc->toolSettings.dGap=dc.attribute("DGAP", "0.0").toDouble();
326
                m_Doc->documentInfo.setAuthor(dc.attribute("AUTHOR"));
327
                m_Doc->documentInfo.setComments(dc.attribute("COMMENTS"));
328
                m_Doc->documentInfo.setKeywords(dc.attribute("KEYWORDS",""));
329
                m_Doc->documentInfo.setTitle(dc.attribute("TITLE"));
330
                m_Doc->documentInfo.setPublisher(dc.attribute("PUBLISHER", ""));
331
                m_Doc->documentInfo.setDate(dc.attribute("DOCDATE", ""));
332
                m_Doc->documentInfo.setType(dc.attribute("DOCTYPE", ""));
333
                m_Doc->documentInfo.setFormat(dc.attribute("DOCFORMAT", ""));
334
                m_Doc->documentInfo.setIdent(dc.attribute("DOCIDENT", ""));
335
                m_Doc->documentInfo.setSource(dc.attribute("DOCSOURCE", ""));
336
                m_Doc->documentInfo.setLangInfo(dc.attribute("DOCLANGINFO", ""));
337
                m_Doc->documentInfo.setRelation(dc.attribute("DOCRELATION", ""));
338
                m_Doc->documentInfo.setCover(dc.attribute("DOCCOVER", ""));
339
                m_Doc->documentInfo.setRights(dc.attribute("DOCRIGHTS", ""));
340
                m_Doc->documentInfo.setContrib(dc.attribute("DOCCONTRIB", ""));
341
                m_Doc->typographicSettings.valueSuperScript = dc.attribute("VHOCH").toInt();
342
                m_Doc->typographicSettings.scalingSuperScript = dc.attribute("VHOCHSC").toInt();
343
                m_Doc->typographicSettings.valueSubScript = dc.attribute("VTIEF").toInt();
344
                m_Doc->typographicSettings.scalingSubScript = dc.attribute("VTIEFSC").toInt();
345
                m_Doc->typographicSettings.valueSmallCaps = dc.attribute("VKAPIT").toInt();
346
                m_Doc->typographicSettings.valueBaseGrid = dc.attribute("BASEGRID", "12").toDouble();
347
                m_Doc->typographicSettings.offsetBaseGrid = dc.attribute("BASEO", "0").toDouble();
348
                m_Doc->typographicSettings.autoLineSpacing = dc.attribute("AUTOL", "20").toInt();
349
                m_Doc->typographicSettings.valueUnderlinePos = dc.attribute("UnderlinePos", "-1").toInt();
350
                m_Doc->typographicSettings.valueUnderlineWidth = dc.attribute("UnderlineWidth", "-1").toInt();
351
                m_Doc->typographicSettings.valueStrikeThruPos = dc.attribute("StrikeThruPos", "-1").toInt();
352
                m_Doc->typographicSettings.valueStrikeThruWidth = dc.attribute("StrikeThruWidth", "-1").toInt();
353
                m_Doc->GroupCounter=dc.attribute("GROUPC", "1").toInt();
5880 jghali 354
                //m_Doc->HasCMS = static_cast<bool>(dc.attribute("HCMS", "0").toInt());
5653 cbradney 355
                m_Doc->CMSSettings.SoftProofOn = static_cast<bool>(dc.attribute("DPSo", "0").toInt());
356
                m_Doc->CMSSettings.SoftProofFullOn = static_cast<bool>(dc.attribute("DPSFo", "0").toInt());
357
                m_Doc->CMSSettings.CMSinUse = static_cast<bool>(dc.attribute("DPuse", "0").toInt());
358
                m_Doc->CMSSettings.GamutCheck = static_cast<bool>(dc.attribute("DPgam", "0").toInt());
359
                m_Doc->CMSSettings.BlackPoint = static_cast<bool>(dc.attribute("DPbla", "1").toInt());
360
                m_Doc->CMSSettings.DefaultMonitorProfile = dc.attribute("DPMo","");
361
                m_Doc->CMSSettings.DefaultPrinterProfile = dc.attribute("DPPr","");
362
                m_Doc->CMSSettings.DefaultImageRGBProfile = dc.attribute("DPIn","");
363
                m_Doc->CMSSettings.DefaultImageCMYKProfile = dc.attribute("DPInCMYK","");
364
                m_Doc->CMSSettings.DefaultSolidColorRGBProfile = dc.attribute("DPIn2","");
365
                if (dc.hasAttribute("DPIn3"))
366
                        m_Doc->CMSSettings.DefaultSolidColorCMYKProfile = dc.attribute("DPIn3","");
367
                else
368
                        m_Doc->CMSSettings.DefaultSolidColorCMYKProfile = dc.attribute("DPPr","");
369
                //m_Doc->CMSSettings.DefaultIntentPrinter = dc.attribute("DIPr", "0").toInt();
370
                //m_Doc->CMSSettings.DefaultIntentMonitor = dc.attribute("DIMo", "1").toInt();
371
                m_Doc->CMSSettings.DefaultIntentColors = dc.attribute("DISc", "1").toInt();
372
                m_Doc->CMSSettings.DefaultIntentImages = dc.attribute("DIIm", "0").toInt();
373
                layerToSetActive=dc.attribute("ALAYER", "0").toInt();
374
                m_Doc->Language = dc.attribute("LANGUAGE", "");
375
                m_Doc->MinWordLen = dc.attribute("MINWORDLEN", "3").toInt();
376
                m_Doc->HyCount = dc.attribute("HYCOUNT", "2").toInt();
377
                if (dc.hasAttribute("PAGEWIDTH"))
378
                        m_Doc->pageWidth=dc.attribute("PAGEWIDTH").toDouble();
379
                else
380
                        m_Doc->pageWidth=dc.attribute("PAGEWITH").toDouble();
381
                m_Doc->pageHeight=dc.attribute("PAGEHEIGHT").toDouble();
382
                m_Doc->pageMargins.Left=QMAX(0.0, dc.attribute("BORDERLEFT").toDouble());
383
                m_Doc->pageMargins.Right=QMAX(0.0, dc.attribute("BORDERRIGHT").toDouble());
384
                m_Doc->pageMargins.Top=QMAX(0.0, dc.attribute("BORDERTOP").toDouble());
385
                m_Doc->pageMargins.Bottom=QMAX(0.0, dc.attribute("BORDERBOTTOM").toDouble());
386
                m_Doc->Automatic = static_cast<bool>(dc.attribute("AUTOMATIC", "1").toInt());
387
                m_Doc->AutoCheck = static_cast<bool>(dc.attribute("AUTOCHECK", "0").toInt());
388
                m_Doc->GuideLock = static_cast<bool>(dc.attribute("GUIDELOCK", "0").toInt());
389
                m_Doc->guidesSettings.minorGrid = dc.attribute("MINGRID", tmp.setNum(prefsManager->appPrefs.guidesSettings.minorGrid)).toDouble();
390
                m_Doc->guidesSettings.majorGrid = dc.attribute("MAJGRID", tmp.setNum(prefsManager->appPrefs.guidesSettings.majorGrid)).toDouble();
391
                m_Doc->guidesSettings.gridShown = static_cast<bool>(dc.attribute("SHOWGRID", "0").toInt());
392
                m_Doc->guidesSettings.guidesShown = static_cast<bool>(dc.attribute("SHOWGUIDES", "1").toInt());
393
                m_Doc->guidesSettings.colBordersShown = static_cast<bool>(dc.attribute("showcolborders", "0").toInt());
394
                m_Doc->guidesSettings.framesShown = static_cast<bool>(dc.attribute("SHOWFRAME", "1").toInt());
395
                m_Doc->guidesSettings.layerMarkersShown = static_cast<bool>(dc.attribute("SHOWLAYERM", "0").toInt());
396
                m_Doc->guidesSettings.marginsShown = static_cast<bool>(dc.attribute("SHOWMARGIN", "1").toInt());
397
                m_Doc->guidesSettings.baseShown = static_cast<bool>(dc.attribute("SHOWBASE", "0").toInt());
398
                m_Doc->guidesSettings.showPic = static_cast<bool>(dc.attribute("SHOWPICT", "1").toInt());
399
                m_Doc->guidesSettings.linkShown = static_cast<bool>(dc.attribute("SHOWLINK", "0").toInt());
400
                m_Doc->guidesSettings.showControls = static_cast<bool>(dc.attribute("SHOWControl", "0").toInt());
401
                m_Doc->guidesSettings.rulerMode = static_cast<bool>(dc.attribute("rulerMode", "1").toInt());
402
                m_Doc->guidesSettings.rulersShown = static_cast<bool>(dc.attribute("showrulers", "1").toInt());
403
                m_Doc->rulerXoffset = dc.attribute("rulerXoffset", "0").toDouble();
404
                m_Doc->rulerYoffset =dc.attribute("rulerYoffset", "0").toDouble();
405
                m_Doc->SnapGuides = static_cast<bool>(dc.attribute("SnapToGuides", "0").toInt());
406
                m_Doc->useRaster = static_cast<bool>(dc.attribute("SnapToGrid", "0").toInt());
407
                m_Doc->toolSettings.polyC = dc.attribute("POLYC", "4").toInt();
408
                m_Doc->toolSettings.polyF = dc.attribute("POLYF", "0.5").toDouble();
409
                m_Doc->toolSettings.polyR = dc.attribute("POLYR", "0").toDouble();
410
                m_Doc->toolSettings.polyFd = dc.attribute("POLYFD", "0").toInt();
411
                m_Doc->toolSettings.polyS = static_cast<bool>(dc.attribute("POLYS", "0").toInt());
412
                m_Doc->AutoSave = static_cast<bool>(dc.attribute("AutoSave", "0").toInt());
413
                m_Doc->AutoSaveTime = dc.attribute("AutoSaveTime", "600000").toInt();
414
                m_Doc->ScratchBottom = dc.attribute("ScratchBottom", "20").toDouble();
415
                // FIXME A typo in early 1.3cvs (MAR 05) means we must support loading of
416
                // FIXME 'ScatchLeft' for a while too. This can be removed in a few months.
417
                if (dc.hasAttribute("ScatchLeft"))
418
                        m_Doc->ScratchLeft = dc.attribute("ScatchLeft", "100").toDouble();
419
                else
420
                        m_Doc->ScratchLeft = dc.attribute("ScratchLeft", "100").toDouble();
421
                m_Doc->ScratchRight = dc.attribute("ScratchRight", "100").toDouble();
422
                m_Doc->ScratchTop = dc.attribute("ScratchTop", "20").toDouble();
423
                m_Doc->toolSettings.dStartArrow = dc.attribute("StartArrow", "0").toInt();
424
                m_Doc->toolSettings.dEndArrow = dc.attribute("EndArrow", "0").toInt();
425
                m_Doc->toolSettings.scaleX = dc.attribute("PICTSCX", "1").toDouble();
426
                m_Doc->toolSettings.scaleY = dc.attribute("PICTSCY", "1").toDouble();
427
                m_Doc->toolSettings.scaleType = static_cast<bool>(dc.attribute("PSCALE", "1").toInt());
428
                m_Doc->toolSettings.aspectRatio = static_cast<bool>(dc.attribute("PASPECT", "0").toInt());
429
                m_Doc->toolSettings.lowResType = dc.attribute("HalfRes", "1").toInt();
430
                m_Doc->toolSettings.useEmbeddedPath = static_cast<bool>(dc.attribute("EmbeddedPath", "0").toInt());
431
                if (dc.hasAttribute("PEN"))
432
                        m_Doc->toolSettings.dPen = dc.attribute("PEN");
433
                if (dc.hasAttribute("BRUSH"))
434
                        m_Doc->toolSettings.dBrush = dc.attribute("BRUSH");
435
                if (dc.hasAttribute("PENLINE"))
436
                        m_Doc->toolSettings.dPenLine = dc.attribute("PENLINE");
437
                if (dc.hasAttribute("PENTEXT"))
438
                        m_Doc->toolSettings.dPenText = dc.attribute("PENTEXT");
439
                if (dc.hasAttribute("StrokeText"))
440
                        m_Doc->toolSettings.dStrokeText = dc.attribute("StrokeText");
441
                m_Doc->toolSettings.dTextBackGround = dc.attribute("TextBackGround", CommonStrings::None);
442
                m_Doc->toolSettings.dTextLineColor = dc.attribute("TextLineColor", CommonStrings::None);
443
                m_Doc->toolSettings.dTextBackGroundShade = dc.attribute("TextBackGroundShade", "100").toInt();
444
                m_Doc->toolSettings.dTextLineShade = dc.attribute("TextLineShade", "100").toInt();
445
                m_Doc->toolSettings.dTextPenShade = dc.attribute("TextPenShade", "100").toInt();
446
                m_Doc->toolSettings.dTextStrokeShade = dc.attribute("TextStrokeShade", "100").toInt();
447
                m_Doc->toolSettings.dLineArt = static_cast<Qt::PenStyle>(dc.attribute("STIL").toInt());
448
                m_Doc->toolSettings.dLstyleLine = static_cast<Qt::PenStyle>(dc.attribute("STILLINE").toInt());
449
                m_Doc->toolSettings.dWidth = dc.attribute("WIDTH", "1").toDouble();
450
                m_Doc->toolSettings.dWidthLine = dc.attribute("WIDTHLINE", "1").toDouble();
451
                m_Doc->toolSettings.dShade2 = dc.attribute("PENSHADE", "100").toInt();
452
                m_Doc->toolSettings.dShadeLine = dc.attribute("LINESHADE", "100").toInt();
453
                m_Doc->toolSettings.dShade = dc.attribute("BRUSHSHADE", "100").toInt();
454
                m_Doc->toolSettings.magMin = dc.attribute("MAGMIN", "10").toInt();
455
                m_Doc->toolSettings.magMax = dc.attribute("MAGMAX", "3200").toInt();
456
                m_Doc->toolSettings.magStep = dc.attribute("MAGSTEP", "200").toInt();
457
                //CB Reset doc zoom step value to 200% instead of old values.
458
                if (m_Doc->toolSettings.magStep<100)
459
                        m_Doc->toolSettings.magStep=200;
460
                m_Doc->toolSettings.tabFillChar = dc.attribute("TabFill","");
461
                m_Doc->toolSettings.dTabWidth=dc.attribute("TabWidth", "36.0").toDouble();
462
                if (dc.hasAttribute("CPICT"))
463
                        m_Doc->toolSettings.dBrushPict = dc.attribute("CPICT");
464
                m_Doc->toolSettings.shadePict = dc.attribute("PICTSHADE", "100").toInt();
465
                if (dc.hasAttribute("PAGEC"))
466
                        m_Doc->papColor = QColor(dc.attribute("PAGEC"));
467
                if (dc.hasAttribute("MARGC"))
468
                        m_Doc->guidesSettings.margColor = QColor(dc.attribute("MARGC"));
469
                if (dc.hasAttribute("MINORC"))
470
                        m_Doc->guidesSettings.minorColor = QColor(dc.attribute("MINORC"));
471
                if (dc.hasAttribute("MAJORC"))
472
                        m_Doc->guidesSettings.majorColor = QColor(dc.attribute("MAJORC"));
473
                if (dc.hasAttribute("GuideC"))
474
                        m_Doc->guidesSettings.guideColor = QColor(dc.attribute("GuideC"));
475
                if (dc.hasAttribute("BaseC"))
476
                        m_Doc->guidesSettings.baseColor = QColor(dc.attribute("BaseC"));
477
                m_Doc->marginColored = static_cast<bool>(dc.attribute("RANDF", "0").toInt());
478
                m_Doc->guidesSettings.before = static_cast<bool>(dc.attribute("BACKG", "1").toInt());
479
                m_Doc->guidesSettings.guideRad = dc.attribute("GuideRad", "10").toDouble();
480
                m_Doc->guidesSettings.grabRad = dc.attribute("GRAB", "4").toInt();
481
                if (dc.hasAttribute("currentProfile"))
482
                {
483
                        m_Doc->checkerProfiles.clear();
484
                        m_Doc->curCheckProfile = dc.attribute("currentProfile");
485
                }
486
                m_Doc->LastAuto = 0;
487
                QDomNode PAGE=DOC.firstChild();
488
                counter = 0;
489
                while(!PAGE.isNull())
490
                {
491
                        ObCount++;
492
                        if (m_mwProgressBar!=0)
493
                                m_mwProgressBar->setProgress(ObCount);
494
                        QDomElement pg=PAGE.toElement();
495
                        if (pg.tagName()=="PageSets")
496
                        {
497
                                QDomNode PGS = PAGE.firstChild();
498
                                m_Doc->pageSets.clear();
499
                                while(!PGS.isNull())
500
                                {
501
                                        QDomElement PgsAttr = PGS.toElement();
502
                                        if(PgsAttr.tagName() == "Set")
503
                                        {
504
                                                struct PageSet pageS;
505
                                                pageS.Name = CommonStrings::untranslatePageSetString(PgsAttr.attribute("Name"));
506
                                                pageS.FirstPage = PgsAttr.attribute("FirstPage", "0").toInt();
507
                                                pageS.Rows = PgsAttr.attribute("Rows", "1").toInt();
508
                                                pageS.Columns = PgsAttr.attribute("Columns", "1").toInt();
509
                                                pageS.GapHorizontal = PgsAttr.attribute("GapHorizontal", "0").toDouble();
510
                                                pageS.GapVertical = PgsAttr.attribute("GapVertical", "0").toDouble();
511
                                                pageS.GapBelow = PgsAttr.attribute("GapBelow", "0").toDouble();
512
                                                pageS.pageNames.clear();
513
                                                QDomNode PGSN = PGS.firstChild();
514
                                                while(!PGSN.isNull())
515
                                                {
516
                                                        QDomElement PgsAttrN = PGSN.toElement();
517
                                                        if(PgsAttrN.tagName() == "PageNames")
518
                                                                pageS.pageNames.append(CommonStrings::untranslatePageSetLocString(PgsAttrN.attribute("Name")));
519
                                                        PGSN = PGSN.nextSibling();
520
                                                }
521
                                                m_Doc->pageSets.append(pageS);
522
                                        }
523
                                        PGS = PGS.nextSibling();
524
                                }
525
                        }
526
                        if (pg.tagName()=="CheckProfile")
527
                        {
528
                                struct checkerPrefs checkerSettings;
529
                                checkerSettings.ignoreErrors = static_cast<bool>(pg.attribute("ignoreErrors", "0").toInt());
530
                                checkerSettings.autoCheck = static_cast<bool>(pg.attribute("autoCheck", "1").toInt());
531
                                checkerSettings.checkGlyphs = static_cast<bool>(pg.attribute("checkGlyphs", "1").toInt());
532
                                checkerSettings.checkOrphans = static_cast<bool>(pg.attribute("checkOrphans", "1").toInt());
533
                                checkerSettings.checkOverflow = static_cast<bool>(pg.attribute("checkOverflow", "1").toInt());
534
                                checkerSettings.checkPictures = static_cast<bool>(pg.attribute("checkPictures", "1").toInt());
535
                                checkerSettings.checkResolution = static_cast<bool>(pg.attribute("checkResolution", "1").toInt());
536
                                checkerSettings.checkTransparency = static_cast<bool>(pg.attribute("checkTransparency", "1").toInt());
537
                                checkerSettings.minResolution = pg.attribute("minResolution", "72").toDouble();
538
                                checkerSettings.maxResolution = pg.attribute("maxResolution", "4800").toDouble();
539
                                checkerSettings.checkAnnotations = static_cast<bool>(pg.attribute("checkAnnotations", "0").toInt());
540
                                checkerSettings.checkRasterPDF = static_cast<bool>(pg.attribute("checkRasterPDF", "1").toInt());
541
                                checkerSettings.checkForGIF = static_cast<bool>(pg.attribute("checkForGIF", "1").toInt());
542
                                m_Doc->checkerProfiles[pg.attribute("Name")] = checkerSettings;
543
                        }
544
                        // 10/25/2004 pv - None is "reserved" color. cannot be defined in any file...
545
                        if(pg.tagName()=="COLOR" && pg.attribute("NAME")!=CommonStrings::None)
546
                        {
547
                                if (pg.hasAttribute("CMYK"))
548
                                        lf.setNamedColor(pg.attribute("CMYK"));
549
                                else
550
                                        lf.fromQColor(QColor(pg.attribute("RGB")));
551
                                if (pg.hasAttribute("Spot"))
552
                                        lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt()));
553
                                else
554
                                        lf.setSpotColor(false);
555
                                if (pg.hasAttribute("Register"))
556
                                        lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt()));
557
                                else
558
                                        lf.setRegistrationColor(false);
5880 jghali 559
                          m_Doc->PageColors.insert(pg.attribute("NAME"), lf);
5653 cbradney 560
                        }
561
                        if(pg.tagName()=="STYLE")
562
                        {
563
                                readParagraphStyle(vg, pg, *m_AvailableFonts, m_Doc);
5980 avox 564
                                m_Doc->docParagraphStyles.append(new ParagraphStyle(vg));
5653 cbradney 565
                        }
566
                        if(pg.tagName()=="JAVA")
567
                                m_Doc->JavaScripts[pg.attribute("NAME")] = pg.attribute("SCRIPT");
568
                        if(pg.tagName()=="LAYERS")
569
                        {
570
                                la.LNr = pg.attribute("NUMMER").toInt();
571
                                la.Level = pg.attribute("LEVEL").toInt();
572
                                la.Name = pg.attribute("NAME");
573
                                la.isViewable = pg.attribute("SICHTBAR").toInt();
574
                                la.isPrintable = pg.attribute("DRUCKEN").toInt();
575
                                la.isEditable = pg.attribute("EDIT", "1").toInt();
576
                                la.flowControl = pg.attribute("FLOW", "1").toInt();
577
                                la.transparency = pg.attribute("TRANS", "1").toDouble();
578
                                la.blendMode = pg.attribute("BLEND", "0").toInt();
579
                                la.outlineMode = pg.attribute("OUTL", "0").toInt();
580
                                if (pg.hasAttribute("LAYERC"))
581
                                        la.markerColor =  QColor(pg.attribute("LAYERC","#000000"));
582
                                else
583
                                {
584
                                        QColor marker;
585
                                        switch (la.LNr % 7)
586
                                        {
587
                                                case 0:
588
                                                        marker = Qt::black;
589
                                                        break;
590
                                                case 1:
591
                                                        marker = Qt::red;
592
                                                        break;
593
                                                case 2:
594
                                                        marker = Qt::green;
595
                                                        break;
596
                                                case 3:
597
                                                        marker = Qt::blue;
598
                                                        break;
599
                                                case 4:
600
                                                        marker = Qt::cyan;
601
                                                        break;
602
                                                case 5:
603
                                                        marker = Qt::magenta;
604
                                                        break;
605
                                                case 6:
606
                                                        marker = Qt::yellow;;
607
                                                        break;
608
                                        }
609
                                        la.markerColor = marker;
610
                                }
611
                                m_Doc->Layers.append(la);
612
                        }
613
/*                      if(pg.tagName()=="Bookmark")
614
                        {
615
                                bok.Title = pg.attribute("Title");
616
                                bok.Text = pg.attribute("Text");
617
                                bok.Aktion = pg.attribute("Aktion");
618
                                bok.ItemNr = pg.attribute("ItemNr").toInt();
619
                                bok.Seite = pg.attribute("Seite").toInt();
620
                                bok.Element = pg.attribute("Element").toInt();
621
                                bok.First = pg.attribute("First").toInt();
622
                                bok.Last = pg.attribute("Last").toInt();
623
                                bok.Prev = pg.attribute("Prev").toInt();
624
                                bok.Next = pg.attribute("Next").toInt();
625
                                bok.Parent = pg.attribute("Parent").toInt();
626
                                m_Doc->BookMarks.append(bok);
627
                        } */
628
                        if(pg.tagName()=="MultiLine")
629
                        {
630
                                multiLine ml;
631
                                QDomNode MuLn = PAGE.firstChild();
632
                                while(!MuLn.isNull())
633
                                {
634
                                        QDomElement MuL = MuLn.toElement();
635
                                        struct SingleLine sl;
636
                                        sl.Color = MuL.attribute("Color");
637
                                        sl.Dash = MuL.attribute("Dash").toInt();
638
                                        sl.LineEnd = MuL.attribute("LineEnd").toInt();
639
                                        sl.LineJoin = MuL.attribute("LineJoin").toInt();
640
                                        sl.Shade = MuL.attribute("Shade").toInt();
641
                                        sl.Width = MuL.attribute("Width").toDouble();
642
                                        ml.push_back(sl);
643
                                        MuLn = MuLn.nextSibling();
644
                                }
645
                                m_Doc->MLineStyles.insert(pg.attribute("Name"), ml);
646
                        }
647
                        if(pg.tagName()=="Arrows")
648
                        {
649
                                struct ArrowDesc arrow;
650
                                arrow.name = pg.attribute("Name");
651
                                arrow.userArrow = true;
652
                                double xa, ya;
653
                                QString tmp = pg.attribute("Points");
654
                                QTextStream fp(&tmp, IO_ReadOnly);
655
                                for (uint cx = 0; cx < pg.attribute("NumPoints").toUInt(); ++cx)
656
                                {
657
                                        fp >> xa;
658
                                        fp >> ya;
659
                                        arrow.points.addPoint(xa, ya);
660
                                }
661
                                m_Doc->arrowStyles.append(arrow);
662
                        }
663
                        if(pg.tagName()=="PDF")
664
                        {
665
                                m_Doc->PDF_Options.Articles = static_cast<bool>(pg.attribute("Articles").toInt());
666
                                m_Doc->PDF_Options.Thumbnails = static_cast<bool>(pg.attribute("Thumbnails").toInt());
667
                                m_Doc->PDF_Options.Compress = static_cast<bool>(pg.attribute("Compress").toInt());
668
                                m_Doc->PDF_Options.CompressMethod = pg.attribute("CMethod", "0").toInt();
669
                                m_Doc->PDF_Options.Quality = pg.attribute("Quality", "0").toInt();
670
                                m_Doc->PDF_Options.RecalcPic = static_cast<bool>(pg.attribute("RecalcPic").toInt());
671
                                m_Doc->PDF_Options.Bookmarks = static_cast<bool>(pg.attribute("Bookmarks").toInt());
6493 fschmid 672
                                if (pg.hasAttribute("firstUse"))
673
                                        m_Doc->PDF_Options.firstUse = static_cast<bool>(pg.attribute("firstUse").toInt());
674
                                else
675
                                        m_Doc->PDF_Options.firstUse = true;
5653 cbradney 676
                                if (pg.hasAttribute("MirrorH"))
677
                                        m_Doc->PDF_Options.MirrorH = static_cast<bool>(pg.attribute("MirrorH").toInt());
678
                                else
679
                                        m_Doc->PDF_Options.MirrorH = false;
680
                                if (pg.hasAttribute("MirrorV"))
681
                                        m_Doc->PDF_Options.MirrorV = static_cast<bool>(pg.attribute("MirrorV").toInt());
682
                                else
683
                                        m_Doc->PDF_Options.MirrorV = false;
684
                                if (pg.hasAttribute("RotateDeg"))
685
                                        m_Doc->PDF_Options.RotateDeg = pg.attribute("RotateDeg", "0").toInt();
686
                                else
687
                                        m_Doc->PDF_Options.RotateDeg = 0;
688
                                if (pg.hasAttribute("Clip"))
689
                                        m_Doc->PDF_Options.doClip = static_cast<bool>(pg.attribute("Clip").toInt());
690
                                else
691
                                        m_Doc->PDF_Options.doClip = false;
692
                                m_Doc->PDF_Options.PresentMode = static_cast<bool>(pg.attribute("PresentMode").toInt());
693
                                m_Doc->PDF_Options.PicRes = pg.attribute("PicRes").toInt();
694
                                // Fixme: check input pdf version
695
                                m_Doc->PDF_Options.Version = (PDFOptions::PDFVersion)pg.attribute("Version").toInt();
696
                                m_Doc->PDF_Options.Resolution = pg.attribute("Resolution").toInt();
697
                                m_Doc->PDF_Options.Binding = pg.attribute("Binding").toInt();
698
                                m_Doc->PDF_Options.Datei = "";
699
                                m_Doc->PDF_Options.isGrayscale = static_cast<bool>(pg.attribute("Grayscale", "0").toInt());
700
                                m_Doc->PDF_Options.UseRGB = static_cast<bool>(pg.attribute("RGBMode", "0").toInt());
701
                                m_Doc->PDF_Options.UseProfiles = static_cast<bool>(pg.attribute("UseProfiles", "0").toInt());
702
                                m_Doc->PDF_Options.UseProfiles2 = static_cast<bool>(pg.attribute("UseProfiles2", "0").toInt());
703
                                m_Doc->PDF_Options.Intent = pg.attribute("Intent", "1").toInt();
704
                                m_Doc->PDF_Options.Intent2 = pg.attribute("Intent2", "1").toInt();
705
                                m_Doc->PDF_Options.SolidProf = pg.attribute("SolidP", "");
706
                                m_Doc->PDF_Options.ImageProf = pg.attribute("ImageP", "");
707
                                m_Doc->PDF_Options.PrintProf = pg.attribute("PrintP", "");
708
                                m_Doc->PDF_Options.Info = pg.attribute("InfoString", "");
709
                                m_Doc->PDF_Options.BleedTop = pg.attribute("BTop", "0").toDouble();
710
                                m_Doc->PDF_Options.BleedLeft = pg.attribute("BLeft", "0").toDouble();
711
                                m_Doc->PDF_Options.BleedRight = pg.attribute("BRight", "0").toDouble();
712
                                m_Doc->PDF_Options.BleedBottom = pg.attribute("BBottom", "0").toDouble();
713
                                m_Doc->PDF_Options.EmbeddedI = static_cast<bool>(pg.attribute("ImagePr", "0").toInt());
714
                                m_Doc->PDF_Options.PassOwner = pg.attribute("PassOwner", "");
715
                                m_Doc->PDF_Options.PassUser = pg.attribute("PassUser", "");
716
                                m_Doc->PDF_Options.Permissions = pg.attribute("Permissions", "-4").toInt();
717
                                m_Doc->PDF_Options.Encrypt = static_cast<bool>(pg.attribute("Encrypt", "0").toInt());
718
                                m_Doc->PDF_Options.useLayers = static_cast<bool>(pg.attribute("UseLayers", "0").toInt());
719
                                m_Doc->PDF_Options.UseLPI = static_cast<bool>(pg.attribute("UseLpi", "0").toInt());
720
                                m_Doc->PDF_Options.UseSpotColors = static_cast<bool>(pg.attribute("UseSpotColors", "1").toInt());
721
                                m_Doc->PDF_Options.doOverprint = static_cast<bool>(pg.attribute("doOverprint", "0").toInt());
722
                                m_Doc->PDF_Options.doMultiFile = static_cast<bool>(pg.attribute("doMultiFile", "0").toInt());
723
                                m_Doc->PDF_Options.displayBookmarks = static_cast<bool>(pg.attribute("displayBookmarks", "0").toInt());
724
                                m_Doc->PDF_Options.displayFullscreen = static_cast<bool>(pg.attribute("displayFullscreen", "0").toInt());
725
                                m_Doc->PDF_Options.displayLayers = static_cast<bool>(pg.attribute("displayLayers", "0").toInt());
726
                                m_Doc->PDF_Options.displayThumbs = static_cast<bool>(pg.attribute("displayThumbs", "0").toInt());
727
                                m_Doc->PDF_Options.hideMenuBar = static_cast<bool>(pg.attribute("hideMenuBar", "0").toInt());
728
                                m_Doc->PDF_Options.hideToolBar = static_cast<bool>(pg.attribute("hideToolBar", "0").toInt());
729
                                m_Doc->PDF_Options.fitWindow = static_cast<bool>(pg.attribute("fitWindow", "0").toInt());
730
                                m_Doc->PDF_Options.PageLayout = pg.attribute("PageLayout", "0").toInt();
731
                                m_Doc->PDF_Options.openAction = pg.attribute("openAction", "");
732
                                QDomNode PFO = PAGE.firstChild();
733
                                while(!PFO.isNull())
734
                                {
735
                                        QDomElement pdfF = PFO.toElement();
736
                                        if(pdfF.tagName() == "LPI")
737
                                        {
738
                                                struct LPIData lpo;
739
                                                lpo.Angle = pdfF.attribute("Angle").toInt();
740
                                                lpo.Frequency = pdfF.attribute("Frequency").toInt();
741
                                                lpo.SpotFunc = pdfF.attribute("SpotFunction").toInt();
742
                                                m_Doc->PDF_Options.LPISettings[pdfF.attribute("Color")] = lpo;
743
                                        }
744
                                        if(pdfF.tagName() == "Fonts")
745
                                        {
746
                                                if (!m_Doc->PDF_Options.EmbedList.contains(pdfF.attribute("Name")))
747
                                                        m_Doc->PDF_Options.EmbedList.append(pdfF.attribute("Name"));
748
                                        }
749
                                        if(pdfF.tagName() == "Subset")
750
                                        {
751
                                                if (!m_Doc->PDF_Options.SubsetList.contains(pdfF.attribute("Name")))
752
                                                        m_Doc->PDF_Options.SubsetList.append(pdfF.attribute("Name"));
753
                                        }
754
                                        if(pdfF.tagName() == "Effekte")
755
                                        {
756
                                                struct PDFPresentationData ef;
757
                                                ef.pageEffectDuration = pdfF.attribute("pageEffectDuration").toInt();
758
                                                ef.pageViewDuration = pdfF.attribute("pageViewDuration").toInt();
759
                                                ef.effectType = pdfF.attribute("effectType").toInt();
760
                                                ef.Dm = pdfF.attribute("Dm").toInt();
761
                                                ef.M = pdfF.attribute("M").toInt();
762
                                                ef.Di = pdfF.attribute("Di").toInt();
763
                                                m_Doc->PDF_Options.PresentVals.append(ef);
764
                                        }
765
                                        PFO = PFO.nextSibling();
766
                                }
767
                        }
768
                        if(pg.tagName()=="DocItemAttributes")
769
                        {
770
                                QDomNode DIA = PAGE.firstChild();
771
                                m_Doc->docItemAttributes.clear();
772
                                while(!DIA.isNull())
773
                                {
774
                                        QDomElement itemAttr = DIA.toElement();
775
                                        if(itemAttr.tagName() == "ItemAttribute")
776
                                        {
777
                                                ObjectAttribute objattr;
778
                                                objattr.name=itemAttr.attribute("Name");
779
                                                objattr.type=itemAttr.attribute("Type");
780
                                                objattr.value=itemAttr.attribute("Value");
781
                                                objattr.parameter=itemAttr.attribute("Parameter");
782
                                                objattr.relationship=itemAttr.attribute("Relationship");
783
                                                objattr.relationshipto=itemAttr.attribute("RelationshipTo");
784
                                                objattr.autoaddto=itemAttr.attribute("AutoAddTo");
785
                                                m_Doc->docItemAttributes.append(objattr);
786
                                        }
787
                                        DIA = DIA.nextSibling();
788
                                }
789
                        }
790
                        if(pg.tagName()=="TablesOfContents")
791
                        {
792
                                QDomNode TOC = PAGE.firstChild();
793
                                m_Doc->docToCSetups.clear();
794
                                while(!TOC.isNull())
795
                                {
796
                                        QDomElement tocElem = TOC.toElement();
797
                                        if(tocElem.tagName() == "TableOfContents")
798
                                        {
799
                                                ToCSetup tocsetup;
800
                                                tocsetup.name=tocElem.attribute("Name");
801
                                                tocsetup.itemAttrName=tocElem.attribute("ItemAttributeName");
802
                                                tocsetup.frameName=tocElem.attribute("FrameName");
803
                                                tocsetup.listNonPrintingFrames=tocElem.attribute("ListNonPrinting");
804
                                                tocsetup.textStyle=tocElem.attribute("Style");
805
                                                QString numberPlacement=tocElem.attribute("NumberPlacement");
806
                                                if (numberPlacement=="Beginning")
807
                                                        tocsetup.pageLocation=Beginning;
808
                                                if (numberPlacement=="End")
809
                                                        tocsetup.pageLocation=End;
810
                                                if (numberPlacement=="NotShown")
811
                                                        tocsetup.pageLocation=NotShown;
812
                                                m_Doc->docToCSetups.append(tocsetup);
813
                                        }
814
                                        TOC = TOC.nextSibling();
815
                                }
816
                        }
817
                        if(pg.tagName()=="Sections")
818
                        {
819
                                QDomNode Section = PAGE.firstChild();
820
                                while(!Section.isNull())
821
                                {
822
                                        QDomElement sectionElem = Section.toElement();
823
                                        if(sectionElem.tagName() == "Section")
824
                                        {
825
                                                struct DocumentSection newSection;
826
                                                newSection.number=sectionElem.attribute("Number").toInt();
827
                                                newSection.name=sectionElem.attribute("Name");
828
                                                newSection.fromindex=sectionElem.attribute("From").toInt();
829
                                                newSection.toindex=sectionElem.attribute("To").toInt();
830
                                                if (sectionElem.attribute("Type")=="Type_1_2_3")
831
                                                        newSection.type=Type_1_2_3;
832
                                                if (sectionElem.attribute("Type")=="Type_i_ii_iii")
833
                                                        newSection.type=Type_i_ii_iii;
834
                                                if (sectionElem.attribute("Type")=="Type_I_II_III")
835
                                                        newSection.type=Type_I_II_III;
836
                                                if (sectionElem.attribute("Type")=="Type_a_b_c")
837
                                                        newSection.type=Type_a_b_c;
838
                                                if (sectionElem.attribute("Type")=="Type_A_B_C")
839
                                                        newSection.type=Type_A_B_C;
840
                                                newSection.sectionstartindex=sectionElem.attribute("Start").toInt();
841
                                                newSection.reversed=static_cast<bool>(sectionElem.attribute("Reversed").toInt());
842
                                                newSection.active=static_cast<bool>(sectionElem.attribute("Active").toInt());
843
                                                m_Doc->sections.insert(newSection.number, newSection);
844
                                        }
845
                                        Section = Section.nextSibling();
846
                                }
847
                        }
848
                        if ((pg.tagName()=="PAGE") || (pg.tagName()=="MASTERPAGE"))
849
                        {
850
                                a = pg.attribute("NUM").toInt();
851
                                PgNam = "";
852
                                PgNam = pg.attribute("NAM", "");
853
                                //Pgc = m_Doc->pageCount;
854
                                //AtFl = m_Doc->usesAutomaticTextFrames();
855
                                if (PgNam.isEmpty())
856
                                {
857
                                        //m_Doc->pageCount = Pgc;
858
                                        //m_Doc->Pages = &m_Doc->DocPages;
859
                                        //m_Doc->setUsesAutomaticTextFrames(AtFl);
860
                                        m_Doc->setMasterPageMode(false);
861
                                }
862
                                else
863
                                {
864
                                        //m_Doc->pageCount = 0;
865
                                        //m_Doc->setUsesAutomaticTextFrames(false);
866
                                        //m_Doc->Pages = &m_Doc->MasterPages;
867
                                        m_Doc->setMasterPageMode(true);
868
                                }
869
                                //CB: Stop calling damn GUI code in loading docs! IT doesnt *look* like
870
                                //this makes a difference apart from being faster, of course.
871
                                //ScMW->slotNewPage(a);
872
                                //Apage = m_Doc->Pages.at(a);
873
                                if (PgNam.isEmpty())
874
                                {
875
                                        Apage = m_Doc->addPage(a);
876
                                        //m_Doc->DocPages = m_Doc->Pages;
877
                                        //++m_Doc->pageCount;
878
                                }
879
                                else
880
                                {
881
                                        Apage = m_Doc->addMasterPage(a, PgNam);
882
                                        //Apage->setPageName(PgNam);
883
                                        //m_Doc->MasterNames[PgNam] = a;
884
                                        //m_Doc->MasterPages = m_Doc->Pages;
885
                                        //m_Doc->pageCount = Pgc;
886
                                }
887
                                //m_Doc->setUsesAutomaticTextFrames(AtFl);
888
                                Apage->LeftPg=pg.attribute("LEFT", "0").toInt();
889
                                QString Mus = "";
890
                                Mus = pg.attribute("MNAM","Normal");
891
                                if (!m_Doc->masterPageMode())
892
                                        Apage->MPageNam = Mus;
893
                                else
894
                                        Apage->MPageNam = "";
895
                                if (pg.hasAttribute("Size"))
5789 cbradney 896
                                        Apage->m_pageSize = pg.attribute("Size");
5653 cbradney 897
                                if (pg.hasAttribute("Orientation"))
898
                                        Apage->PageOri = pg.attribute("Orientation").toInt();
899
                                Apage->setXOffset(pg.attribute("PAGEXPOS").toDouble());
900
                                Apage->setYOffset(pg.attribute("PAGEYPOS").toDouble());
901
                                if (pg.hasAttribute("PAGEWIDTH"))
902
                                        Apage->setWidth(pg.attribute("PAGEWIDTH").toDouble());
903
                                else
904
                                        Apage->setWidth(pg.attribute("PAGEWITH").toDouble());
905
                                Apage->setHeight(pg.attribute("PAGEHEIGHT").toDouble());
906
                                Apage->setInitialHeight(Apage->height());
907
                                Apage->setInitialWidth(Apage->width());
908
                                Apage->initialMargins.Top = QMAX(0.0, pg.attribute("BORDERTOP").toDouble());
909
                                Apage->initialMargins.Bottom = QMAX(0.0, pg.attribute("BORDERBOTTOM").toDouble());
910
                                Apage->initialMargins.Left = QMAX(0.0, pg.attribute("BORDERLEFT").toDouble());
911
                                Apage->initialMargins.Right = QMAX(0.0, pg.attribute("BORDERRIGHT").toDouble());
912
                                Apage->Margins.Top = Apage->initialMargins.Top;
913
                                Apage->Margins.Bottom = Apage->initialMargins.Bottom;
914
                                m_Doc->setMasterPageMode(false);
915
                                //m_Doc->Pages=&m_Doc->DocPages;
916
                                // guides reading
917
                                tmp = "";
6027 subik 918
                                Apage->guides.setHorizontalAutoGap(pg.attribute("AGhorizontalAutoGap", "0.0").toDouble());
919
                                Apage->guides.setVerticalAutoGap(pg.attribute("AGverticalAutoGap", "0.0").toDouble());
920
                                Apage->guides.setHorizontalAutoCount(pg.attribute("AGhorizontalAutoCount", "0").toInt());
921
                                Apage->guides.setVerticalAutoCount(pg.attribute("AGverticalAutoCount", "0").toInt());
922
                                Apage->guides.setAutoRefer(pg.attribute("AGautoRefer", "0").toInt());
5653 cbradney 923
                                GuideManagerCore::readVerticalGuides(pg.attribute("VerticalGuides"),
924
                                                Apage,
925
                                                GuideManagerCore::Standard,
926
                                                pg.hasAttribute("NumVGuides"));
927
                                GuideManagerCore::readHorizontalGuides(pg.attribute("HorizontalGuides"),
928
                                                Apage,
929
                                                GuideManagerCore::Standard,
930
                                                pg.hasAttribute("NumHGuides"));
931
                        }
932
                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="MASTEROBJECT") || (pg.tagName()=="FRAMEOBJECT"))
933
                        {
934
                                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="FRAMEOBJECT"))
935
                                        {
936
                                                //m_Doc->Items = m_Doc->DocItems;
937
                                                //m_Doc->Pages = &m_Doc->DocPages;
938
                                                m_Doc->setMasterPageMode(false);
939
                                        }
940
                                        else
941
                                        {
942
                                                //m_Doc->Items = m_Doc->MasterItems;
943
                                                //m_Doc->Pages = &m_Doc->MasterPages;
944
                                                m_Doc->setMasterPageMode(true);
945
                                        }
946
                                        if ((!pg.attribute("OnMasterPage").isEmpty()) && (pg.tagName()=="MASTEROBJECT"))
947
                                                m_Doc->setCurrentPage(m_Doc->MasterPages.at(m_Doc->MasterNames[pg.attribute("OnMasterPage")]));
948
                                        if ((pg.attribute("NEXTITEM").toInt() != -1) || (static_cast<bool>(pg.attribute("AUTOTEXT").toInt())))
949
                                        {
950
                                                if (pg.attribute("BACKITEM").toInt() == -1)
951
                                                        LFrames.append(m_Doc->Items->count());
952
                                        }
953
                                        int docGc = m_Doc->GroupCounter;
954
                                        m_Doc->GroupCounter = 0;
955
                                        Neu = PasteItem(&pg, m_Doc);
956
                                        Neu->setRedrawBounding();
957
                                        if (pg.tagName()=="MASTEROBJECT")
958
                                                Neu->OwnPage = m_Doc->OnPage(Neu);
959
                                        else
960
                                                Neu->OwnPage = pg.attribute("OwnPage").toInt();
961
                                        if (pg.tagName()=="PAGEOBJECT")
962
                                                Neu->OnMasterPage = "";
963
                                        m_Doc->GroupCounter = docGc;
964
                                        tmpf = pg.attribute("IFONT", m_Doc->toolSettings.defFont);
5980 avox 965
                                        if ((!m_AvailableFonts->contains(tmpf)) || (!(*m_AvailableFonts)[tmpf].usable()))
5653 cbradney 966
                                        {
5980 avox 967
                                                if ((!prefsManager->appPrefs.GFontSub.contains(tmpf)) || (!(*m_AvailableFonts)[prefsManager->appPrefs.GFontSub[tmpf]].usable()))
5653 cbradney 968
                                                {
969
                                                        newReplacement = true;
970
                                                        ReplacedFonts.insert(tmpf, prefsManager->appPrefs.toolSettings.defFont);
971
                                                }
972
                                                else
973
                                                        ReplacedFonts.insert(tmpf, prefsManager->appPrefs.GFontSub[tmpf]);
974
                                        }
975
                                        else
976
                                        {
977
                                                if (!m_Doc->UsedFonts.contains(tmpf))
978
                                                {
979
//                                                      QFont fo = avail[tmpf]->Font;
980
//                                                      fo.setPointSize(qRound(m_Doc->toolSettings.defSize / 10.0));
981
                                                        m_Doc->AddFont(tmpf, qRound(m_Doc->toolSettings.defSize / 10.0));
982
                                                }
983
                                        }
984
                                        QDomNode IT=pg.firstChild();
985
                                        LastStyles * last = new LastStyles();
986
                                        while(!IT.isNull())
987
                                        {
988
                                                QDomElement it=IT.toElement();
989
                                                if (it.tagName()=="CSTOP")
990
                                                {
991
                                                        QString name = it.attribute("NAME");
992
                                                        double ramp = it.attribute("RAMP", "0.0").toDouble();
993
                                                        int shade = it.attribute("SHADE", "100").toInt();
994
                                                        double opa = it.attribute("TRANS", "1").toDouble();
995
                                                        Neu->fill_gradient.addStop(SetColor(m_Doc, name, shade), ramp, 0.5, opa, name, shade);
996
                                                }
997
                                                if (it.tagName()=="ITEXT")
998
                                                        GetItemText(&it, m_Doc, Neu, last);
999
 
1000
                                                //CB PageItemAttributes
1001
                                                if(it.tagName()=="PageItemAttributes")
1002
                                                {
1003
                                                        QDomNode PIA = it.firstChild();
1004
                                                        ObjAttrVector pageItemAttributes;
1005
                                                        while(!PIA.isNull())
1006
                                                        {
1007
                                                                QDomElement itemAttr = PIA.toElement();
1008
                                                                if(itemAttr.tagName() == "ItemAttribute")
1009
                                                                {
1010
                                                                        ObjectAttribute objattr;
1011
                                                                        objattr.name=itemAttr.attribute("Name");
1012
                                                                        objattr.type=itemAttr.attribute("Type");
1013
                                                                        objattr.value=itemAttr.attribute("Value");
1014
                                                                        objattr.parameter=itemAttr.attribute("Parameter");
1015
                                                                        objattr.relationship=itemAttr.attribute("Relationship");
1016
                                                                        objattr.relationshipto=itemAttr.attribute("RelationshipTo");
1017
                                                                        objattr.autoaddto=itemAttr.attribute("AutoAddTo");
1018
                                                                        pageItemAttributes.append(objattr);
1019
                                                                }
1020
                                                                PIA = PIA.nextSibling();
1021
                                                        }
1022
                                                        Neu->setObjectAttributes(&pageItemAttributes);
1023
                                                }
1024
                                                IT=IT.nextSibling();
1025
                                        }
1026
                                        delete last;
1027
                                        if (Neu->fill_gradient.Stops() == 0)
1028
                                        {
1029
                                                Neu->fill_gradient.addStop(m_Doc->PageColors[m_Doc->toolSettings.dBrush].getRGBColor(), 0.0, 0.5, 1.0, m_Doc->toolSettings.dBrush, 100);
1030
                                                Neu->fill_gradient.addStop(m_Doc->PageColors[m_Doc->toolSettings.dPen].getRGBColor(), 1.0, 0.5, 1.0, m_Doc->toolSettings.dPen, 100);
1031
                                        }
1032
//                                      Neu->Language = ScMW->GetLang(pg.attribute("LANGUAGE", m_Doc->Language));
1033
                                        Neu->isAutoText = static_cast<bool>(pg.attribute("AUTOTEXT").toInt());
1034
                                        Neu->isEmbedded = static_cast<bool>(pg.attribute("isInline", "0").toInt());
1035
                                        Neu->gXpos = pg.attribute("gXpos", "0.0").toDouble();
1036
                                        Neu->gYpos = pg.attribute("gYpos", "0.0").toDouble();
1037
                                        QString defaultVal;
1038
                                        defaultVal.setNum(Neu->width());
1039
                                        Neu->gWidth = pg.attribute("gWidth",defaultVal).toDouble();
1040
                                        defaultVal.setNum(Neu->height());
1041
                                        Neu->gHeight = pg.attribute("gHeight",defaultVal).toDouble();
1042
/*FIXME                                 if (Neu->lineSpacingMode() == 3)
1043
                                        {
1044
                                                m_Doc->docParagraphStyles[0].setUseBaselineGrid(true);
1045
                                                Neu->setLineSpacing(m_Doc->typographicSettings.valueBaseGrid-1);
1046
                                        }
1047
*/                                      if (Neu->isAutoText)
1048
                                                m_Doc->LastAuto = Neu;
1049
                                        Neu->NextIt = pg.attribute("NEXTITEM").toInt();
1050
                                        if (Neu->isTableItem)
1051
                                        {
1052
                                                TableItems.append(Neu);
1053
                                                TableID.insert(pg.attribute("OwnLINK", "0").toInt(), Neu->ItemNr);
1054
                                        }
6451 fschmid 1055
                                        Neu->isGroupControl = static_cast<bool>(pg.attribute("isGroupControl", "0").toInt());
1056
                                        if (Neu->isGroupControl)
1057
                                                groupID.insert(Neu, pg.attribute("groupsLastItem", "0").toInt()+Neu->ItemNr);
5653 cbradney 1058
                                        if (pg.tagName()=="FRAMEOBJECT")
1059
                                        {
1060
                                                m_Doc->FrameItems.append(m_Doc->Items->take(Neu->ItemNr));
1061
                                                Neu->ItemNr = m_Doc->FrameItems.count()-1;
1062
                                        }
1063
                                        /*
1064
                                        if ((pg.tagName()=="PAGEOBJECT") || (pg.tagName()=="FRAMEOBJECT"))
1065
                                        {
1066
                                                //m_Doc->DocItems = m_Doc->Items;
1067
                                                //m_Doc->DocPages = m_Doc->Pages;
1068
                                        }
1069
                                        else
1070
                                        {
1071
                                                //m_Doc->MasterItems = m_Doc->Items;
1072
                                                //m_Doc->MasterPages = m_Doc->Pages;
1073
                                        }
1074
                                        */
1075
                                        m_Doc->setMasterPageMode(false);
1076
                                        //m_Doc->Pages=&m_Doc->DocPages;
1077
                                        counter++;
1078
                                }
1079
                        PAGE=PAGE.nextSibling();
1080
                }
1081
                PAGE=DOC.firstChild();
1082
                while(!PAGE.isNull())
1083
                {
1084
                        QDomElement pg=PAGE.toElement();
1085
                        if(pg.tagName()=="Bookmark")
1086
                        {
6573 fschmid 1087
                                uint elem = pg.attribute("Element").toInt();
1088
                                if (elem < m_Doc->Items->count())
1089
                                {
1090
                                        bok.Title = pg.attribute("Title");
1091
                                        bok.Text = pg.attribute("Text");
1092
                                        bok.Aktion = pg.attribute("Aktion");
1093
                                        bok.ItemNr = pg.attribute("ItemNr").toInt();
1094
                                        bok.PageObject = m_Doc->Items->at(elem);
1095
                                        bok.First = pg.attribute("First").toInt();
1096
                                        bok.Last = pg.attribute("Last").toInt();
1097
                                        bok.Prev = pg.attribute("Prev").toInt();
1098
                                        bok.Next = pg.attribute("Next").toInt();
1099
                                        bok.Parent = pg.attribute("Parent").toInt();
1100
                                        m_Doc->BookMarks.append(bok);
1101
                                }
5653 cbradney 1102
                        }
6380 fschmid 1103
                        if(pg.tagName()=="Pattern")
1104
                        {
1105
                                ScPattern pat;
1106
                                QDomNode pa = PAGE.firstChild();
1107
                                uint ac = m_Doc->Items->count();
6381 fschmid 1108
                                bool savedAlignGrid = m_Doc->useRaster;
1109
                                bool savedAlignGuides = m_Doc->SnapGuides;
1110
                                m_Doc->useRaster = false;
1111
                                m_Doc->SnapGuides = false;
6380 fschmid 1112
                                while(!pa.isNull())
1113
                                {
1114
                                        QDomElement pite = pa.toElement();
1115
                                        m_Doc->setMasterPageMode(false);
1116
                                        if ((pite.attribute("NEXTITEM").toInt() != -1) || (static_cast<bool>(pite.attribute("AUTOTEXT").toInt())))
1117
                                        {
1118
                                                if (pite.attribute("BACKITEM").toInt() == -1)
1119
                                                        LFrames.append(m_Doc->Items->count());
1120
                                        }
1121
                                        int docGc = m_Doc->GroupCounter;
1122
                                        m_Doc->GroupCounter = 0;
1123
                                        Neu = PasteItem(&pite, m_Doc);
1124
                                        Neu->setRedrawBounding();
1125
                                        Neu->OwnPage = pite.attribute("OwnPage").toInt();
1126
                                        Neu->OnMasterPage = "";
1127
                                        m_Doc->GroupCounter = docGc;
1128
                                        tmpf = pite.attribute("IFONT", m_Doc->toolSettings.defFont);
1129
                                        if ((!m_AvailableFonts->contains(tmpf)) || (!(*m_AvailableFonts)[tmpf].usable()))
1130
                                        {
1131
                                                if ((!prefsManager->appPrefs.GFontSub.contains(tmpf)) || (!(*m_AvailableFonts)[prefsManager->appPrefs.GFontSub[tmpf]].usable()))
1132
                                                {
1133
                                                        newReplacement = true;
1134
                                                        ReplacedFonts.insert(tmpf, prefsManager->appPrefs.toolSettings.defFont);
1135
                                                }
1136
                                                else
1137
                                                        ReplacedFonts.insert(tmpf, prefsManager->appPrefs.GFontSub[tmpf]);
1138
                                        }
1139
                                        else
1140
                                        {
1141
                                                if (!m_Doc->UsedFonts.contains(tmpf))
1142
                                                        m_Doc->AddFont(tmpf, qRound(m_Doc->toolSettings.defSize / 10.0));
1143
                                        }
1144
                                        QDomNode IT=pite.firstChild();
1145
                                        LastStyles * last = new LastStyles();
1146
                                        while(!IT.isNull())
1147
                                        {
1148
                                                QDomElement it=IT.toElement();
1149
                                                if (it.tagName()=="CSTOP")
1150
                                                {
1151
                                                        QString name = it.attribute("NAME");
1152
                                                        double ramp = it.attribute("RAMP", "0.0").toDouble();
1153
                                                        int shade = it.attribute("SHADE", "100").toInt();
1154
                                                        double opa = it.attribute("TRANS", "1").toDouble();
1155
                                                        Neu->fill_gradient.addStop(SetColor(m_Doc, name, shade), ramp, 0.5, opa, name, shade);
1156
                                                }
1157
                                                if (it.tagName()=="ITEXT")
1158
                                                        GetItemText(&it, m_Doc, Neu, last);
1159
                                                if(it.tagName()=="PageItemAttributes")
1160
                                                {
1161
                                                        QDomNode PIA = it.firstChild();
1162
                                                        ObjAttrVector pageItemAttributes;
1163
                                                        while(!PIA.isNull())
1164
                                                        {
1165
                                                                QDomElement itemAttr = PIA.toElement();
1166
                                                                if(itemAttr.tagName() == "ItemAttribute")
1167
                                                                {
1168
                                                                        ObjectAttribute objattr;
1169
                                                                        objattr.name=itemAttr.attribute("Name");
1170
                                                                        objattr.type=itemAttr.attribute("Type");
1171
                                                                        objattr.value=itemAttr.attribute("Value");
1172
                                                                        objattr.parameter=itemAttr.attribute("Parameter");
1173
                                                                        objattr.relationship=itemAttr.attribute("Relationship");
1174
                                                                        objattr.relationshipto=itemAttr.attribute("RelationshipTo");
1175
                                                                        objattr.autoaddto=itemAttr.attribute("AutoAddTo");
1176
                                                                        pageItemAttributes.append(objattr);
1177
                                                                }
1178
                                                                PIA = PIA.nextSibling();
1179
                                                        }
1180
                                                        Neu->setObjectAttributes(&pageItemAttributes);
1181
                                                }
1182
                                                IT=IT.nextSibling();
1183
                                        }
1184
                                        delete last;
1185
                                        if (Neu->fill_gradient.Stops() == 0)
1186
                                        {
1187
                                                Neu->fill_gradient.addStop(m_Doc->PageColors[m_Doc->toolSettings.dBrush].getRGBColor(), 0.0, 0.5, 1.0, m_Doc->toolSettings.dBrush, 100);
1188
                                                Neu->fill_gradient.addStop(m_Doc->PageColors[m_Doc->toolSettings.dPen].getRGBColor(), 1.0, 0.5, 1.0, m_Doc->toolSettings.dPen, 100);
1189
                                        }
1190
                                        Neu->isAutoText = static_cast<bool>(pite.attribute("AUTOTEXT").toInt());
1191
                                        Neu->isEmbedded = static_cast<bool>(pite.attribute("isInline", "0").toInt());
1192
                                        Neu->gXpos = pite.attribute("gXpos", "0.0").toDouble();
1193
                                        Neu->gYpos = pite.attribute("gYpos", "0.0").toDouble();
1194
                                        QString defaultVal;
1195
                                        defaultVal.setNum(Neu->width());
1196
                                        Neu->gWidth = pite.attribute("gWidth",defaultVal).toDouble();
1197
                                        defaultVal.setNum(Neu->height());
1198
                                        Neu->gHeight = pite.attribute("gHeight",defaultVal).toDouble();
1199
                                        Neu->NextIt = pite.attribute("NEXTITEM").toInt();
1200
                                        if (Neu->isTableItem)
1201
                                        {
1202
                                                TableItems.append(Neu);
1203
                                                TableID.insert(pite.attribute("OwnLINK", "0").toInt(), Neu->ItemNr);
1204
                                        }
6451 fschmid 1205
                                        Neu->isGroupControl = static_cast<bool>(pite.attribute("isGroupControl", "0").toInt());
1206
                                        if (Neu->isGroupControl)
1207
                                                groupID.insert(Neu, pite.attribute("groupsLastItem", "0").toInt()+Neu->ItemNr);
6380 fschmid 1208
                                        pa = pa.nextSibling();
1209
                                }
6381 fschmid 1210
                                m_Doc->useRaster = savedAlignGrid;
1211
                                m_Doc->SnapGuides = savedAlignGuides;
6380 fschmid 1212
                                uint ae = m_Doc->Items->count();
1213
                                pat.setDoc(m_Doc);
1214
                                PageItem* currItem = m_Doc->Items->at(ac);
1215
                                pat.pattern = currItem->DrawObj_toImage();
1216
                                for (uint as = ac; as < ae; ++as)
1217
                                {
1218
                                        Neu = m_Doc->Items->take(ac);
1219
                                        Neu->ItemNr = pat.items.count();
1220
                                        pat.items.append(Neu);
1221
                                }
1222
                                pat.width = pg.attribute("width", "0").toDouble();
1223
                                pat.height = pg.attribute("height", "0").toDouble();
6416 fschmid 1224
                                pat.scaleX = pg.attribute("scaleX", "0").toDouble();
1225
                                pat.scaleY = pg.attribute("scaleY", "0").toDouble();
6380 fschmid 1226
                                m_Doc->docPatterns.insert(pg.attribute("Name"), pat);
1227
                        }
5653 cbradney 1228
                        PAGE=PAGE.nextSibling();
1229
                }
1230
                DOC=DOC.nextSibling();
1231
        }
1232
        if (TableItems.count() != 0)
1233
        {
1234
                for (uint ttc = 0; ttc < TableItems.count(); ++ttc)
1235
                {
1236
                        PageItem* ta = TableItems.at(ttc);
1237
                        if (ta->TopLinkID != -1)
1238
                                ta->TopLink = m_Doc->Items->at(TableID[ta->TopLinkID]);
1239
                        else
1240
                                ta->TopLink = 0;
1241
                        if (ta->LeftLinkID != -1)
1242
                                ta->LeftLink = m_Doc->Items->at(TableID[ta->LeftLinkID]);
1243
                        else
1244
                                ta->LeftLink = 0;
1245
                        if (ta->RightLinkID != -1)
1246
                                ta->RightLink = m_Doc->Items->at(TableID[ta->RightLinkID]);
1247
                        else
1248
                                ta->RightLink = 0;
1249
                        if (ta->BottomLinkID != -1)
1250
                                ta->BottomLink = m_Doc->Items->at(TableID[ta->BottomLinkID]);
1251
                        else
1252
                                ta->BottomLink = 0;
1253
                }
1254
        }
6451 fschmid 1255
        if (groupID.count() != 0)
1256
        {
1257
                QMap<PageItem*, int>::Iterator it;
1258
                for (it = groupID.begin(); it != groupID.end(); ++it)
1259
                {
1260
                        it.key()->groupsLastItem = m_Doc->Items->at(it.data());
1261
                }
1262
        }
5653 cbradney 1263
        m_Doc->setActiveLayer(layerToSetActive);
1264
        m_Doc->setMasterPageMode(false);
1265
        m_Doc->reformPages();
1266
 
1267
        if (m_Doc->Layers.count() == 0)
1268
        {
1269
                la.LNr = 0;
1270
                la.Level = 0;
1271
                la.Name = QObject::tr("Background");
1272
                la.isViewable = true;
1273
                la.isPrintable = true;
1274
                la.isEditable = true;
1275
                la.flowControl = true;
1276
                la.transparency = 1.0;
1277
                la.blendMode = 0;
1278
                la.markerColor = QColor(0, 0, 0);
1279
                la.outlineMode = false;
1280
                m_Doc->Layers.append(la);
1281
        }
1282
        if (LFrames.count() != 0)
1283
        {
1284
                PageItem *Its;
1285
                PageItem *Itn;
1286
                PageItem *Itr;
1287
                QValueList<int>::Iterator lc;
1288
                for (lc = LFrames.begin(); lc != LFrames.end(); ++lc)
1289
                {
1290
                        Its = m_Doc->Items->at((*lc));
1291
                        Itr = Its;
1292
                        Its->BackBox = 0;
1293
                        if (Its->isAutoText)
1294
                                m_Doc->FirstAuto = Its;
1295
                        while (Its->NextIt != -1)
1296
                        {
1297
                                Itn = m_Doc->Items->at(Its->NextIt);
1298
                                Its->NextBox = Itn;
1299
                                Itn->BackBox = Its;
5732 avox 1300
                                Its->itemText.append(Itn->itemText);
1301
                                Itn->itemText = Its->itemText;
5653 cbradney 1302
                                Its = Itn;
1303
                        }
1304
                        Its->NextBox = 0;
1305
                }
1306
        }
1307
        if (m_mwProgressBar!=0)
1308
                m_mwProgressBar->setProgress(DOC.childNodes().count());
1309
        return true;
1310
//      return false;
1311
}
1312
 
1313
bool Scribus134Format::saveFile(const QString & fileName, const FileFormat & /* fmt */)
1314
{
1315
        QString text, tf, tf2, tc, tc2;
1316
        QDomDocument docu("scribus");
1317
        QString st="<SCRIBUSUTF8NEW></SCRIBUSUTF8NEW>";
1318
        docu.setContent(st);
1319
        QDomElement elem=docu.documentElement();
1320
        elem.setAttribute("Version", QString(VERSION));
1321
        QDomElement dc=docu.createElement("DOCUMENT");
1322
        dc.setAttribute("ANZPAGES",m_Doc->DocPages.count());
1323
        dc.setAttribute("PAGEWIDTH",m_Doc->pageWidth);
1324
        dc.setAttribute("PAGEHEIGHT",m_Doc->pageHeight);
1325
        dc.setAttribute("BORDERLEFT",m_Doc->pageMargins.Left);
1326
        dc.setAttribute("BORDERRIGHT",m_Doc->pageMargins.Right);
1327
        dc.setAttribute("BORDERTOP",m_Doc->pageMargins.Top);
1328
        dc.setAttribute("BORDERBOTTOM",m_Doc->pageMargins.Bottom);
1329
        dc.setAttribute("ORIENTATION",m_Doc->PageOri);
5789 cbradney 1330
        dc.setAttribute("PAGESIZE",m_Doc->m_pageSize);
5653 cbradney 1331
        dc.setAttribute("FIRSTNUM",m_Doc->FirstPnum);
1332
        dc.setAttribute("BOOK", m_Doc->currentPageLayout);
1333
        if(m_Doc->usesAutomaticTextFrames())
1334
                dc.setAttribute("AUTOTEXT",1);
1335
        dc.setAttribute("AUTOSPALTEN",m_Doc->PageSp);
1336
        dc.setAttribute("ABSTSPALTEN",m_Doc->PageSpa);
1337
        dc.setAttribute("UNITS",m_Doc->unitIndex());
1338
        dc.setAttribute("DFONT",m_Doc->toolSettings.defFont);
1339
        dc.setAttribute("DSIZE",m_Doc->toolSettings.defSize / 10.0);
1340
        dc.setAttribute("DCOL",m_Doc->toolSettings.dCols);
1341
        dc.setAttribute("DGAP",m_Doc->toolSettings.dGap);
1342
        dc.setAttribute("TabFill",m_Doc->toolSettings.tabFillChar);
1343
        dc.setAttribute("TabWidth",m_Doc->toolSettings.dTabWidth);
1344
        dc.setAttribute("AUTHOR",m_Doc->documentInfo.getAuthor());
1345
        dc.setAttribute("COMMENTS",m_Doc->documentInfo.getComments());
1346
        dc.setAttribute("KEYWORDS",m_Doc->documentInfo.getKeywords());
1347
        dc.setAttribute("PUBLISHER",m_Doc->documentInfo.getPublisher());
1348
        dc.setAttribute("DOCDATE",m_Doc->documentInfo.getDate());
1349
        dc.setAttribute("DOCTYPE",m_Doc->documentInfo.getType());
1350
        dc.setAttribute("DOCFORMAT",m_Doc->documentInfo.getFormat());
1351
        dc.setAttribute("DOCIDENT",m_Doc->documentInfo.getIdent());
1352
        dc.setAttribute("DOCSOURCE",m_Doc->documentInfo.getSource());
1353
        dc.setAttribute("DOCLANGINFO",m_Doc->documentInfo.getLangInfo());
1354
        dc.setAttribute("DOCRELATION",m_Doc->documentInfo.getRelation());
1355
        dc.setAttribute("DOCCOVER",m_Doc->documentInfo.getCover());
1356
        dc.setAttribute("DOCRIGHTS",m_Doc->documentInfo.getRights());
1357
        dc.setAttribute("DOCCONTRIB",m_Doc->documentInfo.getContrib());
1358
        dc.setAttribute("TITLE",m_Doc->documentInfo.getTitle());
1359
        dc.setAttribute("VHOCH",m_Doc->typographicSettings.valueSuperScript);
1360
        dc.setAttribute("VHOCHSC",m_Doc->typographicSettings.scalingSuperScript);
1361
        dc.setAttribute("VTIEF",m_Doc->typographicSettings.valueSubScript);
1362
        dc.setAttribute("VTIEFSC",m_Doc->typographicSettings.scalingSubScript);
1363
        dc.setAttribute("VKAPIT",m_Doc->typographicSettings.valueSmallCaps);
1364
        dc.setAttribute("BASEGRID",m_Doc->typographicSettings.valueBaseGrid);
1365
        dc.setAttribute("BASEO", m_Doc->typographicSettings.offsetBaseGrid);
1366
        dc.setAttribute("AUTOL", m_Doc->typographicSettings.autoLineSpacing);
1367
        dc.setAttribute("UnderlinePos", m_Doc->typographicSettings.valueUnderlinePos);
1368
        dc.setAttribute("UnderlineWidth", m_Doc->typographicSettings.valueUnderlineWidth);
1369
        dc.setAttribute("StrikeThruPos", m_Doc->typographicSettings.valueStrikeThruPos);
1370
        dc.setAttribute("StrikeThruWidth", m_Doc->typographicSettings.valueStrikeThruWidth);
1371
        dc.setAttribute("GROUPC",m_Doc->GroupCounter);
1372
        dc.setAttribute("HCMS", static_cast<int>(m_Doc->HasCMS));
1373
        dc.setAttribute("DPSo", static_cast<int>(m_Doc->CMSSettings.SoftProofOn));
1374
        dc.setAttribute("DPSFo", static_cast<int>(m_Doc->CMSSettings.SoftProofFullOn));
1375
        dc.setAttribute("DPuse", static_cast<int>(m_Doc->CMSSettings.CMSinUse));
1376
        dc.setAttribute("DPgam", static_cast<int>(m_Doc->CMSSettings.GamutCheck));
1377
        dc.setAttribute("DPbla", static_cast<int>(m_Doc->CMSSettings.BlackPoint));
1378
        dc.setAttribute("DPMo",m_Doc->CMSSettings.DefaultMonitorProfile);
1379
        dc.setAttribute("DPPr",m_Doc->CMSSettings.DefaultPrinterProfile);
1380
        dc.setAttribute("DPIn",m_Doc->CMSSettings.DefaultImageRGBProfile);
1381
        dc.setAttribute("DPInCMYK",m_Doc->CMSSettings.DefaultImageCMYKProfile);
1382
        dc.setAttribute("DPIn2",m_Doc->CMSSettings.DefaultSolidColorRGBProfile);
1383
        dc.setAttribute("DPIn3",m_Doc->CMSSettings.DefaultSolidColorCMYKProfile);
1384
        dc.setAttribute("DISc",m_Doc->CMSSettings.DefaultIntentColors);
1385
        dc.setAttribute("DIIm",m_Doc->CMSSettings.DefaultIntentImages);
1386
        dc.setAttribute("ALAYER", m_Doc->activeLayer());
1387
        dc.setAttribute("LANGUAGE", m_Doc->Language);
1388
        dc.setAttribute("MINWORDLEN", m_Doc->MinWordLen);
1389
        dc.setAttribute("HYCOUNT", m_Doc->HyCount);
1390
        dc.setAttribute("AUTOMATIC", static_cast<int>(m_Doc->Automatic));
1391
        dc.setAttribute("AUTOCHECK", static_cast<int>(m_Doc->AutoCheck));
1392
        dc.setAttribute("GUIDELOCK", static_cast<int>(m_Doc->GuideLock));
1393
        dc.setAttribute("SnapToGuides", static_cast<int>(m_Doc->SnapGuides));
1394
        dc.setAttribute("SnapToGrid", static_cast<int>(m_Doc->useRaster));
1395
        dc.setAttribute("MINGRID", m_Doc->guidesSettings.minorGrid);
1396
        dc.setAttribute("MAJGRID", m_Doc->guidesSettings.majorGrid);
1397
        dc.setAttribute("SHOWGRID", static_cast<int>(m_Doc->guidesSettings.gridShown));
1398
        dc.setAttribute("SHOWGUIDES", static_cast<int>(m_Doc->guidesSettings.guidesShown));
1399
        dc.setAttribute("showcolborders", static_cast<int>(m_Doc->guidesSettings.colBordersShown));
1400
        dc.setAttribute("SHOWFRAME", static_cast<int>(m_Doc->guidesSettings.framesShown));
1401
        dc.setAttribute("SHOWLAYERM", static_cast<int>(m_Doc->guidesSettings.layerMarkersShown));
1402
        dc.setAttribute("SHOWMARGIN", static_cast<int>(m_Doc->guidesSettings.marginsShown));
1403
        dc.setAttribute("SHOWBASE", static_cast<int>(m_Doc->guidesSettings.baseShown));
1404
        dc.setAttribute("SHOWPICT", static_cast<int>(m_Doc->guidesSettings.showPic));
1405
        dc.setAttribute("SHOWControl", static_cast<int>(m_Doc->guidesSettings.showControls));
1406
        dc.setAttribute("SHOWLINK", static_cast<int>(m_Doc->guidesSettings.linkShown));
1407
        dc.setAttribute("rulerMode", static_cast<int>(m_Doc->guidesSettings.rulerMode));
1408
        dc.setAttribute("showrulers", static_cast<int>(m_Doc->guidesSettings.rulersShown));
1409
        dc.setAttribute("rulerXoffset", m_Doc->rulerXoffset);
1410
        dc.setAttribute("rulerYoffset", m_Doc->rulerYoffset);
1411
        dc.setAttribute("GuideRad", m_Doc->guidesSettings.guideRad);
1412
        dc.setAttribute("GRAB",m_Doc->guidesSettings.grabRad);
1413
        dc.setAttribute("POLYC", m_Doc->toolSettings.polyC);
1414
        dc.setAttribute("POLYF", m_Doc->toolSettings.polyF);
1415
        dc.setAttribute("POLYR", m_Doc->toolSettings.polyR);
1416
        dc.setAttribute("POLYFD", m_Doc->toolSettings.polyFd);
1417
        dc.setAttribute("POLYS", static_cast<int>(m_Doc->toolSettings.polyS));
1418
        dc.setAttribute("AutoSave", static_cast<int>(m_Doc->AutoSave));
1419
        dc.setAttribute("AutoSaveTime", m_Doc->AutoSaveTime);
1420
        dc.setAttribute("ScratchBottom", m_Doc->ScratchBottom);
1421
        dc.setAttribute("ScratchLeft", m_Doc->ScratchLeft);
1422
        dc.setAttribute("ScratchRight", m_Doc->ScratchRight);
1423
        dc.setAttribute("ScratchTop", m_Doc->ScratchTop);
1424
        dc.setAttribute("StartArrow", m_Doc->toolSettings.dStartArrow);
1425
        dc.setAttribute("EndArrow", m_Doc->toolSettings.dEndArrow);
1426
        dc.setAttribute("PEN",m_Doc->toolSettings.dPen);
1427
        dc.setAttribute("BRUSH",m_Doc->toolSettings.dBrush);
1428
        dc.setAttribute("PENLINE",m_Doc->toolSettings.dPenLine);
1429
        dc.setAttribute("PENTEXT",m_Doc->toolSettings.dPenText);
1430
        dc.setAttribute("StrokeText",m_Doc->toolSettings.dStrokeText);
1431
        dc.setAttribute("TextBackGround", m_Doc->toolSettings.dTextBackGround);
1432
        dc.setAttribute("TextLineColor", m_Doc->toolSettings.dTextLineColor);
1433
        dc.setAttribute("TextBackGroundShade", m_Doc->toolSettings.dTextBackGroundShade);
1434
        dc.setAttribute("TextLineShade", m_Doc->toolSettings.dTextLineShade);
1435
        dc.setAttribute("TextPenShade", m_Doc->toolSettings.dTextPenShade);
1436
        dc.setAttribute("TextStrokeShade", m_Doc->toolSettings.dTextStrokeShade);
1437
        dc.setAttribute("STIL",m_Doc->toolSettings.dLineArt);
1438
        dc.setAttribute("STILLINE",m_Doc->toolSettings.dLstyleLine);
1439
        dc.setAttribute("WIDTH",m_Doc->toolSettings.dWidth);
1440
        dc.setAttribute("WIDTHLINE",m_Doc->toolSettings.dWidthLine);
1441
        dc.setAttribute("PENSHADE",m_Doc->toolSettings.dShade2);
1442
        dc.setAttribute("LINESHADE",m_Doc->toolSettings.dShadeLine);
1443
        dc.setAttribute("BRUSHSHADE",m_Doc->toolSettings.dShade);
1444
        dc.setAttribute("MAGMIN",m_Doc->toolSettings.magMin);
1445
        dc.setAttribute("MAGMAX",m_Doc->toolSettings.magMax);
1446
        dc.setAttribute("MAGSTEP",m_Doc->toolSettings.magStep);
1447
        dc.setAttribute("CPICT",m_Doc->toolSettings.dBrushPict);
1448
        dc.setAttribute("PICTSHADE",m_Doc->toolSettings.shadePict);
1449
        dc.setAttribute("PICTSCX",m_Doc->toolSettings.scaleX);
1450
        dc.setAttribute("PICTSCY",m_Doc->toolSettings.scaleY);
1451
        dc.setAttribute("PSCALE", static_cast<int>(m_Doc->toolSettings.scaleType));
1452
        dc.setAttribute("PASPECT", static_cast<int>(m_Doc->toolSettings.aspectRatio));
1453
        dc.setAttribute("EmbeddedPath", static_cast<int>(m_Doc->toolSettings.useEmbeddedPath));
1454
        dc.setAttribute("HalfRes", m_Doc->toolSettings.lowResType);
1455
        dc.setAttribute("MINORC",m_Doc->guidesSettings.minorColor.name());
1456
        dc.setAttribute("MAJORC",m_Doc->guidesSettings.majorColor.name());
1457
        dc.setAttribute("GuideC", m_Doc->guidesSettings.guideColor.name());
1458
        dc.setAttribute("BaseC", m_Doc->guidesSettings.baseColor.name());
1459
        dc.setAttribute("GuideZ", m_Doc->guidesSettings.guideRad);
1460
        dc.setAttribute("BACKG", static_cast<int>(m_Doc->guidesSettings.before));
1461
        dc.setAttribute("PAGEC",m_Doc->papColor.name());
1462
        dc.setAttribute("MARGC",m_Doc->guidesSettings.margColor.name());
1463
        dc.setAttribute("RANDF", static_cast<int>(m_Doc->marginColored));
1464
        dc.setAttribute("currentProfile", m_Doc->curCheckProfile);
1465
        CheckerPrefsList::Iterator itcp;
1466
        CheckerPrefsList::Iterator itcpend=m_Doc->checkerProfiles.end();
1467
        for (itcp = m_Doc->checkerProfiles.begin(); itcp != itcpend; ++itcp)
1468
        {
1469
                QDomElement dc79a=docu.createElement("CheckProfile");
1470
                dc79a.setAttribute("Name",itcp.key());
1471
                dc79a.setAttribute("ignoreErrors", static_cast<int>(itcp.data().ignoreErrors));
1472
                dc79a.setAttribute("autoCheck", static_cast<int>(itcp.data().autoCheck));
1473
                dc79a.setAttribute("checkGlyphs", static_cast<int>(itcp.data().checkGlyphs));
1474
                dc79a.setAttribute("checkOrphans", static_cast<int>(itcp.data().checkOrphans));
1475
                dc79a.setAttribute("checkOverflow", static_cast<int>(itcp.data().checkOverflow));
1476
                dc79a.setAttribute("checkPictures", static_cast<int>(itcp.data().checkPictures));
1477
                dc79a.setAttribute("checkResolution", static_cast<int>(itcp.data().checkResolution));
1478
                dc79a.setAttribute("checkTransparency", static_cast<int>(itcp.data().checkTransparency));
1479
                dc79a.setAttribute("minResolution",itcp.data().minResolution);
1480
                dc79a.setAttribute("maxResolution",itcp.data().maxResolution);
1481
                dc79a.setAttribute("checkAnnotations", static_cast<int>(itcp.data().checkAnnotations));
1482
                dc79a.setAttribute("checkRasterPDF", static_cast<int>(itcp.data().checkRasterPDF));
1483
                dc79a.setAttribute("checkForGIF", static_cast<int>(itcp.data().checkForGIF));
1484
                dc.appendChild(dc79a);
1485
        }
1486
        QMap<QString,multiLine>::Iterator itMU;
1487
        for (itMU = m_Doc->MLineStyles.begin(); itMU != m_Doc->MLineStyles.end(); ++itMU)
1488
        {
1489
                QDomElement MuL=docu.createElement("MultiLine");
1490
                MuL.setAttribute("Name",itMU.key());
1491
                multiLine ml = itMU.data();
1492
                multiLine::iterator itMU2;
1493
                for (itMU2 = ml.begin(); itMU2 != ml.end(); ++itMU2)
1494
                {
1495
                        QDomElement SuL=docu.createElement("SubLine");
1496
                        SuL.setAttribute("Color", (*itMU2).Color);
1497
                        SuL.setAttribute("Shade", (*itMU2).Shade);
1498
                        SuL.setAttribute("Dash", (*itMU2).Dash);
1499
                        SuL.setAttribute("LineEnd", (*itMU2).LineEnd);
1500
                        SuL.setAttribute("LineJoin", (*itMU2).LineJoin);
1501
                        SuL.setAttribute("Width", (*itMU2).Width);
1502
                        MuL.appendChild(SuL);
1503
                }
1504
                dc.appendChild(MuL);
1505
        }
1506
        QValueList<ArrowDesc>::Iterator itar;
1507
        for (itar = m_Doc->arrowStyles.begin(); itar != m_Doc->arrowStyles.end(); ++itar)
1508
        {
1509
                if ((*itar).userArrow)
1510
                {
1511
                        QDomElement ar=docu.createElement("Arrows");
1512
                        ar.setAttribute("NumPoints", (*itar).points.size());
1513
                        QString arp = "";
1514
                        QString tmp, tmpy;
1515
                        double xa, ya;
1516
                        for (uint nxx = 0; nxx < (*itar).points.size(); ++nxx)
1517
                        {
1518
                                (*itar).points.point(nxx, &xa, &ya);
1519
                                arp += tmp.setNum(xa) + " " + tmpy.setNum(ya) + " ";
1520
                        }
1521
                        ar.setAttribute("Points", arp);
1522
                        ar.setAttribute("Name", (*itar).name);
1523
                        dc.appendChild(ar);
1524
                }
1525
        }
1526
        QMap<QString,QString>::Iterator itja;
1527
        for (itja = m_Doc->JavaScripts.begin(); itja != m_Doc->JavaScripts.end(); ++itja)
1528
        {
1529
                QDomElement jav=docu.createElement("JAVA");
1530
                jav.setAttribute("NAME",itja.key());
1531
                jav.setAttribute("SCRIPT",itja.data());
1532
                dc.appendChild(jav);
1533
        }
1534
        QValueList<ScribusDoc::BookMa>::Iterator itbm;
1535
        for (itbm = m_Doc->BookMarks.begin(); itbm != m_Doc->BookMarks.end(); ++itbm)
1536
        {
1537
                QDomElement fn=docu.createElement("Bookmark");
1538
                fn.setAttribute("Title",(*itbm).Title);
1539
                fn.setAttribute("Text",(*itbm).Text);
1540
                fn.setAttribute("Aktion",(*itbm).Aktion);
1541
                fn.setAttribute("ItemNr", (*itbm).ItemNr);
1542
                fn.setAttribute("Element", (*itbm).PageObject->ItemNr);
1543
                fn.setAttribute("First", (*itbm).First);
1544
                fn.setAttribute("Last", (*itbm).Last);
1545
                fn.setAttribute("Prev", (*itbm).Prev);
1546
                fn.setAttribute("Next", (*itbm).Next);
1547
                fn.setAttribute("Parent", (*itbm).Parent);
1548
                dc.appendChild(fn);
1549
        }
1550
        ColorList::Iterator itc;
1551
        for (itc = m_Doc->PageColors.begin(); itc != m_Doc->PageColors.end(); ++itc)
1552
        {
1553
                QDomElement co=docu.createElement("COLOR");
1554
                co.setAttribute("NAME",itc.key());
1555
                if (m_Doc->PageColors[itc.key()].getColorModel() == colorModelRGB)
1556
                        co.setAttribute("RGB",m_Doc->PageColors[itc.key()].nameRGB());
1557
                else
1558
                        co.setAttribute("CMYK",m_Doc->PageColors[itc.key()].nameCMYK());
1559
                co.setAttribute("Spot",static_cast<int>(m_Doc->PageColors[itc.key()].isSpotColor()));
1560
                co.setAttribute("Register",static_cast<int>(m_Doc->PageColors[itc.key()].isRegistrationColor()));
1561
                dc.appendChild(co);
1562
        }
1563
        if (m_Doc->docParagraphStyles.count() > 5)
1564
        {
1565
                for (uint ff = 5; ff < m_Doc->docParagraphStyles.count(); ++ff)
1566
                {
1567
                        QDomElement fo=docu.createElement("STYLE");
1568
                        fo.setAttribute("NAME",m_Doc->docParagraphStyles[ff].name());
1569
                        fo.setAttribute("ALIGN",m_Doc->docParagraphStyles[ff].alignment());
1570
                        fo.setAttribute("LINESPMode",m_Doc->docParagraphStyles[ff].lineSpacingMode());
1571
                        fo.setAttribute("LINESP",m_Doc->docParagraphStyles[ff].lineSpacing());
1572
                        fo.setAttribute("INDENT",m_Doc->docParagraphStyles[ff].leftMargin());
1573
                        fo.setAttribute("FIRST",m_Doc->docParagraphStyles[ff].firstIndent());
1574
                        fo.setAttribute("VOR",m_Doc->docParagraphStyles[ff].gapBefore());
1575
                        fo.setAttribute("NACH",m_Doc->docParagraphStyles[ff].gapAfter());
5980 avox 1576
                        fo.setAttribute("FONT",m_Doc->docParagraphStyles[ff].charStyle().font().scName());
5691 avox 1577
                        fo.setAttribute("FONTSIZE",m_Doc->docParagraphStyles[ff].charStyle().fontSize() / 10.0);
5653 cbradney 1578
                        fo.setAttribute("DROP", static_cast<int>(m_Doc->docParagraphStyles[ff].hasDropCap()));
1579
                        fo.setAttribute("DROPLIN", m_Doc->docParagraphStyles[ff].dropCapLines());
1580
                        fo.setAttribute("DROPDIST", m_Doc->docParagraphStyles[ff].dropCapOffset());
1581
                        fo.setAttribute("EFFECT", m_Doc->docParagraphStyles[ff].charStyle().effects());
1582
                        if (m_Doc->docParagraphStyles[ff].tabValues().count() != 0)
1583
                        {
1584
                                for (uint a = 0; a < m_Doc->docParagraphStyles[ff].tabValues().count(); ++a)
1585
                                {
1586
                                        QDomElement tabs = docu.createElement("Tabs");
1587
                                        tabs.setAttribute("Type", (*m_Doc->docParagraphStyles[ff].tabValues().at(a)).tabType);
1588
                                        tabs.setAttribute("Pos", (*m_Doc->docParagraphStyles[ff].tabValues().at(a)).tabPosition);
1589
                                        QString tabCh = "";
1590
                                        if (!(*m_Doc->docParagraphStyles[ff].tabValues().at(a)).tabFillChar.isNull())
1591
                                                tabCh = QString((*m_Doc->docParagraphStyles[ff].tabValues().at(a)).tabFillChar);
1592
                                        tabs.setAttribute("Fill", tabCh);
1593
                                        fo.appendChild(tabs);
1594
                                }
1595
                        }
5691 avox 1596
                        fo.setAttribute("FCOLOR",m_Doc->docParagraphStyles[ff].charStyle().fillColor());
1597
                        fo.setAttribute("FSHADE",m_Doc->docParagraphStyles[ff].charStyle().fillShade());
1598
                        fo.setAttribute("SCOLOR",m_Doc->docParagraphStyles[ff].charStyle().strokeColor());
1599
                        fo.setAttribute("SSHADE",m_Doc->docParagraphStyles[ff].charStyle().strokeShade());
5653 cbradney 1600
                        fo.setAttribute("BASE", static_cast<int>(m_Doc->docParagraphStyles[ff].useBaselineGrid()));
5691 avox 1601
                        fo.setAttribute("TXTSHX",m_Doc->docParagraphStyles[ff].charStyle().shadowXOffset() / 10.0);
1602
                        fo.setAttribute("TXTSHY",m_Doc->docParagraphStyles[ff].charStyle().shadowYOffset() / 10.0);
1603
                        fo.setAttribute("TXTOUT",m_Doc->docParagraphStyles[ff].charStyle().outlineWidth() / 10.0);
1604
                        fo.setAttribute("TXTULP",m_Doc->docParagraphStyles[ff].charStyle().underlineOffset() / 10.0);
1605
                        fo.setAttribute("TXTULW",m_Doc->docParagraphStyles[ff].charStyle().underlineWidth() / 10.0);
1606
                        fo.setAttribute("TXTSTP",m_Doc->docParagraphStyles[ff].charStyle().strikethruOffset() / 10.0);
1607
                        fo.setAttribute("TXTSTW",m_Doc->docParagraphStyles[ff].charStyle().strikethruWidth() / 10.0);
1608
                        fo.setAttribute("SCALEH",m_Doc->docParagraphStyles[ff].charStyle().scaleH() / 10.0);
1609
                        fo.setAttribute("SCALEV",m_Doc->docParagraphStyles[ff].charStyle().scaleV() / 10.0);
1610
                        fo.setAttribute("BASEO",m_Doc->docParagraphStyles[ff].charStyle().baselineOffset() / 10.0);
1611
                        fo.setAttribute("KERN",m_Doc->docParagraphStyles[ff].charStyle().tracking() / 10.0);
5653 cbradney 1612
                        dc.appendChild(fo);
1613
                }
1614
        }
1615
        uint layerCount=m_Doc->layerCount();
1616
        for (uint lay = 0; lay < layerCount; ++lay)
1617
        {
1618
                QDomElement la = docu.createElement("LAYERS");
1619
                la.setAttribute("NUMMER",m_Doc->Layers[lay].LNr);
1620
                la.setAttribute("LEVEL",m_Doc->Layers[lay].Level);
1621
                la.setAttribute("NAME",m_Doc->Layers[lay].Name);
1622
                la.setAttribute("SICHTBAR", static_cast<int>(m_Doc->Layers[lay].isViewable));
1623
                la.setAttribute("DRUCKEN", static_cast<int>(m_Doc->Layers[lay].isPrintable));
1624
                la.setAttribute("EDIT", static_cast<int>(m_Doc->Layers[lay].isEditable));
1625
                la.setAttribute("FLOW", static_cast<int>(m_Doc->Layers[lay].flowControl));
1626
                la.setAttribute("TRANS", m_Doc->Layers[lay].transparency);
1627
                la.setAttribute("BLEND", m_Doc->Layers[lay].blendMode);
1628
                la.setAttribute("OUTL", static_cast<int>(m_Doc->Layers[lay].outlineMode));
1629
                la.setAttribute("LAYERC",m_Doc->Layers[lay].markerColor.name());
1630
                dc.appendChild(la);
1631
        }
1632
        QDomElement pdf = docu.createElement("PDF");
6493 fschmid 1633
        pdf.setAttribute("firstUse", static_cast<int>(m_Doc->PDF_Options.firstUse));
5653 cbradney 1634
        pdf.setAttribute("Thumbnails", static_cast<int>(m_Doc->PDF_Options.Thumbnails));
1635
        pdf.setAttribute("Articles", static_cast<int>(m_Doc->PDF_Options.Articles));
1636
        pdf.setAttribute("Bookmarks", static_cast<int>(m_Doc->PDF_Options.Bookmarks));
1637
        pdf.setAttribute("Compress", static_cast<int>(m_Doc->PDF_Options.Compress));
1638
        pdf.setAttribute("CMethod", m_Doc->PDF_Options.CompressMethod);
1639
        pdf.setAttribute("Quality", m_Doc->PDF_Options.Quality);
1640
        pdf.setAttribute("MirrorH", static_cast<int>(m_Doc->PDF_Options.MirrorH));
1641
        pdf.setAttribute("MirrorV", static_cast<int>(m_Doc->PDF_Options.MirrorV));
1642
        pdf.setAttribute("Clip", static_cast<int>(m_Doc->PDF_Options.doClip));
1643
        pdf.setAttribute("RotateDeg", static_cast<int>(m_Doc->PDF_Options.RotateDeg));
1644
        pdf.setAttribute("PresentMode", static_cast<int>(m_Doc->PDF_Options.PresentMode));
1645
        pdf.setAttribute("RecalcPic", static_cast<int>(m_Doc->PDF_Options.RecalcPic));
1646
        pdf.setAttribute("Grayscale", static_cast<int>(m_Doc->PDF_Options.isGrayscale));
1647
        pdf.setAttribute("RGBMode", static_cast<int>(m_Doc->PDF_Options.UseRGB));
1648
        pdf.setAttribute("UseProfiles", static_cast<int>(m_Doc->PDF_Options.UseProfiles));
1649
        pdf.setAttribute("UseProfiles2", static_cast<int>(m_Doc->PDF_Options.UseProfiles2));
1650
        pdf.setAttribute("Binding", m_Doc->PDF_Options.Binding);
1651
        pdf.setAttribute("PicRes", m_Doc->PDF_Options.PicRes);
1652
        pdf.setAttribute("Resolution", m_Doc->PDF_Options.Resolution);
1653
        pdf.setAttribute("Version", m_Doc->PDF_Options.Version);
1654
        pdf.setAttribute("Intent", m_Doc->PDF_Options.Intent);
1655
        pdf.setAttribute("Intent2", m_Doc->PDF_Options.Intent2);
1656
        pdf.setAttribute("SolidP", m_Doc->PDF_Options.SolidProf);
1657
        pdf.setAttribute("ImageP", m_Doc->PDF_Options.ImageProf);
1658
        pdf.setAttribute("PrintP", m_Doc->PDF_Options.PrintProf);
1659
        pdf.setAttribute("InfoString", m_Doc->PDF_Options.Info);
1660
        pdf.setAttribute("BTop", m_Doc->PDF_Options.BleedTop);
1661
        pdf.setAttribute("BLeft", m_Doc->PDF_Options.BleedLeft);
1662
        pdf.setAttribute("BRight", m_Doc->PDF_Options.BleedRight);
1663
        pdf.setAttribute("BBottom", m_Doc->PDF_Options.BleedBottom);
1664
        pdf.setAttribute("ImagePr", static_cast<int>(m_Doc->PDF_Options.EmbeddedI));
1665
        pdf.setAttribute("PassOwner", m_Doc->PDF_Options.PassOwner);
1666
        pdf.setAttribute("PassUser", m_Doc->PDF_Options.PassUser);
1667
        pdf.setAttribute("Permissions", m_Doc->PDF_Options.Permissions);
1668
        pdf.setAttribute("Encrypt", static_cast<int>(m_Doc->PDF_Options.Encrypt));
1669
        pdf.setAttribute("UseLayers", static_cast<int>(m_Doc->PDF_Options.useLayers));
1670
        pdf.setAttribute("UseLpi", static_cast<int>(m_Doc->PDF_Options.UseLPI));
1671
        pdf.setAttribute("UseSpotColors", static_cast<int>(m_Doc->PDF_Options.UseSpotColors));
1672
        pdf.setAttribute("doOverprint", static_cast<int>(m_Doc->PDF_Options.doOverprint));
1673
        pdf.setAttribute("doMultiFile", static_cast<int>(m_Doc->PDF_Options.doMultiFile));
1674
        pdf.setAttribute("displayBookmarks", static_cast<int>(m_Doc->PDF_Options.displayBookmarks));
1675
        pdf.setAttribute("displayFullscreen", static_cast<int>(m_Doc->PDF_Options.displayFullscreen));
1676
        pdf.setAttribute("displayLayers", static_cast<int>(m_Doc->PDF_Options.displayLayers));
1677
        pdf.setAttribute("displayThumbs", static_cast<int>(m_Doc->PDF_Options.displayThumbs));
1678
        pdf.setAttribute("hideMenuBar", static_cast<int>(m_Doc->PDF_Options.hideMenuBar));
1679
        pdf.setAttribute("hideToolBar", static_cast<int>(m_Doc->PDF_Options.hideToolBar));
1680
        pdf.setAttribute("fitWindow", static_cast<int>(m_Doc->PDF_Options.fitWindow));
1681
        pdf.setAttribute("PageLayout", m_Doc->PDF_Options.PageLayout);
1682
        pdf.setAttribute("openAction", m_Doc->PDF_Options.openAction);
1683
        for (uint pdoF = 0; pdoF < m_Doc->PDF_Options.EmbedList.count(); ++pdoF)
1684
        {
1685
                QDomElement pdf2 = docu.createElement("Fonts");
1686
                pdf2.setAttribute("Name", m_Doc->PDF_Options.EmbedList[pdoF]);
1687
                pdf.appendChild(pdf2);
1688
        }
1689
        for (uint pdoS = 0; pdoS < m_Doc->PDF_Options.SubsetList.count(); ++pdoS)
1690
        {
1691
                QDomElement pdf4 = docu.createElement("Subset");
1692
                pdf4.setAttribute("Name", m_Doc->PDF_Options.SubsetList[pdoS]);
1693
                pdf.appendChild(pdf4);
1694
        }
1695
        for (uint pdoE = 0; pdoE < m_Doc->PDF_Options.PresentVals.count(); ++pdoE)
1696
        {
1697
                QDomElement pdf3 = docu.createElement("Effekte");
1698
                pdf3.setAttribute("pageEffectDuration", m_Doc->PDF_Options.PresentVals[pdoE].pageEffectDuration);
1699
                pdf3.setAttribute("pageViewDuration", m_Doc->PDF_Options.PresentVals[pdoE].pageViewDuration);
1700
                pdf3.setAttribute("effectType", m_Doc->PDF_Options.PresentVals[pdoE].effectType);
1701
                pdf3.setAttribute("Dm", m_Doc->PDF_Options.PresentVals[pdoE].Dm);
1702
                pdf3.setAttribute("M", m_Doc->PDF_Options.PresentVals[pdoE].M);
1703
                pdf3.setAttribute("Di", m_Doc->PDF_Options.PresentVals[pdoE].Di);
1704
                pdf.appendChild(pdf3);
1705
        }
1706
        QMap<QString,LPIData>::Iterator itlp;
1707
        for (itlp = m_Doc->PDF_Options.LPISettings.begin(); itlp != m_Doc->PDF_Options.LPISettings.end(); ++itlp)
1708
        {
1709
                QDomElement pdf4 = docu.createElement("LPI");
1710
                pdf4.setAttribute("Color", itlp.key());
1711
                pdf4.setAttribute("Frequency", itlp.data().Frequency);
1712
                pdf4.setAttribute("Angle", itlp.data().Angle);
1713
                pdf4.setAttribute("SpotFunction", itlp.data().SpotFunc);
1714
                pdf.appendChild(pdf4);
1715
        }
1716
        dc.appendChild(pdf);
1717
        QDomElement docItemAttrs = docu.createElement("DocItemAttributes");
1718
        for(ObjAttrVector::Iterator objAttrIt = m_Doc->docItemAttributes.begin() ; objAttrIt != m_Doc->docItemAttributes.end(); ++objAttrIt )
1719
        {
1720
                QDomElement itemAttr = docu.createElement("ItemAttribute");
1721
                itemAttr.setAttribute("Name", (*objAttrIt).name);
1722
                itemAttr.setAttribute("Type", (*objAttrIt).type);
1723
                itemAttr.setAttribute("Value", (*objAttrIt).value);
1724
                itemAttr.setAttribute("Parameter", (*objAttrIt).parameter);
1725
                itemAttr.setAttribute("Relationship", (*objAttrIt).relationship);
1726
                itemAttr.setAttribute("RelationshipTo", (*objAttrIt).relationshipto);
1727
                itemAttr.setAttribute("AutoAddTo", (*objAttrIt).autoaddto);
1728
                docItemAttrs.appendChild(itemAttr);
1729
        }
1730
        dc.appendChild(docItemAttrs);
1731
        QDomElement tocElem = docu.createElement("TablesOfContents");
1732
        for(ToCSetupVector::Iterator tocSetupIt = m_Doc->docToCSetups.begin() ; tocSetupIt != m_Doc->docToCSetups.end(); ++tocSetupIt )
1733
        {
1734
                QDomElement tocsetup = docu.createElement("TableOfContents");
1735
                tocsetup.setAttribute("Name", (*tocSetupIt).name);
1736
                tocsetup.setAttribute("ItemAttributeName", (*tocSetupIt).itemAttrName);
1737
                tocsetup.setAttribute("FrameName", (*tocSetupIt).frameName);
1738
                tocsetup.setAttribute("ListNonPrinting", (*tocSetupIt).listNonPrintingFrames);
1739
                tocsetup.setAttribute("Style", (*tocSetupIt).textStyle);
1740
                switch ((*tocSetupIt).pageLocation)
1741
                {
1742
                        case Beginning:
1743
                                tocsetup.setAttribute("NumberPlacement", "Beginning");
1744
                                break;
1745
                        case End:
1746
                                tocsetup.setAttribute("NumberPlacement", "End");
1747
                                break;
1748
                        case NotShown:
1749
                                tocsetup.setAttribute("NumberPlacement", "NotShown");
1750
                                break;
1751
                }
1752
                tocElem.appendChild(tocsetup);
1753
        }
1754
        dc.appendChild(tocElem);
1755
        QDomElement sectionElem = docu.createElement("Sections");
1756
        for(DocumentSectionMap::Iterator it = m_Doc->sections.begin() ; it != m_Doc->sections.end(); ++it )
1757
        {
1758
                QDomElement currsection = docu.createElement("Section");
1759
                currsection.setAttribute("Number", (*it).number);
1760
                currsection.setAttribute("Name", (*it).name);
1761
                currsection.setAttribute("From", (*it).fromindex);
1762
                currsection.setAttribute("To", (*it).toindex);
1763
                switch ((*it).type)
1764
                {
1765
                        case Type_1_2_3:
1766
                                currsection.setAttribute("Type", "Type_1_2_3");
1767
                                break;
1768
                        case Type_i_ii_iii:
1769
                                currsection.setAttribute("Type", "Type_i_ii_iii");
1770
                                break;
1771
                        case Type_I_II_III