Subversion Repositories Scribus

Rev

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