Subversion Repositories Scribus

Rev

Rev 18194 | Rev 18412 | 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();
644
        prefsData->pdfPrefs.Bookmarks = includeBookmarksCheckBox->isChecked();
645
        prefsData->pdfPrefs.Binding = pageBindingComboBox->currentIndex();
646
        prefsData->pdfPrefs.MirrorH = pageMirrorHorizontalToolButton->isChecked();
647
        prefsData->pdfPrefs.MirrorV = pageMirrorVerticalToolButton->isChecked();
648
        prefsData->pdfPrefs.RotateDeg = rotationComboBox->currentIndex() * 90;
649
        prefsData->pdfPrefs.Articles = saveLinkedTextFramesAsArticlesCheckBox->isChecked();
650
        prefsData->pdfPrefs.Encrypt = useEncryptionCheckBox->isChecked();
651
        prefsData->pdfPrefs.UseLPI = useCustomRenderingCheckBox->isChecked();
652
        prefsData->pdfPrefs.UseSpotColors = !convertSpotsToProcessCheckBox->isChecked();
653
        prefsData->pdfPrefs.doMultiFile = false;
654
        prefsData->pdfPrefs.cropMarks  = printCropMarksCheckBox->isChecked();
655
        prefsData->pdfPrefs.bleedMarks = printBleedMarksCheckBox->isChecked();
656
        prefsData->pdfPrefs.registrationMarks = printRegistrationMarksCheckBox->isChecked();
657
        prefsData->pdfPrefs.colorMarks = printColorBarsCheckBox->isChecked();
658
        prefsData->pdfPrefs.docInfoMarks = printPageInfoCheckBox->isChecked();
17401 jghali 659
        prefsData->pdfPrefs.markLength   = markLengthSpinBox->value() / unitRatio;
660
        prefsData->pdfPrefs.markOffset   = markOffsetSpinBox->value() / unitRatio;
15065 cbradney 661
        prefsData->pdfPrefs.useDocBleeds = useDocumentBleedsCheckBox->isChecked();
17401 jghali 662
        prefsData->pdfPrefs.bleeds = bleedsWidget->margins();
14752 cbradney 663
        prefsData->pdfPrefs.doClip = clipToPrinterMarginsCheckBox->isChecked();
664
        if (useEncryptionCheckBox->isChecked())
665
        {
666
                int Perm = -64;
667
                if (pdfVersionComboBox->currentIndex() == 1)
668
                        Perm &= ~0x00240000;
669
                if (allowPrintingCheckBox->isChecked())
670
                        Perm += 4;
671
                if (allowChangingCheckBox->isChecked())
672
                        Perm += 8;
673
                if (allowCopyingCheckBox->isChecked())
674
                        Perm += 16;
675
                if (allowAnnotatingCheckBox->isChecked())
676
                        Perm += 32;
677
                prefsData->pdfPrefs.Permissions = Perm;
678
                prefsData->pdfPrefs.PassOwner = passwordOwnerLineEdit->text();
679
                prefsData->pdfPrefs.PassUser = passwordUserLineEdit->text();
680
        }
681
        if (pdfVersionComboBox->currentIndex() == 0)
682
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_13;
683
        if (pdfVersionComboBox->currentIndex() == 1)
684
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_14;
685
        if (pdfVersionComboBox->currentIndex() == 2)
686
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_15;
687
        if (pdfVersionComboBox->currentIndex() == 3)
688
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X1a;
689
        if (pdfVersionComboBox->currentIndex() == 4)
690
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X3;
691
        if (pdfVersionComboBox->currentIndex() == 5)
692
                prefsData->pdfPrefs.Version = PDFOptions::PDFVersion_X4;
693
        if (outputIntentionComboBox->currentIndex() == 0)
694
        {
695
                prefsData->pdfPrefs.isGrayscale = false;
696
                prefsData->pdfPrefs.UseRGB = true;
697
                prefsData->pdfPrefs.UseProfiles = false;
698
                prefsData->pdfPrefs.UseProfiles2 = false;
699
        }
700
        else
701
        {
702
                if (outputIntentionComboBox->currentIndex() == 2)
703
                {
704
                        prefsData->pdfPrefs.isGrayscale = true;
705
                        prefsData->pdfPrefs.UseRGB = false;
706
                        prefsData->pdfPrefs.UseProfiles = false;
707
                        prefsData->pdfPrefs.UseProfiles2 = false;
708
                }
709
                else
710
                {
711
                        prefsData->pdfPrefs.isGrayscale = false;
712
                        prefsData->pdfPrefs.UseRGB = false;
713
                        if (/*CMSuse*/ ScCore->haveCMS())
714
                        {
715
                                prefsData->pdfPrefs.UseProfiles = useSolidColorProfileCheckBox->isChecked();
716
                                prefsData->pdfPrefs.UseProfiles2 = useImageProfileCheckBox->isChecked();
717
                                prefsData->pdfPrefs.Intent = solidColorRenderingIntentComboBox->currentIndex();
718
                                prefsData->pdfPrefs.Intent2 = imageRenderingIntentComboBox->currentIndex();
719
                                prefsData->pdfPrefs.EmbeddedI = doNotUseEmbeddedImageProfileCheckBox->isChecked();
720
                                prefsData->pdfPrefs.SolidProf = solidColorProfileComboBox->currentText();
721
                                prefsData->pdfPrefs.ImageProf = imageProfileComboBox->currentText();
722
                                prefsData->pdfPrefs.PrintProf = pdfx3OutputProfileComboBox->currentText();
723
                        }
724
                }
725
        }
14448 cbradney 726
}
14451 cbradney 727
 
15081 cbradney 728
 
729
void Prefs_PDFExport::SelLPIcol(int c)
730
{
731
        // XXX Optionen or Opts changed here
732
        Opts.LPISettings[SelLPIcolor].Frequency = customRenderingFrequencySpinBox->value();
733
        Opts.LPISettings[SelLPIcolor].Angle = customRenderingAngleSpinBox->value();
734
        Opts.LPISettings[SelLPIcolor].SpotFunc = customRenderingSpotFunctionComboBox->currentIndex();
735
        customRenderingFrequencySpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Frequency);
736
        customRenderingAngleSpinBox->setValue(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].Angle);
737
        customRenderingSpotFunctionComboBox->setCurrentIndex(Opts.LPISettings[customRenderingColorComboBox->itemText(c)].SpotFunc);
738
        SelLPIcolor = customRenderingColorComboBox->itemText(c);
739
}
740
 
14451 cbradney 741
void Prefs_PDFExport::enableRangeControls(bool enabled)
742
{
743
        exportPageListLineEdit->setEnabled( enabled );
744
        exportRangeMorePushButton->setEnabled( enabled );
745
        if (enabled == false)
746
                includeBookmarksCheckBox->setChecked(false);
747
}
748
 
749
void Prefs_PDFExport::enableSecurityControls(bool enabled)
750
{
751
        passwordOwnerLineEdit->setEnabled(enabled);
752
        passwordUserLineEdit->setEnabled(enabled);
753
        allowPrintingCheckBox->setEnabled(enabled);
754
        allowChangingCheckBox->setEnabled(enabled);
755
        allowCopyingCheckBox->setEnabled(enabled);
756
        allowAnnotatingCheckBox->setEnabled(enabled);
757
}
758
 
14745 cbradney 759
 
760
void Prefs_PDFExport::enableCMS(bool enabled)
761
{
762
        cmsEnabled=enabled;
763
        addPDFVersions(enabled);
15080 cbradney 764
        enableProfiles(enabled);
14745 cbradney 765
}
766
 
15065 cbradney 767
void Prefs_PDFExport::enablePDFExportTabs(bool enabled)
768
{
769
        if (!enabled)
770
        {
771
                tabWidget->removeTab(tabWidget->indexOf(tabFonts));//Fonts
772
                tabWidget->removeTab(tabWidget->indexOf(tabExtras));//Extras
773
                tabWidget->removeTab(tabWidget->indexOf(tabViewer));//Viewer
774
        }
775
}
776
 
14451 cbradney 777
void Prefs_PDFExport::createPageNumberRange()
778
{
779
        if (m_doc!=0)
780
        {
781
                CreateRange cr(exportPageListLineEdit->text(), m_doc->DocPages.count(), this);
782
                if (cr.exec())
783
                {
784
                        CreateRangeData crData;
785
                        cr.getCreateRangeData(crData);
786
                        exportPageListLineEdit->setText(crData.pageRange);
787
                        return;
788
                }
789
        }
790
        exportPageListLineEdit->setText(QString::null);
791
}
14736 cbradney 792
 
793
void Prefs_PDFExport::setMaximumResolution()
794
{
795
        if (maxResolutionLimitCheckBox->isChecked())
796
        {
797
                maxExportResolutionSpinBox->setEnabled(true);
798
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
799
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
800
        }
801
        else
802
                maxExportResolutionSpinBox->setEnabled(false);
803
}
804
 
805
void Prefs_PDFExport::enableProfiles(int i)
806
{
807
        enableLPI(i);
808
        bool setter = false;
809
        if (i == 1 && pdfVersionComboBox->currentIndex() != 3)
810
                setter = true;
14737 cbradney 811
        enableSolidsImagesWidgets(setter);
14736 cbradney 812
}
813
 
814
void Prefs_PDFExport::enableLPI(int i)
815
{
816
        if (i == 1)
817
        {
818
                QString tp(Opts.SolidProf);
819
                if (!ScCore->InputProfiles.contains(tp))
820
                {
821
                        if (m_doc != 0)
15001 cbradney 822
                                tp = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 823
                        else
824
                                tp = defaultSolidColorRGBProfile;
825
                }
826
                solidColorProfileComboBox->clear();
827
                ProfilesL::Iterator itp;
828
                ProfilesL::Iterator itpend=ScCore->InputProfiles.end();
829
                for (itp = ScCore->InputProfiles.begin(); itp != itpend; ++itp)
830
                {
831
                        solidColorProfileComboBox->addItem(itp.key());
832
                        if (itp.key() == tp)
833
                        {
834
                                if (cmsEnabled)
835
                                        solidColorProfileComboBox->setCurrentIndex(solidColorProfileComboBox->count()-1);
836
                        }
837
                }
838
                if (cmsEnabled)
839
                        solidColorRenderingIntentComboBox->setCurrentIndex(Opts.Intent);
840
                QString tp1 = Opts.ImageProf;
841
                if (!ScCore->InputProfiles.contains(tp1))
842
                {
843
                        if (m_doc != 0)
15001 cbradney 844
                                tp1 = m_doc->cmsSettings().DefaultSolidColorRGBProfile;
14736 cbradney 845
                        else
846
                                tp1 = defaultSolidColorRGBProfile;
847
                }
848
                imageProfileComboBox->clear();
849
                ProfilesL::Iterator itp2;
850
                ProfilesL::Iterator itp2end=ScCore->InputProfiles.end();
851
                for (itp2 = ScCore->InputProfiles.begin(); itp2 != itp2end; ++itp2)
852
                {
853
                        imageProfileComboBox->addItem(itp2.key());
854
                        if (itp2.key() == tp1)
855
                        {
856
                                if (cmsEnabled)
857
                                        imageProfileComboBox->setCurrentIndex(imageProfileComboBox->count()-1);
858
                        }
859
                }
860
                if (cmsEnabled)
861
                        imageRenderingIntentComboBox->setCurrentIndex(Opts.Intent2);
15081 cbradney 862
                //Disabling vs hiding
14737 cbradney 863
                enableSolidsImagesWidgets(cmsEnabled);
15080 cbradney 864
                convertSpotsToProcessCheckBox->setEnabled(true);
14736 cbradney 865
                if (m_doc!=0)
866
                {
15081 cbradney 867
                        useCustomRenderingCheckBox->setEnabled(true);
14737 cbradney 868
                        enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
14736 cbradney 869
                }
870
        }
871
        else
872
        {
15080 cbradney 873
                convertSpotsToProcessCheckBox->setEnabled(false);
15081 cbradney 874
                useCustomRenderingCheckBox->setEnabled(false);
14737 cbradney 875
                enableCustomRenderingWidgets(false);
14736 cbradney 876
        }
877
}
878
 
15081 cbradney 879
 
880
void Prefs_PDFExport::enableLPI2()
881
{
882
        if (m_doc!=0)
883
                enableCustomRenderingWidgets(useCustomRenderingCheckBox->isChecked());
884
}
885
 
14736 cbradney 886
void Prefs_PDFExport::setCustomRenderingWidgetsShown(bool visible)
887
{
18194 fschmid 888
        useCustomRenderingCheckBox->setVisible(visible);
889
        customRenderingColorComboBox->setVisible(visible);
890
        customRenderingFrequencySpinBox->setVisible(visible);
891
        customRenderingAngleSpinBox->setVisible(visible);
892
        customRenderingSpotFunctionComboBox->setVisible(visible);
14736 cbradney 893
}
894
 
14737 cbradney 895
void Prefs_PDFExport::enableCustomRenderingWidgets(bool enabled)
896
{
897
        customRenderingColorComboBox->setEnabled(enabled);
898
        customRenderingFrequencySpinBox->setEnabled(enabled);
899
        customRenderingAngleSpinBox->setEnabled(enabled);
900
        customRenderingSpotFunctionComboBox->setEnabled(enabled);
901
}
14736 cbradney 902
 
903
void Prefs_PDFExport::setSolidsImagesWidgetsShown(bool visible)
904
{
18194 fschmid 905
        solidColorsLabel->setVisible(visible);
906
        solidColorsLine->setVisible(visible);
907
        useSolidColorProfileCheckBox->setVisible(visible);
908
        solidColorProfileComboBox->setVisible(visible);
909
        solidColorRenderingIntentComboBox->setVisible(visible);
910
        imagesLabel->setVisible(visible);
911
        imagesLine->setVisible(visible);
912
        useImageProfileCheckBox->setVisible(visible);
913
        doNotUseEmbeddedImageProfileCheckBox->setVisible(visible);
914
        imageProfileComboBox->setVisible(visible);
915
        imageRenderingIntentComboBox->setVisible(visible);
14736 cbradney 916
}
15081 cbradney 917
 
14737 cbradney 918
void Prefs_PDFExport::enableSolidsImagesWidgets(bool enabled)
14736 cbradney 919
{
15080 cbradney 920
        //if we want to show/hide instead
921
        //setSolidsImagesWidgetsShown(enabled);
14736 cbradney 922
        useSolidColorProfileCheckBox->setEnabled(enabled);
923
        solidColorProfileComboBox->setEnabled(enabled);
924
        solidColorRenderingIntentComboBox->setEnabled(enabled);
925
        useImageProfileCheckBox->setEnabled(enabled);
926
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(enabled);
927
        imageProfileComboBox->setEnabled(enabled);
928
        imageRenderingIntentComboBox->setEnabled(enabled);
929
}
930
 
14737 cbradney 931
void Prefs_PDFExport::enablePDFXWidgets(bool enabled)
932
{
933
        pdfx3OutputProfileComboBox->setEnabled(enabled);
934
        pdfx3InfoStringLineEdit->setEnabled(enabled);
935
}
14736 cbradney 936
 
14737 cbradney 937
 
14736 cbradney 938
void Prefs_PDFExport::enablePGI()
939
{
940
        bool setter=false;
941
        if (useImageProfileCheckBox->isChecked())
942
                setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
943
        imageProfileComboBox->setEnabled(setter);
944
        imageRenderingIntentComboBox->setEnabled(setter);
945
        doNotUseEmbeddedImageProfileCheckBox->setEnabled(useImageProfileCheckBox->isChecked());
946
}
947
 
948
void Prefs_PDFExport::enablePGI2()
949
{
950
        bool setter = doNotUseEmbeddedImageProfileCheckBox->isChecked() ? true : false;
951
        imageProfileComboBox->setEnabled(setter);
952
        imageRenderingIntentComboBox->setEnabled(setter);
953
}
954
 
955
void Prefs_PDFExport::enablePG()
956
{
957
        bool setter = useSolidColorProfileCheckBox->isChecked() ? true : false;
958
 
959
        solidColorProfileComboBox->setEnabled(setter);
960
        solidColorRenderingIntentComboBox->setEnabled(setter);
961
}
962
 
963
void Prefs_PDFExport::enablePDFX(int i)
964
{
965
        includeLayersCheckBox->setEnabled((i == 2) || (i == 5));
15065 cbradney 966
        if (useLayersRadioButton)
967
                useLayersRadioButton->setEnabled((i == 2) || (i == 5));
968
        if (m_doc != 0 && exportingPDF)
14736 cbradney 969
        {
15065 cbradney 970
                int currentEff = effectTypeComboBox->currentIndex();
971
                disconnect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
972
                effectTypeComboBox->clear();
973
                effectTypeComboBox->addItem( tr("No Effect"));
974
                effectTypeComboBox->addItem( tr("Blinds"));
975
                effectTypeComboBox->addItem( tr("Box"));
976
                effectTypeComboBox->addItem( tr("Dissolve"));
977
                effectTypeComboBox->addItem( tr("Glitter"));
978
                effectTypeComboBox->addItem( tr("Split"));
979
                effectTypeComboBox->addItem( tr("Wipe"));
14736 cbradney 980
                if (i == 2)
981
                {
15065 cbradney 982
                        effectTypeComboBox->addItem( tr("Push"));
983
                        effectTypeComboBox->addItem( tr("Cover"));
984
                        effectTypeComboBox->addItem( tr("Uncover"));
985
                        effectTypeComboBox->addItem( tr("Fade"));
986
                        effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 987
                }
988
                else
989
                {
990
                        if (currentEff > 6)
991
                        {
992
                                currentEff = 0;
15065 cbradney 993
                                effectTypeComboBox->setCurrentIndex(0);
14736 cbradney 994
                                SetEffOpts(0);
15065 cbradney 995
                                for (int pg = 0; pg<m_doc->Pages->count(); ++pg)
14736 cbradney 996
                                {
997
                                        if (EffVal[pg].effectType > 6)
998
                                                EffVal[pg].effectType = 0;
999
                                }
1000
                        }
1001
                        else
15065 cbradney 1002
                                effectTypeComboBox->setCurrentIndex(currentEff);
14736 cbradney 1003
                }
15065 cbradney 1004
                connect(effectTypeComboBox, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
14736 cbradney 1005
        }
15065 cbradney 1006
 
14736 cbradney 1007
        if (i < 3)  // not PDF/X
1008
        {
14737 cbradney 1009
                enablePDFXWidgets(false);
14736 cbradney 1010
                tabWidget->setTabEnabled(2, true);
1011
                outputIntentionComboBox->setEnabled(true);
1012
                useImageProfileCheckBox->setEnabled(true);
1013
                emit hasInfo();
15065 cbradney 1014
                if (m_doc != 0 && exportingPDF)
14736 cbradney 1015
                {
15065 cbradney 1016
                        enabledEffectsCheckBox->setEnabled(true);
1017
                        embedAllButton->setEnabled(true);
1018
                        if (embeddedFontsListWidget->count() != 0)
1019
                                fromEmbedButton->setEnabled(true);
1020
                        toEmbedButton->setEnabled(true);
14736 cbradney 1021
                }
15065 cbradney 1022
 
14736 cbradney 1023
                return;
1024
        }
1025
        // PDF/X is selected
1026
        disconnect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1027
        outputIntentionComboBox->setCurrentIndex(1);
1028
        outputIntentionComboBox->setEnabled(false);
1029
        enableProfiles(1);
1030
        if ((i == 4) || (i == 5)) // X3 or X4, enforcing color profiles on images
1031
        {
1032
                useImageProfileCheckBox->setChecked(true);
1033
                useImageProfileCheckBox->setEnabled(false);
1034
        }
15065 cbradney 1035
        if (m_doc != 0 && exportingPDF)
14736 cbradney 1036
        {
1037
//              EmbedFonts->setChecked(true);
1038
                EmbedAll();
15065 cbradney 1039
                enabledEffectsCheckBox->setChecked(false);
1040
                enabledEffectsCheckBox->setEnabled(false);
14736 cbradney 1041
//              EmbedFonts->setEnabled(false);
15065 cbradney 1042
                fromEmbedButton->setEnabled(false);
1043
                toEmbedButton->setEnabled(false);
1044
                if (pdfx3InfoStringLineEdit->text().isEmpty())
14736 cbradney 1045
                        emit noInfo();
1046
                else
1047
                        emit hasInfo();
1048
        }
1049
        enablePGI();
1050
        pdfx3OutputProfileComboBox->setEnabled(true);
1051
        pdfx3InfoStringLineEdit->setEnabled(true);
1052
        tabWidget->setTabEnabled(2, false);
1053
        connect(outputIntentionComboBox, SIGNAL(activated(int)), this, SLOT(enableProfiles(int)));
1054
}
14745 cbradney 1055
 
1056
void Prefs_PDFExport::addPDFVersions(bool addPDFXStrings)
1057
{
1058
        disconnect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1059
        int i = pdfVersionComboBox->currentIndex();
1060
        pdfVersionComboBox->clear();
1061
        pdfVersionComboBox->addItem("PDF 1.3 (Acrobat 4)");
1062
        pdfVersionComboBox->addItem("PDF 1.4 (Acrobat 5)");
1063
        pdfVersionComboBox->addItem("PDF 1.5 (Acrobat 6)");
1064
        if (addPDFXStrings)
1065
        {
1066
                pdfVersionComboBox->addItem("PDF/X-1a");
1067
                pdfVersionComboBox->addItem("PDF/X-3");
1068
                pdfVersionComboBox->addItem("PDF/X-4");
1069
        }
1070
        else
1071
                i=qMin(i,2);
1072
        pdfVersionComboBox->setCurrentIndex(i);
1073
        connect(pdfVersionComboBox, SIGNAL(activated(int)), this, SLOT(enablePDFX(int)));
1074
}
15065 cbradney 1075
 
1076
 
1077
void Prefs_PDFExport::enableEffects(bool enabled)
1078
{
1079
        effectsPageListWidget->setEnabled(enabled);
1080
        showPagePreviewsCheckBox->setEnabled(enabled);
1081
        displayDurationSpinBox->setEnabled(enabled);
1082
        effectDurationSpinBox->setEnabled(enabled);
1083
        effectTypeComboBox->setEnabled(enabled);
1084
        if (enabled)
1085
                SetEffOpts(effectTypeComboBox->currentIndex());
1086
        else
1087
        {
1088
                effectMovingDirectionComboBox->setEnabled(false);
1089
                effectInOutComboBox->setEnabled(false);
1090
                effectDirectionComboBox->setEnabled(false);
1091
                applyEffectToAllPagesPushButton->setEnabled(false);
1092
        }
1093
}
15081 cbradney 1094
 
1095
void Prefs_PDFExport::EmbedAll()
1096
{
1097
        embeddedFontsListWidget->clear();
1098
        FontsToEmbed.clear();
1099
        outlinedFontsListWidget->clear();
1100
        FontsToOutline.clear();
1101
        fromEmbedButton->setEnabled(false);
1102
        toEmbedButton->setEnabled(false);
1103
        toOutlineButton->setEnabled(false);
1104
        fromOutlineButton->setEnabled(false);
1105
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1106
        {
1107
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
1108
                {
1109
                        if (!AllFonts[availableFontsListWidget->item(a)->text()].subset())
1110
                        {
1111
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1112
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1113
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1114
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1115
                        }
1116
                        else
1117
                        {
1118
                                if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1119
                                {
1120
                                        FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1121
                                        embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1122
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1123
                                }
1124
                                else
1125
                                {
1126
                                        FontsToOutline.append(availableFontsListWidget->item(a)->text());
1127
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1128
                                }
1129
                        }
1130
                }
1131
        }
1132
}
1133
 
1134
void Prefs_PDFExport::OutlineAll()
1135
{
1136
        embeddedFontsListWidget->clear();
1137
        FontsToEmbed.clear();
1138
        outlinedFontsListWidget->clear();
1139
        FontsToOutline.clear();
1140
        fromEmbedButton->setEnabled(false);
1141
        toEmbedButton->setEnabled(false);
1142
        toOutlineButton->setEnabled(false);
1143
        fromOutlineButton->setEnabled(false);
1144
        for (int a=0; a < availableFontsListWidget->count(); ++a)
1145
        {
1146
                if (availableFontsListWidget->item(a)->flags() & Qt::ItemIsSelectable)
1147
                {
1148
                        if (AnnotationFonts.contains(availableFontsListWidget->item(a)->text()))
1149
                        {
1150
                                FontsToEmbed.append(availableFontsListWidget->item(a)->text());
1151
                                embeddedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1152
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1153
                        }
1154
                        else
1155
                        {
1156
                                FontsToOutline.append(availableFontsListWidget->item(a)->text());
1157
                                outlinedFontsListWidget->addItem(availableFontsListWidget->item(a)->text());
1158
                        }
1159
                }
1160
        }
1161
}
1162
 
1163
void Prefs_PDFExport::doDocBleeds()
1164
{
1165
        if (useDocumentBleedsCheckBox->isChecked())
1166
        {
1167
                Opts.bleeds=bleedsWidget->margins();
1168
                bleedsWidget->setNewValues(m_doc->bleedsVal());
1169
                bleedsWidget->setEnabled(false);
1170
        }
1171
        else
1172
        {
1173
                bleedsWidget->setNewValues(Opts.bleeds);
1174
                bleedsWidget->setEnabled(true);
1175
        }
1176
}
1177
 
1178
 
1179
void Prefs_PDFExport::SetEffOpts(int nr)
1180
{
1181
        QStandardItem* si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1182
        if (si) si->setSelectable(false);
1183
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1184
        if (si) si->setSelectable(false);
1185
        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1186
        if (si) si->setSelectable(false);
1187
        switch (nr)
1188
        {
1189
        case 0:
1190
        case 3:
1191
        case 10:
1192
                effectMovingDirectionComboBox->setEnabled(false);
1193
                effectInOutComboBox->setEnabled(false);
1194
                effectDirectionComboBox->setEnabled(false);
1195
                break;
1196
        case 1:
1197
                effectMovingDirectionComboBox->setEnabled(true);
1198
                effectInOutComboBox->setEnabled(false);
1199
                effectDirectionComboBox->setEnabled(false);
1200
                break;
1201
        case 2:
1202
                effectMovingDirectionComboBox->setEnabled(false);
1203
                effectInOutComboBox->setEnabled(true);
1204
                effectDirectionComboBox->setEnabled(false);
1205
                break;
1206
        case 4:
1207
        case 6:
1208
        case 7:
1209
        case 8:
1210
        case 9:
1211
                effectMovingDirectionComboBox->setEnabled(false);
1212
                effectInOutComboBox->setEnabled(false);
1213
                effectDirectionComboBox->setEnabled(true);
1214
                if (nr == 6)
1215
                {
1216
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(2));
1217
                        if (si) si->setSelectable(true);
1218
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(3));
1219
                        if (si) si->setSelectable(true);
1220
                }
1221
                else
1222
                {
1223
                        si = dynamic_cast<QStandardItem*>(effectDirectionComboBox->view()->children().at(4));
1224
                        if (si) si->setSelectable(true);
1225
                }
1226
                break;
1227
        case 5:
1228
                effectMovingDirectionComboBox->setEnabled(true);
1229
                effectInOutComboBox->setEnabled(true);
1230
                effectDirectionComboBox->setEnabled(false);
1231
                break;
1232
        }
1233
}
15082 cbradney 1234
 
1235
void Prefs_PDFExport::SelAFont(QListWidgetItem *c)
1236
{
1237
        if (c != NULL)
1238
        {
1239
                fromEmbedButton->setEnabled(false);
1240
                if (c->flags() & Qt::ItemIsSelectable)
1241
                        toEmbedButton->setEnabled(true);
1242
                toOutlineButton->setEnabled(false);
1243
                fromOutlineButton->setEnabled(false);
1244
                embeddedFontsListWidget->clearSelection();
1245
                outlinedFontsListWidget->clearSelection();
1246
        }
1247
}
1248
 
1249
void Prefs_PDFExport::SelEFont(QListWidgetItem *c)
1250
{
1251
        if (c != NULL)
1252
        {
1253
                if ((pdfVersionComboBox->currentIndex() < 3) && (c->flags() & Qt::ItemIsSelectable))
1254
                        fromEmbedButton->setEnabled(true);
1255
                else
1256
                        fromEmbedButton->setEnabled(false);
1257
                toEmbedButton->setEnabled(false);
1258
                if (c->flags() & Qt::ItemIsSelectable)
1259
                        toOutlineButton->setEnabled(true);
1260
                fromOutlineButton->setEnabled(false);
1261
                availableFontsListWidget->clearSelection();
1262
                outlinedFontsListWidget->clearSelection();
1263
        }
1264
}
1265
 
1266
void Prefs_PDFExport::SelSFont(QListWidgetItem *c)
1267
{
1268
        if (c != NULL)
1269
        {
1270
                if (pdfVersionComboBox->currentIndex() == 4)
1271
                {
1272
                        if ((AllFonts[c->text()].type() == ScFace::OTF) || (AllFonts[c->text()].subset()))
1273
                                fromOutlineButton->setEnabled(false);
1274
                        else
1275
                                fromOutlineButton->setEnabled(true);
1276
                }
1277
                else
1278
                        fromOutlineButton->setEnabled(true);
1279
                toOutlineButton->setEnabled(false);
1280
                toEmbedButton->setEnabled(false);
1281
                fromEmbedButton->setEnabled(false);
1282
                embeddedFontsListWidget->clearSelection();
1283
                availableFontsListWidget->clearSelection();
1284
        }
1285
}
1286
 
1287
void Prefs_PDFExport::PagePr()
1288
{
1289
        disconnect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1290
        QString tmp;
1291
        QPixmap pm;
1292
        int ci = effectsPageListWidget->currentRow();
1293
        int pgMaxX = 0;
1294
        int pgMaxY = 0;
1295
        effectsPageListWidget->clear();
1296
        if (showPagePreviewsCheckBox->isChecked())
1297
        {
1298
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1299
                {
1300
                        pm=QPixmap::fromImage(m_doc->view()->PageToPixmap(pg, 70));
1301
                        pgMaxX = qMax(pgMaxX, pm.width());
1302
                        pgMaxY = qMax(pgMaxY, pm.height());
1303
                        new QListWidgetItem( pm, tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1304
                }
1305
                effectsPageListWidget->setIconSize(QSize(pgMaxX, pgMaxY));
1306
        }
1307
        else
1308
        {
1309
                for (int pg = 0; pg < m_doc->Pages->count(); ++pg)
1310
                {
1311
                        new QListWidgetItem( tr("Page")+" "+tmp.setNum(pg+1), effectsPageListWidget);
1312
                }
1313
        }
1314
        if (ci != -1)
1315
        {
1316
                PgSel = ci;
1317
                effectsPageListWidget->setCurrentRow(ci);
1318
        }
1319
        else
1320
        {
1321
                PgSel = 0;
1322
                effectsPageListWidget->clearSelection();
1323
        }
1324
        connect(effectsPageListWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(SetPgEff()));
1325
}
1326
 
1327
void Prefs_PDFExport::DoDownsample()
1328
{
1329
        if (maxResolutionLimitCheckBox->isChecked())
1330
        {
1331
                maxExportResolutionSpinBox->setEnabled(true);
1332
                if (maxExportResolutionSpinBox->value() > epsExportResolutionSpinBox->value())
1333
                        maxExportResolutionSpinBox->setValue(epsExportResolutionSpinBox->value());
1334
        }
1335
        else
1336
                maxExportResolutionSpinBox->setEnabled(false);
1337
}
1338
 
1339
void Prefs_PDFExport::RemoveEmbed()
1340
{
1341
        FontsToEmbed.removeAll(embeddedFontsListWidget->currentItem()->text());
1342
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1343
        embeddedFontsListWidget->clearSelection();
1344
        if (embeddedFontsListWidget->count() == 0)
1345
        {
1346
                fromEmbedButton->setEnabled(false);
1347
                toOutlineButton->setEnabled(false);
1348
        }
1349
        else
1350
        {
1351
                if (!embeddedFontsListWidget->item(embeddedFontsListWidget->currentRow())->flags() & Qt::ItemIsSelectable)
1352
                {
1353
                        fromEmbedButton->setEnabled(false);
1354
                        toOutlineButton->setEnabled(false);
1355
                }
1356
        }
1357
}
1358
 
1359
void Prefs_PDFExport::PutToEmbed()
1360
{
1361
        if (embeddedFontsListWidget->count() != 0)
1362
        {
1363
                if (!AllFonts[availableFontsListWidget->currentItem()->text()].subset())
1364
                {
1365
                        if (embeddedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1366
                        {
1367
                                FontsToEmbed.append(availableFontsListWidget->currentItem()->text());
1368
                                embeddedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1369
                                if (AnnotationFonts.contains(availableFontsListWidget->currentItem()->text()))
1370
                                        embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1371
                        }
1372
                }
1373
                else
1374
                {
1375
                        if (outlinedFontsListWidget->count() != 0)
1376
                        {
1377
                                if (outlinedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1378
                                {
1379
                                        FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1380
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1381
                                }
1382
                        }
1383
                        else
1384
                        {
1385
                                FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1386
                                outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1387
                        }
1388
                }
1389
        }
1390
        else
1391
        {
1392
                if ((AllFonts[availableFontsListWidget->currentItem()->text()].type() != ScFace::OTF) && (!AllFonts[availableFontsListWidget->currentItem()->text()].subset()))
1393
                {
1394
                        FontsToEmbed.append(availableFontsListWidget->currentItem()->text());
1395
                        embeddedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1396
                        if (AnnotationFonts.contains(availableFontsListWidget->currentItem()->text()))
1397
                                embeddedFontsListWidget->item(embeddedFontsListWidget->count()-1)->setFlags(Qt::ItemIsEnabled);
1398
                }
1399
                else
1400
                {
1401
                        if (outlinedFontsListWidget->count() != 0)
1402
                        {
1403
                                if (outlinedFontsListWidget->findItems(availableFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1404
                                {
1405
                                        FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1406
                                        outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1407
                                }
1408
                        }
1409
                        else
1410
                        {
1411
                                FontsToOutline.append(availableFontsListWidget->currentItem()->text());
1412
                                outlinedFontsListWidget->addItem(availableFontsListWidget->currentItem()->text());
1413
                        }
1414
                }
1415
        }
1416
}
1417
 
1418
void Prefs_PDFExport::RemoveOutline()
1419
{
1420
        FontsToOutline.removeAll(outlinedFontsListWidget->currentItem()->text());
1421
        if ((AllFonts[outlinedFontsListWidget->currentItem()->text()].type() != ScFace::OTF) && (!AllFonts[outlinedFontsListWidget->currentItem()->text()].subset()))
1422
        {
1423
                FontsToEmbed.append(outlinedFontsListWidget->currentItem()->text());
1424
                embeddedFontsListWidget->addItem(outlinedFontsListWidget->currentItem()->text());
1425
        }
1426
        delete outlinedFontsListWidget->takeItem(outlinedFontsListWidget->currentRow());
1427
        outlinedFontsListWidget->clearSelection();
1428
        if (outlinedFontsListWidget->count() == 0)
1429
                fromOutlineButton->setEnabled(false);
1430
}
1431
 
1432
void Prefs_PDFExport::PutToOutline()
1433
{
1434
        if (outlinedFontsListWidget->count() != 0)
1435
        {
1436
                if (outlinedFontsListWidget->findItems(embeddedFontsListWidget->currentItem()->text(), Qt::MatchExactly).count() == 0)
1437
                {
1438
                        FontsToOutline.append(embeddedFontsListWidget->currentItem()->text());
1439
                        outlinedFontsListWidget->addItem(embeddedFontsListWidget->currentItem()->text());
1440
                }
1441
        }
1442
        else
1443
        {
1444
                FontsToOutline.append(embeddedFontsListWidget->currentItem()->text());
1445
                outlinedFontsListWidget->addItem(embeddedFontsListWidget->currentItem()->text());
1446
        }
1447
        FontsToEmbed.removeAll(embeddedFontsListWidget->currentItem()->text());
1448
        delete embeddedFontsListWidget->takeItem(embeddedFontsListWidget->currentRow());
1449
        embeddedFontsListWidget->clearSelection();
1450
        if (embeddedFontsListWidget->count() == 0)
1451
        {
1452
                fromEmbedButton->setEnabled(false);
1453
                toOutlineButton->setEnabled(false);
1454
        }
1455
        else
1456
        {
1457
                if (!(embeddedFontsListWidget->currentItem()->flags() & Qt::ItemIsSelectable))
1458
                {
1459
                        fromEmbedButton->setEnabled(false);
1460
                        toOutlineButton->setEnabled(false);
1461
                }
1462
        }
1463
}