Subversion Repositories Scribus

Rev

Rev 18190 | Rev 18394 | 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;
17407 fschmid 248
                for (QHash<int, PageItem*>::iterator it = m_doc->FrameItems.begin(); it != m_doc->FrameItems.end(); ++it)
14737 cbradney 249
                {
17407 fschmid 250
                        PageItem *currItem = it.value();
16156 fschmid 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)
18190 jghali 482
                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
14737 cbradney 483
        }
18190 jghali 484
        int solidIntent = Opts.Intent;
485
        if (Opts.Intent < 0)
486
                solidIntent = 1;
487
        solidColorRenderingIntentComboBox->setCurrentIndex(solidIntent);
14737 cbradney 488
        QString tp1 = Opts.ImageProf;
489
        if (!ScCore->InputProfiles.contains(tp1))
490
        {
15065 cbradney 491
                if (m_doc != 0 && exportingPDF)
492
                        tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
493
                else
14737 cbradney 494
                        tp1 = defaultSolidColorRGBProfile;
495
        }
496
        ProfilesL::Iterator itp2;
497
        ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
498
        imageProfileComboBox->clear();
499
        for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
500
        {
501
                imageProfileComboBox->addItem(itp2.key());
502
                if (itp2.key() == tp1)
18190 jghali 503
                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
14737 cbradney 504
        }
18190 jghali 505
        int imageIntent = Opts.Intent2;
506
        if (imageIntent < 0)
507
                imageIntent = 0;
508
        imageRenderingIntentComboBox->setCurrentIndex(imageIntent);
14737 cbradney 509
        if (!cmsUse)
510
        {
511
                //Disabling vis hiding
512
                //setSolidsImagesWidgetsShown(false);
513
                enableSolidsImagesWidgets(false);
514
        }
515
 
516
        ProfilesL::const_iterator itp3;
517
        QString tp3(Opts.PrintProf);
518
        if (!PDFXProfiles.contains(tp3))
519
        {
15065 cbradney 520
                if (m_doc != 0 && exportingPDF)
521
                        tp3 = m_doc->cmsSettings().DefaultPrinterProfile;
522
                else
14737 cbradney 523
                        tp3 = defaultPrinterProfile;
524
        }
525
        pdfx3OutputProfileComboBox->clear();
526
        for (itp3 = PDFXProfiles.constBegin(); itp3 != PDFXProfiles.constEnd(); ++itp3)
527
        {
528
                pdfx3OutputProfileComboBox->addItem(itp3.key());
529
                if (itp3.key() == tp3)
530
                        pdfx3OutputProfileComboBox->setCurrentIndex(pdfx3OutputProfileComboBox->count()-1);
531
        }
532
 
15081 cbradney 533
        if (!Opts.Info.isEmpty())
534
                pdfx3InfoStringLineEdit->setText(Opts.Info);
535
        else
536
        {
537
                if (m_doc != 0 && exporting)
538
                {
539
                        QFileInfo fi(m_doc->DocName);
540
                        pdfx3InfoStringLineEdit->setText(fi.fileName());
541
                }
542
                else
543
                        pdfx3InfoStringLineEdit->setText( tr("InfoString"));
544
        }
14737 cbradney 545
 
15065 cbradney 546
        if (m_doc != 0 && exportingPDF)
14737 cbradney 547
        {
15065 cbradney 548
                useDocumentBleedsCheckBox->setChecked(Opts.useDocBleeds);
14737 cbradney 549
                doDocBleeds();
550
        }
15117 cbradney 551
        else
552
                useDocumentBleedsCheckBox->hide();
15065 cbradney 553
 
17401 jghali 554
        markLengthSpinBox->setValue(prefsData->pdfPrefs.markLength*unitRatio);
555
        markOffsetSpinBox->setValue(prefsData->pdfPrefs.markOffset*unitRatio);
14451 cbradney 556
        printCropMarksCheckBox->setChecked(prefsData->pdfPrefs.cropMarks);
557
        printBleedMarksCheckBox->setChecked(prefsData->pdfPrefs.bleedMarks);
558
        printRegistrationMarksCheckBox->setChecked(prefsData->pdfPrefs.registrationMarks);
559
        printColorBarsCheckBox->setChecked(prefsData->pdfPrefs.colorMarks);
560
        printPageInfoCheckBox->setChecked(prefsData->pdfPrefs.docInfoMarks);
14737 cbradney 561
        if (!cmsUse)
562
                enablePDFXWidgets(false);
563
        if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X1a) && (!PDFXProfiles.isEmpty()))
564
                enablePDFX(3);
565
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X3) && (!PDFXProfiles.isEmpty()))
566
                enablePDFX(4);
567
        else if (cmsUse && (Opts.Version == PDFOptions::PDFVersion_X4) && (!PDFXProfiles.isEmpty()))
568
                enablePDFX(5);
569
        else
570
                enablePDFXWidgets(false);
15065 cbradney 571
 
572
        if (m_doc != 0  && exportingPDF)
14737 cbradney 573
        {
15065 cbradney 574
                effectTypeComboBox->clear();
575
                effectTypeComboBox->addItem( tr("No Effect"));
576
                effectTypeComboBox->addItem( tr("Blinds"));
577
                effectTypeComboBox->addItem( tr("Box"));
578
                effectTypeComboBox->addItem( tr("Dissolve"));
579
                effectTypeComboBox->addItem( tr("Glitter"));
580
                effectTypeComboBox->addItem( tr("Split"));
581
                effectTypeComboBox->addItem( tr("Wipe"));
14737 cbradney 582
                if (Opts.Version == PDFOptions::PDFVersion_15)
583
                {
15065 cbradney 584
                        effectTypeComboBox->addItem( tr("Push"));
585
                        effectTypeComboBox->addItem( tr("Cover"));
586
                        effectTypeComboBox->addItem( tr("Uncover"));
587
                        effectTypeComboBox->addItem( tr("Fade"));
14737 cbradney 588
                }
589
                PgSel = 0;
15065 cbradney 590
                effectsPageListWidget->setCurrentRow(0);
14737 cbradney 591
                SetEffOpts(0);
15065 cbradney 592
                effectsPageListWidget->setEnabled(false);
593
                enableEffects(false);
594
                showPagePreviewsCheckBox->setEnabled(false);
595
                if (enabledEffectsCheckBox->isChecked())
14737 cbradney 596
                {
15065 cbradney 597
                        displayDurationSpinBox->setValue(EffVal[0].pageViewDuration);
598
                        effectDurationSpinBox->setValue(EffVal[0].pageEffectDuration);
599
                        effectTypeComboBox->setCurrentIndex(EffVal[0].effectType);
600
                        effectMovingDirectionComboBox->setCurrentIndex(EffVal[0].Dm);
601
                        effectInOutComboBox->setCurrentIndex(EffVal[0].M);
602
                        effectDirectionComboBox->setCurrentIndex(EffVal[0].Di);
603
                        SetEffOpts(effectTypeComboBox->currentIndex());
14737 cbradney 604
                }
15065 cbradney 605
                /* Using margin widget, is this necessary?
606
                if (m_doc->currentPageLayout != 0)
14737 cbradney 607
                {
608
                        BleedTxt3->setText( tr( "Inside:" ) );
609
                        BleedTxt4->setText( tr( "Outside:" ) );
610
                }
15065 cbradney 611
                */
14737 cbradney 612
        }
15082 cbradney 613
 
614
        if (m_doc != 0 && exportingPDF)
615
        {
616
                connect(embedAllButton, SIGNAL(clicked()), this, SLOT(EmbedAll()));
617
                connect(availableFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelAFont(QListWidgetItem*)));
618
                connect(embeddedFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelEFont(QListWidgetItem*)));
619
                connect(toEmbedButton, SIGNAL(clicked()), this, SLOT(PutToEmbed()));
620
                connect(fromEmbedButton, SIGNAL(clicked()), this, SLOT(RemoveEmbed()));
621
                connect(outlineAllButton, SIGNAL(clicked()), this, SLOT(OutlineAll()));
622
                connect(outlinedFontsListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(SelSFont(QListWidgetItem*)));
623
                connect(toOutlineButton, SIGNAL(clicked()), this, SLOT(PutToOutline()));
624
                connect(fromOutlineButton, SIGNAL(clicked()), this, SLOT(RemoveOutline()));
625
                connect(showPagePreviewsCheckBox, SIGNAL(clicked()), this, SLOT(PagePr()));
626
                connect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
627
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
628
                connect(effectDirectionComboBox, SIGNAL(activated(int)), this, SLOT(ValidDI(int)));
629
                connect(enabledEffectsCheckBox, SIGNAL(clicked()), this, SLOT(DoEffects()));
630
                connect(applyEffectToAllPagesPushButton, SIGNAL(clicked()), this, SLOT(EffectOnAll()));
631
//              connect(pdfx3InfoStringLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkInfo()));
632
//              connect(pdfx3InfoStringLineEdit, SIGNAL(editingFinished()), this, SLOT(checkInfo()));
633
                connect(useDocumentBleedsCheckBox, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
634
 
635
                embedAllButton->setToolTip( "<qt>" + tr( "Embed fonts into the PDF. Embedding the fonts will preserve the layout and appearance of your document." ) + "</qt>");
636
                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>");
637
                showPagePreviewsCheckBox->setToolTip( "<qt>" + tr( "Show page previews of each page listed above." ) + "</qt>");
638
                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>" );
639
                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>" );
640
                effectTypeComboBox->setToolTip( "<qt>" + tr( "Type of the display effect." ) + "</qt>" );
641
                effectMovingDirectionComboBox->setToolTip( "<qt>" + tr( "Direction of the effect of moving lines for the split and blind effects." ) + "</qt>" );
642
                effectInOutComboBox->setToolTip( "<qt>" + tr( "Starting position for the box and split effects." ) + "</qt>" );
643
                effectDirectionComboBox->setToolTip( "<qt>" + tr( "Direction of the glitter or wipe effects." ) + "</qt>" );
644
                applyEffectToAllPagesPushButton->setToolTip( "<qt>" + tr( "Apply the selected effect to all pages." ) + "</qt>" );
645
                outlineAllButton->setToolTip( "<qt>" + tr("Convert all glyphs in the document to outlines.") + "</qt>");
646
                singlePageRadioButton->setToolTip( "<qt>" + tr( "Show the document in single page mode" ) + "</qt>" );
647
                continuousPagesRadioButton->setToolTip( "<qt>" + tr( "Show the document in single page mode with the pages displayed continuously end to end like a scroll" ) + "</qt>" );
648
                doublePageLeftRadioButton->setToolTip( "<qt>" + tr( "Show the document with facing pages, starting with the first page displayed on the left" ) + "</qt>" );
649
                doublePageRightRadioButton->setToolTip( "<qt>" + tr( "Show the document with facing pages, starting with the first page displayed on the right" ) + "</qt>" );
650
                useViewerDefaultsRadioButton->setToolTip( "<qt>" + tr( "Use the viewer's defaults or the user's preferences if set differently from the viewer defaults" ) + "</qt>" );
651
                useFullScreenRadioButton->setToolTip( "<qt>" + tr( "Enables viewing the document in full screen" ) + "</qt>" );
652
                useBookmarksRadioButton->setToolTip( "<qt>" + tr( "Display the bookmarks upon opening" ) + "</qt>" );
653
                useThumbnailsRadioButton->setToolTip( "<qt>" + tr( "Display the page thumbnails upon opening" ) + "</qt>" );
654
                useLayersRadioButton->setToolTip( "<qt>" + tr( "Forces the displaying of layers. Useful only for PDF 1.5+." ) + "</qt>" );
655
                hideViewerToolBarCheckBox->setToolTip( "<qt>" + tr( "Hides the Tool Bar which has selection and other editing capabilities" ) + "</qt>" );
656
                hideViewerMenuBarCheckBox->setToolTip( "<qt>" + tr( "Hides the Menu Bar for the viewer, the PDF will display in a plain window. " ) + "</qt>" );
657
                fitViewerWindowCheckBox->setToolTip( "<qt>" + tr( "Fit the document page or pages to the available space in the viewer window." ) + "</qt>" );
658
        }
14448 cbradney 659
}
660
 
661
 
662
void Prefs_PDFExport::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
663
{
14752 cbradney 664
        prefsData->pdfPrefs.Thumbnails = generateThumbnailsCheckBox->isChecked();
665
        prefsData->pdfPrefs.Compress = compressTextAndVectorGraphicsCheckBox->isChecked();
666
        prefsData->pdfPrefs.CompressMethod = (PDFOptions::PDFCompression) imageCompressionMethodComboBox->currentIndex();
667
        prefsData->pdfPrefs.Quality = imageCompressionQualityComboBox->currentIndex();
668
        prefsData->pdfPrefs.Resolution = epsExportResolutionSpinBox->value();
669
        prefsData->pdfPrefs.RecalcPic = maxResolutionLimitCheckBox->isChecked();
670
        prefsData->pdfPrefs.PicRes = maxExportResolutionSpinBox->value();
671
        prefsData->pdfPrefs.Bookmarks = includeBookmarksCheckBox->isChecked();
672
        prefsData->pdfPrefs.Binding = pageBindingComboBox->currentIndex();
673
        prefsData->pdfPrefs.MirrorH = pageMirrorHorizontalToolButton->isChecked();
674
        prefsData->pdfPrefs.MirrorV = pageMirrorVerticalToolButton->isChecked();
675
        prefsData->pdfPrefs.RotateDeg = rotationComboBox->currentIndex() * 90;
676
        prefsData->pdfPrefs.Articles = saveLinkedTextFramesAsArticlesCheckBox->isChecked();
677
        prefsData->pdfPrefs.Encrypt = useEncryptionCheckBox->isChecked();
678
        prefsData->pdfPrefs.UseLPI = useCustomRenderingCheckBox->isChecked();
679
        prefsData->pdfPrefs.UseSpotColors = !convertSpotsToProcessCheckBox->isChecked();
680
        prefsData->pdfPrefs.doMultiFile = false;
681
        prefsData->pdfPrefs.cropMarks  = printCropMarksCheckBox->isChecked();
682
        prefsData->pdfPrefs.bleedMarks = printBleedMarksCheckBox->isChecked();
683
        prefsData->pdfPrefs.registrationMarks = printRegistrationMarksCheckBox->isChecked();
684
        prefsData->pdfPrefs.colorMarks = printColorBarsCheckBox->isChecked();
685
        prefsData->pdfPrefs.docInfoMarks = printPageInfoCheckBox->isChecked();
17401 jghali 686
        prefsData->pdfPrefs.markLength   = markLengthSpinBox->value() / unitRatio;
687
        prefsData->pdfPrefs.markOffset   = markOffsetSpinBox->value() / unitRatio;
15065 cbradney 688
        prefsData->pdfPrefs.useDocBleeds = useDocumentBleedsCheckBox->isChecked();
17401 jghali 689
        prefsData->pdfPrefs.bleeds = bleedsWidget->margins();
14752 cbradney 690
        prefsData->pdfPrefs.doClip = clipToPrinterMarginsCheckBox->isChecked();
691
        if (useEncryptionCheckBox->isChecked())
692
        {
693
                int Perm = -64;
694
                if (pdfVersionComboBox->currentIndex() == 1)
695
                        Perm &= ~0x00240000;
696
                if (allowPrintingCheckBox->isChecked())
697
                        Perm += 4;
698
                if (allowChangingCheckBox->isChecked())
699
                        Perm += 8;
700
                if (allowCopyingCheckBox->isChecked())
701
                        Perm += 16;
702
                if (allowAnnotatingCheckBox->isChecked())
703
                        Perm += 32;
704
                prefsData->pdfPrefs.Permissions = Perm;
705
                prefsData->pdfPrefs.PassOwner = passwordOwnerLineEdit->text();
706
                prefsData->pdfPrefs.PassUser = passwordUserLineEdit->text();
707
        }
708
        if (pdfVersionComboBox->currentIndex() == 0)
709
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_13;
710
        if (pdfVersionComboBox->currentIndex() == 1)
711
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_14;
712
        if (pdfVersionComboBox->currentIndex() == 2)
713
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_15;
714
        if (pdfVersionComboBox->currentIndex() == 3)
715
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X1a;
716
        if (pdfVersionComboBox->currentIndex() == 4)
717
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X3;
718
        if (pdfVersionComboBox->currentIndex() == 5)
719
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X4;
720
        if (outputIntentionComboBox->currentIndex() == 0)
721
        {
722
                prefsData->pdfPrefs.isGrayscale = false;
723
                prefsData->pdfPrefs.UseRGB = true;
724
                prefsData->pdfPrefs.UseProfiles = false;
725
                prefsData->pdfPrefs.UseProfiles2 = false;
726
        }
727
        else
728
        {
729
                if (outputIntentionComboBox->currentIndex() == 2)
730
                {
731
                        prefsData->pdfPrefs.isGrayscale = true;
732
                        prefsData->pdfPrefs.UseRGB = false;
733
                        prefsData->pdfPrefs.UseProfiles = false;
734
                        prefsData->pdfPrefs.UseProfiles2 = false;
735
                }
736
                else
737
                {
738
                        prefsData->pdfPrefs.isGrayscale = false;
739
                        prefsData->pdfPrefs.UseRGB = false;
740
                        if (/*CMSuse*/ ScCore->haveCMS())
741
                        {
742
                                prefsData->pdfPrefs.UseProfiles = useSolidColorProfileCheckBox->isChecked();
743
                                prefsData->pdfPrefs.UseProfiles2 = useImageProfileCheckBox->isChecked();
744
                                prefsData->pdfPrefs.Intent = solidColorRenderingIntentComboBox->currentIndex();
745
                                prefsData->pdfPrefs.Intent2 = imageRenderingIntentComboBox->currentIndex();
746
                                prefsData->pdfPrefs.EmbeddedI = doNotUseEmbeddedImageProfileCheckBox->isChecked();
747
                                prefsData->pdfPrefs.SolidProf = solidColorProfileComboBox->currentText();
748
                                prefsData->pdfPrefs.ImageProf = imageProfileComboBox->currentText();
749
                                prefsData->pdfPrefs.PrintProf = pdfx3OutputProfileComboBox->currentText();
750
                        }
751
                }
752
        }
14448 cbradney 753
}
14451 cbradney 754
 
15081 cbradney 755
 
756
void Prefs_PDFExport::SelLPIcol(int c)
757
{
758
        // XXX Optionen or Opts changed here
759
        Opts.LPISettings[SelLPIcolor].Frequency = customRenderingFrequencySpinBox->value();
760
        Opts.LPISettings[SelLPIcolor].Angle = customRenderingAngleSpinBox->value();
761
        Opts.LPISettings[SelLPIcolor].SpotFunc = customRenderingSpotFunctionComboBox->currentIndex();
762
        customRenderingFrequencySpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Frequency);
763
        customRenderingAngleSpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Angle);
764
        customRenderingSpotFunctionComboBox->setCurrentIndex(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].SpotFunc);
765
        SelLPIcolor = customRenderingColorComboBox->itemText(c);
766
}
767
 
14451 cbradney 768
void Prefs_PDFExport::enableRangeControls(bool enabled)
769
{
770
        exportPageListLineEdit->setEnabled( enabled );
771
        exportRangeMorePushButton->setEnabled( enabled );
772
        if (enabled == false)
773
                includeBookmarksCheckBox->setChecked(false);
774
}
775
 
776
void Prefs_PDFExport::enableSecurityControls(bool enabled)
777
{
778
        passwordOwnerLineEdit->setEnabled(enabled);
779
        passwordUserLineEdit->setEnabled(enabled);
780
        allowPrintingCheckBox->setEnabled(enabled);
781
        allowChangingCheckBox->setEnabled(enabled);
782
        allowCopyingCheckBox->setEnabled(enabled);
783
        allowAnnotatingCheckBox->setEnabled(enabled);
784
}
785
 
14745 cbradney 786
 
787
void Prefs_PDFExport::enableCMS(bool enabled)
788
{
789
        cmsEnabled=enabled;
790
        addPDFVersions(enabled);
15080 cbradney 791
        enableProfiles(enabled);
14745 cbradney 792
}
793
 
15065 cbradney 794
void Prefs_PDFExport::enablePDFExportTabs(bool enabled)
795
{
796
        if (!enabled)
797
        {
798
                tabWidget->removeTab(tabWidget->indexOf(tabFonts));//Fonts
799
                tabWidget->removeTab(tabWidget->indexOf(tabExtras));//Extras
800
                tabWidget->removeTab(tabWidget->indexOf(tabViewer));//Viewer
801
        }
802
}
803
 
14451 cbradney 804
void Prefs_PDFExport::createPageNumberRange()
805
{
806
        if (m_doc!=0)
807
        {
808
                CreateRange cr(exportPageListLineEdit->text(), m_doc->DocPages.count(), this);
809
                if (cr.exec())
810
                {
811
                        CreateRangeData crData;
812
                        cr.getCreateRangeData(crData);
813
                        exportPageListLineEdit->setText(crData.pageRange);
814
                        return;
815
                }
816
        }
817
        exportPageListLineEdit->setText(QString::null);
818
}
14736 cbradney 819
 
820
void Prefs_PDFExport::setMaximumResolution()
821
{
822
        if (maxResolutionLimitCheckBox->isChecked())
823
        {
824
                maxExportResolutionSpinBox->setEnabled(true);
825
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
826
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
827
        }
828
        else
829
                maxExportResolutionSpinBox->setEnabled(false);
830
}
831
 
832
void Prefs_PDFExport::enableProfiles(int i)
833
{
834
        enableLPI(i);
835
        bool setter = false;
836
        if (i == 1 && pdfVersionComboBox->currentIndex() != 3)
837
                setter = true;
14737 cbradney 838
        enableSolidsImagesWidgets(setter);
14736 cbradney 839
}
840
 
841
void Prefs_PDFExport::enableLPI(int i)
842
{
843
        if (i == 1)
844
        {
845
                QString tp(Opts.SolidProf);
846
                if (!ScCore->InputProfiles.contains(tp))
847
                {
848
                        if (m_doc != 0)
15001 cbradney 849
                                tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 850
                        else
851
                                tp = defaultSolidColorRGBProfile;
852
                }
853
                solidColorProfileComboBox->clear();
854
                ProfilesL::Iterator itp;
855
                ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
856
                for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
857
                {
858
                        solidColorProfileComboBox->addItem(itp.key());
859
                        if (itp.key() == tp)
860
                        {
861
                                if (cmsEnabled)
862
                                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
863
                        }
864
                }
865
                if (cmsEnabled)
866
                        solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
867
                QString tp1 = Opts.ImageProf;
868
                if (!ScCore->InputProfiles.contains(tp1))
869
                {
870
                        if (m_doc != 0)
15001 cbradney 871
                                tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 872
                        else
873
                                tp1 = defaultSolidColorRGBProfile;
874
                }
875
                imageProfileComboBox->clear();
876
                ProfilesL::Iterator itp2;
877
                ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
878
                for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
879
                {
880
                        imageProfileComboBox->addItem(itp2.key());
881
                        if (itp2.key() == tp1)
882
                        {
883
                                if (cmsEnabled)
884
                                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
885
                        }
886
                }
887
                if (cmsEnabled)
888
                        imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
15081 cbradney 889
                //Disabling vs hiding
14737 cbradney 890
                enableSolidsImagesWidgets(cmsEnabled);
15080 cbradney 891
                convertSpotsToProcessCheckBox->setEnabled(true);
14736 cbradney 892
                if (m_doc!=0)
893
                {
15081 cbradney 894
                        useCustomRenderingCheckBox->setEnabled(true);
14737 cbradney 895
                        enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
14736 cbradney 896
                }
897
        }
898
        else
899
        {
15080 cbradney 900
                convertSpotsToProcessCheckBox->setEnabled(false);
15081 cbradney 901
                useCustomRenderingCheckBox->setEnabled(false);
14737 cbradney 902
                enableCustomRenderingWidgets(false);
14736 cbradney 903
        }
904
}
905
 
15081 cbradney 906
 
907
void Prefs_PDFExport::enableLPI2()
908
{
909
        if (m_doc!=0)
910
                enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
911
}
912
 
14736 cbradney 913
void Prefs_PDFExport::setCustomRenderingWidgetsShown(bool visible)
914
{
18194 fschmid 915
        useCustomRenderingCheckBox->setVisible(visible);
916
        customRenderingColorComboBox->setVisible(visible);
917
        customRenderingFrequencySpinBox->setVisible(visible);
918
        customRenderingAngleSpinBox->setVisible(visible);
919
        customRenderingSpotFunctionComboBox->setVisible(visible);
14736 cbradney 920
}
921
 
14737 cbradney 922
void Prefs_PDFExport::enableCustomRenderingWidgets(bool enabled)
923
{
924
        customRenderingColorComboBox->setEnabled(enabled);
925
        customRenderingFrequencySpinBox->setEnabled(enabled);
926
        customRenderingAngleSpinBox->setEnabled(enabled);
927
        customRenderingSpotFunctionComboBox->setEnabled(enabled);
928
}
14736 cbradney 929
 
930
void Prefs_PDFExport::setSolidsImagesWidgetsShown(bool visible)
931
{
18194 fschmid 932
        solidColorsLabel->setVisible(visible);
933
        solidColorsLine->setVisible(visible);
934
        useSolidColorProfileCheckBox->setVisible(visible);
935
        solidColorProfileComboBox->setVisible(visible);
936
        solidColorRenderingIntentComboBox->setVisible(visible);
937
        imagesLabel->setVisible(visible);
938
        imagesLine->setVisible(visible);
939
        useImageProfileCheckBox->setVisible(visible);
940
        doNotUseEmbeddedImageProfileCheckBox->setVisible(visible);
941
        imageProfileComboBox->setVisible(visible);
942
        imageRenderingIntentComboBox->setVisible(visible);
14736 cbradney 943
}
15081 cbradney 944
 
14737 cbradney 945
void Prefs_PDFExport::enableSolidsImagesWidgets(bool enabled)
14736 cbradney 946
{
15080 cbradney 947
        //if we want to show/hide instead
948
        //setSolidsImagesWidgetsShown(enabled);
14736 cbradney 949
        useSolidColorProfileCheckBox->setEnabled(enabled);
950
        solidColorProfileComboBox->setEnabled(enabled);
951
        solidColorRenderingIntentComboBox->setEnabled(enabled);
952
        useImageProfileCheckBox->setEnabled(enabled);
953
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(enabled);
954
        imageProfileComboBox->setEnabled(enabled);
955
        imageRenderingIntentComboBox->setEnabled(enabled);
956
}
957
 
14737 cbradney 958
void Prefs_PDFExport::enablePDFXWidgets(bool enabled)
959
{
960
        pdfx3OutputProfileComboBox->setEnabled(enabled);
961
        pdfx3InfoStringLineEdit->setEnabled(enabled);
962
}
14736 cbradney 963
 
14737 cbradney 964
 
14736 cbradney 965
void Prefs_PDFExport::enablePGI()
966
{
967
        bool setter=false;
968
        if (useImageProfileCheckBox->isChecked())
969
                setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
970
        imageProfileComboBox->setEnabled(setter);
971
        imageRenderingIntentComboBox->setEnabled(setter);
972
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(useImageProfileCheckBox->isChecked());
973
}
974
 
975
void Prefs_PDFExport::enablePGI2()
976
{
977
        bool setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
978
        imageProfileComboBox->setEnabled(setter);
979
        imageRenderingIntentComboBox->setEnabled(setter);
980
}
981
 
982
void Prefs_PDFExport::enablePG()
983
{
984
        bool setter = useSolidColorProfileCheckBox->isChecked() ? true : false;
985
 
986
        solidColorProfileComboBox->setEnabled(setter);
987
        solidColorRenderingIntentComboBox->setEnabled(setter);
988
}
989
 
990
void Prefs_PDFExport::enablePDFX(int i)
991
{
992
        includeLayersCheckBox->setEnabled((i == 2) || (i == 5));
15065 cbradney 993
        if (useLayersRadioButton)
994
                useLayersRadioButton->setEnabled((i == 2) || (i == 5));
995
        if (m_doc != 0 && exportingPDF)
14736 cbradney 996
        {
15065 cbradney 997
                int currentEff = effectTypeComboBox->currentIndex();
998
                disconnect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
999
                effectTypeComboBox->clear();
1000
                effectTypeComboBox->addItem( tr("No Effect"));
1001
                effectTypeComboBox->addItem( tr("Blinds"));
1002
                effectTypeComboBox->addItem( tr("Box"));
1003
                effectTypeComboBox->addItem( tr("Dissolve"));
1004
                effectTypeComboBox->addItem( tr("Glitter"));
1005
                effectTypeComboBox->addItem( tr("Split"));
1006
                effectTypeComboBox->addItem( tr("Wipe"));
14736 cbradney 1007
                if (i == 2)
1008
                {
15065 cbradney 1009
                        effectTypeComboBox->addItem( tr("Push"));
1010
                        effectTypeComboBox->addItem( tr("Cover"));
1011
                        effectTypeComboBox->addItem( tr("Uncover"));
1012
                        effectTypeComboBox->addItem( tr("Fade"));
1013
                        effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 1014
                }
1015
                else
1016
                {
1017
                        if (currentEff > 6)
1018
                        {
1019
                                currentEff = 0;
15065 cbradney 1020
                                effectTypeComboBox->setCurrentIndex(0);
14736 cbradney 1021
                                SetEffOpts(0);
15065 cbradney 1022
                                for (int pg = 0; pg<m_doc->Pages->count(); ++pg)
14736 cbradney 1023
                                {
1024
                                        if (EffVal[pg].effectType > 6)
1025
                                                EffVal[pg].effectType = 0;
1026
                                }
1027
                        }
1028
                        else
15065 cbradney 1029
                                effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 1030
                }
15065 cbradney 1031
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
14736 cbradney 1032
        }
15065 cbradney 1033
 
14736 cbradney 1034
        if (i < 3)  // not PDF/X
1035
        {
14737 cbradney 1036
                enablePDFXWidgets(false);
14736 cbradney 1037
                tabWidget->setTabEnabled(2, true);
1038
                outputIntentionComboBox->setEnabled(true);
1039
                useImageProfileCheckBox->setEnabled(true);
1040
                emit hasInfo();
15065 cbradney 1041
                if (m_doc != 0 && exportingPDF)
14736 cbradney 1042
                {
15065 cbradney 1043
                        enabledEffectsCheckBox->setEnabled(true);
1044
                        embedAllButton->setEnabled(true);
1045
                        if (embeddedFontsListWidget->count() != 0)
1046
                                fromEmbedButton->setEnabled(true);
1047
                        toEmbedButton->setEnabled(true);
14736 cbradney 1048
                }
15065 cbradney 1049
 
14736 cbradney 1050
                return;
1051
        }
1052
        // PDF/X is selected
1053
        disconnect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1054
        outputIntentionComboBox->setCurrentIndex(1);
1055
        outputIntentionComboBox->setEnabled(false);
1056
        enableProfiles(1);
1057
        if ((i == 4) || (i == 5)) // X3 or X4, enforcing color profiles on images
1058
        {
1059
                useImageProfileCheckBox->setChecked(true);
1060
                useImageProfileCheckBox->setEnabled(false);
1061
        }
15065 cbradney 1062
        if (m_doc != 0 && exportingPDF)
14736 cbradney 1063
        {
1064
//              EmbedFonts->setChecked(true);
1065
                EmbedAll();
15065 cbradney 1066
                enabledEffectsCheckBox->setChecked(false);
1067
                enabledEffectsCheckBox->setEnabled(false);
14736 cbradney 1068
//              EmbedFonts->setEnabled(false);
15065 cbradney 1069
                fromEmbedButton->setEnabled(false);
1070
                toEmbedButton->setEnabled(false);
1071
                if (pdfx3InfoStringLineEdit->text().isEmpty())
14736 cbradney 1072
                        emit noInfo();
1073
                else
1074
                        emit hasInfo();
1075
        }
1076
        enablePGI();
1077
        pdfx3OutputProfileComboBox->setEnabled(true);
1078
        pdfx3InfoStringLineEdit->setEnabled(true);
1079
        tabWidget->setTabEnabled(2, false);
1080
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1081
}
14745 cbradney 1082
 
1083
void Prefs_PDFExport::addPDFVersions(bool addPDFXStrings)
1084
{
1085
        disconnect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1086
        int i = pdfVersionComboBox->currentIndex();
1087
        pdfVersionComboBox->clear();
1088
        pdfVersionComboBox->addItem("PDF 1.3 (Acrobat 4)");
1089
        pdfVersionComboBox->addItem("PDF 1.4 (Acrobat 5)");
1090
        pdfVersionComboBox->addItem("PDF 1.5 (Acrobat 6)");
1091
        if (addPDFXStrings)
1092
        {
1093
                pdfVersionComboBox->addItem("PDF/X-1a");
1094
                pdfVersionComboBox->addItem("PDF/X-3");
1095
                pdfVersionComboBox->addItem("PDF/X-4");
1096
        }
1097
        else
1098
                i=qMin(i,2);
1099
        pdfVersionComboBox->setCurrentIndex(i);
1100
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1101
}
15065 cbradney 1102
 
1103
 
1104
void Prefs_PDFExport::enableEffects(bool enabled)
1105
{
1106
        effectsPageListWidget->setEnabled(enabled);
1107
        showPagePreviewsCheckBox->setEnabled(enabled);
1108
        displayDurationSpinBox->setEnabled(enabled);
1109
        effectDurationSpinBox->setEnabled(enabled);
1110
        effectTypeComboBox->setEnabled(enabled);
1111
        if (enabled)
1112
                SetEffOpts(effectTypeComboBox->currentIndex());
1113
        else
1114
        {
1115
                effectMovingDirectionComboBox->setEnabled(false);
1116
                effectInOutComboBox->setEnabled(false);
1117
                effectDirectionComboBox->setEnabled(false);
1118
                applyEffectToAllPagesPushButton->setEnabled(false);
1119
        }
1120
}
15081 cbradney 1121
 
1122
void Prefs_PDFExport::EmbedAll()
1123
{
1124
        embeddedFontsListWidget->clear();
1125
        FontsToEmbed.clear();
1126
        outlinedFontsListWidget->clear();
1127
        FontsToOutline.clear();
1128
        fromEmbedButton->setEnabled(false);
1129
        toEmbedButton->setEnabled(false);
1130
        toOutlineButton->setEnabled(false);
1131
        fromOutlineButton->setEnabled(false);
1132
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1133
        {
1134
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
1135
                {
1136
                        if (!AllFonts[availableFontsListWidget->item(a)->text()].subset())
1137
                        {
1138
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1139
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1140
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1141
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1142
                        }
1143
                        else
1144
                        {
1145
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1146
                                {
1147
                                        FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1148
                                        embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1149
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1150
                                }
1151
                                else
1152
                                {
1153
                                        FontsToOutline.append(availableFontsListWidget->item(a)->text());
1154
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1155
                                }
1156
                        }
1157
                }
1158
        }
1159
}
1160
 
1161
void Prefs_PDFExport::OutlineAll()
1162
{
1163
        embeddedFontsListWidget->clear();
1164
        FontsToEmbed.clear();
1165
        outlinedFontsListWidget->clear();
1166
        FontsToOutline.clear();
1167
        fromEmbedButton->setEnabled(false);
1168
        toEmbedButton->setEnabled(false);
1169
        toOutlineButton->setEnabled(false);
1170
        fromOutlineButton->setEnabled(false);
1171
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1172
        {
1173
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
1174
                {
1175
                        if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1176
                        {
1177
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1178
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1179
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1180
                        }
1181
                        else
1182
                        {
1183
                                FontsToOutline.append(availableFontsListWidget->item(a)->text());
1184
                                outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1185
                        }
1186
                }
1187
        }
1188
}
1189
 
1190
void Prefs_PDFExport::doDocBleeds()
1191
{
1192
        if (useDocumentBleedsCheckBox->isChecked())
1193
        {
1194
                Opts.bleeds=bleedsWidget->margins();
1195
                bleedsWidget->setNewValues(m_doc->bleedsVal());
1196
                bleedsWidget->setEnabled(false);
1197
        }
1198
        else
1199
        {
1200
                bleedsWidget->setNewValues(Opts.bleeds);
1201
                bleedsWidget->setEnabled(true);
1202
        }
1203
}
1204
 
1205
 
1206
void Prefs_PDFExport::SetEffOpts(int nr)
1207
{
1208
        QStandardItem* si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1209
        if (si) si->setSelectable(false);
1210
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1211
        if (si) si->setSelectable(false);
1212
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1213
        if (si) si->setSelectable(false);
1214
        switch (nr)
1215
        {
1216
        case 0:
1217
        case 3:
1218
        case 10:
1219
                effectMovingDirectionComboBox->setEnabled(false);
1220
                effectInOutComboBox->setEnabled(false);
1221
                effectDirectionComboBox->setEnabled(false);
1222
                break;
1223
        case 1:
1224
                effectMovingDirectionComboBox->setEnabled(true);
1225
                effectInOutComboBox->setEnabled(false);
1226
                effectDirectionComboBox->setEnabled(false);
1227
                break;
1228
        case 2:
1229
                effectMovingDirectionComboBox->setEnabled(false);
1230
                effectInOutComboBox->setEnabled(true);
1231
                effectDirectionComboBox->setEnabled(false);
1232
                break;
1233
        case 4:
1234
        case 6:
1235
        case 7:
1236
        case 8:
1237
        case 9:
1238
                effectMovingDirectionComboBox->setEnabled(false);
1239
                effectInOutComboBox->setEnabled(false);
1240
                effectDirectionComboBox->setEnabled(true);
1241
                if (nr == 6)
1242
                {
1243
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1244
                        if (si) si->setSelectable(true);
1245
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1246
                        if (si) si->setSelectable(true);
1247
                }
1248
                else
1249
                {
1250
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1251
                        if (si) si->setSelectable(true);
1252
                }
1253
                break;
1254
        case 5:
1255
                effectMovingDirectionComboBox->setEnabled(true);
1256
                effectInOutComboBox->setEnabled(true);
1257
                effectDirectionComboBox->setEnabled(false);
1258
                break;
1259
        }
1260
}
15082 cbradney 1261
 
1262
void Prefs_PDFExport::SelAFont(QListWidgetItem *c)
1263
{
1264
        if (c != NULL)
1265
        {
1266
                fromEmbedButton->setEnabled(false);
1267
                if (c->flags() & Qt::ItemIsSelectable)
1268
                        toEmbedButton->setEnabled(true);
1269
                toOutlineButton->setEnabled(false);
1270
                fromOutlineButton->setEnabled(false);
1271
                embeddedFontsListWidget->clearSelection();
1272
                outlinedFontsListWidget->clearSelection();
1273
        }
1274
}
1275
 
1276
void Prefs_PDFExport::SelEFont(QListWidgetItem *c)
1277
{
1278
        if (c != NULL)
1279
        {
1280
                if ((pdfVersionComboBox->currentIndex() < 3) && (c->flags() & Qt::ItemIsSelectable))
1281
                        fromEmbedButton->setEnabled(true);
1282
                else
1283
                        fromEmbedButton->setEnabled(false);
1284
                toEmbedButton->setEnabled(false);
1285
                if (c->flags() & Qt::ItemIsSelectable)
1286
                        toOutlineButton->setEnabled(true);
1287
                fromOutlineButton->setEnabled(false);
1288
                availableFontsListWidget->clearSelection();
1289
                outlinedFontsListWidget->clearSelection();
1290
        }
1291
}
1292
 
1293
void Prefs_PDFExport::SelSFont(QListWidgetItem *c)
1294
{
1295
        if (c != NULL)
1296
        {
1297
                if (pdfVersionComboBox->currentIndex() == 4)
1298
                {
1299
                        if ((AllFonts[c->text()].type() == ScFace::OTF) || (AllFonts[c->text()].subset()))
1300
                                fromOutlineButton->setEnabled(false);
1301
                        else
1302
                                fromOutlineButton->setEnabled(true);
1303
                }
1304
                else
1305
                        fromOutlineButton->setEnabled(true);
1306
                toOutlineButton->setEnabled(false);
1307
                toEmbedButton->setEnabled(false);
1308
                fromEmbedButton->setEnabled(false);
1309
                embeddedFontsListWidget->clearSelection();
1310
                availableFontsListWidget->clearSelection();
1311
        }
1312
}
1313
 
1314
void Prefs_PDFExport::PagePr()
1315
{
1316
        disconnect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1317
        QString tmp;
1318
        QPixmap pm;
1319
        int ci = effectsPageListWidget->currentRow();
1320
        int pgMaxX = 0;
1321
        int pgMaxY = 0;
1322
        effectsPageListWidget->clear();
1323
        if (showPagePreviewsCheckBox->isChecked())
1324
        {
1325
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1326
                {
1327
                        pm=QPixmap::fromImage(m_doc->view()->PageToPixmap(pg, 70));
1328
                        pgMaxX = qMax(pgMaxX, pm.width());
1329
                        pgMaxY = qMax(pgMaxY, pm.height());
1330
                        new QListWidgetItem( pm, tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1331
                }
1332
                effectsPageListWidget->setIconSize(QSize(pgMaxX, pgMaxY));
1333
        }
1334
        else
1335
        {
1336
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1337
                {
1338
                        new QListWidgetItem( tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1339
                }
1340
        }
1341
        if (ci != -1)
1342
        {
1343
                PgSel = ci;
1344
                effectsPageListWidget->setCurrentRow(ci);
1345
        }
1346
        else
1347
        {
1348
                PgSel = 0;
1349
                effectsPageListWidget->clearSelection();
1350
        }
1351
        connect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1352
}
1353
 
1354
void Prefs_PDFExport::DoDownsample()
1355
{
1356
        if (maxResolutionLimitCheckBox->isChecked())
1357
        {
1358
                maxExportResolutionSpinBox->setEnabled(true);
1359
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
1360
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
1361
        }
1362
        else
1363
                maxExportResolutionSpinBox->setEnabled(false);
1364
}
1365
 
1366
void Prefs_PDFExport::RemoveEmbed()
1367
{
1368
        FontsToEmbed.removeAll(embeddedFontsListWidget->currentItem()->text());
1369
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1370
        embeddedFontsListWidget->clearSelection();
1371
        if (embeddedFontsListWidget->count() == 0)
1372
        {
1373
                fromEmbedButton->setEnabled(false);
1374
                toOutlineButton->setEnabled(false);
1375
        }
1376
        else
1377
        {
1378
                if (!embeddedFontsListWidget->item(embeddedFontsListWidget->currentRow())->flags() & Qt::ItemIsSelectable)
1379
                {
1380
                        fromEmbedButton->setEnabled(false);
1381
                        toOutlineButton->setEnabled(false);
1382
                }
1383
        }
1384
}
1385
 
1386
void Prefs_PDFExport::PutToEmbed()
1387
{
1388
        if (embeddedFontsListWidget->count() != 0)
1389
        {
1390
                if (!AllFonts[availableFontsListWidget->currentItem()->text()].subset())
1391
                {
1392
                        if (embeddedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1393
                        {
1394
                                FontsToEmbed.append(availableFontsListWidget->currentItem()->text());
1395
                                embeddedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1396
                                if (AnnotationFonts.contains(availableFontsListWidget->currentItem()->text()))
1397
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1398
                        }
1399
                }
1400
                else
1401
                {
1402
                        if (outlinedFontsListWidget->count() != 0)
1403
                        {
1404
                                if (outlinedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1405
                                {
1406
                                        FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1407
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1408
                                }
1409
                        }
1410
                        else
1411
                        {
1412
                                FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1413
                                outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1414
                        }
1415
                }
1416
        }
1417
        else
1418
        {
1419
                if ((AllFonts[availableFontsListWidget->currentItem()->text()].type() != ScFace::OTF) && (!AllFonts[availableFontsListWidget->currentItem()->text()].subset()))
1420
                {
1421
                        FontsToEmbed.append(availableFontsListWidget->currentItem()->text());
1422
                        embeddedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1423
                        if (AnnotationFonts.contains(availableFontsListWidget->currentItem()->text()))
1424
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1425
                }
1426
                else
1427
                {
1428
                        if (outlinedFontsListWidget->count() != 0)
1429
                        {
1430
                                if (outlinedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1431
                                {
1432
                                        FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1433
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1434
                                }
1435
                        }
1436
                        else
1437
                        {
1438
                                FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1439
                                outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1440
                        }
1441
                }
1442
        }
1443
}
1444
 
1445
void Prefs_PDFExport::RemoveOutline()
1446
{
1447
        FontsToOutline.removeAll(outlinedFontsListWidget->currentItem()->text());
1448
        if ((AllFonts[outlinedFontsListWidget->currentItem()->text()].type() != ScFace::OTF) && (!AllFonts[outlinedFontsListWidget->currentItem()->text()].subset()))
1449
        {
1450
                FontsToEmbed.append(outlinedFontsListWidget->currentItem()->text());
1451
                embeddedFontsListWidget->addItem(outlinedFontsListWidget->currentItem()->text());
1452
        }
1453
        delete outlinedFontsListWidget->takeItem(outlinedFontsListWidget->currentRow());
1454
        outlinedFontsListWidget->clearSelection();
1455
        if (outlinedFontsListWidget->count() == 0)
1456
                fromOutlineButton->setEnabled(false);
1457
}
1458
 
1459
void Prefs_PDFExport::PutToOutline()
1460
{
1461
        if (outlinedFontsListWidget->count() != 0)
1462
        {
1463
                if (outlinedFontsListWidget->findItems(embeddedFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1464
                {
1465
                        FontsToOutline.append(embeddedFontsListWidget->currentItem()->text());
1466
                        outlinedFontsListWidget->addItem(embeddedFontsListWidget->currentItem()->text());
1467
                }
1468
        }
1469
        else
1470
        {
1471
                FontsToOutline.append(embeddedFontsListWidget->currentItem()->text());
1472
                outlinedFontsListWidget->addItem(embeddedFontsListWidget->currentItem()->text());
1473
        }
1474
        FontsToEmbed.removeAll(embeddedFontsListWidget->currentItem()->text());
1475
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1476
        embeddedFontsListWidget->clearSelection();
1477
        if (embeddedFontsListWidget->count() == 0)
1478
        {
1479
                fromEmbedButton->setEnabled(false);
1480
                toOutlineButton->setEnabled(false);
1481
        }
1482
        else
1483
        {
1484
                if (!(embeddedFontsListWidget->currentItem()->flags() & Qt::ItemIsSelectable))
1485
                {
1486
                        fromEmbedButton->setEnabled(false);
1487
                        toOutlineButton->setEnabled(false);
1488
                }
1489
        }
1490
}