Subversion Repositories Scribus

Rev

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