Subversion Repositories Scribus

Rev

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

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