Subversion Repositories Scribus

Rev

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

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