Subversion Repositories Scribus

Rev

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

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