Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
19828 jghali 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
 
8
#include <QStandardItem>
9
#include <QAbstractItemView>
10
 
11
#include "ui/prefs_pdfexport.h"
12
#include "ui/createrange.h"
13
#include "prefsstructs.h"
14
 
15
#include "scribuscore.h"
16
#include "scribusdoc.h"
17
#include "scribusview.h"
18
#include "ui/scrspinbox.h"
19
#include "units.h"
20
#include "util.h"
21
#include "util_icon.h"
22
 
23
Prefs_PDFExport::Prefs_PDFExport(QWidget* parent, ScribusDoc* doc)
24
        : Prefs_Pane(parent),
25
        cmsEnabled(false),
26
        m_doc(doc),
27
        exportingPDF(false)
28
{
29
        setupUi(this);
30
        pageMirrorHorizontalToolButton->setIcon(QIcon(loadIcon("16/flip-object-horizontal.png")));
31
        pageMirrorVerticalToolButton->setIcon(QIcon(loadIcon("16/flip-object-vertical.png")));
32
        unitChange(0);
33
        languageChange();
34
 
35
        connect(exportChosenPagesRadioButton, SIGNAL(toggled(bool)), this, SLOT(enableRangeControls(bool)));
36
        connect(exportRangeMorePushButton, SIGNAL(clicked()), this, SLOT(createPageNumberRange()));
37
        connect(maxResolutionLimitCheckBox, SIGNAL(clicked()), this, SLOT(setMaximumResolution()));
38
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
39
        connect(useSolidColorProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePG()));
40
        connect(useImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI()));
41
        connect(doNotUseEmbeddedImageProfileCheckBox, SIGNAL(clicked()), this, SLOT(enablePGI2()));
42
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
43
        connect(useEncryptionCheckBox, SIGNAL(clicked(bool)), this, SLOT(enableSecurityControls(bool)));
44
        connect(useCustomRenderingCheckBox, SIGNAL(clicked()), this, SLOT(enableLPI2()));
45
        connect(customRenderingColorComboBox, SIGNAL(activated(int)), this, SLOT(SelLPIcol(int)));
46
 
47
        rotationComboBox->setToolTip( "<qt>" + tr( "Automatically rotate the exported pages" ) + "</qt>" );
48
        exportAllPagesRadioButton->setToolTip( "<qt>" + tr( "Export all pages to PDF" ) + "</qt>" );
49
        exportChosenPagesRadioButton->setToolTip( "<qt>" + tr( "Export a range of pages to PDF" ) );
50
        exportPageListLineEdit->setToolTip( "<qt>" + tr( "Insert a comma separated list of tokens where "
51
                                                                                        "a token can be * for all the pages, 1-5 for "
52
                                                                                        "a range of pages or a single page number.") + "</qt>" );
53
        exportRangeMorePushButton->setToolTip( "<qt>" + tr( "Create a range of pages" ) + "</qt>");
54
 
55
        pdfVersionComboBox->setToolTip( "<qt>" + tr( "Determines the PDF compatibility.<br/>The default is <b>PDF 1.3</b> which gives the widest compatibility.<br/>Choose <b>PDF 1.4</b> if your file uses features such as transparency or you require 128 bit encryption.<br/><b>PDF 1.5</b> is necessary when you wish to preserve objects in separate layers within the PDF.<br/><b>PDF/X-3</b> is for exporting the PDF when you want color managed RGB for commercial printing and is selectable when you have activated color management. Use only when advised by your printer or in some cases printing to a 4 color digital color laser printer.<br/><b>PDF/X-1a</b> is for blind exchange with colors strictly specified in CMYK or spot colors.<br/><b>PDF/X-4</b> is an extension of PDF/X-3 to support transparancy and layering." ) + "</qt>");
56
        pageBindingComboBox->setToolTip( "<qt>" + tr( "Determines the binding of pages in the PDF. Unless you know you need to change it leave the default choice - Left." ) + "</qt>" );
57
        generateThumbnailsCheckBox->setToolTip( "<qt>" + tr( "Generates thumbnails of each page in the PDF. Some viewers can use the thumbnails for navigation." ) + "</qt>" );
58
        saveLinkedTextFramesAsArticlesCheckBox->setToolTip( "<qt>" + tr( "Generate PDF Articles, which is useful for navigating linked articles in a PDF." ) + "</qt>" );
59
        includeLayersCheckBox->setToolTip( "<qt>" + tr( "Layers in your document are exported to the PDF Only available if PDF 1.5 is chosen." ) + "</qt>" );
60
        includeBookmarksCheckBox->setToolTip( "<qt>" + tr( "Embed the bookmarks you created in your document. These are useful for navigating long PDF documents." ) + "</qt>" );
61
        epsExportResolutionSpinBox->setToolTip( "<qt>" + tr( "Export resolution of text and vector graphics. This does not affect the resolution of bitmap images like photos." ) + "</qt>" );
62
        embedPDFAndEPSFilesCheckBox->setToolTip( "<qt>" + tr( "Export PDFs in image frames as embedded PDFs. This does *not* yet take care of colorspaces, so you should know what you are doing before setting this to 'true'." ) + "</qt>" );
63
        compressTextAndVectorGraphicsCheckBox->setToolTip( "<qt>" + tr( "Enables lossless compression of text and graphics. Unless you have a reason, leave this checked. This reduces PDF file size." ) + "</qt>" );
64
        imageCompressionMethodComboBox->setToolTip( "<qt>" + tr( "Method of compression to use for images. Automatic allows Scribus to choose the best method. ZIP is lossless and good for images with solid colors. JPEG is better at creating smaller PDF files which have many photos (with slight image quality loss possible). Leave it set to Automatic unless you have a need for special compression options." ) + "</qt>");
65
        imageCompressionQualityComboBox->setToolTip( "<qt>" + tr( "Compression quality levels for lossy compression methods: Minimum (25%), Low (50%), Medium (75%), High (85%), Maximum (95%). Note that a quality level does not directly determine the size of the resulting image - both size and quality loss vary from image to image at any given quality level. Even with Maximum selected, there is always some quality loss with jpeg." ) + "</qt>");
66
        maxResolutionLimitCheckBox->setToolTip( "<qt>" + tr( "Limits the resolution of your bitmap images to the selected DPI. Images with a lower resolution will be left untouched. Leaving this unchecked will render them at their native resolution. Enabling this will increase memory usage and slow down export." ) + "</qt>" );
67
        maxExportResolutionSpinBox->setToolTip( "<qt>" + tr( "DPI (Dots Per Inch) for image export.") + "</qt>" );
68
        useEncryptionCheckBox->setToolTip( "<qt>" + tr( "Enable the security features in your exported PDF. If you selected PDF 1.3, the PDF will be protected by 40 bit encryption. If you selected PDF 1.4, the PDF will be protected by 128 bit encryption. Disclaimer: PDF encryption is not as reliable as GPG or PGP encryption and does have some limitations." ) + "</qt>" );
69
        passwordOwnerLineEdit->setToolTip( "<qt>" + tr( "Choose an owner password which enables or disables all the security features in your exported PDF" ) + "</qt>" );
70
        passwordUserLineEdit->setToolTip( "<qt>" + tr( "Choose a password for users to be able to read your PDF." ) + "</qt>" );
71
        allowPrintingCheckBox->setToolTip( "<qt>" + tr( "Allow printing of the PDF. If un-checked, printing is prevented. " ) + "</qt>" );
72
        allowChangingCheckBox->setToolTip( "<qt>" + tr( "Allow modifying of the PDF. If un-checked, modifying the PDF is prevented." ) + "</qt>" );
73
        allowCopyingCheckBox->setToolTip( "<qt>" + tr( "Allow copying of text or graphics from the PDF. If unchecked, text and graphics cannot be copied." ) + "</qt>" );
74
        allowAnnotatingCheckBox->setToolTip( "<qt>" + tr( "Allow adding annotations and fields to the PDF. If unchecked, editing annotations and fields is prevented." ) + "</qt>" );
75
        outputIntentionComboBox->setToolTip( "<qt>" + tr( "Color model for the output of your PDF. Choose Screen/Web for PDFs which are used for screen display and for printing on typical inkjets. Choose Printer when printing to a true 4 color CMYK printer. Choose Grayscale when you want a grey scale PDF." ) + "</qt>" );
76
        useCustomRenderingCheckBox->setToolTip( "<qt>" + tr( "This is an advanced setting which is not enabled by default. This should only be enabled when specifically requested by your printer and they have given you the exact details needed. Otherwise, your exported PDF may not print properly and is truly not portable across systems." ) + "</qt>" );
77
        useSolidColorProfileCheckBox->setToolTip( "<qt>" + tr( "Embed a color profile for solid colors" ) + "</qt>" );
78
        solidColorProfileComboBox->setToolTip( "<qt>" + tr( "Color profile for solid colors" ) + "</qt>" );
79
        solidColorRenderingIntentComboBox->setToolTip( "<qt>" + tr( "Rendering intent for solid colors" ) + "</qt>" );
80
        useImageProfileCheckBox->setToolTip( "<qt>" + tr( "Embed a color profile for images" ) + "</qt>" );
81
        doNotUseEmbeddedImageProfileCheckBox->setToolTip( "<qt>" + tr( "Do not use color profiles that are embedded in source images" ) + "</qt>" );
82
        imageProfileComboBox->setToolTip( "<qt>" + tr( "Color profile for images" ) + "</qt>" );
83
        imageRenderingIntentComboBox->setToolTip( "<qt>" + tr( "Rendering intent for images" ) + "</qt>" );
84
        pageMirrorHorizontalToolButton->setToolTip( "<qt>" + tr( "Mirror Page(s) horizontally" ) + "</qt>" );
85
        pageMirrorVerticalToolButton->setToolTip( "<qt>" + tr( "Mirror Page(s) vertically" ) + "</qt>" );
86
        convertSpotsToProcessCheckBox->setToolTip("<qt>" + tr( "Enables Spot Colors to be converted to composite colors. Unless you are planning to print spot colors at a commercial printer, this is probably best left enabled." ) + "</qt>");
87
        clipToPrinterMarginsCheckBox->setToolTip( "<qt>" + tr( "Do not show objects outside the margins in the exported file" ) + "</qt>" );
88
        //PrePress tab
89
        printCropMarksCheckBox->setToolTip( "<qt>" + tr( "Creates crop marks in the PDF indicating where the paper should be cut or trimmed after printing" ) + "</qt>" );
90
        printBleedMarksCheckBox->setToolTip( "<qt>" + tr( "This creates bleed marks which are indicated by  _ . _ and show the bleed limit" ) + "</qt>" );
91
        printRegistrationMarksCheckBox->setToolTip( "<qt>" + tr( "Add registration marks to each separation" ) + "</qt>" );
92
        printColorBarsCheckBox->setToolTip( "<qt>" + tr( "Add color calibration bars" ) + "</qt>" );
93
        printPageInfoCheckBox->setToolTip( "<qt>" + tr( "Add document information which includes the document title and page numbers" ) + "</qt>" );
94
        markLengthSpinBox->setToolTip( "<qt>" + tr( "Length of crop marks" ) + "</qt>" );
95
        markOffsetSpinBox->setToolTip( "<qt>" + tr( "Indicate the distance offset for the registration marks" ) + "</qt>" );
96
//      BleedTop->setToolTip( "<qt>" + tr( "Distance for bleed from the top of the physical page" ) + "</qt>" );
97
//      BleedBottom->setToolTip( "<qt>" + tr( "Distance for bleed from the bottom of the physical page" ) + "</qt>" );
98
//      BleedLeft->setToolTip( "<qt>" + tr( "Distance for bleed from the left of the physical page" ) + "</qt>" );
99
//      BleedRight->setToolTip( "<qt>" + tr( "Distance for bleed from the right of the physical page" )  + "</qt>");
100
        useDocumentBleedsCheckBox->setToolTip( "<qt>" + tr( "Use the existing bleed settings from the document preferences" ) + "</qt>" );
101
        pdfx3OutputProfileComboBox->setToolTip( "<qt>" + tr( "Output profile for printing. If possible, get some guidance from your printer on profile selection." ) + "</qt>" );
102
        pdfx3InfoStringLineEdit->setToolTip( "<qt>" + tr( "Mandatory string for PDF/X or the PDF will fail PDF/X conformance. We recommend you use the title of the document." ) + "</qt>" );
103
 
104
}
105
 
106
Prefs_PDFExport::~Prefs_PDFExport()
107
{
108
}
109
 
110
QStringList Prefs_PDFExport::fontsToEmbed()
111
{
112
        QStringList fonts;
113
        for (int i = 0; i < embeddedFontsListWidget->count(); ++i)
114
                fonts.append(embeddedFontsListWidget->item(i)->text());
115
        return fonts;
116
}
117
 
118
QStringList Prefs_PDFExport::fontsToOutline()
119
{
120
        QStringList fonts;
121
        for (int i = 0; i < outlinedFontsListWidget->count(); ++i)
122
                fonts.append(outlinedFontsListWidget->item(i)->text());
123
        return fonts;
124
}
125
 
126
void Prefs_PDFExport::unitChange(int unitIndex)
127
{
128
        unitRatio = unitGetRatioFromIndex(unitIndex);
129
 
130
        markLengthSpinBox->setNewUnit(unitIndex);
131
        markLengthSpinBox->setMinimum(0);
132
        markLengthSpinBox->setMaximum(3000 * unitRatio);
133
 
134
        markOffsetSpinBox->setNewUnit(unitIndex);
135
        markOffsetSpinBox->setMinimum(0);
136
        markOffsetSpinBox->setMaximum(3000 * unitRatio);
137
 
138
        bleedsWidget->setNewUnit(unitIndex);
139
}
140
 
141
void Prefs_PDFExport::languageChange()
142
{
143
        int i=0;
144
        i = rotationComboBox->currentIndex();
145
        rotationComboBox->clear();
146
        rotationComboBox->addItem(QString::fromUtf8("0 °"));
147
        rotationComboBox->addItem(QString::fromUtf8("90 °"));
148
        rotationComboBox->addItem(QString::fromUtf8("180 °"));
149
        rotationComboBox->addItem(QString::fromUtf8("270 °"));
150
        rotationComboBox->setCurrentIndex(i);
151
 
152
        i = imageCompressionMethodComboBox->currentIndex();
153
        imageCompressionMethodComboBox->clear();
154
        imageCompressionMethodComboBox->addItem( tr( "Automatic" ) );
155
        imageCompressionMethodComboBox->addItem( tr( "Lossy - JPEG" ) );
156
        imageCompressionMethodComboBox->addItem( tr( "Lossless - Zip" ) );
157
        imageCompressionMethodComboBox->addItem( tr( "None" ) );
158
        imageCompressionMethodComboBox->setCurrentIndex(i);
159
 
160
        i = imageCompressionQualityComboBox->currentIndex();
161
        imageCompressionQualityComboBox->clear();
162
        imageCompressionQualityComboBox->addItem( tr( "Maximum" ) );
163
        imageCompressionQualityComboBox->addItem( tr( "High" ) );
164
        imageCompressionQualityComboBox->addItem( tr( "Medium" ) );
165
        imageCompressionQualityComboBox->addItem( tr( "Low" ) );
166
        imageCompressionQualityComboBox->addItem( tr( "Minimum" ) );
167
        imageCompressionQualityComboBox->setCurrentIndex(i);
168
 
169
        addPDFVersions(true);//if (cmsEnabled)// && (!PDFXProfiles.isEmpty()))
170
 
171
        i = pageBindingComboBox->currentIndex();
172
        pageBindingComboBox->clear();
173
        pageBindingComboBox->addItem( tr("Left Margin"));
174
        pageBindingComboBox->addItem( tr("Right Margin"));
175
        pageBindingComboBox->setCurrentIndex(i);
176
 
177
        i = outputIntentionComboBox->currentIndex();
178
        outputIntentionComboBox->clear();
179
        outputIntentionComboBox->addItem( tr( "Screen / Web" ) );
180
        outputIntentionComboBox->addItem( tr( "Printer" ) );
181
        outputIntentionComboBox->addItem( tr( "Grayscale" ) );
182
        outputIntentionComboBox->setCurrentIndex(i);
183
 
184
        i = customRenderingSpotFunctionComboBox->currentIndex();
185
        customRenderingSpotFunctionComboBox->clear();
186
        customRenderingSpotFunctionComboBox->addItem( tr( "Simple Dot" ) );
187
        customRenderingSpotFunctionComboBox->addItem( tr( "Line" ) );
188
        customRenderingSpotFunctionComboBox->addItem( tr( "Round" ) );
189
        customRenderingSpotFunctionComboBox->addItem( tr( "Ellipse" ) );
190
        customRenderingSpotFunctionComboBox->setCurrentIndex(i);
191
        SelLPIcolor = customRenderingColorComboBox->currentText();
192
 
193
        i = solidColorRenderingIntentComboBox->currentIndex();
194
        int j=imageRenderingIntentComboBox->currentIndex();
195
        solidColorRenderingIntentComboBox->clear();
196
        imageRenderingIntentComboBox->clear();
197
        QString tmp_ip[] = { tr("Perceptual"), tr("Relative Colorimetric"), tr("Saturation"), tr("Absolute Colorimetric")};
198
        size_t ar_ip = sizeof(tmp_ip) / sizeof(*tmp_ip);
199
        for (uint a = 0; a < ar_ip; ++a)
200
                solidColorRenderingIntentComboBox->addItem(tmp_ip[a]);
201
        for (uint a = 0; a < ar_ip; ++a)
202
                imageRenderingIntentComboBox->addItem(tmp_ip[a]);
203
        solidColorRenderingIntentComboBox->setCurrentIndex(i);
204
        imageRenderingIntentComboBox->setCurrentIndex(j);
205
}
206
 
207
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData)
208
{
209
}
210
 
211
void Prefs_PDFExport::restoreDefaults(struct ApplicationPrefs *prefsData, const ProfilesL & PDFXProfiles, bool exporting)
212
{
213
        exportingPDF=exporting;
214
        enablePDFExportTabs(exportingPDF);
215
        AllFonts=prefsData->fontPrefs.AvailFonts;
216
        int unitIndex = prefsData->docSetupPrefs.docUnitIndex;
217
        unitRatio = unitGetRatioFromIndex(unitIndex);
218
        unitChange(unitIndex);
219
        Opts=prefsData->pdfPrefs;
220
        defaultSolidColorRGBProfile=prefsData->colorPrefs.DCMSset.DefaultSolidColorRGBProfile;
221
        defaultPrinterProfile=prefsData->colorPrefs.DCMSset.DefaultPrinterProfile;
222
        exportAllPagesRadioButton->setChecked(true);
223
        enableRangeControls(false);
224
        rotationComboBox->setCurrentIndex(prefsData->pdfPrefs.RotateDeg / 90);
225
        pageMirrorHorizontalToolButton->setChecked(prefsData->pdfPrefs.MirrorH);
226
        pageMirrorVerticalToolButton->setChecked(prefsData->pdfPrefs.MirrorV);
227
        clipToPrinterMarginsCheckBox->setChecked(prefsData->pdfPrefs.doClip);
228
        bool cmsUse = m_doc ? (ScCore->haveCMS() && m_doc->HasCMS) : false;
229
        int newCMSIndex=0;
230
        if (cmsUse)
231
        {
232
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X1a)
233
                        newCMSIndex=3;
234
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X3)
235
                        newCMSIndex=4;
236
                if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4)
237
                        newCMSIndex=5;
238
        }
239
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_13)
240
                newCMSIndex=0;
241
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_14)
242
                newCMSIndex=1;
243
        if (prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15)
244
                newCMSIndex=2;
245
        pdfVersionComboBox->setCurrentIndex(newCMSIndex);
246
        pageBindingComboBox->setCurrentIndex(prefsData->pdfPrefs.Binding);
247
        generateThumbnailsCheckBox->setChecked(prefsData->pdfPrefs.Thumbnails);
248
        saveLinkedTextFramesAsArticlesCheckBox->setChecked(prefsData->pdfPrefs.Articles);
249
        includeBookmarksCheckBox->setChecked(prefsData->pdfPrefs.Bookmarks);
250
        includeLayersCheckBox->setChecked(prefsData->pdfPrefs.useLayers);
251
        includeLayersCheckBox->setEnabled(prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_15 || prefsData->pdfPrefs.Version == PDFOptions::PDFVersion_X4);
252
 
253
        epsExportResolutionSpinBox->setValue(prefsData->pdfPrefs.Resolution);
254
        embedPDFAndEPSFilesCheckBox->setChecked(prefsData->pdfPrefs.embedPDF);
255
        compressTextAndVectorGraphicsCheckBox->setChecked( prefsData->pdfPrefs.Compress );
256
        imageCompressionMethodComboBox->setCurrentIndex(prefsData->pdfPrefs.CompressMethod);
257
        imageCompressionQualityComboBox->setCurrentIndex(prefsData->pdfPrefs.Quality);
258
        maxResolutionLimitCheckBox->setChecked(prefsData->pdfPrefs.RecalcPic);
259
        maxExportResolutionSpinBox->setValue(prefsData->pdfPrefs.PicRes);
260
        maxExportResolutionSpinBox->setEnabled(prefsData->pdfPrefs.RecalcPic);
261
 
262
        if (m_doc != 0 && exportingPDF)
263
        {
264
//      Build a list of all Fonts used in Annotations;
265
                PageItem *pgit;
266
                QList<PageItem*> allItems;
267
                for (QHash<int, PageItem*>::iterator it = m_doc->FrameItems.begin(); it != m_doc->FrameItems.end(); ++it)
268
                {
269
                        PageItem *currItem = it.value();
270
                        if (currItem->isGroup())
271
                                allItems = currItem->getItemList();
272
                        else
273
                                allItems.append(currItem);
274
                        for (int ii = 0; ii < allItems.count(); ii++)
275
                        {
276
                                pgit = allItems.at(ii);
277
                                if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
278
                                        AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
279
                        }
280
                        allItems.clear();
281
                }
282
                for (int a = 0; a < m_doc->MasterItems.count(); ++a)
283
                {
284
                        PageItem *currItem = m_doc->MasterItems.at(a);
285
                        if (currItem->isGroup())
286
                                allItems = currItem->getItemList();
287
                        else
288
                                allItems.append(currItem);
289
                        for (int ii = 0; ii < allItems.count(); ii++)
290
                        {
291
                                pgit = allItems.at(ii);
292
                                if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
293
                                        AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
294
                        }
295
                        allItems.clear();
296
                }
297
                for (int a = 0; a < m_doc->DocItems.count(); ++a)
298
                {
299
                        PageItem *currItem = m_doc->DocItems.at(a);
300
                        if (currItem->isGroup())
301
                                allItems = currItem->getItemList();
302
                        else
303
                                allItems.append(currItem);
304
                        for (int ii = 0; ii < allItems.count(); ii++)
305
                        {
306
                                pgit = allItems.at(ii);
307
                                if (((pgit->itemType() == PageItem::TextFrame) || (pgit->itemType() == PageItem::PathText)) && (pgit->isAnnotation()) && (pgit->itemText.length() > 0))
308
                                        AnnotationFonts.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), "");
309
                        }
310
                        allItems.clear();
311
                }
312
                QMap<QString,int>::const_iterator it;
313
                availableFontsListWidget->clear();
314
                for (it = m_doc->usedFonts().constBegin(); it != m_doc->usedFonts().constEnd(); ++it)
315
                {
316
                        if (AllFonts[it.key()].isReplacement())
317
                                new QListWidgetItem( QIcon(loadIcon("font_subst16.png")), it.key(), availableFontsListWidget );
318
                        else if (AllFonts[it.key()].type() == ScFace::TYPE1)
319
                                new QListWidgetItem( QIcon(loadIcon("font_type1_16.png")), it.key(), availableFontsListWidget );
320
                        else if (AllFonts[it.key()].type() == ScFace::TTF)
321
                                new QListWidgetItem( QIcon(loadIcon("font_truetype16.png")), it.key(), availableFontsListWidget );
322
                        else if (AllFonts[it.key()].type() == ScFace::OTF)
323
                                new QListWidgetItem( QIcon(loadIcon("font_otf16.png")), it.key(), availableFontsListWidget );
324
                }
325
                toEmbedButton->setEnabled(false);
326
                fromEmbedButton->setEnabled(false);
327
                toOutlineButton->setEnabled(false);
328
                fromOutlineButton->setEnabled(false);
329
                if ((Opts.EmbedList.count() == 0) && (Opts.SubsetList.count() == 0) && (Opts.firstUse))
330
                        EmbedAll();
331
                else
332
                {
333
                        embeddedFontsListWidget->clear();
334
                        for (int fe = 0; fe < Opts.EmbedList.count(); ++fe)
335
                                embeddedFontsListWidget->addItem(Opts.EmbedList[fe]);
336
                        if (Opts.SubsetList.count() != 0)
337
                        {
338
                                outlinedFontsListWidget->clear();
339
                                for (int fe = 0; fe < Opts.SubsetList.count(); ++fe)
340
                                        outlinedFontsListWidget->addItem(Opts.SubsetList[fe]);
341
                        }
342
                        QMap<QString, QString>::Iterator itAnn;
343
                        for (itAnn = AnnotationFonts.begin(); itAnn != AnnotationFonts.end(); ++itAnn)
344
                        {
345
                                QList<QListWidgetItem *> itEmbed = embeddedFontsListWidget->findItems(itAnn.key(), Qt::MatchExactly);
346
                                if (itEmbed.count() == 0)
347
                                {
348
                                        embeddedFontsListWidget->addItem(itAnn.key());
349
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
350
                                }
351
                                QList<QListWidgetItem *> itOutline = outlinedFontsListWidget->findItems(itAnn.key(), Qt::MatchExactly);
352
                                for (int itOut = 0; itOut < itOutline.count(); ++itOut)
353
                                {
354
                                        QListWidgetItem* item = itOutline[itOut];
355
                                        delete outlinedFontsListWidget->takeItem(outlinedFontsListWidget->row(item));
356
                                }
357
                        }
358
                }
359
                enabledEffectsCheckBox->setChecked(Opts.PresentMode);
360
                showPagePreviewsCheckBox->setChecked(false);
361
                effectsPageListWidget->clear();
362
                QString tmp;
363
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
364
                {
365
                        effectsPageListWidget->addItem( tr("Page")+" "+tmp.setNum(pg+1));
366
                        EffVal.append(m_doc->Pages->at(pg)->PresentVals);
367
                }
368
                displayDurationSpinBox->setValue(EffVal[0].pageViewDuration);
369
                effectDurationSpinBox->setValue(EffVal[0].pageEffectDuration);
370
                bool df = true;
371
                if ((Opts.displayBookmarks) || (Opts.displayFullscreen) || (Opts.displayLayers) || (Opts.displayThumbs))
372
                        df = false;
373
                if (df)
374
                        useViewerDefaultsRadioButton->setChecked(df);
375
                useFullScreenRadioButton->setChecked(Opts.displayFullscreen);
376
                useBookmarksRadioButton->setChecked(Opts.displayBookmarks);
377
                useThumbnailsRadioButton->setChecked(Opts.displayThumbs);
378
                useLayersRadioButton->setChecked(Opts.displayLayers);
379
                hideViewerToolBarCheckBox->setChecked(Opts.hideToolBar);
380
                hideViewerMenuBarCheckBox->setChecked(Opts.hideMenuBar);
381
                fitViewerWindowCheckBox->setChecked(Opts.fitWindow);
382
                QMap<QString,QString>::Iterator itja;
383
                startupJavascriptComboBox->clear();
384
                startupJavascriptComboBox->addItem( tr("No Script"));
385
                for (itja = m_doc->JavaScripts.begin(); itja != m_doc->JavaScripts.end(); ++itja)
386
                        startupJavascriptComboBox->addItem(itja.key());
387
                if (m_doc->JavaScripts.contains(Opts.openAction))
388
                        setCurrentComboItem(startupJavascriptComboBox, Opts.openAction);
389
                if (Opts.PageLayout == PDFOptions::SinglePage)
390
                        singlePageRadioButton->setChecked(true);
391
                else if (Opts.PageLayout == PDFOptions::OneColumn)
392
                        continuousPagesRadioButton->setChecked(true);
393
                else if (Opts.PageLayout == PDFOptions::TwoColumnLeft)
394
                        doublePageLeftRadioButton->setChecked(true);
395
                else if (Opts.PageLayout == PDFOptions::TwoColumnRight)
396
                        doublePageRightRadioButton->setChecked(true);
397
                if ((Opts.Version == PDFOptions::PDFVersion_15) || (Opts.Version == PDFOptions::PDFVersion_X4))
398
                        useLayersRadioButton->setEnabled(true);
399
                else
400
                        useLayersRadioButton->setEnabled(false);
401
        }
402
 
403
        useEncryptionCheckBox->setChecked( prefsData->pdfPrefs.Encrypt );
404
        passwordOwnerLineEdit->setText(prefsData->pdfPrefs.PassOwner);
405
        passwordUserLineEdit->setText(prefsData->pdfPrefs.PassUser);
406
        allowPrintingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 4 );
407
        allowChangingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 8 );
408
        allowCopyingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 16 );
409
        allowAnnotatingCheckBox->setChecked( prefsData->pdfPrefs.Permissions & 32 );
410
        enableSecurityControls(prefsData->pdfPrefs.Encrypt);
411
 
412
        if (prefsData->pdfPrefs.UseRGB)
413
                outputIntentionComboBox->setCurrentIndex(0);
414
        else
415
        {
416
                if (prefsData->pdfPrefs.isGrayscale)
417
                        outputIntentionComboBox->setCurrentIndex(2);
418
                else
419
                        outputIntentionComboBox->setCurrentIndex(1);
420
        }
421
        convertSpotsToProcessCheckBox->setChecked(!prefsData->pdfPrefs.UseSpotColors);
422
 
423
        bleedsWidget->setup(prefsData->pdfPrefs.bleeds, prefsData->docSetupPrefs.pagePositioning, prefsData->docSetupPrefs.docUnitIndex, false, false);
424
        bleedsWidget->setPageWidth(prefsData->docSetupPrefs.pageWidth);
425
        bleedsWidget->setPageHeight(prefsData->docSetupPrefs.pageHeight);
426
        bleedsWidget->setPageSize(prefsData->docSetupPrefs.pageSize);
427
        bleedsWidget->setMarginPreset(prefsData->docSetupPrefs.marginPreset);
428
//
429
        useCustomRenderingCheckBox->setChecked(prefsData->pdfPrefs.UseLPI);
430
        QMap<QString,LPIData>::Iterator itlp;
431
        customRenderingColorComboBox->clear();
432
        for (itlp = prefsData->pdfPrefs.LPISettings.begin(); itlp != prefsData->pdfPrefs.LPISettings.end(); ++itlp)
433
                customRenderingColorComboBox->addItem( itlp.key() );
434
        customRenderingColorComboBox->setCurrentIndex(0);
435
 
436
        customRenderingFrequencySpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Frequency);
437
        customRenderingAngleSpinBox->setValue(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].Angle);
438
        customRenderingSpotFunctionComboBox->setCurrentIndex(prefsData->pdfPrefs.LPISettings[customRenderingColorComboBox->currentText()].SpotFunc);
439
        useSolidColorProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles);
440
        useImageProfileCheckBox->setChecked(prefsData->pdfPrefs.UseProfiles2);
441
        doNotUseEmbeddedImageProfileCheckBox->setChecked(prefsData->pdfPrefs.EmbeddedI);
442
        if ((prefsData->pdfPrefs.UseRGB) || (prefsData->pdfPrefs.isGrayscale))
443
        {
444
                //enableSolidsImagesWidgets(false);
445
                enableProfiles(0);
446
        }
447
        else
448
                enableProfiles(1);
449
        enablePG();
450
        enablePGI();
451
        QString tp(prefsData->pdfPrefs.SolidProf);
452
        if (!ScCore->InputProfiles.contains(tp))
453
        {
454
                if (m_doc != 0 && exportingPDF)
455
                        tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
456
                else
457
                        tp = defaultSolidColorRGBProfile;
458
        }
459
        ProfilesL::Iterator itp;
460
        ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
461
        solidColorProfileComboBox->clear();
462
        for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
463
        {
464
                solidColorProfileComboBox->addItem(itp.key());
465
                if (itp.key() == tp)
466
                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
467
        }
468
        int solidIntent = Opts.Intent;
469
        if (Opts.Intent < 0)
470
                solidIntent = 1;
471
        solidColorRenderingIntentComboBox->setCurrentIndex(solidIntent);
472
        QString tp1 = Opts.ImageProf;
473
        if (!ScCore->InputProfiles.contains(tp1))
474
        {
475
                if (m_doc != 0 && exportingPDF)
476
                        tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
477
                else
478
                        tp1 = defaultSolidColorRGBProfile;
479
        }
480
        ProfilesL::Iterator itp2;
481
        ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
482
        imageProfileComboBox->clear();
483
        for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
484
        {
485
                imageProfileComboBox->addItem(itp2.key());
486
                if (itp2.key() == tp1)
487
                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
488
        }
489
        int imageIntent = Opts.Intent2;
490
        if (imageIntent < 0)
491
                imageIntent = 0;
492
        imageRenderingIntentComboBox->setCurrentIndex(imageIntent);
493
        if (!cmsUse)
494
        {
495
                //Disabling vis hiding
496
                //setSolidsImagesWidgetsShown(false);
497
                enableSolidsImagesWidgets(false);
498
        }
499
 
500
        ProfilesL::const_iterator itp3;
501
        QString tp3(Opts.PrintProf);
502
        if (!PDFXProfiles.contains(tp3))
503
        {
504
                if (m_doc != 0 && exportingPDF)
505
                        tp3 = m_doc->cmsSettings().DefaultPrinterProfile;
506
                else
507
                        tp3 = defaultPrinterProfile;
508
        }
509
        pdfx3OutputProfileComboBox->clear();
510
        for (itp3 = PDFXProfiles.constBegin(); itp3 != PDFXProfiles.constEnd(); ++itp3)
511
        {
512
                pdfx3OutputProfileComboBox->addItem(itp3.key());
513
                if (itp3.key() == tp3)
514
                        pdfx3OutputProfileComboBox->setCurrentIndex(pdfx3OutputProfileComboBox->count()-1);
515
        }
516
 
517
        if (!Opts.Info.isEmpty())
518
                pdfx3InfoStringLineEdit->setText(Opts.Info);
519
        else
520
        {
521
                if (m_doc != 0 && exporting)
522
                {
523
                        QFileInfo fi(m_doc->DocName);
524
                        pdfx3InfoStringLineEdit->setText(fi.fileName());
525
                }
526
                else
527
                        pdfx3InfoStringLineEdit->setText( tr("InfoString"));
528
        }
529
 
530
        if (m_doc != 0 && exportingPDF)
531
        {
532
                useDocumentBleedsCheckBox->setChecked(Opts.useDocBleeds);
533
                doDocBleeds();
534
        }
535
        else
536
                useDocumentBleedsCheckBox->hide();
537
 
538
        markLengthSpinBox->setValue(prefsData->pdfPrefs.markLength*unitRatio);
539
        markOffsetSpinBox->setValue(prefsData->pdfPrefs.markOffset*unitRatio);
540
        printCropMarksCheckBox->setChecked(prefsData->pdfPrefs.cropMarks);
541
        printBleedMarksCheckBox->setChecked(prefsData->pdfPrefs.bleedMarks);
542
        printRegistrationMarksCheckBox->setChecked(prefsData->pdfPrefs.registrationMarks);
543
        printColorBarsCheckBox->setChecked(prefsData->pdfPrefs.colorMarks);
544
        printPageInfoCheckBox->setChecked(prefsData->pdfPrefs.docInfoMarks);
545
        if (!cmsUse)
546
                enablePDFXWidgets(false);
547
        if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X1a) && (!PDFXProfiles.isEmpty()))
548
                enablePDFX(3);
549
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X3) && (!PDFXProfiles.isEmpty()))
550
                enablePDFX(4);
551
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X4) && (!PDFXProfiles.isEmpty()))
552
                enablePDFX(5);
553
        else
554
                enablePDFXWidgets(false);
555
 
556
        if (m_doc != 0  && exportingPDF)
557
        {
558
                effectTypeComboBox->clear();
559
                effectTypeComboBox->addItem( tr("No Effect"));
560
                effectTypeComboBox->addItem( tr("Blinds"));
561
                effectTypeComboBox->addItem( tr("Box"));
562
                effectTypeComboBox->addItem( tr("Dissolve"));
563
                effectTypeComboBox->addItem( tr("Glitter"));
564
                effectTypeComboBox->addItem( tr("Split"));
565
                effectTypeComboBox->addItem( tr("Wipe"));
566
                if (Opts.Version == PDFOptions::PDFVersion_15)
567
                {
568
                        effectTypeComboBox->addItem( tr("Push"));
569
                        effectTypeComboBox->addItem( tr("Cover"));
570
                        effectTypeComboBox->addItem( tr("Uncover"));
571
                        effectTypeComboBox->addItem( tr("Fade"));
572
                }
573
                effectsPageListWidget->setCurrentRow(0);
574
                SetEffOpts(0);
575
                effectsPageListWidget->setEnabled(false);
576
                enableEffects(false);
577
                showPagePreviewsCheckBox->setEnabled(false);
578
                if (enabledEffectsCheckBox->isChecked())
579
                {
580
                        displayDurationSpinBox->setValue(EffVal[0].pageViewDuration);
581
                        effectDurationSpinBox->setValue(EffVal[0].pageEffectDuration);
582
                        effectTypeComboBox->setCurrentIndex(EffVal[0].effectType);
583
                        effectMovingDirectionComboBox->setCurrentIndex(EffVal[0].Dm);
584
                        effectInOutComboBox->setCurrentIndex(EffVal[0].M);
585
                        effectDirectionComboBox->setCurrentIndex(EffVal[0].Di);
586
                        SetEffOpts(effectTypeComboBox->currentIndex());
587
                }
588
                /* Using margin widget, is this necessary?
589
                if (m_doc->currentPageLayout != 0)
590
                {
591
                        BleedTxt3->setText( tr( "Inside:" ) );
592
                        BleedTxt4->setText( tr( "Outside:" ) );
593
                }
594
                */
595
        }
596
 
597
        if (m_doc != 0 && exportingPDF)
598
        {
599
                connect(embedAllButton, SIGNAL(clicked()), this, SLOT(EmbedAll()));
600
                connect(availableFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelAFont(QListWidgetItem*)));
601
                connect(embeddedFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelEFont(QListWidgetItem*)));
602
                connect(toEmbedButton, SIGNAL(clicked()), this, SLOT(PutToEmbed()));
603
                connect(fromEmbedButton, SIGNAL(clicked()), this, SLOT(RemoveEmbed()));
604
                connect(outlineAllButton, SIGNAL(clicked()), this, SLOT(OutlineAll()));
605
                connect(outlinedFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelSFont(QListWidgetItem*)));
606
                connect(toOutlineButton, SIGNAL(clicked()), this, SLOT(PutToOutline()));
607
                connect(fromOutlineButton, SIGNAL(clicked()), this, SLOT(RemoveOutline()));
608
                connect(showPagePreviewsCheckBox, SIGNAL(clicked()), this, SLOT(PagePr()));
609
                connect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
610
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
611
                connect(effectDirectionComboBox, SIGNAL(activated(int)), this, SLOT(ValidDI(int)));
612
                connect(enabledEffectsCheckBox, SIGNAL(clicked()), this, SLOT(DoEffects()));
613
                connect(applyEffectToAllPagesPushButton, SIGNAL(clicked()), this, SLOT(EffectOnAll()));
614
//              connect(pdfx3InfoStringLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkInfo()));
615
//              connect(pdfx3InfoStringLineEdit, SIGNAL(editingFinished()), this, SLOT(checkInfo()));
616
                connect(useDocumentBleedsCheckBox, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
617
 
618
                embedAllButton->setToolTip( "<qt>" + tr( "Embed fonts into the PDF. Embedding the fonts will preserve the layout and appearance of your document." ) + "</qt>");
619
                enabledEffectsCheckBox->setToolTip( "<qt>" + tr( "Enables presentation effects when using Adobe&#174; Reader&#174; and other PDF viewers which support this in full screen mode." ) + "</qt>");
620
                showPagePreviewsCheckBox->setToolTip( "<qt>" + tr( "Show page previews of each page listed above." ) + "</qt>");
621
                effectDurationSpinBox->setToolTip( "<qt>" + tr( "Length of time the page is shown before the presentation starts on the selected page. Setting 0 will disable automatic page transition." ) + "</qt>" );
622
                effectDurationSpinBox->setToolTip( "<qt>" + tr( "Length of time the effect runs. A shorter time will speed up the effect, a longer one will slow it down." ) + "</qt>" );
623
                effectTypeComboBox->setToolTip( "<qt>" + tr( "Type of the display effect." ) + "</qt>" );
624
                effectMovingDirectionComboBox->setToolTip( "<qt>" + tr( "Direction of the effect of moving lines for the split and blind effects." ) + "</qt>" );
625
                effectInOutComboBox->setToolTip( "<qt>" + tr( "Starting position for the box and split effects." ) + "</qt>" );
626
                effectDirectionComboBox->setToolTip( "<qt>" + tr( "Direction of the glitter or wipe effects." ) + "</qt>" );
627
                applyEffectToAllPagesPushButton->setToolTip( "<qt>" + tr( "Apply the selected effect to all pages." ) + "</qt>" );
628
                outlineAllButton->setToolTip( "<qt>" + tr("Convert all glyphs in the document to outlines.") + "</qt>");
629
                singlePageRadioButton->setToolTip( "<qt>" + tr( "Show the document in single page mode" ) + "</qt>" );
630
                continuousPagesRadioButton->setToolTip( "<qt>" + tr( "Show the document in single page mode with the pages displayed continuously end to end like a scroll" ) + "</qt>" );
631
                doublePageLeftRadioButton->setToolTip( "<qt>" + tr( "Show the document with facing pages, starting with the first page displayed on the left" ) + "</qt>" );
632
                doublePageRightRadioButton->setToolTip( "<qt>" + tr( "Show the document with facing pages, starting with the first page displayed on the right" ) + "</qt>" );
633
                useViewerDefaultsRadioButton->setToolTip( "<qt>" + tr( "Use the viewer's defaults or the user's preferences if set differently from the viewer defaults" ) + "</qt>" );
634
                useFullScreenRadioButton->setToolTip( "<qt>" + tr( "Enables viewing the document in full screen" ) + "</qt>" );
635
                useBookmarksRadioButton->setToolTip( "<qt>" + tr( "Display the bookmarks upon opening" ) + "</qt>" );
636
                useThumbnailsRadioButton->setToolTip( "<qt>" + tr( "Display the page thumbnails upon opening" ) + "</qt>" );
637
                useLayersRadioButton->setToolTip( "<qt>" + tr( "Forces the displaying of layers. Useful only for PDF 1.5+." ) + "</qt>" );
638
                hideViewerToolBarCheckBox->setToolTip( "<qt>" + tr( "Hides the Tool Bar which has selection and other editing capabilities" ) + "</qt>" );
639
                hideViewerMenuBarCheckBox->setToolTip( "<qt>" + tr( "Hides the Menu Bar for the viewer, the PDF will display in a plain window. " ) + "</qt>" );
640
                fitViewerWindowCheckBox->setToolTip( "<qt>" + tr( "Fit the document page or pages to the available space in the viewer window." ) + "</qt>" );
641
        }
642
}
643
 
644
 
645
void Prefs_PDFExport::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
646
{
647
        prefsData->pdfPrefs.Thumbnails = generateThumbnailsCheckBox->isChecked();
648
        prefsData->pdfPrefs.Compress = compressTextAndVectorGraphicsCheckBox->isChecked();
649
        prefsData->pdfPrefs.CompressMethod = (PDFOptions::PDFCompression) imageCompressionMethodComboBox->currentIndex();
650
        prefsData->pdfPrefs.Quality = imageCompressionQualityComboBox->currentIndex();
651
        prefsData->pdfPrefs.Resolution = epsExportResolutionSpinBox->value();
652
        prefsData->pdfPrefs.RecalcPic = maxResolutionLimitCheckBox->isChecked();
653
        prefsData->pdfPrefs.PicRes = maxExportResolutionSpinBox->value();
654
        prefsData->pdfPrefs.embedPDF = embedPDFAndEPSFilesCheckBox->isChecked();
655
        prefsData->pdfPrefs.Bookmarks = includeBookmarksCheckBox->isChecked();
656
        prefsData->pdfPrefs.Binding = pageBindingComboBox->currentIndex();
657
        prefsData->pdfPrefs.MirrorH = pageMirrorHorizontalToolButton->isChecked();
658
        prefsData->pdfPrefs.MirrorV = pageMirrorVerticalToolButton->isChecked();
659
        prefsData->pdfPrefs.RotateDeg = rotationComboBox->currentIndex() * 90;
660
        prefsData->pdfPrefs.Articles = saveLinkedTextFramesAsArticlesCheckBox->isChecked();
661
        prefsData->pdfPrefs.Encrypt = useEncryptionCheckBox->isChecked();
662
        prefsData->pdfPrefs.UseLPI = useCustomRenderingCheckBox->isChecked();
663
        prefsData->pdfPrefs.UseSpotColors = !convertSpotsToProcessCheckBox->isChecked();
664
        prefsData->pdfPrefs.doMultiFile = false;
665
        prefsData->pdfPrefs.cropMarks  = printCropMarksCheckBox->isChecked();
666
        prefsData->pdfPrefs.bleedMarks = printBleedMarksCheckBox->isChecked();
667
        prefsData->pdfPrefs.registrationMarks = printRegistrationMarksCheckBox->isChecked();
668
        prefsData->pdfPrefs.colorMarks = printColorBarsCheckBox->isChecked();
669
        prefsData->pdfPrefs.docInfoMarks = printPageInfoCheckBox->isChecked();
670
        prefsData->pdfPrefs.markLength   = markLengthSpinBox->value() / unitRatio;
671
        prefsData->pdfPrefs.markOffset   = markOffsetSpinBox->value() / unitRatio;
672
        prefsData->pdfPrefs.useDocBleeds = useDocumentBleedsCheckBox->isChecked();
673
        prefsData->pdfPrefs.bleeds = bleedsWidget->margins();
674
        prefsData->pdfPrefs.doClip = clipToPrinterMarginsCheckBox->isChecked();
675
        if (useEncryptionCheckBox->isChecked())
676
        {
677
                int Perm = -64;
678
                if (pdfVersionComboBox->currentIndex() == 1)
679
                        Perm &= ~0x00240000;
680
                if (allowPrintingCheckBox->isChecked())
681
                        Perm += 4;
682
                if (allowChangingCheckBox->isChecked())
683
                        Perm += 8;
684
                if (allowCopyingCheckBox->isChecked())
685
                        Perm += 16;
686
                if (allowAnnotatingCheckBox->isChecked())
687
                        Perm += 32;
688
                prefsData->pdfPrefs.Permissions = Perm;
689
                prefsData->pdfPrefs.PassOwner = passwordOwnerLineEdit->text();
690
                prefsData->pdfPrefs.PassUser = passwordUserLineEdit->text();
691
        }
692
        if (pdfVersionComboBox->currentIndex() == 0)
693
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_13;
694
        if (pdfVersionComboBox->currentIndex() == 1)
695
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_14;
696
        if (pdfVersionComboBox->currentIndex() == 2)
697
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_15;
698
        if (pdfVersionComboBox->currentIndex() == 3)
699
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X1a;
700
        if (pdfVersionComboBox->currentIndex() == 4)
701
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X3;
702
        if (pdfVersionComboBox->currentIndex() == 5)
703
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X4;
704
        if (outputIntentionComboBox->currentIndex() == 0)
705
        {
706
                prefsData->pdfPrefs.isGrayscale = false;
707
                prefsData->pdfPrefs.UseRGB = true;
708
                prefsData->pdfPrefs.UseProfiles = false;
709
                prefsData->pdfPrefs.UseProfiles2 = false;
710
        }
711
        else
712
        {
713
                if (outputIntentionComboBox->currentIndex() == 2)
714
                {
715
                        prefsData->pdfPrefs.isGrayscale = true;
716
                        prefsData->pdfPrefs.UseRGB = false;
717
                        prefsData->pdfPrefs.UseProfiles = false;
718
                        prefsData->pdfPrefs.UseProfiles2 = false;
719
                }
720
                else
721
                {
722
                        prefsData->pdfPrefs.isGrayscale = false;
723
                        prefsData->pdfPrefs.UseRGB = false;
724
                        if (/*CMSuse*/ ScCore->haveCMS())
725
                        {
726
                                prefsData->pdfPrefs.UseProfiles = useSolidColorProfileCheckBox->isChecked();
727
                                prefsData->pdfPrefs.UseProfiles2 = useImageProfileCheckBox->isChecked();
728
                                prefsData->pdfPrefs.Intent = solidColorRenderingIntentComboBox->currentIndex();
729
                                prefsData->pdfPrefs.Intent2 = imageRenderingIntentComboBox->currentIndex();
730
                                prefsData->pdfPrefs.EmbeddedI = doNotUseEmbeddedImageProfileCheckBox->isChecked();
731
                                prefsData->pdfPrefs.SolidProf = solidColorProfileComboBox->currentText();
732
                                prefsData->pdfPrefs.ImageProf = imageProfileComboBox->currentText();
733
                                prefsData->pdfPrefs.PrintProf = pdfx3OutputProfileComboBox->currentText();
734
                        }
735
                }
736
        }
737
}
738
 
739
 
740
void Prefs_PDFExport::SelLPIcol(int c)
741
{
742
        // XXX Optionen or Opts changed here
743
        Opts.LPISettings[SelLPIcolor].Frequency = customRenderingFrequencySpinBox->value();
744
        Opts.LPISettings[SelLPIcolor].Angle = customRenderingAngleSpinBox->value();
745
        Opts.LPISettings[SelLPIcolor].SpotFunc = customRenderingSpotFunctionComboBox->currentIndex();
746
        customRenderingFrequencySpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Frequency);
747
        customRenderingAngleSpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Angle);
748
        customRenderingSpotFunctionComboBox->setCurrentIndex(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].SpotFunc);
749
        SelLPIcolor = customRenderingColorComboBox->itemText(c);
750
}
751
 
752
void Prefs_PDFExport::enableRangeControls(bool enabled)
753
{
754
        exportPageListLineEdit->setEnabled( enabled );
755
        exportRangeMorePushButton->setEnabled( enabled );
756
        if (enabled == false)
757
                includeBookmarksCheckBox->setChecked(false);
758
}
759
 
760
void Prefs_PDFExport::enableSecurityControls(bool enabled)
761
{
762
        passwordOwnerLineEdit->setEnabled(enabled);
763
        passwordUserLineEdit->setEnabled(enabled);
764
        allowPrintingCheckBox->setEnabled(enabled);
765
        allowChangingCheckBox->setEnabled(enabled);
766
        allowCopyingCheckBox->setEnabled(enabled);
767
        allowAnnotatingCheckBox->setEnabled(enabled);
768
}
769
 
770
 
771
void Prefs_PDFExport::enableCMS(bool enabled)
772
{
773
        cmsEnabled=enabled;
774
        addPDFVersions(enabled);
775
        enableProfiles(enabled);
776
}
777
 
778
void Prefs_PDFExport::enablePDFExportTabs(bool enabled)
779
{
780
        if (!enabled)
781
        {
782
                tabWidget->removeTab(tabWidget->indexOf(tabFonts));//Fonts
783
                tabWidget->removeTab(tabWidget->indexOf(tabExtras));//Extras
784
                tabWidget->removeTab(tabWidget->indexOf(tabViewer));//Viewer
785
        }
786
}
787
 
788
void Prefs_PDFExport::createPageNumberRange()
789
{
790
        if (m_doc!=0)
791
        {
792
                CreateRange cr(exportPageListLineEdit->text(), m_doc->DocPages.count(), this);
793
                if (cr.exec())
794
                {
795
                        CreateRangeData crData;
796
                        cr.getCreateRangeData(crData);
797
                        exportPageListLineEdit->setText(crData.pageRange);
798
                        return;
799
                }
800
        }
801
        exportPageListLineEdit->setText(QString::null);
802
}
803
 
804
void Prefs_PDFExport::setMaximumResolution()
805
{
806
        if (maxResolutionLimitCheckBox->isChecked())
807
        {
808
                maxExportResolutionSpinBox->setEnabled(true);
809
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
810
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
811
        }
812
        else
813
                maxExportResolutionSpinBox->setEnabled(false);
814
}
815
 
816
void Prefs_PDFExport::enableProfiles(int i)
817
{
818
        enableLPI(i);
819
        bool setter = false;
820
        if (i == 1 && pdfVersionComboBox->currentIndex() != 3)
821
                setter = true;
822
        enableSolidsImagesWidgets(setter);
823
}
824
 
825
void Prefs_PDFExport::enableLPI(int i)
826
{
827
        if (i == 1)
828
        {
829
                QString tp(Opts.SolidProf);
830
                if (!ScCore->InputProfiles.contains(tp))
831
                {
832
                        if (m_doc != 0)
833
                                tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
834
                        else
835
                                tp = defaultSolidColorRGBProfile;
836
                }
837
                solidColorProfileComboBox->clear();
838
                ProfilesL::Iterator itp;
839
                ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
840
                for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
841
                {
842
                        solidColorProfileComboBox->addItem(itp.key());
843
                        if (itp.key() == tp)
844
                        {
845
                                if (cmsEnabled)
846
                                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
847
                        }
848
                }
849
                if (cmsEnabled)
850
                        solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
851
                QString tp1 = Opts.ImageProf;
852
                if (!ScCore->InputProfiles.contains(tp1))
853
                {
854
                        if (m_doc != 0)
855
                                tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
856
                        else
857
                                tp1 = defaultSolidColorRGBProfile;
858
                }
859
                imageProfileComboBox->clear();
860
                ProfilesL::Iterator itp2;
861
                ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
862
                for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
863
                {
864
                        imageProfileComboBox->addItem(itp2.key());
865
                        if (itp2.key() == tp1)
866
                        {
867
                                if (cmsEnabled)
868
                                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
869
                        }
870
                }
871
                if (cmsEnabled)
872
                        imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
873
                //Disabling vs hiding
874
                enableSolidsImagesWidgets(cmsEnabled);
875
                convertSpotsToProcessCheckBox->setEnabled(true);
876
                if (m_doc!=0)
877
                {
878
                        useCustomRenderingCheckBox->setEnabled(true);
879
                        enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
880
                }
881
        }
882
        else
883
        {
884
                convertSpotsToProcessCheckBox->setEnabled(false);
885
                useCustomRenderingCheckBox->setEnabled(false);
886
                enableCustomRenderingWidgets(false);
887
        }
888
}
889
 
890
 
891
void Prefs_PDFExport::enableLPI2()
892
{
893
        if (m_doc!=0)
894
                enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
895
}
896
 
897
void Prefs_PDFExport::setCustomRenderingWidgetsShown(bool visible)
898
{
899
        useCustomRenderingCheckBox->setVisible(visible);
900
        customRenderingColorComboBox->setVisible(visible);
901
        customRenderingFrequencySpinBox->setVisible(visible);
902
        customRenderingAngleSpinBox->setVisible(visible);
903
        customRenderingSpotFunctionComboBox->setVisible(visible);
904
}
905
 
906
void Prefs_PDFExport::enableCustomRenderingWidgets(bool enabled)
907
{
908
        customRenderingColorComboBox->setEnabled(enabled);
909
        customRenderingFrequencySpinBox->setEnabled(enabled);
910
        customRenderingAngleSpinBox->setEnabled(enabled);
911
        customRenderingSpotFunctionComboBox->setEnabled(enabled);
912
}
913
 
914
void Prefs_PDFExport::setSolidsImagesWidgetsShown(bool visible)
915
{
916
        solidColorsLabel->setVisible(visible);
917
        solidColorsLine->setVisible(visible);
918
        useSolidColorProfileCheckBox->setVisible(visible);
919
        solidColorProfileComboBox->setVisible(visible);
920
        solidColorRenderingIntentComboBox->setVisible(visible);
921
        imagesLabel->setVisible(visible);
922
        imagesLine->setVisible(visible);
923
        useImageProfileCheckBox->setVisible(visible);
924
        doNotUseEmbeddedImageProfileCheckBox->setVisible(visible);
925
        imageProfileComboBox->setVisible(visible);
926
        imageRenderingIntentComboBox->setVisible(visible);
927
}
928
 
929
void Prefs_PDFExport::enableSolidsImagesWidgets(bool enabled)
930
{
931
        //if we want to show/hide instead
932
        //setSolidsImagesWidgetsShown(enabled);
933
        useSolidColorProfileCheckBox->setEnabled(enabled);
934
        solidColorProfileComboBox->setEnabled(enabled);
935
        solidColorRenderingIntentComboBox->setEnabled(enabled);
936
        useImageProfileCheckBox->setEnabled(enabled);
937
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(enabled);
938
        imageProfileComboBox->setEnabled(enabled);
939
        imageRenderingIntentComboBox->setEnabled(enabled);
940
}
941
 
942
void Prefs_PDFExport::enablePDFXWidgets(bool enabled)
943
{
944
        pdfx3OutputProfileComboBox->setEnabled(enabled);
945
        pdfx3InfoStringLineEdit->setEnabled(enabled);
946
}
947
 
948
 
949
void Prefs_PDFExport::enablePGI()
950
{
951
        bool setter=false;
952
        if (useImageProfileCheckBox->isChecked())
953
                setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
954
        imageProfileComboBox->setEnabled(setter);
955
        imageRenderingIntentComboBox->setEnabled(setter);
956
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(useImageProfileCheckBox->isChecked());
957
}
958
 
959
void Prefs_PDFExport::enablePGI2()
960
{
961
        bool setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
962
        imageProfileComboBox->setEnabled(setter);
963
        imageRenderingIntentComboBox->setEnabled(setter);
964
}
965
 
966
void Prefs_PDFExport::enablePG()
967
{
968
        bool setter = useSolidColorProfileCheckBox->isChecked() ? true : false;
969
 
970
        solidColorProfileComboBox->setEnabled(setter);
971
        solidColorRenderingIntentComboBox->setEnabled(setter);
972
}
973
 
974
void Prefs_PDFExport::enablePDFX(int i)
975
{
976
        includeLayersCheckBox->setEnabled((i == 2) || (i == 5));
977
        if (useLayersRadioButton)
978
                useLayersRadioButton->setEnabled((i == 2) || (i == 5));
979
        if (m_doc != 0 && exportingPDF)
980
        {
981
                int currentEff = effectTypeComboBox->currentIndex();
982
                disconnect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
983
                effectTypeComboBox->clear();
984
                effectTypeComboBox->addItem( tr("No Effect"));
985
                effectTypeComboBox->addItem( tr("Blinds"));
986
                effectTypeComboBox->addItem( tr("Box"));
987
                effectTypeComboBox->addItem( tr("Dissolve"));
988
                effectTypeComboBox->addItem( tr("Glitter"));
989
                effectTypeComboBox->addItem( tr("Split"));
990
                effectTypeComboBox->addItem( tr("Wipe"));
991
                if (i == 2)
992
                {
993
                        effectTypeComboBox->addItem( tr("Push"));
994
                        effectTypeComboBox->addItem( tr("Cover"));
995
                        effectTypeComboBox->addItem( tr("Uncover"));
996
                        effectTypeComboBox->addItem( tr("Fade"));
997
                        effectTypeComboBox->setCurrentIndex(currentEff);
998
                }
999
                else
1000
                {
1001
                        if (currentEff > 6)
1002
                        {
1003
                                currentEff = 0;
1004
                                effectTypeComboBox->setCurrentIndex(0);
1005
                                SetEffOpts(0);
1006
                                for (int pg = 0; pg<m_doc->Pages->count(); ++pg)
1007
                                {
1008
                                        if (EffVal[pg].effectType > 6)
1009
                                                EffVal[pg].effectType = 0;
1010
                                }
1011
                        }
1012
                        else
1013
                                effectTypeComboBox->setCurrentIndex(currentEff);
1014
                }
1015
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
1016
        }
1017
 
1018
        if (i < 3)  // not PDF/X
1019
        {
1020
                enablePDFXWidgets(false);
1021
                tabWidget->setTabEnabled(2, true);
1022
                outputIntentionComboBox->setEnabled(true);
1023
                useImageProfileCheckBox->setEnabled(true);
1024
                emit hasInfo();
1025
                if (m_doc != 0 && exportingPDF)
1026
                {
1027
                        enabledEffectsCheckBox->setEnabled(true);
1028
                        embedAllButton->setEnabled(true);
1029
                        if (embeddedFontsListWidget->count() != 0)
1030
                                fromEmbedButton->setEnabled(true);
1031
                        toEmbedButton->setEnabled(true);
1032
                }
1033
 
1034
                return;
1035
        }
1036
        // PDF/X is selected
1037
        disconnect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1038
        outputIntentionComboBox->setCurrentIndex(1);
1039
        outputIntentionComboBox->setEnabled(false);
1040
        enableProfiles(1);
1041
        if ((i == 4) || (i == 5)) // X3 or X4, enforcing color profiles on images
1042
        {
1043
                useImageProfileCheckBox->setChecked(true);
1044
                useImageProfileCheckBox->setEnabled(false);
1045
        }
1046
        if (m_doc != 0 && exportingPDF)
1047
        {
1048
//              EmbedFonts->setChecked(true);
1049
                EmbedAll();
1050
                enabledEffectsCheckBox->setChecked(false);
1051
                enabledEffectsCheckBox->setEnabled(false);
1052
//              EmbedFonts->setEnabled(false);
1053
                fromEmbedButton->setEnabled(false);
1054
                toEmbedButton->setEnabled(false);
1055
                if (pdfx3InfoStringLineEdit->text().isEmpty())
1056
                        emit noInfo();
1057
                else
1058
                        emit hasInfo();
1059
        }
1060
        enablePGI();
1061
        pdfx3OutputProfileComboBox->setEnabled(true);
1062
        pdfx3InfoStringLineEdit->setEnabled(true);
1063
        tabWidget->setTabEnabled(2, false);
1064
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1065
}
1066
 
1067
void Prefs_PDFExport::addPDFVersions(bool addPDFXStrings)
1068
{
1069
        disconnect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1070
        int i = pdfVersionComboBox->currentIndex();
1071
        pdfVersionComboBox->clear();
1072
        pdfVersionComboBox->addItem("PDF 1.3 (Acrobat 4)");
1073
        pdfVersionComboBox->addItem("PDF 1.4 (Acrobat 5)");
1074
        pdfVersionComboBox->addItem("PDF 1.5 (Acrobat 6)");
1075
        if (addPDFXStrings)
1076
        {
1077
                pdfVersionComboBox->addItem("PDF/X-1a");
1078
                pdfVersionComboBox->addItem("PDF/X-3");
1079
                pdfVersionComboBox->addItem("PDF/X-4");
1080
        }
1081
        else
1082
                i=qMin(i,2);
1083
        pdfVersionComboBox->setCurrentIndex(i);
1084
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1085
}
1086
 
1087
 
1088
void Prefs_PDFExport::enableEffects(bool enabled)
1089
{
1090
        effectsPageListWidget->setEnabled(enabled);
1091
        showPagePreviewsCheckBox->setEnabled(enabled);
1092
        displayDurationSpinBox->setEnabled(enabled);
1093
        effectDurationSpinBox->setEnabled(enabled);
1094
        effectTypeComboBox->setEnabled(enabled);
1095
        if (enabled)
1096
                SetEffOpts(effectTypeComboBox->currentIndex());
1097
        else
1098
        {
1099
                effectMovingDirectionComboBox->setEnabled(false);
1100
                effectInOutComboBox->setEnabled(false);
1101
                effectDirectionComboBox->setEnabled(false);
1102
                applyEffectToAllPagesPushButton->setEnabled(false);
1103
        }
1104
}
1105
 
1106
void Prefs_PDFExport::EmbedAll()
1107
{
1108
        embeddedFontsListWidget->clear();
1109
        outlinedFontsListWidget->clear();
1110
        fromEmbedButton->setEnabled(false);
1111
        toEmbedButton->setEnabled(false);
1112
        toOutlineButton->setEnabled(false);
1113
        fromOutlineButton->setEnabled(false);
1114
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1115
        {
1116
                QListWidgetItem* item = availableFontsListWidget->item(a);
1117
                if ((item->flags() & Qt::ItemIsSelectable) == 0)
1118
                        continue;
1119
                if (!AllFonts[item->text()].subset())
1120
                {
1121
                        embeddedFontsListWidget->addItem(item->text());
1122
                        if (AnnotationFonts.contains(item->text()))
1123
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1124
                }
1125
                else
1126
                {
1127
                        if (AnnotationFonts.contains(item->text()))
1128
                        {
1129
                                embeddedFontsListWidget->addItem(item->text());
1130
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1131
                        }
1132
                        else
1133
                        {
1134
                                outlinedFontsListWidget->addItem(item->text());
1135
                        }
1136
                }
1137
        }
1138
}
1139
 
1140
void Prefs_PDFExport::OutlineAll()
1141
{
1142
        embeddedFontsListWidget->clear();
1143
        outlinedFontsListWidget->clear();
1144
        fromEmbedButton->setEnabled(false);
1145
        toEmbedButton->setEnabled(false);
1146
        toOutlineButton->setEnabled(false);
1147
        fromOutlineButton->setEnabled(false);
1148
        for (int a = 0; a < availableFontsListWidget->count(); ++a)
1149
        {
1150
                QListWidgetItem* item = availableFontsListWidget->item(a);
1151
                if ((item->flags() & Qt::ItemIsSelectable) == 0)
1152
                        continue;
1153
                if (AnnotationFonts.contains(item->text()))
1154
                {
1155
                        embeddedFontsListWidget->addItem(item->text());
1156
                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1157
                }
1158
                else
1159
                {
1160
                        outlinedFontsListWidget->addItem(item->text());
1161
                }
1162
        }
1163
}
1164
 
1165
void Prefs_PDFExport::doDocBleeds()
1166
{
1167
        if (useDocumentBleedsCheckBox->isChecked())
1168
        {
1169
                Opts.bleeds=bleedsWidget->margins();
1170
                bleedsWidget->setNewValues(m_doc->bleedsVal());
1171
                bleedsWidget->setEnabled(false);
1172
        }
1173
        else
1174
        {
1175
                bleedsWidget->setNewValues(Opts.bleeds);
1176
                bleedsWidget->setEnabled(true);
1177
        }
1178
}
1179
 
1180
 
1181
void Prefs_PDFExport::SetEffOpts(int nr)
1182
{
1183
        QStandardItem* si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1184
        if (si) si->setSelectable(false);
1185
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1186
        if (si) si->setSelectable(false);
1187
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1188
        if (si) si->setSelectable(false);
1189
        switch (nr)
1190
        {
1191
        case 0:
1192
        case 3:
1193
        case 10:
1194
                effectMovingDirectionComboBox->setEnabled(false);
1195
                effectInOutComboBox->setEnabled(false);
1196
                effectDirectionComboBox->setEnabled(false);
1197
                break;
1198
        case 1:
1199
                effectMovingDirectionComboBox->setEnabled(true);
1200
                effectInOutComboBox->setEnabled(false);
1201
                effectDirectionComboBox->setEnabled(false);
1202
                break;
1203
        case 2:
1204
                effectMovingDirectionComboBox->setEnabled(false);
1205
                effectInOutComboBox->setEnabled(true);
1206
                effectDirectionComboBox->setEnabled(false);
1207
                break;
1208
        case 4:
1209
        case 6:
1210
        case 7:
1211
        case 8:
1212
        case 9:
1213
                effectMovingDirectionComboBox->setEnabled(false);
1214
                effectInOutComboBox->setEnabled(false);
1215
                effectDirectionComboBox->setEnabled(true);
1216
                if (nr == 6)
1217
                {
1218
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1219
                        if (si) si->setSelectable(true);
1220
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1221
                        if (si) si->setSelectable(true);
1222
                }
1223
                else
1224
                {
1225
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1226
                        if (si) si->setSelectable(true);
1227
                }
1228
                break;
1229
        case 5:
1230
                effectMovingDirectionComboBox->setEnabled(true);
1231
                effectInOutComboBox->setEnabled(true);
1232
                effectDirectionComboBox->setEnabled(false);
1233
                break;
1234
        }
1235
}
1236
 
1237
void Prefs_PDFExport::SelAFont(QListWidgetItem *c)
1238
{
1239
        if (c != NULL)
1240
        {
1241
                fromEmbedButton->setEnabled(false);
1242
                if (c->flags() & Qt::ItemIsSelectable)
1243
                        toEmbedButton->setEnabled(true);
1244
                toOutlineButton->setEnabled(false);
1245
                fromOutlineButton->setEnabled(false);
1246
                embeddedFontsListWidget->clearSelection();
1247
                outlinedFontsListWidget->clearSelection();
1248
        }
1249
}
1250
 
1251
void Prefs_PDFExport::SelEFont(QListWidgetItem *c)
1252
{
1253
        if (c != NULL)
1254
        {
1255
                if ((pdfVersionComboBox->currentIndex() < 3) && (c->flags() & Qt::ItemIsSelectable))
1256
                        fromEmbedButton->setEnabled(true);
1257
                else
1258
                        fromEmbedButton->setEnabled(false);
1259
                toEmbedButton->setEnabled(false);
1260
                if (c->flags() & Qt::ItemIsSelectable)
1261
                        toOutlineButton->setEnabled(true);
1262
                fromOutlineButton->setEnabled(false);
1263
                availableFontsListWidget->clearSelection();
1264
                outlinedFontsListWidget->clearSelection();
1265
        }
1266
}
1267
 
1268
void Prefs_PDFExport::SelSFont(QListWidgetItem *c)
1269
{
1270
        if (c != NULL)
1271
        {
1272
                if (pdfVersionComboBox->currentIndex() == 4)
1273
                {
1274
                        if ((AllFonts[c->text()].type() == ScFace::OTF) || (AllFonts[c->text()].subset()))
1275
                                fromOutlineButton->setEnabled(false);
1276
                        else
1277
                                fromOutlineButton->setEnabled(true);
1278
                }
1279
                else
1280
                        fromOutlineButton->setEnabled(true);
1281
                toOutlineButton->setEnabled(false);
1282
                toEmbedButton->setEnabled(false);
1283
                fromEmbedButton->setEnabled(false);
1284
                embeddedFontsListWidget->clearSelection();
1285
                availableFontsListWidget->clearSelection();
1286
        }
1287
}
1288
 
1289
void Prefs_PDFExport::PagePr()
1290
{
1291
        disconnect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1292
        QString tmp;
1293
        QPixmap pm;
1294
        int ci = effectsPageListWidget->currentRow();
1295
        int pgMaxX = 0;
1296
        int pgMaxY = 0;
1297
        effectsPageListWidget->clear();
1298
        if (showPagePreviewsCheckBox->isChecked())
1299
        {
1300
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1301
                {
1302
                        pm=QPixmap::fromImage(m_doc->view()->PageToPixmap(pg, 70));
1303
                        pgMaxX = qMax(pgMaxX, pm.width());
1304
                        pgMaxY = qMax(pgMaxY, pm.height());
1305
                        new QListWidgetItem( pm, tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1306
                }
1307
                effectsPageListWidget->setIconSize(QSize(pgMaxX, pgMaxY));
1308
        }
1309
        else
1310
        {
1311
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1312
                {
1313
                        new QListWidgetItem( tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1314
                }
1315
        }
1316
        if (ci != -1)
1317
                effectsPageListWidget->setCurrentRow(ci);
1318
        else
1319
                effectsPageListWidget->clearSelection();
1320
        connect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1321
}
1322
 
1323
void Prefs_PDFExport::DoDownsample()
1324
{
1325
        if (maxResolutionLimitCheckBox->isChecked())
1326
        {
1327
                maxExportResolutionSpinBox->setEnabled(true);
1328
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
1329
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
1330
        }
1331
        else
1332
                maxExportResolutionSpinBox->setEnabled(false);
1333
}
1334
 
1335
void Prefs_PDFExport::RemoveEmbed()
1336
{
1337
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1338
        embeddedFontsListWidget->clearSelection();
1339
        if (embeddedFontsListWidget->count() == 0)
1340
        {
1341
                fromEmbedButton->setEnabled(false);
1342
                toOutlineButton->setEnabled(false);
1343
        }
1344
        else
1345
        {
1346
                if (!embeddedFontsListWidget->item(embeddedFontsListWidget->currentRow())->flags() & Qt::ItemIsSelectable)
1347
                {
1348
                        fromEmbedButton->setEnabled(false);
1349
                        toOutlineButton->setEnabled(false);
1350
                }
1351
        }
1352
}
1353
 
1354
void Prefs_PDFExport::PutToEmbed()
1355
{
1356
        QString currentFont = availableFontsListWidget->currentItem()->text();
1357
        if (embeddedFontsListWidget->count() != 0)
1358
        {
1359
                if (!AllFonts[currentFont].subset())
1360
                {
1361
                        if (embeddedFontsListWidget->findItems(currentFont, Qt::MatchExactly).count() == 0)
1362
                        {
1363
                                embeddedFontsListWidget->addItem(currentFont);
1364
                                if (AnnotationFonts.contains(currentFont))
1365
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1366
                        }
1367
                }
1368
                else
1369
                {
1370
                        if (outlinedFontsListWidget->count() != 0)
1371
                        {
1372
                                if (outlinedFontsListWidget->findItems(currentFont, Qt::MatchExactly).count() == 0)
1373
                                        outlinedFontsListWidget->addItem(currentFont);
1374
                        }
1375
                        else
1376
                        {
1377
                                outlinedFontsListWidget->addItem(currentFont);
1378
                        }
1379
                }
1380
        }
1381
        else
1382
        {
1383
                if ((AllFonts[currentFont].type() != ScFace::OTF) && (!AllFonts[currentFont].subset()))
1384
                {
1385
                        embeddedFontsListWidget->addItem(currentFont);
1386
                        if (AnnotationFonts.contains(currentFont))
1387
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1388
                }
1389
                else
1390
                {
1391
                        if (outlinedFontsListWidget->count() != 0)
1392
                        {
1393
                                if (outlinedFontsListWidget->findItems(currentFont, Qt::MatchExactly).count() == 0)
1394
                                        outlinedFontsListWidget->addItem(currentFont);
1395
                        }
1396
                        else
1397
                        {
1398
                                outlinedFontsListWidget->addItem(currentFont);
1399
                        }
1400
                }
1401
        }
1402
}
1403
 
1404
void Prefs_PDFExport::RemoveOutline()
1405
{
1406
        QString currentFont = outlinedFontsListWidget->currentItem()->text();
1407
        if ((AllFonts[currentFont].type() != ScFace::OTF) && (!AllFonts[currentFont].subset()))
1408
                embeddedFontsListWidget->addItem(currentFont);
1409
        delete outlinedFontsListWidget->takeItem(outlinedFontsListWidget->currentRow());
1410
        outlinedFontsListWidget->clearSelection();
1411
        if (outlinedFontsListWidget->count() == 0)
1412
                fromOutlineButton->setEnabled(false);
1413
}
1414
 
1415
void Prefs_PDFExport::PutToOutline()
1416
{
1417
        QString currentFont = embeddedFontsListWidget->currentItem()->text();
1418
        if (outlinedFontsListWidget->count() != 0)
1419
        {
1420
                if (outlinedFontsListWidget->findItems(currentFont, Qt::MatchExactly).count() == 0)
1421
                        outlinedFontsListWidget->addItem(currentFont);
1422
        }
1423
        else
1424
        {
1425
                outlinedFontsListWidget->addItem(currentFont);
1426
        }
1427
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1428
        embeddedFontsListWidget->clearSelection();
1429
        if (embeddedFontsListWidget->count() == 0)
1430
        {
1431
                fromEmbedButton->setEnabled(false);
1432
                toOutlineButton->setEnabled(false);
1433
        }
1434
        else
1435
        {
1436
                if (!(embeddedFontsListWidget->currentItem()->flags() & Qt::ItemIsSelectable))
1437
                {
1438
                        fromEmbedButton->setEnabled(false);
1439
                        toOutlineButton->setEnabled(false);
1440
                }
1441
        }
1442
}