Subversion Repositories Scribus

Rev

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