Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
13761 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
 
14448 cbradney 8
#include "ui/prefs_pdfexport.h"
14451 cbradney 9
#include "ui/createrange.h"
14448 cbradney 10
#include "prefsstructs.h"
13761 cbradney 11
 
14451 cbradney 12
#include "scribuscore.h"
13
#include "scribusdoc.h"
14
#include "ui/scrspinbox.h"
15
#include "units.h"
16
#include "util_icon.h"
17
 
13761 cbradney 18
Prefs_PDFExport::Prefs_PDFExport(QWidget* parent)
14451 cbradney 19
        : Prefs_Pane(parent),
20
        cmsEnabled(false),
21
        m_doc(NULL)
13761 cbradney 22
{
23
        setupUi(this);
14451 cbradney 24
        pageMirrorHorizontalToolButton->setIcon(QIcon(loadIcon("16/flip-object-horizontal.png")));
25
        pageMirrorVerticalToolButton->setIcon(QIcon(loadIcon("16/flip-object-vertical.png")));
26
        unitChange(0);
27
        languageChange();
13761 cbradney 28
 
14451 cbradney 29
        connect(exportChosenPagesRadioButton, SIGNAL(toggled(bool)), this, SLOT(enableRangeControls(bool)));
30
        connect(exportRangeMorePushButton, SIGNAL(clicked()), this, SLOT(createPageNumberRange()));
14736 cbradney 31
        connect(maxResolutionLimitCheckBox, SIGNAL(clicked()), this, SLOT(setMaximumResolution()));
14451 cbradney 32
//      connect(MirrorH, SIGNAL(clicked()), this, SLOT(PDFMirror()));
33
//      connect(MirrorV, SIGNAL(clicked()), this, SLOT(PDFMirror()));
34
//      connect(RotateDeg, SIGNAL(activated(int)), this, SLOT(Rotation(int)));
14736 cbradney 35
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
36
        connect(useSolidColorProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePG()));
37
        connect(useImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI()));
38
        connect(doNotUseEmbeddedImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI2()));
39
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
14451 cbradney 40
        connect(useEncryptionCheckBox, SIGNAL(clicked(bool)), this, SLOT(enableSecurityControls(bool)));
13761 cbradney 41
}
42
 
43
Prefs_PDFExport::~Prefs_PDFExport()
44
{
45
}
46
 
14451 cbradney 47
 
48
void Prefs_PDFExport::unitChange(int unitIndex)
49
{
50
        double unitRatio = unitGetRatioFromIndex(unitIndex);
51
        registrationMarkOffsetSpinBox->setNewUnit(unitIndex);
52
        registrationMarkOffsetSpinBox->setMinimum(0);
53
        registrationMarkOffsetSpinBox->setMaximum(3000 * unitRatio);
54
}
55
 
14448 cbradney 56
void Prefs_PDFExport::languageChange()
57
{
14451 cbradney 58
        int i=0;
59
        i = rotationComboBox->currentIndex();
60
        rotationComboBox->clear();
61
        rotationComboBox->addItem(QString::fromUtf8("0 °"));
62
        rotationComboBox->addItem(QString::fromUtf8("90 °"));
63
        rotationComboBox->addItem(QString::fromUtf8("180 °"));
64
        rotationComboBox->addItem(QString::fromUtf8("270 °"));
65
        rotationComboBox->setCurrentIndex(i);
66
 
67
        i = imageCompressionMethodComboBox->currentIndex();
68
        imageCompressionMethodComboBox->clear();
69
        imageCompressionMethodComboBox->addItem( tr( "Automatic" ) );
70
        imageCompressionMethodComboBox->addItem( tr( "Lossy - JPEG" ) );
71
        imageCompressionMethodComboBox->addItem( tr( "Lossless - Zip" ) );
72
        imageCompressionMethodComboBox->addItem( tr( "None" ) );
73
        imageCompressionMethodComboBox->setCurrentIndex(i);
74
 
75
        i = imageCompressionQualityComboBox->currentIndex();
76
        imageCompressionQualityComboBox->clear();
77
        imageCompressionQualityComboBox->addItem( tr( "Maximum" ) );
78
        imageCompressionQualityComboBox->addItem( tr( "High" ) );
79
        imageCompressionQualityComboBox->addItem( tr( "Medium" ) );
80
        imageCompressionQualityComboBox->addItem( tr( "Low" ) );
81
        imageCompressionQualityComboBox->addItem( tr( "Minimum" ) );
82
        imageCompressionQualityComboBox->setCurrentIndex(i);
83
 
84
        i = pdfVersionComboBox->currentIndex();
85
        pdfVersionComboBox->clear();
86
        pdfVersionComboBox->addItem("PDF 1.3 (Acrobat 4)");
87
        pdfVersionComboBox->addItem("PDF 1.4 (Acrobat 5)");
88
        pdfVersionComboBox->addItem("PDF 1.5 (Acrobat 6)");
14729 cbradney 89
        //if (cmsEnabled)// && (!PDFXProfiles.isEmpty()))
14451 cbradney 90
        {
91
                pdfVersionComboBox->addItem("PDF/X-1a");
92
                pdfVersionComboBox->addItem("PDF/X-3");
93
                pdfVersionComboBox->addItem("PDF/X-4");
94
        }
95
        pdfVersionComboBox->setCurrentIndex(i);
96
 
97
        i = pageBindingComboBox->currentIndex();
98
        pageBindingComboBox->clear();
99
        pageBindingComboBox->addItem( tr("Left Margin"));
100
        pageBindingComboBox->addItem( tr("Right Margin"));
101
        pageBindingComboBox->setCurrentIndex(i);
102
 
14736 cbradney 103
        i = outputIntentionComboBox->currentIndex();
104
        outputIntentionComboBox->clear();
105
        outputIntentionComboBox->addItem( tr( "Screen / Web" ) );
106
        outputIntentionComboBox->addItem( tr( "Printer" ) );
107
        outputIntentionComboBox->addItem( tr( "Grayscale" ) );
108
        outputIntentionComboBox->setCurrentIndex(i);
14451 cbradney 109
 
14736 cbradney 110
        i = customRenderingSpotFunctionComboBox->currentIndex();
111
        customRenderingSpotFunctionComboBox->clear();
112
        customRenderingSpotFunctionComboBox->addItem( tr( "Simple Dot" ) );
113
        customRenderingSpotFunctionComboBox->addItem( tr( "Line" ) );
114
        customRenderingSpotFunctionComboBox->addItem( tr( "Round" ) );
115
        customRenderingSpotFunctionComboBox->addItem( tr( "Ellipse" ) );
116
        customRenderingSpotFunctionComboBox->setCurrentIndex(i);
14451 cbradney 117
 
14736 cbradney 118
        i = solidColorRenderingIntentComboBox->currentIndex();
119
        int j=imageRenderingIntentComboBox->currentIndex();
120
        solidColorRenderingIntentComboBox->clear();
121
        imageRenderingIntentComboBox->clear();
122
        QString tmp_ip[] = { tr("Perceptual"), tr("Relative Colorimetric"), tr("Saturation"), tr("Absolute Colorimetric")};
123
        size_t ar_ip = sizeof(tmp_ip) / sizeof(*tmp_ip);
124
        for (uint a = 0; a < ar_ip; ++a)
125
                solidColorRenderingIntentComboBox->addItem(tmp_ip[a]);
126
        for (uint a = 0; a < ar_ip; ++a)
127
                imageRenderingIntentComboBox->addItem(tmp_ip[a]);
128
        solidColorRenderingIntentComboBox->setCurrentIndex(i);
129
        imageRenderingIntentComboBox->setCurrentIndex(j);
14448 cbradney 130
}
131
 
132
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData)
133
{
14737 cbradney 134
}
135
 
136
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData, ScribusDoc* doc, const ProfilesL & PDFXProfiles,
137
                                                                          const QMap<QString, int> & DocFonts)
138
{
139
        m_doc=doc;
14451 cbradney 140
        int unitIndex = prefsData->docSetupPrefs.docUnitIndex;
141
        double unitRatio = unitGetRatioFromIndex(unitIndex);
142
        unitChange(unitIndex);
14736 cbradney 143
        Opts=prefsData->pdfPrefs;
144
        defaultSolidColorRGBProfile=prefsData->colorPrefs.DCMSset.DefaultSolidColorRGBProfile;
14737 cbradney 145
        defaultPrinterProfile=prefsData->colorPrefs.DCMSset.DefaultPrinterProfile;
14451 cbradney 146
        exportAllPagesRadioButton->setChecked(true);
147
        enableRangeControls(false);
148
        rotationComboBox->setCurrentIndex(prefsData->pdfPrefs.RotateDeg / 90);
149
        pageMirrorHorizontalToolButton->setChecked(prefsData->pdfPrefs.MirrorH);
150
        pageMirrorVerticalToolButton->setChecked(prefsData->pdfPrefs.MirrorV);
151
        clipToPrinterMarginsCheckBox->setChecked(prefsData->pdfPrefs.doClip);
152
        bool cmsUse = m_doc ? (ScCore->haveCMS() && m_doc->HasCMS) : false;
153
        int newCMSIndex=0;
154
        if (cmsUse)
155
        {
156
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X1a)
157
                        newCMSIndex=3;
158
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X3)
159
                        newCMSIndex=4;
160
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4)
161
                        newCMSIndex=5;
162
        }
163
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_13)
164
                newCMSIndex=0;
165
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_14)
166
                newCMSIndex=1;
167
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15)
168
                newCMSIndex=2;
169
        pdfVersionComboBox->setCurrentIndex(newCMSIndex);
170
        pageBindingComboBox->setCurrentIndex(prefsData->pdfPrefs.Binding);
171
        generateThumbnailsCheckBox->setChecked(prefsData->pdfPrefs.Thumbnails);
172
        saveLinkedTextFramesAsArticlesCheckBox->setChecked(prefsData->pdfPrefs.Articles);
173
        includeBookmarksCheckBox->setChecked(prefsData->pdfPrefs.Bookmarks);
174
        includeLayersCheckBox->setChecked(prefsData->pdfPrefs.useLayers);
175
        includeLayersCheckBox->setEnabled(prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15 || prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4);
176
 
177
        epsExportResolutionSpinBox->setValue(prefsData->pdfPrefs.Resolution);
178
        embedPDFAndEPSFiles->setChecked(prefsData->pdfPrefs.embedPDF);
179
        compressTextAndVectorGraphicsCheckBox->setChecked( prefsData->pdfPrefs.Compress );
180
        imageCompressionMethodComboBox->setCurrentIndex(prefsData->pdfPrefs.CompressMethod);
181
        imageCompressionQualityComboBox->setCurrentIndex(prefsData->pdfPrefs.Quality);
182
        maxResolutionLimitCheckBox->setChecked(prefsData->pdfPrefs.RecalcPic);
183
        maxExportResolutionSpinBox->setValue(prefsData->pdfPrefs.PicRes);
184
        maxExportResolutionSpinBox->setEnabled(prefsData->pdfPrefs.RecalcPic);
14737 cbradney 185
        /*
186
if (mdoc != 0 && exporting)
187
        {
188
//      Build a list of all Fonts used in Annotations;
189
                PageItem *pgit;
190
                for (int c = 0; c < doc->FrameItems.count(); ++c)
191
                {
192
                        pgit = doc->FrameItems.at(c);
193
                        if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
194
                                AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
195
                }
196
                for (int c = 0; c < doc->MasterItems.count(); ++c)
197
                {
198
                        pgit = doc->MasterItems.at(c);
199
                        if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
200
                                AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
201
                }
202
                for (int c = 0; c < doc->DocItems.count(); ++c)
203
                {
204
                        pgit = doc->DocItems.at(c);
205
                        if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
206
                                AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
207
                }
208
                QMap<QString,int>::const_iterator it;
209
                AvailFlist->clear();
210
                for (it = DocFonts.constBegin(); it != DocFonts.constEnd(); ++it)
211
                {
212
                        if (AllFonts[it.key()].isReplacement())
213
                                new QListWidgetItem( QIcon(loadIcon("font_subst16.png")), it.key(), AvailFlist );
214
                        else if (AllFonts[it.key()].type() == ScFace::TYPE1)
215
                                new QListWidgetItem( QIcon(loadIcon("font_type1_16.png")), it.key(), AvailFlist );
216
                        else if (AllFonts[it.key()].type() == ScFace::TTF)
217
                                new QListWidgetItem( QIcon(loadIcon("font_truetype16.png")), it.key(), AvailFlist );
218
                        else if (AllFonts[it.key()].type() == ScFace::OTF)
219
                                new QListWidgetItem( QIcon(loadIcon("font_otf16.png")), it.key(), AvailFlist );
220
                }
221
                ToEmbed->setEnabled(false);
222
                FromEmbed->setEnabled(false);
223
                ToOutline->setEnabled(false);
224
                FromOutline->setEnabled(false);
225
                if ((Opts.EmbedList.count() == 0) && (Opts.SubsetList.count() == 0) && (Opts.firstUse))
226
                        EmbedAll();
227
                else
228
                {
229
                        EmbedList->clear();
230
                        FontsToEmbed.clear();
231
                        for (int fe = 0; fe < Opts.EmbedList.count(); ++fe)
232
                        {
233
                                EmbedList->addItem(Opts.EmbedList[fe]);
234
                                FontsToEmbed.append(Opts.EmbedList[fe]);
235
                        }
236
                        if (Opts.SubsetList.count() != 0)
237
                        {
238
                                OutlineList->clear();
239
                                FontsToOutline.clear();
240
                                for (int fe = 0; fe < Opts.SubsetList.count(); ++fe)
241
                                {
242
                                        OutlineList->addItem(Opts.SubsetList[fe]);
243
                                        FontsToOutline.append(Opts.SubsetList[fe]);
244
                                }
245
                        }
246
                        QMap<QString, QString>::Iterator itAnn;
247
                        for (itAnn = AnnotationFonts.begin(); itAnn != AnnotationFonts.end(); ++itAnn)
248
                        {
249
                                if (FontsToEmbed.contains(itAnn.key()) == 0)
250
                                {
251
                                        EmbedList->addItem(itAnn.key());
252
                                        EmbedList->item(EmbedList->count()-1)->setFlags(Qt::ItemIsEnabled);
253
                                        FontsToEmbed.append(itAnn.key());
254
                                }
255
                                if (FontsToOutline.contains(itAnn.key()) != 0)
256
                                {
257
                                        FontsToOutline.removeAll(itAnn.key());
258
                                        QList<QListWidgetItem *> itR = OutlineList->findItems(itAnn.key(), Qt::MatchExactly);
259
                                        delete OutlineList->takeItem(OutlineList->row(itR.at(0)));
260
                                }
261
                        }
262
                }
263
                CheckBox10->setChecked(Opts.PresentMode);
264
                PagePrev->setChecked(false);
265
                Pages->clear();
266
                QString tmp;
267
                struct PDFPresentationData ef;
268
                if (EffVal.count() != 0)
269
                {
270
                        for (int pg2 = 0; pg2 < doc->Pages->count(); ++pg2)
271
                        {
272
                                Pages->addItem( tr("Page")+" "+tmp.setNum(pg2+1));
273
                                if (EffVal.count()-1 < pg2)
274
                                {
275
                                        ef.pageEffectDuration = 1;
276
                                        ef.pageViewDuration = 1;
277
                                        ef.effectType = 0;
278
                                        ef.Dm = 0;
279
                                        ef.M = 0;
280
                                        ef.Di = 0;
281
                                        EffVal.append(ef);
282
                                }
283
                        }
284
                }
285
                else
286
                {
287
                        for (int pg = 0; pg < doc->Pages->count(); ++pg)
288
                        {
289
                                Pages->addItem( tr("Page")+" "+tmp.setNum(pg+1));
290
                                ef.pageEffectDuration = 1;
291
                                ef.pageViewDuration = 1;
292
                                ef.effectType = 0;
293
                                ef.Dm = 0;
294
                                ef.M = 0;
295
                                ef.Di = 0;
296
                                EffVal.append(ef);
297
                        }
298
                }
299
                PageTime->setValue(EffVal[0].pageViewDuration);
300
                EffectTime->setValue(EffVal[0].pageEffectDuration);
301
                bool df = true;
302
                if ((Opts.displayBookmarks) || (Opts.displayFullscreen) || (Opts.displayLayers) || (Opts.displayThumbs))
303
                        df = false;
304
                if (df)
305
                        useViewDefault->setChecked(df);
306
                useFullScreen->setChecked(Opts.displayFullscreen);
307
                useBookmarks->setChecked(Opts.displayBookmarks);
308
                useThumbnails->setChecked(Opts.displayThumbs);
309
                useLayers2->setChecked(Opts.displayLayers);
310
                hideToolBar->setChecked(Opts.hideToolBar);
311
                hideMenuBar->setChecked(Opts.hideMenuBar);
312
                fitWindow->setChecked(Opts.fitWindow);
313
                QMap<QString,QString>::Iterator itja;
314
                actionCombo->clear();
315
                actionCombo->addItem( tr("No Script"));
316
                for (itja = doc->JavaScripts.begin(); itja != doc->JavaScripts.end(); ++itja)
317
                        actionCombo->addItem(itja.key());
318
                if (doc->JavaScripts.contains(Opts.openAction))
319
                        setCurrentComboItem(actionCombo, Opts.openAction);
320
                if (Opts.PageLayout == PDFOptions::SinglePage)
321
                        singlePage->setChecked(true);
322
                else if (Opts.PageLayout == PDFOptions::OneColumn)
323
                        continuousPages->setChecked(true);
324
                else if (Opts.PageLayout == PDFOptions::TwoColumnLeft)
325
                        doublePageLeft->setChecked(true);
326
                else if (Opts.PageLayout == PDFOptions::TwoColumnRight)
327
                        doublePageRight->setChecked(true);
328
                if ((Opts.Version == PDFOptions::PDFVersion_15) || (Opts.Version == PDFOptions::PDFVersion_X4))
329
                        useLayers2->setEnabled(true);
330
                else
331
                        useLayers2->setEnabled(false);
332
        }
333
        */
14451 cbradney 334
        useEncryptionCheckBox->setChecked( prefsData->pdfPrefs.Encrypt );
335
        passwordOwnerLineEdit->setText(prefsData->pdfPrefs.PassOwner);
336
        passwordUserLineEdit->setText(prefsData->pdfPrefs.PassUser);
337
        allowPrintingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 4 );
338
        allowChangingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 8 );
339
        allowCopyingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 16 );
340
        allowAnnotatingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 32 );
341
        enableSecurityControls(prefsData->pdfPrefs.Encrypt);
342
 
343
        if (prefsData->pdfPrefs.UseRGB)
14736 cbradney 344
                outputIntentionComboBox->setCurrentIndex(0);
14451 cbradney 345
        else
346
        {
347
                if (prefsData->pdfPrefs.isGrayscale)
14736 cbradney 348
                        outputIntentionComboBox->setCurrentIndex(2);
14451 cbradney 349
                else
14736 cbradney 350
                        outputIntentionComboBox->setCurrentIndex(1);
14451 cbradney 351
        }
352
        convertSpotsToProcessCheckBox->setChecked(!prefsData->pdfPrefs.UseSpotColors);
353
 
354
        bleedsWidget->setup(prefsData->pdfPrefs.bleeds, prefsData->docSetupPrefs.pagePositioning, prefsData->docSetupPrefs.docUnitIndex, false, false);
355
        bleedsWidget->setPageWidth(prefsData->docSetupPrefs.pageWidth);
356
        bleedsWidget->setPageHeight(prefsData->docSetupPrefs.pageHeight);
357
        bleedsWidget->setPageSize(prefsData->docSetupPrefs.pageSize);
358
        bleedsWidget->setMarginPreset(prefsData->docSetupPrefs.marginPreset);
14737 cbradney 359
//
360
        useCustomRenderingCheckBox->setChecked(prefsData->pdfPrefs.UseLPI);
361
        QMap<QString,LPIData>::Iterator itlp;
362
        customRenderingColorComboBox->clear();
363
        for (itlp = prefsData->pdfPrefs.LPISettings.begin(); itlp != prefsData->pdfPrefs.LPISettings.end(); ++itlp)
364
                customRenderingColorComboBox->addItem( itlp.key() );
365
        customRenderingColorComboBox->setCurrentIndex(0);
14451 cbradney 366
 
14737 cbradney 367
        customRenderingFrequencySpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Frequency);
368
        customRenderingAngleSpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Angle);
369
        customRenderingSpotFunctionComboBox->setCurrentIndex(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].SpotFunc);
370
        useSolidColorProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles);
371
        useImageProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles2);
372
        doNotUseEmbeddedImageProfileCheckBox->setChecked(prefsData->pdfPrefs.EmbeddedI);
373
        if ((prefsData->pdfPrefs.UseRGB) || (prefsData->pdfPrefs.isGrayscale))
374
        {
375
                enableSolidsImagesWidgets(false);
376
                enableProfiles(0);
377
        }
378
        else
379
                enableProfiles(1);
380
        enablePG();
381
        enablePGI();
382
        QString tp(prefsData->pdfPrefs.SolidProf);
383
        if (!ScCore->InputProfiles.contains(tp))
384
        {
385
/*              if (m_doc != 0 && exporting)
386
                        tp = m_doc->CMSSettings.DefaultSolidColorRGBProfile;
387
                else*/
388
                        tp = defaultSolidColorRGBProfile;
389
        }
390
        ProfilesL::Iterator itp;
391
        ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
392
        solidColorProfileComboBox->clear();
393
        for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
394
        {
395
                solidColorProfileComboBox->addItem(itp.key());
396
                if (itp.key() == tp)
397
                {
398
                        if (cmsUse)
399
                                solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
400
                }
401
        }
402
        if (cmsUse)
403
                solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
404
        QString tp1 = Opts.ImageProf;
405
        if (!ScCore->InputProfiles.contains(tp1))
406
        {
407
/*              if (m_doc != 0 && exporting)
408
                        tp1 = m_doc->CMSSettings.DefaultSolidColorRGBProfile;
409
                else*/
410
                        tp1 = defaultSolidColorRGBProfile;
411
        }
412
        ProfilesL::Iterator itp2;
413
        ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
414
        imageProfileComboBox->clear();
415
        for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
416
        {
417
                imageProfileComboBox->addItem(itp2.key());
418
                if (itp2.key() == tp1)
419
                {
420
                        if (cmsUse)
421
                                imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
422
                }
423
        }
424
        if (cmsUse)
425
                imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
426
        if (!cmsUse)
427
        {
428
                //Disabling vis hiding
429
                //setSolidsImagesWidgetsShown(false);
430
                enableSolidsImagesWidgets(false);
431
        }
432
 
433
        ProfilesL::const_iterator itp3;
434
        QString tp3(Opts.PrintProf);
435
        if (!PDFXProfiles.contains(tp3))
436
        {
437
/*              if (m_doc != 0 && exporting)
438
                        tp3 = m_doc->CMSSettings.DefaultPrinterProfile;
439
                else*/
440
                        tp3 = defaultPrinterProfile;
441
        }
442
        pdfx3OutputProfileComboBox->clear();
443
        for (itp3 = PDFXProfiles.constBegin(); itp3 != PDFXProfiles.constEnd(); ++itp3)
444
        {
445
                pdfx3OutputProfileComboBox->addItem(itp3.key());
446
                if (itp3.key() == tp3)
447
                        pdfx3OutputProfileComboBox->setCurrentIndex(pdfx3OutputProfileComboBox->count()-1);
448
        }
449
        pdfx3InfoStringLineEdit->setText(Opts.Info);
450
 
451
 
452
        /*
453
        if (m_doc != 0 && exporting)
454
        {
455
                docBleeds->setChecked(Opts.useDocBleeds);
456
                doDocBleeds();
457
        }
458
        */
14451 cbradney 459
        registrationMarkOffsetSpinBox->setValue(prefsData->pdfPrefs.markOffset*unitRatio);
460
        printCropMarksCheckBox->setChecked(prefsData->pdfPrefs.cropMarks);
461
        printBleedMarksCheckBox->setChecked(prefsData->pdfPrefs.bleedMarks);
462
        printRegistrationMarksCheckBox->setChecked(prefsData->pdfPrefs.registrationMarks);
463
        printColorBarsCheckBox->setChecked(prefsData->pdfPrefs.colorMarks);
464
        printPageInfoCheckBox->setChecked(prefsData->pdfPrefs.docInfoMarks);
14737 cbradney 465
        if (!cmsUse)
466
                enablePDFXWidgets(false);
467
        if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X1a) && (!PDFXProfiles.isEmpty()))
468
                enablePDFX(3);
469
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X3) && (!PDFXProfiles.isEmpty()))
470
                enablePDFX(4);
471
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X4) && (!PDFXProfiles.isEmpty()))
472
                enablePDFX(5);
473
        else
474
                enablePDFXWidgets(false);
475
        /*
476
        if (mdoc != 0  && exporting)
477
        {
478
                EffectType->clear();
479
                EffectType->addItem( tr("No Effect"));
480
                EffectType->addItem( tr("Blinds"));
481
                EffectType->addItem( tr("Box"));
482
                EffectType->addItem( tr("Dissolve"));
483
                EffectType->addItem( tr("Glitter"));
484
                EffectType->addItem( tr("Split"));
485
                EffectType->addItem( tr("Wipe"));
486
                if (Opts.Version == PDFOptions::PDFVersion_15)
487
                {
488
                        EffectType->addItem( tr("Push"));
489
                        EffectType->addItem( tr("Cover"));
490
                        EffectType->addItem( tr("Uncover"));
491
                        EffectType->addItem( tr("Fade"));
492
                }
493
                PgSel = 0;
494
                Pages->setCurrentRow(0);
495
                SetEffOpts(0);
496
                Pages->setEnabled(false);
497
                Effects->setEnabled(false);
498
                PagePrev->setEnabled(false);
499
                DoEffects();
500
                if (CheckBox10->isChecked())
501
                {
502
                        PageTime->setValue(EffVal[0].pageViewDuration);
503
                        EffectTime->setValue(EffVal[0].pageEffectDuration);
504
                        EffectType->setCurrentIndex(EffVal[0].effectType);
505
                        EDirection->setCurrentIndex(EffVal[0].Dm);
506
                        EDirection_2->setCurrentIndex(EffVal[0].M);
507
                        EDirection_2_2->setCurrentIndex(EffVal[0].Di);
508
                        SetEffOpts(EffectType->currentIndex());
509
                }
510
                if (mdoc->currentPageLayout != 0)
511
                {
512
                        BleedTxt3->setText( tr( "Inside:" ) );
513
                        BleedTxt4->setText( tr( "Outside:" ) );
514
                }
14736 cbradney 515
 
14737 cbradney 516
        }
517
        */
518
        //
519
 
520
 
14448 cbradney 521
}
522
 
523
 
524
void Prefs_PDFExport::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
525
{
14736 cbradney 526
 //TODO
14448 cbradney 527
}
14451 cbradney 528
 
529
void Prefs_PDFExport::enableRangeControls(bool enabled)
530
{
531
        exportPageListLineEdit->setEnabled( enabled );
532
        exportRangeMorePushButton->setEnabled( enabled );
533
        if (enabled == false)
534
                includeBookmarksCheckBox->setChecked(false);
535
}
536
 
537
void Prefs_PDFExport::enableSecurityControls(bool enabled)
538
{
539
        passwordOwnerLineEdit->setEnabled(enabled);
540
        passwordUserLineEdit->setEnabled(enabled);
541
        allowPrintingCheckBox->setEnabled(enabled);
542
        allowChangingCheckBox->setEnabled(enabled);
543
        allowCopyingCheckBox->setEnabled(enabled);
544
        allowAnnotatingCheckBox->setEnabled(enabled);
545
}
546
 
547
void Prefs_PDFExport::createPageNumberRange()
548
{
549
        if (m_doc!=0)
550
        {
551
                CreateRange cr(exportPageListLineEdit->text(), m_doc->DocPages.count(), this);
552
                if (cr.exec())
553
                {
554
                        CreateRangeData crData;
555
                        cr.getCreateRangeData(crData);
556
                        exportPageListLineEdit->setText(crData.pageRange);
557
                        return;
558
                }
559
        }
560
        exportPageListLineEdit->setText(QString::null);
561
}
14736 cbradney 562
 
563
void Prefs_PDFExport::setMaximumResolution()
564
{
565
        if (maxResolutionLimitCheckBox->isChecked())
566
        {
567
                maxExportResolutionSpinBox->setEnabled(true);
568
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
569
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
570
        }
571
        else
572
                maxExportResolutionSpinBox->setEnabled(false);
573
}
574
 
575
void Prefs_PDFExport::enableProfiles(int i)
576
{
577
        enableLPI(i);
578
        bool setter = false;
579
        if (i == 1 && pdfVersionComboBox->currentIndex() != 3)
580
                setter = true;
581
 
14737 cbradney 582
        enableSolidsImagesWidgets(setter);
14736 cbradney 583
}
584
 
585
void Prefs_PDFExport::enableLPI(int i)
586
{
587
        if (i == 1)
588
        {
589
                QString tp(Opts.SolidProf);
590
                if (!ScCore->InputProfiles.contains(tp))
591
                {
592
                        if (m_doc != 0)
593
                                tp = m_doc->CMSSettings.DefaultSolidColorRGBProfile;
594
                        else
595
                                tp = defaultSolidColorRGBProfile;
596
                }
597
                solidColorProfileComboBox->clear();
598
                ProfilesL::Iterator itp;
599
                ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
600
                for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
601
                {
602
                        solidColorProfileComboBox->addItem(itp.key());
603
                        if (itp.key() == tp)
604
                        {
605
                                if (cmsEnabled)
606
                                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
607
                        }
608
                }
609
                if (cmsEnabled)
610
                        solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
611
                QString tp1 = Opts.ImageProf;
612
                if (!ScCore->InputProfiles.contains(tp1))
613
                {
614
                        if (m_doc != 0)
615
                                tp1 = m_doc->CMSSettings.DefaultSolidColorRGBProfile;
616
                        else
617
                                tp1 = defaultSolidColorRGBProfile;
618
                }
619
                imageProfileComboBox->clear();
620
                ProfilesL::Iterator itp2;
621
                ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
622
                for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
623
                {
624
                        imageProfileComboBox->addItem(itp2.key());
625
                        if (itp2.key() == tp1)
626
                        {
627
                                if (cmsEnabled)
628
                                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
629
                        }
630
                }
631
                if (cmsEnabled)
632
                        imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
14737 cbradney 633
                //Disabling vis hiding
634
                //setSolidsImagesWidgetsShown(cmsEnabled);
635
                enableSolidsImagesWidgets(cmsEnabled);
14736 cbradney 636
                convertSpotsToProcessCheckBox->show();
637
                if (m_doc!=0)
638
                {
639
                        useCustomRenderingCheckBox->show();
14737 cbradney 640
                        enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
14736 cbradney 641
                }
642
        }
643
        else
644
        {
645
                convertSpotsToProcessCheckBox->hide();
646
                useCustomRenderingCheckBox->hide();
14737 cbradney 647
                enableCustomRenderingWidgets(false);
14736 cbradney 648
        }
649
}
650
 
651
void Prefs_PDFExport::setCustomRenderingWidgetsShown(bool visible)
652
{
653
        useCustomRenderingCheckBox->setShown(visible);
654
        customRenderingColorComboBox->setShown(visible);
655
        customRenderingFrequencySpinBox->setShown(visible);
656
        customRenderingAngleSpinBox->setShown(visible);
657
        customRenderingSpotFunctionComboBox->setShown(visible);
658
}
659
 
14737 cbradney 660
void Prefs_PDFExport::enableCustomRenderingWidgets(bool enabled)
661
{
662
        useCustomRenderingCheckBox->setEnabled(enabled);
663
        customRenderingColorComboBox->setEnabled(enabled);
664
        customRenderingFrequencySpinBox->setEnabled(enabled);
665
        customRenderingAngleSpinBox->setEnabled(enabled);
666
        customRenderingSpotFunctionComboBox->setEnabled(enabled);
667
}
14736 cbradney 668
 
669
void Prefs_PDFExport::setSolidsImagesWidgetsShown(bool visible)
670
{
14737 cbradney 671
        solidColorsLabel->setShown(visible);
672
        solidColorsLine->setShown(visible);
14736 cbradney 673
        useSolidColorProfileCheckBox->setShown(visible);
674
        solidColorProfileComboBox->setShown(visible);
675
        solidColorRenderingIntentComboBox->setShown(visible);
14737 cbradney 676
        imagesLabel->setShown(visible);
677
        imagesLine->setShown(visible);
14736 cbradney 678
        useImageProfileCheckBox->setShown(visible);
679
        doNotUseEmbeddedImageProfileCheckBox->setShown(visible);
680
        imageProfileComboBox->setShown(visible);
681
        imageRenderingIntentComboBox->setShown(visible);
682
}
14737 cbradney 683
void Prefs_PDFExport::enableSolidsImagesWidgets(bool enabled)
14736 cbradney 684
{
685
        useSolidColorProfileCheckBox->setEnabled(enabled);
686
        solidColorProfileComboBox->setEnabled(enabled);
687
        solidColorRenderingIntentComboBox->setEnabled(enabled);
688
        useImageProfileCheckBox->setEnabled(enabled);
689
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(enabled);
690
        imageProfileComboBox->setEnabled(enabled);
691
        imageRenderingIntentComboBox->setEnabled(enabled);
692
}
693
 
14737 cbradney 694
void Prefs_PDFExport::enablePDFXWidgets(bool enabled)
695
{
696
        pdfx3OutputProfileComboBox->setEnabled(enabled);
697
        pdfx3InfoStringLineEdit->setEnabled(enabled);
698
}
14736 cbradney 699
 
14737 cbradney 700
 
14736 cbradney 701
void Prefs_PDFExport::enablePGI()
702
{
703
        bool setter=false;
704
        if (useImageProfileCheckBox->isChecked())
705
                setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
706
        imageProfileComboBox->setEnabled(setter);
707
        imageRenderingIntentComboBox->setEnabled(setter);
708
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(useImageProfileCheckBox->isChecked());
709
}
710
 
711
void Prefs_PDFExport::enablePGI2()
712
{
713
        bool setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
714
        imageProfileComboBox->setEnabled(setter);
715
        imageRenderingIntentComboBox->setEnabled(setter);
716
}
717
 
718
void Prefs_PDFExport::enablePG()
719
{
720
        bool setter = useSolidColorProfileCheckBox->isChecked() ? true : false;
721
 
722
        solidColorProfileComboBox->setEnabled(setter);
723
        solidColorRenderingIntentComboBox->setEnabled(setter);
724
}
725
 
726
void Prefs_PDFExport::enablePDFX(int i)
727
{
728
        includeLayersCheckBox->setEnabled((i == 2) || (i == 5));
729
        /*
730
        if (useLayers2)
731
                useLayers2->setEnabled((i == 2) || (i == 5));
732
        if (doc != 0 && pdfExport)
733
        {
734
                int currentEff = EffectType->currentIndex();
735
                disconnect(EffectType, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
736
                EffectType->clear();
737
                EffectType->addItem( tr("No Effect"));
738
                EffectType->addItem( tr("Blinds"));
739
                EffectType->addItem( tr("Box"));
740
                EffectType->addItem( tr("Dissolve"));
741
                EffectType->addItem( tr("Glitter"));
742
                EffectType->addItem( tr("Split"));
743
                EffectType->addItem( tr("Wipe"));
744
                if (i == 2)
745
                {
746
                        EffectType->addItem( tr("Push"));
747
                        EffectType->addItem( tr("Cover"));
748
                        EffectType->addItem( tr("Uncover"));
749
                        EffectType->addItem( tr("Fade"));
750
                        EffectType->setCurrentIndex(currentEff);
751
                }
752
                else
753
                {
754
                        if (currentEff > 6)
755
                        {
756
                                currentEff = 0;
757
                                EffectType->setCurrentIndex(0);
758
                                SetEffOpts(0);
759
                                for (int pg = 0; pg < doc->Pages->count(); ++pg)
760
                                {
761
                                        if (EffVal[pg].effectType > 6)
762
                                                EffVal[pg].effectType = 0;
763
                                }
764
                        }
765
                        else
766
                                EffectType->setCurrentIndex(currentEff);
767
                }
768
                connect(EffectType, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
769
        }
770
        */
771
        if (i < 3)  // not PDF/X
772
        {
14737 cbradney 773
                enablePDFXWidgets(false);
14736 cbradney 774
                tabWidget->setTabEnabled(2, true);
775
                outputIntentionComboBox->setEnabled(true);
776
                useImageProfileCheckBox->setEnabled(true);
777
                emit hasInfo();
778
                /*
779
                if (m_doc != 0 && pdfExport)
780
                {
781
                        CheckBox10->setEnabled(true);
782
                        EmbedFonts->setEnabled(true);
783
                        if (EmbedList->count() != 0)
784
                                FromEmbed->setEnabled(true);
785
                        ToEmbed->setEnabled(true);
786
                }
787
                */
788
                return;
789
        }
790
        // PDF/X is selected
791
        disconnect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
792
        outputIntentionComboBox->setCurrentIndex(1);
793
        outputIntentionComboBox->setEnabled(false);
794
        enableProfiles(1);
795
        if ((i == 4) || (i == 5)) // X3 or X4, enforcing color profiles on images
796
        {
797
                useImageProfileCheckBox->setChecked(true);
798
                useImageProfileCheckBox->setEnabled(false);
799
        }
800
        /*
801
        if (m_doc != 0 && pdfExport)
802
        {
803
//              EmbedFonts->setChecked(true);
804
                EmbedAll();
805
                CheckBox10->setChecked(false);
806
                CheckBox10->setEnabled(false);
807
//              EmbedFonts->setEnabled(false);
808
                FromEmbed->setEnabled(false);
809
                ToEmbed->setEnabled(false);
810
                if (InfoString->text().isEmpty())
811
                        emit noInfo();
812
                else
813
                        emit hasInfo();
814
        }
815
        */
816
        enablePGI();
817
        pdfx3OutputProfileComboBox->setEnabled(true);
818
        pdfx3InfoStringLineEdit->setEnabled(true);
819
        tabWidget->setTabEnabled(2, false);
820
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
821
}