Subversion Repositories Scribus

Rev

Rev 15117 | Rev 17401 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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