Subversion Repositories Scribus

Rev

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