Subversion Repositories Scribus

Rev

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