Subversion Repositories Scribus

Rev

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