Subversion Repositories Scribus

Rev

Rev 15080 | Rev 15082 | 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
 
15081 cbradney 8
#include <QStandardItem>
9
#include <QAbstractItemView>
10
 
14448 cbradney 11
#include "ui/prefs_pdfexport.h"
14451 cbradney 12
#include "ui/createrange.h"
14448 cbradney 13
#include "prefsstructs.h"
13761 cbradney 14
 
14451 cbradney 15
#include "scribuscore.h"
16
#include "scribusdoc.h"
17
#include "ui/scrspinbox.h"
18
#include "units.h"
15065 cbradney 19
#include "util.h"
14451 cbradney 20
#include "util_icon.h"
21
 
15021 cbradney 22
Prefs_PDFExport::Prefs_PDFExport(QWidget* parent, ScribusDoc* doc)
14451 cbradney 23
        : Prefs_Pane(parent),
24
        cmsEnabled(false),
15065 cbradney 25
        m_doc(doc),
26
        exportingPDF(false)
13761 cbradney 27
{
28
        setupUi(this);
14451 cbradney 29
        pageMirrorHorizontalToolButton->setIcon(QIcon(loadIcon("16/flip-object-horizontal.png")));
30
        pageMirrorVerticalToolButton->setIcon(QIcon(loadIcon("16/flip-object-vertical.png")));
31
        unitChange(0);
32
        languageChange();
13761 cbradney 33
 
14451 cbradney 34
        connect(exportChosenPagesRadioButton, SIGNAL(toggled(bool)), this, SLOT(enableRangeControls(bool)));
35
        connect(exportRangeMorePushButton, SIGNAL(clicked()), this, SLOT(createPageNumberRange()));
14736 cbradney 36
        connect(maxResolutionLimitCheckBox, SIGNAL(clicked()), this, SLOT(setMaximumResolution()));
37
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
38
        connect(useSolidColorProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePG()));
39
        connect(useImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI()));
40
        connect(doNotUseEmbeddedImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI2()));
41
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
14451 cbradney 42
        connect(useEncryptionCheckBox, SIGNAL(clicked(bool)), this, SLOT(enableSecurityControls(bool)));
15081 cbradney 43
        connect(useCustomRenderingCheckBox, SIGNAL(clicked()), this, SLOT(enableLPI2()));
44
        connect(customRenderingColorComboBox, SIGNAL(activated(int)), this, SLOT(SelLPIcol(int)));
13761 cbradney 45
}
46
 
47
Prefs_PDFExport::~Prefs_PDFExport()
48
{
49
}
50
 
14451 cbradney 51
 
52
void Prefs_PDFExport::unitChange(int unitIndex)
53
{
14752 cbradney 54
        unitRatio = unitGetRatioFromIndex(unitIndex);
14451 cbradney 55
        registrationMarkOffsetSpinBox->setNewUnit(unitIndex);
56
        registrationMarkOffsetSpinBox->setMinimum(0);
57
        registrationMarkOffsetSpinBox->setMaximum(3000 * unitRatio);
58
}
59
 
14448 cbradney 60
void Prefs_PDFExport::languageChange()
61
{
14451 cbradney 62
        int i=0;
63
        i = rotationComboBox->currentIndex();
64
        rotationComboBox->clear();
65
        rotationComboBox->addItem(QString::fromUtf8("0 °"));
66
        rotationComboBox->addItem(QString::fromUtf8("90 °"));
67
        rotationComboBox->addItem(QString::fromUtf8("180 °"));
68
        rotationComboBox->addItem(QString::fromUtf8("270 °"));
69
        rotationComboBox->setCurrentIndex(i);
70
 
71
        i = imageCompressionMethodComboBox->currentIndex();
72
        imageCompressionMethodComboBox->clear();
73
        imageCompressionMethodComboBox->addItem( tr( "Automatic" ) );
74
        imageCompressionMethodComboBox->addItem( tr( "Lossy - JPEG" ) );
75
        imageCompressionMethodComboBox->addItem( tr( "Lossless - Zip" ) );
76
        imageCompressionMethodComboBox->addItem( tr( "None" ) );
77
        imageCompressionMethodComboBox->setCurrentIndex(i);
78
 
79
        i = imageCompressionQualityComboBox->currentIndex();
80
        imageCompressionQualityComboBox->clear();
81
        imageCompressionQualityComboBox->addItem( tr( "Maximum" ) );
82
        imageCompressionQualityComboBox->addItem( tr( "High" ) );
83
        imageCompressionQualityComboBox->addItem( tr( "Medium" ) );
84
        imageCompressionQualityComboBox->addItem( tr( "Low" ) );
85
        imageCompressionQualityComboBox->addItem( tr( "Minimum" ) );
86
        imageCompressionQualityComboBox->setCurrentIndex(i);
87
 
14745 cbradney 88
        addPDFVersions(true);//if (cmsEnabled)// && (!PDFXProfiles.isEmpty()))
14451 cbradney 89
 
90
        i = pageBindingComboBox->currentIndex();
91
        pageBindingComboBox->clear();
92
        pageBindingComboBox->addItem( tr("Left Margin"));
93
        pageBindingComboBox->addItem( tr("Right Margin"));
94
        pageBindingComboBox->setCurrentIndex(i);
95
 
14736 cbradney 96
        i = outputIntentionComboBox->currentIndex();
97
        outputIntentionComboBox->clear();
98
        outputIntentionComboBox->addItem( tr( "Screen / Web" ) );
99
        outputIntentionComboBox->addItem( tr( "Printer" ) );
100
        outputIntentionComboBox->addItem( tr( "Grayscale" ) );
101
        outputIntentionComboBox->setCurrentIndex(i);
14451 cbradney 102
 
14736 cbradney 103
        i = customRenderingSpotFunctionComboBox->currentIndex();
104
        customRenderingSpotFunctionComboBox->clear();
105
        customRenderingSpotFunctionComboBox->addItem( tr( "Simple Dot" ) );
106
        customRenderingSpotFunctionComboBox->addItem( tr( "Line" ) );
107
        customRenderingSpotFunctionComboBox->addItem( tr( "Round" ) );
108
        customRenderingSpotFunctionComboBox->addItem( tr( "Ellipse" ) );
109
        customRenderingSpotFunctionComboBox->setCurrentIndex(i);
15081 cbradney 110
        SelLPIcolor = customRenderingColorComboBox->currentText();
14451 cbradney 111
 
14736 cbradney 112
        i = solidColorRenderingIntentComboBox->currentIndex();
113
        int j=imageRenderingIntentComboBox->currentIndex();
114
        solidColorRenderingIntentComboBox->clear();
115
        imageRenderingIntentComboBox->clear();
116
        QString tmp_ip[] = { tr("Perceptual"), tr("Relative Colorimetric"), tr("Saturation"), tr("Absolute Colorimetric")};
117
        size_t ar_ip = sizeof(tmp_ip) / sizeof(*tmp_ip);
118
        for (uint a = 0; a < ar_ip; ++a)
119
                solidColorRenderingIntentComboBox->addItem(tmp_ip[a]);
120
        for (uint a = 0; a < ar_ip; ++a)
121
                imageRenderingIntentComboBox->addItem(tmp_ip[a]);
122
        solidColorRenderingIntentComboBox->setCurrentIndex(i);
123
        imageRenderingIntentComboBox->setCurrentIndex(j);
14448 cbradney 124
}
125
 
126
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData)
127
{
14737 cbradney 128
}
129
 
15065 cbradney 130
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData, const ProfilesL & PDFXProfiles, bool exporting)
14737 cbradney 131
{
15065 cbradney 132
        exportingPDF=exporting;
133
        enablePDFExportTabs(exportingPDF);
134
        AllFonts=prefsData->fontPrefs.AvailFonts;
14451 cbradney 135
        int unitIndex = prefsData->docSetupPrefs.docUnitIndex;
14752 cbradney 136
        unitRatio = unitGetRatioFromIndex(unitIndex);
14451 cbradney 137
        unitChange(unitIndex);
14736 cbradney 138
        Opts=prefsData->pdfPrefs;
139
        defaultSolidColorRGBProfile=prefsData->colorPrefs.DCMSset.DefaultSolidColorRGBProfile;
14737 cbradney 140
        defaultPrinterProfile=prefsData->colorPrefs.DCMSset.DefaultPrinterProfile;
14451 cbradney 141
        exportAllPagesRadioButton->setChecked(true);
142
        enableRangeControls(false);
143
        rotationComboBox->setCurrentIndex(prefsData->pdfPrefs.RotateDeg / 90);
144
        pageMirrorHorizontalToolButton->setChecked(prefsData->pdfPrefs.MirrorH);
145
        pageMirrorVerticalToolButton->setChecked(prefsData->pdfPrefs.MirrorV);
146
        clipToPrinterMarginsCheckBox->setChecked(prefsData->pdfPrefs.doClip);
147
        bool cmsUse = m_doc ? (ScCore->haveCMS() && m_doc->HasCMS) : false;
148
        int newCMSIndex=0;
149
        if (cmsUse)
150
        {
151
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X1a)
152
                        newCMSIndex=3;
153
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X3)
154
                        newCMSIndex=4;
155
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4)
156
                        newCMSIndex=5;
157
        }
158
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_13)
159
                newCMSIndex=0;
160
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_14)
161
                newCMSIndex=1;
162
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15)
163
                newCMSIndex=2;
164
        pdfVersionComboBox->setCurrentIndex(newCMSIndex);
165
        pageBindingComboBox->setCurrentIndex(prefsData->pdfPrefs.Binding);
166
        generateThumbnailsCheckBox->setChecked(prefsData->pdfPrefs.Thumbnails);
167
        saveLinkedTextFramesAsArticlesCheckBox->setChecked(prefsData->pdfPrefs.Articles);
168
        includeBookmarksCheckBox->setChecked(prefsData->pdfPrefs.Bookmarks);
169
        includeLayersCheckBox->setChecked(prefsData->pdfPrefs.useLayers);
170
        includeLayersCheckBox->setEnabled(prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15 || prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4);
171
 
172
        epsExportResolutionSpinBox->setValue(prefsData->pdfPrefs.Resolution);
173
        embedPDFAndEPSFiles->setChecked(prefsData->pdfPrefs.embedPDF);
174
        compressTextAndVectorGraphicsCheckBox->setChecked( prefsData->pdfPrefs.Compress );
175
        imageCompressionMethodComboBox->setCurrentIndex(prefsData->pdfPrefs.CompressMethod);
176
        imageCompressionQualityComboBox->setCurrentIndex(prefsData->pdfPrefs.Quality);
177
        maxResolutionLimitCheckBox->setChecked(prefsData->pdfPrefs.RecalcPic);
178
        maxExportResolutionSpinBox->setValue(prefsData->pdfPrefs.PicRes);
179
        maxExportResolutionSpinBox->setEnabled(prefsData->pdfPrefs.RecalcPic);
15065 cbradney 180
 
181
        if (m_doc != 0 && exportingPDF)
14737 cbradney 182
        {
183
//      Build a list of all Fonts used in Annotations;
184
                PageItem *pgit;
15065 cbradney 185
                for (int c = 0; c < m_doc->FrameItems.count(); ++c)
14737 cbradney 186
                {
15065 cbradney 187
                        pgit=m_doc->FrameItems.at(c);
14737 cbradney 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
                }
15065 cbradney 191
                for (int c = 0; c < m_doc->MasterItems.count(); ++c)
14737 cbradney 192
                {
15065 cbradney 193
                        pgit=m_doc->MasterItems.at(c);
14737 cbradney 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
                }
15065 cbradney 197
                for (int c = 0; c < m_doc->DocItems.count(); ++c)
14737 cbradney 198
                {
15065 cbradney 199
                        pgit=m_doc->DocItems.at(c);
14737 cbradney 200
                        if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
201
                                AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
202
                }
203
                QMap<QString,int>::const_iterator it;
15065 cbradney 204
                availableFontsListWidget->clear();
205
                for (it = m_doc->usedFonts().constBegin(); it != m_doc->usedFonts().constEnd(); ++it)
14737 cbradney 206
                {
207
                        if (AllFonts[it.key()].isReplacement())
15065 cbradney 208
                                new QListWidgetItem( QIcon(loadIcon("font_subst16.png")), it.key(), availableFontsListWidget );
14737 cbradney 209
                        else if (AllFonts[it.key()].type() == ScFace::TYPE1)
15065 cbradney 210
                                new QListWidgetItem( QIcon(loadIcon("font_type1_16.png")), it.key(), availableFontsListWidget );
14737 cbradney 211
                        else if (AllFonts[it.key()].type() == ScFace::TTF)
15065 cbradney 212
                                new QListWidgetItem( QIcon(loadIcon("font_truetype16.png")), it.key(), availableFontsListWidget );
14737 cbradney 213
                        else if (AllFonts[it.key()].type() == ScFace::OTF)
15065 cbradney 214
                                new QListWidgetItem( QIcon(loadIcon("font_otf16.png")), it.key(), availableFontsListWidget );
14737 cbradney 215
                }
15065 cbradney 216
                toEmbedButton->setEnabled(false);
217
                fromEmbedButton->setEnabled(false);
218
                toOutlineButton->setEnabled(false);
219
                fromOutlineButton->setEnabled(false);
14737 cbradney 220
                if ((Opts.EmbedList.count() == 0) && (Opts.SubsetList.count() == 0) && (Opts.firstUse))
221
                        EmbedAll();
222
                else
223
                {
15065 cbradney 224
                        embeddedFontsListWidget->clear();
14737 cbradney 225
                        FontsToEmbed.clear();
226
                        for (int fe = 0; fe < Opts.EmbedList.count(); ++fe)
227
                        {
15065 cbradney 228
                                embeddedFontsListWidget->addItem(Opts.EmbedList[fe]);
14737 cbradney 229
                                FontsToEmbed.append(Opts.EmbedList[fe]);
230
                        }
231
                        if (Opts.SubsetList.count() != 0)
232
                        {
15065 cbradney 233
                                outlinedFontsListWidget->clear();
14737 cbradney 234
                                FontsToOutline.clear();
235
                                for (int fe = 0; fe < Opts.SubsetList.count(); ++fe)
236
                                {
15065 cbradney 237
                                        outlinedFontsListWidget->addItem(Opts.SubsetList[fe]);
14737 cbradney 238
                                        FontsToOutline.append(Opts.SubsetList[fe]);
239
                                }
240
                        }
241
                        QMap<QString, QString>::Iterator itAnn;
242
                        for (itAnn = AnnotationFonts.begin(); itAnn != AnnotationFonts.end(); ++itAnn)
243
                        {
244
                                if (FontsToEmbed.contains(itAnn.key()) == 0)
245
                                {
15065 cbradney 246
                                        embeddedFontsListWidget->addItem(itAnn.key());
247
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
14737 cbradney 248
                                        FontsToEmbed.append(itAnn.key());
249
                                }
250
                                if (FontsToOutline.contains(itAnn.key()) != 0)
251
                                {
252
                                        FontsToOutline.removeAll(itAnn.key());
15065 cbradney 253
                                        QList<QListWidgetItem *> itR = outlinedFontsListWidget->findItems(itAnn.key(), Qt::MatchExactly);
254
                                        delete outlinedFontsListWidget->takeItem(outlinedFontsListWidget->row(itR.at(0)));
14737 cbradney 255
                                }
256
                        }
257
                }
15065 cbradney 258
                enabledEffectsCheckBox->setChecked(Opts.PresentMode);
259
                showPagePreviewsCheckBox->setChecked(false);
260
                effectsPageListWidget->clear();
14737 cbradney 261
                QString tmp;
262
                struct PDFPresentationData ef;
263
                if (EffVal.count() != 0)
264
                {
15065 cbradney 265
                        for (int pg2 = 0; pg2 < m_doc->Pages->count(); ++pg2)
14737 cbradney 266
                        {
15065 cbradney 267
                                effectsPageListWidget->addItem( tr("Page")+" "+tmp.setNum(pg2+1));
14737 cbradney 268
                                if (EffVal.count()-1 < pg2)
269
                                {
270
                                        ef.pageEffectDuration = 1;
271
                                        ef.pageViewDuration = 1;
272
                                        ef.effectType = 0;
273
                                        ef.Dm = 0;
274
                                        ef.M = 0;
275
                                        ef.Di = 0;
276
                                        EffVal.append(ef);
277
                                }
278
                        }
279
                }
280
                else
281
                {
15065 cbradney 282
                        for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
14737 cbradney 283
                        {
15065 cbradney 284
                                effectsPageListWidget->addItem( tr("Page")+" "+tmp.setNum(pg+1));
14737 cbradney 285
                                ef.pageEffectDuration = 1;
286
                                ef.pageViewDuration = 1;
287
                                ef.effectType = 0;
288
                                ef.Dm = 0;
289
                                ef.M = 0;
290
                                ef.Di = 0;
291
                                EffVal.append(ef);
292
                        }
293
                }
15065 cbradney 294
                displayDurationSpinBox->setValue(EffVal[0].pageViewDuration);
295
                effectDurationSpinBox->setValue(EffVal[0].pageEffectDuration);
14737 cbradney 296
                bool df = true;
297
                if ((Opts.displayBookmarks) || (Opts.displayFullscreen) || (Opts.displayLayers) || (Opts.displayThumbs))
298
                        df = false;
299
                if (df)
15065 cbradney 300
                        useViewerDefaultsRadioButton->setChecked(df);
301
                useFullScreenRadioButton->setChecked(Opts.displayFullscreen);
302
                useBookmarksRadioButton->setChecked(Opts.displayBookmarks);
303
                useThumbnailsRadioButton->setChecked(Opts.displayThumbs);
304
                useLayersRadioButton->setChecked(Opts.displayLayers);
305
                hideViewerToolBarCheckBox->setChecked(Opts.hideToolBar);
306
                hideViewerMenuBarCheckBox->setChecked(Opts.hideMenuBar);
307
                fitViewerWindowCheckBox->setChecked(Opts.fitWindow);
14737 cbradney 308
                QMap<QString,QString>::Iterator itja;
15065 cbradney 309
                startupJavascriptComboBox->clear();
310
                startupJavascriptComboBox->addItem( tr("No Script"));
311
                for (itja = m_doc->JavaScripts.begin(); itja != m_doc->JavaScripts.end(); ++itja)
312
                        startupJavascriptComboBox->addItem(itja.key());
313
                if (m_doc->JavaScripts.contains(Opts.openAction))
314
                        setCurrentComboItem(startupJavascriptComboBox, Opts.openAction);
14737 cbradney 315
                if (Opts.PageLayout == PDFOptions::SinglePage)
15065 cbradney 316
                        singlePageRadioButton->setChecked(true);
14737 cbradney 317
                else if (Opts.PageLayout == PDFOptions::OneColumn)
15065 cbradney 318
                        continuousPagesRadioButton->setChecked(true);
14737 cbradney 319
                else if (Opts.PageLayout == PDFOptions::TwoColumnLeft)
15065 cbradney 320
                        doublePageLeftRadioButton->setChecked(true);
14737 cbradney 321
                else if (Opts.PageLayout == PDFOptions::TwoColumnRight)
15065 cbradney 322
                        doublePageRightRadioButton->setChecked(true);
14737 cbradney 323
                if ((Opts.Version == PDFOptions::PDFVersion_15) || (Opts.Version == PDFOptions::PDFVersion_X4))
15065 cbradney 324
                        useLayersRadioButton->setEnabled(true);
14737 cbradney 325
                else
15065 cbradney 326
                        useLayersRadioButton->setEnabled(false);
14737 cbradney 327
        }
15065 cbradney 328
 
14451 cbradney 329
        useEncryptionCheckBox->setChecked( prefsData->pdfPrefs.Encrypt );
330
        passwordOwnerLineEdit->setText(prefsData->pdfPrefs.PassOwner);
331
        passwordUserLineEdit->setText(prefsData->pdfPrefs.PassUser);
332
        allowPrintingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 4 );
333
        allowChangingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 8 );
334
        allowCopyingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 16 );
335
        allowAnnotatingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 32 );
336
        enableSecurityControls(prefsData->pdfPrefs.Encrypt);
337
 
338
        if (prefsData->pdfPrefs.UseRGB)
14736 cbradney 339
                outputIntentionComboBox->setCurrentIndex(0);
14451 cbradney 340
        else
341
        {
342
                if (prefsData->pdfPrefs.isGrayscale)
14736 cbradney 343
                        outputIntentionComboBox->setCurrentIndex(2);
14451 cbradney 344
                else
14736 cbradney 345
                        outputIntentionComboBox->setCurrentIndex(1);
14451 cbradney 346
        }
347
        convertSpotsToProcessCheckBox->setChecked(!prefsData->pdfPrefs.UseSpotColors);
348
 
349
        bleedsWidget->setup(prefsData->pdfPrefs.bleeds, prefsData->docSetupPrefs.pagePositioning, prefsData->docSetupPrefs.docUnitIndex, false, false);
350
        bleedsWidget->setPageWidth(prefsData->docSetupPrefs.pageWidth);
351
        bleedsWidget->setPageHeight(prefsData->docSetupPrefs.pageHeight);
352
        bleedsWidget->setPageSize(prefsData->docSetupPrefs.pageSize);
353
        bleedsWidget->setMarginPreset(prefsData->docSetupPrefs.marginPreset);
14737 cbradney 354
//
355
        useCustomRenderingCheckBox->setChecked(prefsData->pdfPrefs.UseLPI);
356
        QMap<QString,LPIData>::Iterator itlp;
357
        customRenderingColorComboBox->clear();
358
        for (itlp = prefsData->pdfPrefs.LPISettings.begin(); itlp != prefsData->pdfPrefs.LPISettings.end(); ++itlp)
359
                customRenderingColorComboBox->addItem( itlp.key() );
360
        customRenderingColorComboBox->setCurrentIndex(0);
14451 cbradney 361
 
14737 cbradney 362
        customRenderingFrequencySpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Frequency);
363
        customRenderingAngleSpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Angle);
364
        customRenderingSpotFunctionComboBox->setCurrentIndex(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].SpotFunc);
365
        useSolidColorProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles);
366
        useImageProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles2);
367
        doNotUseEmbeddedImageProfileCheckBox->setChecked(prefsData->pdfPrefs.EmbeddedI);
368
        if ((prefsData->pdfPrefs.UseRGB) || (prefsData->pdfPrefs.isGrayscale))
369
        {
15080 cbradney 370
                //enableSolidsImagesWidgets(false);
14737 cbradney 371
                enableProfiles(0);
372
        }
373
        else
374
                enableProfiles(1);
375
        enablePG();
376
        enablePGI();
377
        QString tp(prefsData->pdfPrefs.SolidProf);
378
        if (!ScCore->InputProfiles.contains(tp))
379
        {
15065 cbradney 380
                if (m_doc != 0 && exportingPDF)
381
                        tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
382
                else
14737 cbradney 383
                        tp = defaultSolidColorRGBProfile;
384
        }
385
        ProfilesL::Iterator itp;
386
        ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
387
        solidColorProfileComboBox->clear();
388
        for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
389
        {
390
                solidColorProfileComboBox->addItem(itp.key());
391
                if (itp.key() == tp)
392
                {
393
                        if (cmsUse)
394
                                solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
395
                }
396
        }
397
        if (cmsUse)
398
                solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
399
        QString tp1 = Opts.ImageProf;
400
        if (!ScCore->InputProfiles.contains(tp1))
401
        {
15065 cbradney 402
                if (m_doc != 0 && exportingPDF)
403
                        tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
404
                else
14737 cbradney 405
                        tp1 = defaultSolidColorRGBProfile;
406
        }
407
        ProfilesL::Iterator itp2;
408
        ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
409
        imageProfileComboBox->clear();
410
        for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
411
        {
412
                imageProfileComboBox->addItem(itp2.key());
413
                if (itp2.key() == tp1)
414
                {
415
                        if (cmsUse)
416
                                imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
417
                }
418
        }
419
        if (cmsUse)
420
                imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
421
        if (!cmsUse)
422
        {
423
                //Disabling vis hiding
424
                //setSolidsImagesWidgetsShown(false);
425
                enableSolidsImagesWidgets(false);
426
        }
427
 
428
        ProfilesL::const_iterator itp3;
429
        QString tp3(Opts.PrintProf);
430
        if (!PDFXProfiles.contains(tp3))
431
        {
15065 cbradney 432
                if (m_doc != 0 && exportingPDF)
433
                        tp3 = m_doc->cmsSettings().DefaultPrinterProfile;
434
                else
14737 cbradney 435
                        tp3 = defaultPrinterProfile;
436
        }
437
        pdfx3OutputProfileComboBox->clear();
438
        for (itp3 = PDFXProfiles.constBegin(); itp3 != PDFXProfiles.constEnd(); ++itp3)
439
        {
440
                pdfx3OutputProfileComboBox->addItem(itp3.key());
441
                if (itp3.key() == tp3)
442
                        pdfx3OutputProfileComboBox->setCurrentIndex(pdfx3OutputProfileComboBox->count()-1);
443
        }
444
 
15081 cbradney 445
        if (!Opts.Info.isEmpty())
446
                pdfx3InfoStringLineEdit->setText(Opts.Info);
447
        else
448
        {
449
                if (m_doc != 0 && exporting)
450
                {
451
                        QFileInfo fi(m_doc->DocName);
452
                        pdfx3InfoStringLineEdit->setText(fi.fileName());
453
                }
454
                else
455
                        pdfx3InfoStringLineEdit->setText( tr("InfoString"));
456
        }
14737 cbradney 457
 
15065 cbradney 458
        if (m_doc != 0 && exportingPDF)
14737 cbradney 459
        {
15065 cbradney 460
                useDocumentBleedsCheckBox->setChecked(Opts.useDocBleeds);
14737 cbradney 461
                doDocBleeds();
462
        }
15065 cbradney 463
 
14451 cbradney 464
        registrationMarkOffsetSpinBox->setValue(prefsData->pdfPrefs.markOffset*unitRatio);
465
        printCropMarksCheckBox->setChecked(prefsData->pdfPrefs.cropMarks);
466
        printBleedMarksCheckBox->setChecked(prefsData->pdfPrefs.bleedMarks);
467
        printRegistrationMarksCheckBox->setChecked(prefsData->pdfPrefs.registrationMarks);
468
        printColorBarsCheckBox->setChecked(prefsData->pdfPrefs.colorMarks);
469
        printPageInfoCheckBox->setChecked(prefsData->pdfPrefs.docInfoMarks);
14737 cbradney 470
        if (!cmsUse)
471
                enablePDFXWidgets(false);
472
        if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X1a) && (!PDFXProfiles.isEmpty()))
473
                enablePDFX(3);
474
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X3) && (!PDFXProfiles.isEmpty()))
475
                enablePDFX(4);
476
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X4) && (!PDFXProfiles.isEmpty()))
477
                enablePDFX(5);
478
        else
479
                enablePDFXWidgets(false);
15065 cbradney 480
 
481
        if (m_doc != 0  && exportingPDF)
14737 cbradney 482
        {
15065 cbradney 483
                effectTypeComboBox->clear();
484
                effectTypeComboBox->addItem( tr("No Effect"));
485
                effectTypeComboBox->addItem( tr("Blinds"));
486
                effectTypeComboBox->addItem( tr("Box"));
487
                effectTypeComboBox->addItem( tr("Dissolve"));
488
                effectTypeComboBox->addItem( tr("Glitter"));
489
                effectTypeComboBox->addItem( tr("Split"));
490
                effectTypeComboBox->addItem( tr("Wipe"));
14737 cbradney 491
                if (Opts.Version == PDFOptions::PDFVersion_15)
492
                {
15065 cbradney 493
                        effectTypeComboBox->addItem( tr("Push"));
494
                        effectTypeComboBox->addItem( tr("Cover"));
495
                        effectTypeComboBox->addItem( tr("Uncover"));
496
                        effectTypeComboBox->addItem( tr("Fade"));
14737 cbradney 497
                }
498
                PgSel = 0;
15065 cbradney 499
                effectsPageListWidget->setCurrentRow(0);
14737 cbradney 500
                SetEffOpts(0);
15065 cbradney 501
                effectsPageListWidget->setEnabled(false);
502
                enableEffects(false);
503
                showPagePreviewsCheckBox->setEnabled(false);
504
                if (enabledEffectsCheckBox->isChecked())
14737 cbradney 505
                {
15065 cbradney 506
                        displayDurationSpinBox->setValue(EffVal[0].pageViewDuration);
507
                        effectDurationSpinBox->setValue(EffVal[0].pageEffectDuration);
508
                        effectTypeComboBox->setCurrentIndex(EffVal[0].effectType);
509
                        effectMovingDirectionComboBox->setCurrentIndex(EffVal[0].Dm);
510
                        effectInOutComboBox->setCurrentIndex(EffVal[0].M);
511
                        effectDirectionComboBox->setCurrentIndex(EffVal[0].Di);
512
                        SetEffOpts(effectTypeComboBox->currentIndex());
14737 cbradney 513
                }
15065 cbradney 514
                /* Using margin widget, is this necessary?
515
                if (m_doc->currentPageLayout != 0)
14737 cbradney 516
                {
517
                        BleedTxt3->setText( tr( "Inside:" ) );
518
                        BleedTxt4->setText( tr( "Outside:" ) );
519
                }
15065 cbradney 520
                */
14737 cbradney 521
        }
14448 cbradney 522
}
523
 
524
 
525
void Prefs_PDFExport::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
526
{
14752 cbradney 527
        prefsData->pdfPrefs.Thumbnails = generateThumbnailsCheckBox->isChecked();
528
        prefsData->pdfPrefs.Compress = compressTextAndVectorGraphicsCheckBox->isChecked();
529
        prefsData->pdfPrefs.CompressMethod = (PDFOptions::PDFCompression) imageCompressionMethodComboBox->currentIndex();
530
        prefsData->pdfPrefs.Quality = imageCompressionQualityComboBox->currentIndex();
531
        prefsData->pdfPrefs.Resolution = epsExportResolutionSpinBox->value();
532
        prefsData->pdfPrefs.RecalcPic = maxResolutionLimitCheckBox->isChecked();
533
        prefsData->pdfPrefs.PicRes = maxExportResolutionSpinBox->value();
534
        prefsData->pdfPrefs.Bookmarks = includeBookmarksCheckBox->isChecked();
535
        prefsData->pdfPrefs.Binding = pageBindingComboBox->currentIndex();
536
        prefsData->pdfPrefs.MirrorH = pageMirrorHorizontalToolButton->isChecked();
537
        prefsData->pdfPrefs.MirrorV = pageMirrorVerticalToolButton->isChecked();
538
        prefsData->pdfPrefs.RotateDeg = rotationComboBox->currentIndex() * 90;
539
        prefsData->pdfPrefs.Articles = saveLinkedTextFramesAsArticlesCheckBox->isChecked();
540
        prefsData->pdfPrefs.Encrypt = useEncryptionCheckBox->isChecked();
541
        prefsData->pdfPrefs.UseLPI = useCustomRenderingCheckBox->isChecked();
542
        prefsData->pdfPrefs.UseSpotColors = !convertSpotsToProcessCheckBox->isChecked();
543
        prefsData->pdfPrefs.doMultiFile = false;
544
        prefsData->pdfPrefs.cropMarks  = printCropMarksCheckBox->isChecked();
545
        prefsData->pdfPrefs.bleedMarks = printBleedMarksCheckBox->isChecked();
546
        prefsData->pdfPrefs.registrationMarks = printRegistrationMarksCheckBox->isChecked();
547
        prefsData->pdfPrefs.colorMarks = printColorBarsCheckBox->isChecked();
548
        prefsData->pdfPrefs.docInfoMarks = printPageInfoCheckBox->isChecked();
549
        prefsData->pdfPrefs.markOffset = registrationMarkOffsetSpinBox->value() / unitRatio;
15065 cbradney 550
        prefsData->pdfPrefs.useDocBleeds = useDocumentBleedsCheckBox->isChecked();
14752 cbradney 551
        prefsData->pdfPrefs.bleeds=bleedsWidget->margins();
552
        prefsData->pdfPrefs.doClip = clipToPrinterMarginsCheckBox->isChecked();
553
        if (useEncryptionCheckBox->isChecked())
554
        {
555
                int Perm = -64;
556
                if (pdfVersionComboBox->currentIndex() == 1)
557
                        Perm &= ~0x00240000;
558
                if (allowPrintingCheckBox->isChecked())
559
                        Perm += 4;
560
                if (allowChangingCheckBox->isChecked())
561
                        Perm += 8;
562
                if (allowCopyingCheckBox->isChecked())
563
                        Perm += 16;
564
                if (allowAnnotatingCheckBox->isChecked())
565
                        Perm += 32;
566
                prefsData->pdfPrefs.Permissions = Perm;
567
                prefsData->pdfPrefs.PassOwner = passwordOwnerLineEdit->text();
568
                prefsData->pdfPrefs.PassUser = passwordUserLineEdit->text();
569
        }
570
        if (pdfVersionComboBox->currentIndex() == 0)
571
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_13;
572
        if (pdfVersionComboBox->currentIndex() == 1)
573
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_14;
574
        if (pdfVersionComboBox->currentIndex() == 2)
575
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_15;
576
        if (pdfVersionComboBox->currentIndex() == 3)
577
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X1a;
578
        if (pdfVersionComboBox->currentIndex() == 4)
579
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X3;
580
        if (pdfVersionComboBox->currentIndex() == 5)
581
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X4;
582
        if (outputIntentionComboBox->currentIndex() == 0)
583
        {
584
                prefsData->pdfPrefs.isGrayscale = false;
585
                prefsData->pdfPrefs.UseRGB = true;
586
                prefsData->pdfPrefs.UseProfiles = false;
587
                prefsData->pdfPrefs.UseProfiles2 = false;
588
        }
589
        else
590
        {
591
                if (outputIntentionComboBox->currentIndex() == 2)
592
                {
593
                        prefsData->pdfPrefs.isGrayscale = true;
594
                        prefsData->pdfPrefs.UseRGB = false;
595
                        prefsData->pdfPrefs.UseProfiles = false;
596
                        prefsData->pdfPrefs.UseProfiles2 = false;
597
                }
598
                else
599
                {
600
                        prefsData->pdfPrefs.isGrayscale = false;
601
                        prefsData->pdfPrefs.UseRGB = false;
602
                        if (/*CMSuse*/ ScCore->haveCMS())
603
                        {
604
                                prefsData->pdfPrefs.UseProfiles = useSolidColorProfileCheckBox->isChecked();
605
                                prefsData->pdfPrefs.UseProfiles2 = useImageProfileCheckBox->isChecked();
606
                                prefsData->pdfPrefs.Intent = solidColorRenderingIntentComboBox->currentIndex();
607
                                prefsData->pdfPrefs.Intent2 = imageRenderingIntentComboBox->currentIndex();
608
                                prefsData->pdfPrefs.EmbeddedI = doNotUseEmbeddedImageProfileCheckBox->isChecked();
609
                                prefsData->pdfPrefs.SolidProf = solidColorProfileComboBox->currentText();
610
                                prefsData->pdfPrefs.ImageProf = imageProfileComboBox->currentText();
611
                                prefsData->pdfPrefs.PrintProf = pdfx3OutputProfileComboBox->currentText();
612
                        }
613
                }
614
        }
14448 cbradney 615
}
14451 cbradney 616
 
15081 cbradney 617
 
618
void Prefs_PDFExport::SelLPIcol(int c)
619
{
620
        // XXX Optionen or Opts changed here
621
        Opts.LPISettings[SelLPIcolor].Frequency = customRenderingFrequencySpinBox->value();
622
        Opts.LPISettings[SelLPIcolor].Angle = customRenderingAngleSpinBox->value();
623
        Opts.LPISettings[SelLPIcolor].SpotFunc = customRenderingSpotFunctionComboBox->currentIndex();
624
        customRenderingFrequencySpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Frequency);
625
        customRenderingAngleSpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Angle);
626
        customRenderingSpotFunctionComboBox->setCurrentIndex(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].SpotFunc);
627
        SelLPIcolor = customRenderingColorComboBox->itemText(c);
628
}
629
 
14451 cbradney 630
void Prefs_PDFExport::enableRangeControls(bool enabled)
631
{
632
        exportPageListLineEdit->setEnabled( enabled );
633
        exportRangeMorePushButton->setEnabled( enabled );
634
        if (enabled == false)
635
                includeBookmarksCheckBox->setChecked(false);
636
}
637
 
638
void Prefs_PDFExport::enableSecurityControls(bool enabled)
639
{
640
        passwordOwnerLineEdit->setEnabled(enabled);
641
        passwordUserLineEdit->setEnabled(enabled);
642
        allowPrintingCheckBox->setEnabled(enabled);
643
        allowChangingCheckBox->setEnabled(enabled);
644
        allowCopyingCheckBox->setEnabled(enabled);
645
        allowAnnotatingCheckBox->setEnabled(enabled);
646
}
647
 
14745 cbradney 648
 
649
void Prefs_PDFExport::enableCMS(bool enabled)
650
{
651
        cmsEnabled=enabled;
652
        addPDFVersions(enabled);
15080 cbradney 653
        enableProfiles(enabled);
14745 cbradney 654
}
655
 
15065 cbradney 656
void Prefs_PDFExport::enablePDFExportTabs(bool enabled)
657
{
658
        if (!enabled)
659
        {
660
                tabWidget->removeTab(tabWidget->indexOf(tabFonts));//Fonts
661
                tabWidget->removeTab(tabWidget->indexOf(tabExtras));//Extras
662
                tabWidget->removeTab(tabWidget->indexOf(tabViewer));//Viewer
663
        }
664
}
665
 
14451 cbradney 666
void Prefs_PDFExport::createPageNumberRange()
667
{
668
        if (m_doc!=0)
669
        {
670
                CreateRange cr(exportPageListLineEdit->text(), m_doc->DocPages.count(), this);
671
                if (cr.exec())
672
                {
673
                        CreateRangeData crData;
674
                        cr.getCreateRangeData(crData);
675
                        exportPageListLineEdit->setText(crData.pageRange);
676
                        return;
677
                }
678
        }
679
        exportPageListLineEdit->setText(QString::null);
680
}
14736 cbradney 681
 
682
void Prefs_PDFExport::setMaximumResolution()
683
{
684
        if (maxResolutionLimitCheckBox->isChecked())
685
        {
686
                maxExportResolutionSpinBox->setEnabled(true);
687
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
688
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
689
        }
690
        else
691
                maxExportResolutionSpinBox->setEnabled(false);
692
}
693
 
694
void Prefs_PDFExport::enableProfiles(int i)
695
{
696
        enableLPI(i);
697
        bool setter = false;
698
        if (i == 1 && pdfVersionComboBox->currentIndex() != 3)
699
                setter = true;
14737 cbradney 700
        enableSolidsImagesWidgets(setter);
14736 cbradney 701
}
702
 
703
void Prefs_PDFExport::enableLPI(int i)
704
{
705
        if (i == 1)
706
        {
707
                QString tp(Opts.SolidProf);
708
                if (!ScCore->InputProfiles.contains(tp))
709
                {
710
                        if (m_doc != 0)
15001 cbradney 711
                                tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 712
                        else
713
                                tp = defaultSolidColorRGBProfile;
714
                }
715
                solidColorProfileComboBox->clear();
716
                ProfilesL::Iterator itp;
717
                ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
718
                for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
719
                {
720
                        solidColorProfileComboBox->addItem(itp.key());
721
                        if (itp.key() == tp)
722
                        {
723
                                if (cmsEnabled)
724
                                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
725
                        }
726
                }
727
                if (cmsEnabled)
728
                        solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
729
                QString tp1 = Opts.ImageProf;
730
                if (!ScCore->InputProfiles.contains(tp1))
731
                {
732
                        if (m_doc != 0)
15001 cbradney 733
                                tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 734
                        else
735
                                tp1 = defaultSolidColorRGBProfile;
736
                }
737
                imageProfileComboBox->clear();
738
                ProfilesL::Iterator itp2;
739
                ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
740
                for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
741
                {
742
                        imageProfileComboBox->addItem(itp2.key());
743
                        if (itp2.key() == tp1)
744
                        {
745
                                if (cmsEnabled)
746
                                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
747
                        }
748
                }
749
                if (cmsEnabled)
750
                        imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
15081 cbradney 751
                //Disabling vs hiding
14737 cbradney 752
                enableSolidsImagesWidgets(cmsEnabled);
15080 cbradney 753
                convertSpotsToProcessCheckBox->setEnabled(true);
14736 cbradney 754
                if (m_doc!=0)
755
                {
15081 cbradney 756
                        useCustomRenderingCheckBox->setEnabled(true);
14737 cbradney 757
                        enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
14736 cbradney 758
                }
759
        }
760
        else
761
        {
15080 cbradney 762
                convertSpotsToProcessCheckBox->setEnabled(false);
15081 cbradney 763
                useCustomRenderingCheckBox->setEnabled(false);
14737 cbradney 764
                enableCustomRenderingWidgets(false);
14736 cbradney 765
        }
766
}
767
 
15081 cbradney 768
 
769
void Prefs_PDFExport::enableLPI2()
770
{
771
        if (m_doc!=0)
772
                enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
773
}
774
 
14736 cbradney 775
void Prefs_PDFExport::setCustomRenderingWidgetsShown(bool visible)
776
{
777
        useCustomRenderingCheckBox->setShown(visible);
778
        customRenderingColorComboBox->setShown(visible);
779
        customRenderingFrequencySpinBox->setShown(visible);
780
        customRenderingAngleSpinBox->setShown(visible);
781
        customRenderingSpotFunctionComboBox->setShown(visible);
782
}
783
 
14737 cbradney 784
void Prefs_PDFExport::enableCustomRenderingWidgets(bool enabled)
785
{
786
        customRenderingColorComboBox->setEnabled(enabled);
787
        customRenderingFrequencySpinBox->setEnabled(enabled);
788
        customRenderingAngleSpinBox->setEnabled(enabled);
789
        customRenderingSpotFunctionComboBox->setEnabled(enabled);
790
}
14736 cbradney 791
 
792
void Prefs_PDFExport::setSolidsImagesWidgetsShown(bool visible)
793
{
14737 cbradney 794
        solidColorsLabel->setShown(visible);
795
        solidColorsLine->setShown(visible);
14736 cbradney 796
        useSolidColorProfileCheckBox->setShown(visible);
797
        solidColorProfileComboBox->setShown(visible);
798
        solidColorRenderingIntentComboBox->setShown(visible);
14737 cbradney 799
        imagesLabel->setShown(visible);
800
        imagesLine->setShown(visible);
14736 cbradney 801
        useImageProfileCheckBox->setShown(visible);
802
        doNotUseEmbeddedImageProfileCheckBox->setShown(visible);
803
        imageProfileComboBox->setShown(visible);
804
        imageRenderingIntentComboBox->setShown(visible);
805
}
15081 cbradney 806
 
14737 cbradney 807
void Prefs_PDFExport::enableSolidsImagesWidgets(bool enabled)
14736 cbradney 808
{
15080 cbradney 809
        //if we want to show/hide instead
810
        //setSolidsImagesWidgetsShown(enabled);
14736 cbradney 811
        useSolidColorProfileCheckBox->setEnabled(enabled);
812
        solidColorProfileComboBox->setEnabled(enabled);
813
        solidColorRenderingIntentComboBox->setEnabled(enabled);
814
        useImageProfileCheckBox->setEnabled(enabled);
815
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(enabled);
816
        imageProfileComboBox->setEnabled(enabled);
817
        imageRenderingIntentComboBox->setEnabled(enabled);
818
}
819
 
14737 cbradney 820
void Prefs_PDFExport::enablePDFXWidgets(bool enabled)
821
{
822
        pdfx3OutputProfileComboBox->setEnabled(enabled);
823
        pdfx3InfoStringLineEdit->setEnabled(enabled);
824
}
14736 cbradney 825
 
14737 cbradney 826
 
14736 cbradney 827
void Prefs_PDFExport::enablePGI()
828
{
829
        bool setter=false;
830
        if (useImageProfileCheckBox->isChecked())
831
                setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
832
        imageProfileComboBox->setEnabled(setter);
833
        imageRenderingIntentComboBox->setEnabled(setter);
834
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(useImageProfileCheckBox->isChecked());
835
}
836
 
837
void Prefs_PDFExport::enablePGI2()
838
{
839
        bool setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
840
        imageProfileComboBox->setEnabled(setter);
841
        imageRenderingIntentComboBox->setEnabled(setter);
842
}
843
 
844
void Prefs_PDFExport::enablePG()
845
{
846
        bool setter = useSolidColorProfileCheckBox->isChecked() ? true : false;
847
 
848
        solidColorProfileComboBox->setEnabled(setter);
849
        solidColorRenderingIntentComboBox->setEnabled(setter);
850
}
851
 
852
void Prefs_PDFExport::enablePDFX(int i)
853
{
854
        includeLayersCheckBox->setEnabled((i == 2) || (i == 5));
15065 cbradney 855
        if (useLayersRadioButton)
856
                useLayersRadioButton->setEnabled((i == 2) || (i == 5));
857
        if (m_doc != 0 && exportingPDF)
14736 cbradney 858
        {
15065 cbradney 859
                int currentEff = effectTypeComboBox->currentIndex();
860
                disconnect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
861
                effectTypeComboBox->clear();
862
                effectTypeComboBox->addItem( tr("No Effect"));
863
                effectTypeComboBox->addItem( tr("Blinds"));
864
                effectTypeComboBox->addItem( tr("Box"));
865
                effectTypeComboBox->addItem( tr("Dissolve"));
866
                effectTypeComboBox->addItem( tr("Glitter"));
867
                effectTypeComboBox->addItem( tr("Split"));
868
                effectTypeComboBox->addItem( tr("Wipe"));
14736 cbradney 869
                if (i == 2)
870
                {
15065 cbradney 871
                        effectTypeComboBox->addItem( tr("Push"));
872
                        effectTypeComboBox->addItem( tr("Cover"));
873
                        effectTypeComboBox->addItem( tr("Uncover"));
874
                        effectTypeComboBox->addItem( tr("Fade"));
875
                        effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 876
                }
877
                else
878
                {
879
                        if (currentEff > 6)
880
                        {
881
                                currentEff = 0;
15065 cbradney 882
                                effectTypeComboBox->setCurrentIndex(0);
14736 cbradney 883
                                SetEffOpts(0);
15065 cbradney 884
                                for (int pg = 0; pg<m_doc->Pages->count(); ++pg)
14736 cbradney 885
                                {
886
                                        if (EffVal[pg].effectType > 6)
887
                                                EffVal[pg].effectType = 0;
888
                                }
889
                        }
890
                        else
15065 cbradney 891
                                effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 892
                }
15065 cbradney 893
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
14736 cbradney 894
        }
15065 cbradney 895
 
14736 cbradney 896
        if (i < 3)  // not PDF/X
897
        {
14737 cbradney 898
                enablePDFXWidgets(false);
14736 cbradney 899
                tabWidget->setTabEnabled(2, true);
900
                outputIntentionComboBox->setEnabled(true);
901
                useImageProfileCheckBox->setEnabled(true);
902
                emit hasInfo();
15065 cbradney 903
                if (m_doc != 0 && exportingPDF)
14736 cbradney 904
                {
15065 cbradney 905
                        enabledEffectsCheckBox->setEnabled(true);
906
                        embedAllButton->setEnabled(true);
907
                        if (embeddedFontsListWidget->count() != 0)
908
                                fromEmbedButton->setEnabled(true);
909
                        toEmbedButton->setEnabled(true);
14736 cbradney 910
                }
15065 cbradney 911
 
14736 cbradney 912
                return;
913
        }
914
        // PDF/X is selected
915
        disconnect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
916
        outputIntentionComboBox->setCurrentIndex(1);
917
        outputIntentionComboBox->setEnabled(false);
918
        enableProfiles(1);
919
        if ((i == 4) || (i == 5)) // X3 or X4, enforcing color profiles on images
920
        {
921
                useImageProfileCheckBox->setChecked(true);
922
                useImageProfileCheckBox->setEnabled(false);
923
        }
15065 cbradney 924
        if (m_doc != 0 && exportingPDF)
14736 cbradney 925
        {
926
//              EmbedFonts->setChecked(true);
927
                EmbedAll();
15065 cbradney 928
                enabledEffectsCheckBox->setChecked(false);
929
                enabledEffectsCheckBox->setEnabled(false);
14736 cbradney 930
//              EmbedFonts->setEnabled(false);
15065 cbradney 931
                fromEmbedButton->setEnabled(false);
932
                toEmbedButton->setEnabled(false);
933
                if (pdfx3InfoStringLineEdit->text().isEmpty())
14736 cbradney 934
                        emit noInfo();
935
                else
936
                        emit hasInfo();
937
        }
938
        enablePGI();
939
        pdfx3OutputProfileComboBox->setEnabled(true);
940
        pdfx3InfoStringLineEdit->setEnabled(true);
941
        tabWidget->setTabEnabled(2, false);
942
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
943
}
14745 cbradney 944
 
945
void Prefs_PDFExport::addPDFVersions(bool addPDFXStrings)
946
{
947
        disconnect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
948
        int i = pdfVersionComboBox->currentIndex();
949
        pdfVersionComboBox->clear();
950
        pdfVersionComboBox->addItem("PDF 1.3 (Acrobat 4)");
951
        pdfVersionComboBox->addItem("PDF 1.4 (Acrobat 5)");
952
        pdfVersionComboBox->addItem("PDF 1.5 (Acrobat 6)");
953
        if (addPDFXStrings)
954
        {
955
                pdfVersionComboBox->addItem("PDF/X-1a");
956
                pdfVersionComboBox->addItem("PDF/X-3");
957
                pdfVersionComboBox->addItem("PDF/X-4");
958
        }
959
        else
960
                i=qMin(i,2);
961
        pdfVersionComboBox->setCurrentIndex(i);
962
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
963
}
15065 cbradney 964
 
965
 
966
void Prefs_PDFExport::enableEffects(bool enabled)
967
{
968
        effectsPageListWidget->setEnabled(enabled);
969
        showPagePreviewsCheckBox->setEnabled(enabled);
970
        displayDurationSpinBox->setEnabled(enabled);
971
        effectDurationSpinBox->setEnabled(enabled);
972
        effectTypeComboBox->setEnabled(enabled);
973
        if (enabled)
974
                SetEffOpts(effectTypeComboBox->currentIndex());
975
        else
976
        {
977
                effectMovingDirectionComboBox->setEnabled(false);
978
                effectInOutComboBox->setEnabled(false);
979
                effectDirectionComboBox->setEnabled(false);
980
                applyEffectToAllPagesPushButton->setEnabled(false);
981
        }
982
}
15081 cbradney 983
 
984
void Prefs_PDFExport::EmbedAll()
985
{
986
        embeddedFontsListWidget->clear();
987
        FontsToEmbed.clear();
988
        outlinedFontsListWidget->clear();
989
        FontsToOutline.clear();
990
        fromEmbedButton->setEnabled(false);
991
        toEmbedButton->setEnabled(false);
992
        toOutlineButton->setEnabled(false);
993
        fromOutlineButton->setEnabled(false);
994
        for (int a=0; a < availableFontsListWidget->count(); ++a)
995
        {
996
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
997
                {
998
                        if (!AllFonts[availableFontsListWidget->item(a)->text()].subset())
999
                        {
1000
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1001
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1002
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1003
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1004
                        }
1005
                        else
1006
                        {
1007
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1008
                                {
1009
                                        FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1010
                                        embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1011
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1012
                                }
1013
                                else
1014
                                {
1015
                                        FontsToOutline.append(availableFontsListWidget->item(a)->text());
1016
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1017
                                }
1018
                        }
1019
                }
1020
        }
1021
}
1022
 
1023
void Prefs_PDFExport::OutlineAll()
1024
{
1025
        embeddedFontsListWidget->clear();
1026
        FontsToEmbed.clear();
1027
        outlinedFontsListWidget->clear();
1028
        FontsToOutline.clear();
1029
        fromEmbedButton->setEnabled(false);
1030
        toEmbedButton->setEnabled(false);
1031
        toOutlineButton->setEnabled(false);
1032
        fromOutlineButton->setEnabled(false);
1033
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1034
        {
1035
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
1036
                {
1037
                        if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1038
                        {
1039
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1040
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1041
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1042
                        }
1043
                        else
1044
                        {
1045
                                FontsToOutline.append(availableFontsListWidget->item(a)->text());
1046
                                outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1047
                        }
1048
                }
1049
        }
1050
}
1051
 
1052
void Prefs_PDFExport::doDocBleeds()
1053
{
1054
        if (useDocumentBleedsCheckBox->isChecked())
1055
        {
1056
                Opts.bleeds=bleedsWidget->margins();
1057
                bleedsWidget->setNewValues(m_doc->bleedsVal());
1058
                bleedsWidget->setEnabled(false);
1059
        }
1060
        else
1061
        {
1062
                bleedsWidget->setNewValues(Opts.bleeds);
1063
                bleedsWidget->setEnabled(true);
1064
        }
1065
}
1066
 
1067
 
1068
void Prefs_PDFExport::SetEffOpts(int nr)
1069
{
1070
        QStandardItem* si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1071
        if (si) si->setSelectable(false);
1072
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1073
        if (si) si->setSelectable(false);
1074
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1075
        if (si) si->setSelectable(false);
1076
        switch (nr)
1077
        {
1078
        case 0:
1079
        case 3:
1080
        case 10:
1081
                effectMovingDirectionComboBox->setEnabled(false);
1082
                effectInOutComboBox->setEnabled(false);
1083
                effectDirectionComboBox->setEnabled(false);
1084
                break;
1085
        case 1:
1086
                effectMovingDirectionComboBox->setEnabled(true);
1087
                effectInOutComboBox->setEnabled(false);
1088
                effectDirectionComboBox->setEnabled(false);
1089
                break;
1090
        case 2:
1091
                effectMovingDirectionComboBox->setEnabled(false);
1092
                effectInOutComboBox->setEnabled(true);
1093
                effectDirectionComboBox->setEnabled(false);
1094
                break;
1095
        case 4:
1096
        case 6:
1097
        case 7:
1098
        case 8:
1099
        case 9:
1100
                effectMovingDirectionComboBox->setEnabled(false);
1101
                effectInOutComboBox->setEnabled(false);
1102
                effectDirectionComboBox->setEnabled(true);
1103
                if (nr == 6)
1104
                {
1105
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1106
                        if (si) si->setSelectable(true);
1107
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1108
                        if (si) si->setSelectable(true);
1109
                }
1110
                else
1111
                {
1112
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1113
                        if (si) si->setSelectable(true);
1114
                }
1115
                break;
1116
        case 5:
1117
                effectMovingDirectionComboBox->setEnabled(true);
1118
                effectInOutComboBox->setEnabled(true);
1119
                effectDirectionComboBox->setEnabled(false);
1120
                break;
1121
        }
1122
}