Subversion Repositories Scribus

Rev

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