Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
1307 fschmid 1
/***************************************************************************
2
 *                                                                         *
3
 *   This program is free software; you can redistribute it and/or modify  *
4
 *   it under the terms of the GNU General Public License as published by  *
5
 *   the Free Software Foundation; either version 2 of the License, or     *
6
 *   (at your option) any later version.                                   *
7
 *                                                                         *
8
 ***************************************************************************/
9
#include "tabpdfoptions.h"
10
#include "tabpdfoptions.moc"
11
 
12
#include <qpainter.h>
13
#include "units.h"
1972 craig 14
#include "pdfoptions.h"
2834 cbradney 15
#include "prefsmanager.h"
2688 craig 16
#include "scconfig.h"
1307 fschmid 17
 
18
extern QPixmap loadIcon(QString nam);
19
#ifdef HAVE_CMS
20
extern bool CMSuse;
21
#endif
22
extern bool CMSavail;
23
#include "scribus.h"
24
 
25
 
2834 cbradney 26
 
3205 craig 27
 
1792 cbradney 28
TabPDFOptions::TabPDFOptions(   QWidget* parent, PDFOptions *Optionen, SCFonts &AllFonts,
4197 fschmid 29
                                ProfilesL *PDFXProfiles, QMap<QString,int> DocFonts,
30
                                QValueList<PDFPresentationData> Eff, int unitIndex,
31
                                double PageH, double PageB, ScribusView *vie ) : QTabWidget( parent, "pdf" )
1307 fschmid 32
{
1792 cbradney 33
 
34
        unit = unitGetSuffixFromIndex(unitIndex);
35
        precision = unitGetPrecisionFromIndex(unitIndex);
36
        unitRatio = unitGetRatioFromIndex(unitIndex);
3849 subik 37
 
1307 fschmid 38
        FontsToEmbed.clear();
3633 fschmid 39
        AllFontsP = &AllFonts;
1307 fschmid 40
        view = vie;
41
        EffVal = Eff;
42
        Opts = Optionen;
43
        pageH = PageH;
44
        pageB = PageB;
45
        tabGeneral = new QWidget( this, "tabGeneral" );
46
        tabLayout = new QVBoxLayout( tabGeneral );
47
        tabLayout->setSpacing( 5 );
1878 cbradney 48
        tabLayout->setMargin( 0 );
1307 fschmid 49
        Layout13 = new QHBoxLayout( 0, 0, 5, "Layout13");
50
        RangeGroup = new QButtonGroup( tabGeneral, "RangeGroup" );
51
        RangeGroup->setTitle( tr( "Export Range" ) );
52
        RangeGroup->setColumnLayout(0, Qt::Vertical );
53
        RangeGroup->layout()->setSpacing( 5 );
54
        RangeGroup->layout()->setMargin( 10 );
55
        RangeGroupLayout = new QVBoxLayout( RangeGroup->layout() );
56
        RangeGroupLayout->setAlignment( Qt::AlignTop );
57
        AllPages = new QRadioButton( tr( "&All Pages" ), RangeGroup, "AllPages" );
58
        AllPages->setChecked( true );
59
        RangeGroupLayout->addWidget( AllPages );
60
        Layout11 = new QGridLayout( 0, 1, 1, 0, 5, "Layout11");
61
        OnlySome = new QRadioButton( tr( "C&hoose Pages" ), RangeGroup, "OnlySome" );
62
        Layout11->addWidget( OnlySome, 0, 0 );
63
        PageNr = new QLineEdit( RangeGroup, "PageNr" );
64
        PageNr->setEnabled(false);
65
        Layout11->addWidget( PageNr, 1, 0 );
66
        RangeGroupLayout->addLayout( Layout11 );
67
        TextLabel3 = new QLabel( tr( "&Rotation:" ), RangeGroup, "TextLabel3" );
68
        RangeGroupLayout->addWidget( TextLabel3 );
69
        RotateDeg = new QComboBox( true, RangeGroup, "RotateDeg" );
70
        RotateDeg->insertItem(QString::fromUtf8("0 °"));
71
        RotateDeg->insertItem(QString::fromUtf8("90 °"));
72
        RotateDeg->insertItem(QString::fromUtf8("180 °"));
73
        RotateDeg->insertItem(QString::fromUtf8("270 °"));
74
        RotateDeg->setEditable(false);
75
        TextLabel3->setBuddy(RotateDeg);
76
        RotateDeg->setCurrentItem(Optionen->RotateDeg / 90);
77
        RangeGroupLayout->addWidget( RotateDeg );
78
        Layout11a = new QGridLayout( 0, 1, 1, 0, 5, "Layout11a");
79
        MirrorH = new QToolButton( RangeGroup, "MirrorH" );
80
        MirrorH->setPixmap(loadIcon("FlipH.xpm"));
81
        MirrorH->setToggleButton( true );
82
        MirrorH->setOn(Optionen->MirrorH);
83
        Layout11a->addWidget( MirrorH, 0, 0 );
84
        MirrorV = new QToolButton( RangeGroup, "MirrorH" );
85
        MirrorV->setPixmap(loadIcon("FlipV.xpm"));
86
        MirrorV->setToggleButton( true );
87
        MirrorV->setOn(Optionen->MirrorV);
88
        Layout11a->addWidget( MirrorV, 0, 1 );
89
        RangeGroupLayout->addLayout( Layout11a );
90
        Layout13->addWidget( RangeGroup );
91
 
92
        GroupBox1 = new QGroupBox( tr( "File Options" ), tabGeneral, "GroupBox1" );
93
        GroupBox1->setColumnLayout(0, Qt::Vertical );
94
        GroupBox1->layout()->setSpacing( 0 );
95
        GroupBox1->layout()->setMargin( 0 );
96
        GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
97
        GroupBox1Layout->setAlignment( Qt::AlignTop );
98
        GroupBox1Layout->setSpacing( 5 );
99
        GroupBox1Layout->setMargin( 10 );
100
        TextLabel1 = new QLabel( tr( "Compatibilit&y:" ), GroupBox1, "TextLabel1" );
101
        TextLabel1->setAlignment( static_cast<int>( QLabel::AlignVCenter | QLabel::AlignLeft ) );
102
        GroupBox1Layout->addWidget( TextLabel1, 0, 0 );
1973 craig 103
        PDFVersionCombo = new QComboBox( true, GroupBox1, "PDFVersionCombo" );
104
        PDFVersionCombo->setEditable(false);
105
        TextLabel1->setBuddy(PDFVersionCombo);
2578 craig 106
        PDFVersionCombo->insertItem("PDF 1.3");
107
        PDFVersionCombo->insertItem("PDF 1.4");
108
        PDFVersionCombo->insertItem("PDF 1.5");
1307 fschmid 109
#ifdef HAVE_CMS
110
        if ((CMSuse) && (CMSavail) && (!PDFXProfiles->isEmpty()))
1973 craig 111
                PDFVersionCombo->insertItem("PDF/X-3");
1307 fschmid 112
        if ((CMSuse) && (CMSavail))
113
        {
1973 craig 114
                if (Optionen->Version == PDFOptions::PDFVersion_X3)
115
                        PDFVersionCombo->setCurrentItem(3);
1307 fschmid 116
        }
117
        else
1973 craig 118
                PDFVersionCombo->setCurrentItem(0);
1365 cbradney 119
        cms = CMSuse && CMSavail;
120
#else
121
        cms = false;
1307 fschmid 122
#endif
1973 craig 123
        if (Optionen->Version == PDFOptions::PDFVersion_13)
124
                PDFVersionCombo->setCurrentItem(0);
125
        if (Optionen->Version == PDFOptions::PDFVersion_14)
126
                PDFVersionCombo->setCurrentItem(1);
127
        if (Optionen->Version == PDFOptions::PDFVersion_15)
128
                PDFVersionCombo->setCurrentItem(2);
2439 cbradney 129
        GroupBox1Layout->addMultiCellWidget( PDFVersionCombo, 0, 0, 1, 2 );
1307 fschmid 130
        TextLabel1x = new QLabel( tr( "&Binding:" ), GroupBox1, "TextLabel1" );
131
        TextLabel1x->setAlignment( static_cast<int>( QLabel::AlignVCenter | QLabel::AlignLeft ) );
132
        GroupBox1Layout->addWidget( TextLabel1x, 1, 0 );
133
        ComboBind = new QComboBox( true, GroupBox1, "ComboBind" );
134
        ComboBind->insertItem( tr("Left Margin"));
135
        ComboBind->insertItem( tr("Right Margin"));
136
        ComboBind->setEditable(false);
137
        ComboBind->setCurrentItem(Optionen->Binding);
138
        TextLabel1x->setBuddy(ComboBind);
2439 cbradney 139
        GroupBox1Layout->addMultiCellWidget( ComboBind, 1, 1, 1, 2 );
1307 fschmid 140
        CheckBox1 = new QCheckBox( tr( "Generate &Thumbnails" ), GroupBox1, "CheckBox1" );
141
        CheckBox1->setChecked(Optionen->Thumbnails);
142
        GroupBox1Layout->addMultiCellWidget( CheckBox1, 2, 2, 0, 2 );
143
        Article = new QCheckBox( tr( "Save &Linked Text Frames as PDF Articles" ), GroupBox1, "CheckBox1" );
144
        Article->setChecked(Optionen->Articles);
145
        GroupBox1Layout->addMultiCellWidget( Article, 3, 3, 0, 2 );
146
        CheckBM = new QCheckBox( tr( "&Include Bookmarks" ), GroupBox1, "E" );
147
        CheckBM->setChecked(Optionen->Bookmarks);
148
        GroupBox1Layout->addMultiCellWidget( CheckBM, 4, 4, 0, 2 );
4014 cbradney 149
        useLayers = new QCheckBox( tr( "Include La&yers" ), GroupBox1, "LI" );
1738 fschmid 150
        useLayers->setChecked(Optionen->useLayers);
151
        GroupBox1Layout->addMultiCellWidget( useLayers, 5, 5, 0, 2 );
152
        if (Optionen->Version == 15)
153
                useLayers->setEnabled(true);
154
        else
155
                useLayers->setEnabled(false);
1307 fschmid 156
        Resolution = new QSpinBox( GroupBox1, "Resolution" );
157
        Resolution->setMaxValue( 4000 );
158
        Resolution->setMinValue( 35 );
159
        Resolution->setValue(Optionen->Resolution);
160
        Resolution->setSuffix( tr( " dpi" ) );
1799 cbradney 161
        TextLabel2 = new QLabel( Resolution, tr( "&Resolution for EPS Graphics:" ), GroupBox1, "TextLabel2" );
1307 fschmid 162
        TextLabel2->setAlignment( static_cast<int>( QLabel::AlignVCenter | QLabel::AlignLeft ) );
1738 fschmid 163
        GroupBox1Layout->addWidget( TextLabel2, 6, 0 );
164
        GroupBox1Layout->addWidget( Resolution, 6, 1, AlignLeft );
1307 fschmid 165
        Layout13->addWidget( GroupBox1 );
166
        tabLayout->addLayout( Layout13 );
167
        Compression = new QCheckBox( tr( "Com&press Text and Vector Graphics" ), tabGeneral, "Compression" );
168
        Compression->setChecked( Optionen->Compress );
169
        tabLayout->addWidget( Compression );
170
        CBox = new QGroupBox( tr( "Image Settings" ), tabGeneral, "CBox" );
171
        CBox->setColumnLayout(0, Qt::Vertical );
172
        CBox->layout()->setSpacing( 5 );
173
        CBox->layout()->setMargin( 11 );
174
        CBoxLayout = new QGridLayout( CBox->layout() );
175
        CBoxLayout->setAlignment( Qt::AlignTop );
176
        CMethod = new QComboBox( true, CBox, "CMethod" );
177
        CMethod->clear();
178
        CMethod->insertItem( tr( "Automatic" ) );
179
        CMethod->insertItem( tr( "JPEG" ) );
180
        CMethod->insertItem( tr( "Zip" ) );
181
        CMethod->insertItem( tr( "None" ) );
182
        CMethod->setEditable(false);
183
        CMethod->setCurrentItem(Optionen->CompressMethod);
4014 cbradney 184
        TextCom1 = new QLabel( CMethod, tr( "Compression Metho&d:" ), CBox, "TextCom1" );
3849 subik 185
        CBoxLayout->addWidget( TextCom1, 0, 0 );
3798 cbradney 186
        CBoxLayout->addWidget( CMethod, 0, 1 );
1307 fschmid 187
        CQuality = new QComboBox( true, CBox, "CQuality" );
188
        CQuality->clear();
189
        CQuality->insertItem( tr( "Maximum" ) );
190
        CQuality->insertItem( tr( "High" ) );
191
        CQuality->insertItem( tr( "Medium" ) );
192
        CQuality->insertItem( tr( "Low" ) );
193
        CQuality->insertItem( tr( "Minimum" ) );
194
        CQuality->setEditable(false);
195
        CQuality->setCurrentItem(Optionen->Quality);
3798 cbradney 196
        TextCom2 = new QLabel( CQuality, tr( "Compression &Quality:" ), CBox, "TextCom2" );
197
        CBoxLayout->addWidget( TextCom2, 1, 0 );
1307 fschmid 198
        CBoxLayout->addWidget( CQuality, 1, 1 );
4014 cbradney 199
        DSColor = new QCheckBox( tr( "Resa&mple Images to:" ), CBox, "DSColor" );
1307 fschmid 200
        DSColor->setChecked(Optionen->RecalcPic);
201
        CBoxLayout->addWidget( DSColor, 2, 0 );
202
        ValC = new QSpinBox( CBox, "ValC" );
203
        ValC->setSuffix( tr( " dpi" ) );
204
        ValC->setMaxValue( 4000 );
205
        ValC->setMinValue( 35 );
206
        ValC->setValue(Optionen->PicRes);
207
        ValC->setEnabled(DSColor->isChecked() ? true : false);
208
        CBoxLayout->addWidget( ValC, 2, 1, AlignLeft );
209
        tabLayout->addWidget( CBox );
210
        insertTab( tabGeneral, tr( "&General" ) );
211
        if (vie != 0)
212
        {
213
                tabFonts = new QWidget( this, "tabFonts" );
214
                tabLayout_3 = new QVBoxLayout( tabFonts );
215
                tabLayout_3->setSpacing( 5 );
216
                tabLayout_3->setMargin( 11 );
217
                EmbedFonts = new QCheckBox( tr( "&Embed all Fonts" ), tabFonts, "EmbedFonts" );
218
                tabLayout_3->addWidget( EmbedFonts );
219
                SubsetFonts = new QCheckBox( tr( "&Subset all Fonts" ), tabFonts, "SubsetFonts" );
220
                tabLayout_3->addWidget( SubsetFonts );
221
                GroupFont = new QGroupBox( tr( "Embedding" ), tabFonts, "GroupFont" );
222
                GroupFont->setColumnLayout(0, Qt::Vertical );
223
                GroupFont->layout()->setSpacing( 0 );
224
                GroupFont->layout()->setMargin( 0 );
225
                GroupFontLayout = new QHBoxLayout( GroupFont->layout() );
226
                GroupFontLayout->setAlignment( Qt::AlignTop );
227
                GroupFontLayout->setSpacing( 5 );
228
                GroupFontLayout->setMargin( 10 );
229
                Layout4_2 = new QVBoxLayout;
230
                Layout4_2->setSpacing( 5 );
231
                Layout4_2->setMargin( 0 );
232
                TextFont1 = new QLabel( tr( "Available Fonts:" ), GroupFont, "TextFont1" );
233
                Layout4_2->addWidget( TextFont1 );
234
                AvailFlist = new QListBox( GroupFont, "AvailFlist" );
3544 avox 235
                QMap<QString,int>::Iterator it;
1307 fschmid 236
                for (it = DocFonts.begin(); it != DocFonts.end(); ++it)
237
                {
2295 cbradney 238
                        if (AllFonts[it.key()]->typeCode == Foi::TYPE1)
1338 fschmid 239
                                AvailFlist->insertItem(loadIcon("font_type1_16.png"), it.key());
2295 cbradney 240
                        else if (AllFonts[it.key()]->typeCode == Foi::TTF)
1338 fschmid 241
                                AvailFlist->insertItem(loadIcon("font_truetype16.png"), it.key());
2295 cbradney 242
                        else if (AllFonts[it.key()]->typeCode == Foi::OTF)
1338 fschmid 243
                                AvailFlist->insertItem(loadIcon("font_otf16.png"), it.key());
1307 fschmid 244
                }
245
                AvailFlist->setMinimumSize(QSize(150, 140));
246
                Layout4_2->addWidget( AvailFlist );
247
                GroupFontLayout->addLayout( Layout4_2 );
248
                Layout5_2 = new QVBoxLayout;
249
                Layout5_2->setSpacing( 5 );
250
                Layout5_2->setMargin( 0 );
1321 fschmid 251
                QSpacerItem* spacerS3a = new QSpacerItem( 20, 30, QSizePolicy::Minimum, QSizePolicy::Minimum );
252
                Layout5_2->addItem( spacerS3a );
1307 fschmid 253
                ToEmbed = new QPushButton( tr( "&>>" ), GroupFont, "ToEmbed" );
254
                ToEmbed->setEnabled(false);
255
                Layout5_2->addWidget( ToEmbed );
256
                FromEmbed = new QPushButton( tr( "&<<" ), GroupFont, "FromEmbed" );
257
                FromEmbed->setEnabled(false);
258
                Layout5_2->addWidget( FromEmbed );
1321 fschmid 259
                QSpacerItem* spacerS3 = new QSpacerItem( 20, 30, QSizePolicy::Minimum, QSizePolicy::Expanding );
260
                Layout5_2->addItem( spacerS3 );
1307 fschmid 261
                GroupFontLayout->addLayout( Layout5_2 );
262
                Layout6 = new QVBoxLayout;
263
                Layout6->setSpacing( 5 );
264
                Layout6->setMargin( 0 );
265
                TextFont1_2 = new QLabel( tr( "Fonts to embed:" ), GroupFont, "TextFont1_2" );
266
                Layout6->addWidget( TextFont1_2 );
267
                EmbedList = new QListBox( GroupFont, "EmbedList" );
268
                EmbedList->setMinimumSize(QSize(150, 40));
269
                Layout6->addWidget( EmbedList );
3849 subik 270
 
1307 fschmid 271
                Layout5_2a = new QHBoxLayout;
272
                Layout5_2a->setSpacing( 5 );
273
                Layout5_2a->setMargin( 0 );
274
                QSpacerItem* spacerS1 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
275
                Layout5_2a->addItem( spacerS1 );
276
                ToSubset = new QPushButton( "", GroupFont, "ToSubset" );
277
                ToSubset->setPixmap(loadIcon("down.png"));
278
                ToSubset->setEnabled(false);
279
                Layout5_2a->addWidget( ToSubset );
280
                FromSubset = new QPushButton( "", GroupFont, "FromSubset" );
281
                FromSubset->setPixmap(loadIcon("up.png"));
282
                FromSubset->setEnabled(false);
283
                Layout5_2a->addWidget( FromSubset );
284
                QSpacerItem* spacerS2 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
285
                Layout5_2a->addItem( spacerS2 );
286
                Layout6->addLayout( Layout5_2a );
287
                TextFont1_2a = new QLabel( tr( "Fonts to subset:" ), GroupFont, "TextFont1_2a" );
288
                Layout6->addWidget( TextFont1_2a );
289
                SubsetList = new QListBox( GroupFont, "SubsetList" );
290
                SubsetList->setMinimumSize(QSize(150, 40));
291
                Layout6->addWidget( SubsetList );
292
                if ((Optionen->EmbedList.count() == 0) && (Optionen->SubsetList.count() == 0))
293
                {
294
                        EmbedFonts->setChecked(true);
295
                        EmbedAll();
296
                }
297
                else
298
                {
299
                        for (uint fe = 0; fe < Optionen->EmbedList.count(); ++fe)
300
                        {
301
                                EmbedList->insertItem(Optionen->EmbedList[fe]);
302
                                FontsToEmbed.append(Optionen->EmbedList[fe]);
303
                        }
304
                }
305
                if (Optionen->SubsetList.count() != 0)
306
                {
307
                        for (uint fe = 0; fe < Optionen->SubsetList.count(); ++fe)
308
                        {
309
                                SubsetList->insertItem(Optionen->SubsetList[fe]);
310
                                FontsToSubset.append(Optionen->SubsetList[fe]);
311
                        }
312
                }
313
                GroupFontLayout->addLayout( Layout6 );
314
                tabLayout_3->addWidget( GroupFont );
315
                insertTab( tabFonts, tr( "&Fonts" ) );
316
                tabPresentation = new QWidget( this, "tabPresentation" );
317
                tabLayout_5 = new QGridLayout( tabPresentation );
318
                tabLayout_5->setSpacing( 5 );
319
                tabLayout_5->setMargin( 11 );
320
                CheckBox10 = new QCheckBox( tr( "Enable &Presentation Effects" ), tabPresentation, "CheckBox10" );
321
                CheckBox10->setChecked(Optionen->PresentMode);
322
                tabLayout_5->addMultiCellWidget( CheckBox10, 0, 0, 0, 1 );
323
                Pages = new QListBox( tabPresentation, "Pages" );
324
                Pages->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, Pages->sizePolicy().hasHeightForWidth() ) );
325
                QString tmp;
326
                struct PDFPresentationData ef;
327
                if (EffVal.count() != 0)
328
                {
3724 cbradney 329
                        for (uint pg2 = 0; pg2 < view->Doc->Pages->count(); ++pg2)
1307 fschmid 330
                        {
331
                                Pages->insertItem( tr("Page")+" "+tmp.setNum(pg2+1));
332
                                if (EffVal.count()-1 < pg2)
333
                                {
334
                                        ef.pageEffectDuration = 1;
335
                                        ef.pageViewDuration = 1;
336
                                        ef.effectType = 0;
337
                                        ef.Dm = 0;
338
                                        ef.M = 0;
339
                                        ef.Di = 0;
340
                                        EffVal.append(ef);
341
                                }
342
                        }
343
                }
344
                else
345
                {
3724 cbradney 346
                        for (uint pg = 0; pg < view->Doc->Pages->count(); ++pg)
1307 fschmid 347
                        {
348
                                Pages->insertItem( tr("Page")+" "+tmp.setNum(pg+1));
349
                                ef.pageEffectDuration = 1;
350
                                ef.pageViewDuration = 1;
351
                                ef.effectType = 0;
352
                                ef.Dm = 0;
353
                                ef.M = 0;
354
                                ef.Di = 0;
355
                                EffVal.append(ef);
356
                        }
357
                }
358
                tabLayout_5->addWidget( Pages, 1, 0 );
359
                PagePrev = new QCheckBox( tr( "Show Page Pre&views" ), tabPresentation, "CheckBox10" );
360
                PagePrev->setChecked(false);
361
                tabLayout_5->addWidget( PagePrev, 2, 0 );
362
                Effects = new QGroupBox( tr( "Effects" ), tabPresentation, "Effects" );
363
                Effects->setColumnLayout(0, Qt::Vertical );
364
                Effects->layout()->setSpacing( 0 );
365
                Effects->layout()->setMargin( 0 );
366
                EffectsLayout = new QGridLayout( Effects->layout() );
367
                EffectsLayout->setAlignment( Qt::AlignTop );
368
                EffectsLayout->setSpacing( 5 );
369
                EffectsLayout->setMargin( 11 );
370
                TextLabel1e = new QLabel( tr( "&Display Duration:" ), Effects, "TextLabel1_2" );
371
                EffectsLayout->addWidget( TextLabel1e, 0, 0 );
372
                TextLabel2e = new QLabel( tr( "Effec&t Duration:" ), Effects, "TextLabel2_2" );
373
                EffectsLayout->addWidget( TextLabel2e, 1, 0 );
374
                TextLabel3e = new QLabel( tr( "Effect T&ype:" ), Effects, "TextLabel3_2" );
375
                EffectsLayout->addWidget( TextLabel3e, 2, 0 );
376
                TextLabel4e = new QLabel( tr( "&Moving Lines:" ), Effects, "TextLabel4_2" );
377
                EffectsLayout->addWidget( TextLabel4e, 3, 0 );
378
                TextLabel5e = new QLabel( tr( "F&rom the:" ), Effects, "TextLabel6" );
379
                EffectsLayout->addWidget( TextLabel5e, 4, 0 );
380
                TextLabel6e = new QLabel( tr( "D&irection:" ), Effects, "TextLabel5" );
381
                EffectsLayout->addWidget( TextLabel6e, 5, 0 );
382
                PageTime = new QSpinBox( Effects, "PageTime" );
383
                PageTime->setSuffix( tr( " sec" ) );
384
                PageTime->setMaxValue( 3600 );
385
                PageTime->setMinValue( 1 );
386
                PageTime->setValue(EffVal[0].pageViewDuration);
387
                TextLabel1e->setBuddy(PageTime);
388
                EffectsLayout->addWidget( PageTime, 0, 1 );
389
                EffectTime = new QSpinBox( Effects, "EffectTime" );
390
                EffectTime->setSuffix( tr( " sec" ) );
391
                EffectTime->setMaxValue( 3600 );
392
                EffectTime->setMinValue( 1 );
393
                EffectTime->setValue(EffVal[0].pageEffectDuration);
394
                TextLabel2e->setBuddy(EffectTime);
395
                EffectsLayout->addWidget( EffectTime, 1, 1 );
396
                EffectType = new QComboBox( true, Effects, "EffectType" );
397
                QString tmpc[] = { tr("No Effect"), tr("Blinds"), tr("Box"), tr("Dissolve"), tr("Glitter"), tr("Split"), tr("Wipe")};
398
                size_t ar = sizeof(tmpc) / sizeof(*tmpc);
399
                for (uint a = 0; a < ar; ++a)
400
                        EffectType->insertItem(tmpc[a]);
401
                EffectType->setEditable(false);
402
                TextLabel3e->setBuddy(EffectType);
403
                EffectsLayout->addWidget( EffectType, 2, 1 );
404
                EDirection = new QComboBox( true, Effects, "EDirection" );
405
                EDirection->insertItem( tr( "Horizontal" ) );
406
                EDirection->insertItem( tr( "Vertical" ) );
407
                EDirection->setEditable(false);
408
                TextLabel4e->setBuddy(EDirection);
409
                EffectsLayout->addWidget( EDirection, 3, 1 );
410
                EDirection_2 = new QComboBox( true, Effects, "EDirection_2" );
411
                EDirection_2->insertItem( tr( "Inside" ) );
412
                EDirection_2->insertItem( tr( "Outside" ) );
413
                EDirection_2->setEditable(false);
414
                TextLabel5e->setBuddy(EDirection_2);
415
                EffectsLayout->addWidget( EDirection_2, 4, 1 );
416
                EDirection_2_2 = new QComboBox( true, Effects, "EDirection_2_2" );
417
                QString tmp_ed[] = { tr("Left to Right"), tr("Top to Bottom"), tr("Bottom to Top"), tr("Right to Left"),
4197 fschmid 418
                                     tr("Top-left to Bottom-Right")};
1307 fschmid 419
                size_t ar_ed = sizeof(tmp_ed) / sizeof(*tmp_ed);
420
                for (uint a = 0; a < ar_ed; ++a)
421
                        EDirection_2_2->insertItem(tmp_ed[a]);
422
                EDirection_2_2->setEditable(false);
423
                TextLabel6e->setBuddy(EDirection_2_2);
424
                EffectsLayout->addWidget( EDirection_2_2, 5, 1 );
425
                EonAllPg = new QPushButton( tr( "&Apply Effect on all Pages" ), Effects, "Eon" );
426
                EffectsLayout->addMultiCellWidget( EonAllPg, 6, 6, 0, 1 );
427
                tabLayout_5->addMultiCellWidget( Effects, 1, 2, 1, 1 );
428
                insertTab( tabPresentation, tr( "E&xtras" ) );
4197 fschmid 429
 
430
                if (view->Doc->currentPageLayout == doublePage)
431
                {
432
                        if (view->Doc->pageSets[view->Doc->currentPageLayout].FirstPage == 0)
433
                                Optionen->PageLayout = PDFOptions::TwoColumnLeft;
434
                        else
435
                                Optionen->PageLayout = PDFOptions::TwoColumnRight;
436
                }
437
                else
438
                        Optionen->PageLayout = PDFOptions::SinglePage;
439
                if (Optionen->PresentMode)
440
                        Optionen->displayFullscreen = true;
441
                else
442
                {
443
                        if ((Optionen->Version == 15) && (Optionen->useLayers))
444
                                Optionen->displayLayers = true;
445
                }
446
                tabSpecial = new QWidget( this, "tabSpecial" );
447
                tabSpecialLayout = new QVBoxLayout( tabSpecial, 11, 6, "tabSpecialLayout");
448
                groupDisplay = new QGroupBox( tabSpecial, "groupDisplay" );
449
                groupDisplay->setTitle( tr( "Display Settings" ) );
450
                groupDisplay->setColumnLayout(0, Qt::Vertical );
451
                groupDisplay->layout()->setSpacing( 5 );
452
                groupDisplay->layout()->setMargin( 10 );
453
                groupDisplayLayout = new QVBoxLayout( groupDisplay->layout() );
454
                groupDisplayLayout->setAlignment( Qt::AlignTop );
455
                LayoutSpecial = new QHBoxLayout( 0, 0, 5, "LayoutSpecial");
456
                pageLayout = new QButtonGroup( groupDisplay, "pageLayout" );
457
                pageLayout->setTitle( tr( "Page Layout" ) );
458
                pageLayout->setColumnLayout(0, Qt::Vertical );
459
                pageLayout->layout()->setSpacing( 5 );
460
                pageLayout->layout()->setMargin( 10 );
461
                pageLayoutLayout = new QVBoxLayout( pageLayout->layout() );
462
                pageLayoutLayout->setAlignment( Qt::AlignTop );
463
                singlePage = new QRadioButton( pageLayout, "singlePage" );
464
                singlePage->setText( tr( "Single Page" ) );
465
                pageLayoutLayout->addWidget( singlePage );
466
                continuousPages = new QRadioButton( pageLayout, "continuousPages" );
467
                continuousPages->setText( tr( "Continuous" ) );
468
                pageLayoutLayout->addWidget( continuousPages );
469
                doublePageLeft = new QRadioButton( pageLayout, "doublePageLeft" );
470
                doublePageLeft->setText( tr( "Double Page Left" ) );
471
                pageLayoutLayout->addWidget( doublePageLeft );
472
                doublePageRight = new QRadioButton( pageLayout, "doublePageRight" );
473
                doublePageRight->setText( tr( "Double Page Right" ) );
474
                pageLayoutLayout->addWidget( doublePageRight );
475
                LayoutSpecial->addWidget( pageLayout );
476
                groupNavigation = new QButtonGroup( groupDisplay, "groupNavigation" );
477
                groupNavigation->setTitle( tr( "Visual Appearance" ) );
478
                groupNavigation->setColumnLayout(0, Qt::Vertical );
479
                groupNavigation->layout()->setSpacing( 5 );
480
                groupNavigation->layout()->setMargin( 10 );
481
                groupNavigationLayout = new QVBoxLayout( groupNavigation->layout() );
482
                groupNavigationLayout->setAlignment( Qt::AlignTop );
483
                useViewDefault = new QRadioButton( groupNavigation, "useViewDefault" );
484
                bool df = true;
485
                if ((Optionen->displayBookmarks) || (Optionen->displayFullscreen) || (Optionen->displayLayers) || (Optionen->displayThumbs))
486
                        df = false;
487
                useViewDefault->setChecked(df);
488
                useViewDefault->setText( tr( "Use Viewers Defaults" ) );
489
                groupNavigationLayout->addWidget( useViewDefault );
490
                useFullScreen = new QRadioButton( groupNavigation, "useFullScreen" );
491
                useFullScreen->setChecked(Optionen->displayFullscreen);
492
                useFullScreen->setText( tr( "Use Full Screen Mode" ) );
493
                groupNavigationLayout->addWidget( useFullScreen );
494
                useBookmarks = new QRadioButton( groupNavigation, "useBookmarks" );
495
                useBookmarks->setText( tr( "Display Bookmarks Tab" ) );
496
                useBookmarks->setChecked(Optionen->displayBookmarks);
497
                groupNavigationLayout->addWidget( useBookmarks );
498
                useThumbnails = new QRadioButton( groupNavigation, "useThumbnails" );
499
                useThumbnails->setText( tr( "Display Thumbnails" ) );
500
                useThumbnails->setChecked(Optionen->displayThumbs);
501
                groupNavigationLayout->addWidget( useThumbnails );
502
                useLayers2 = new QRadioButton( groupNavigation, "useLayers" );
503
                useLayers2->setText( tr( "Display Layers Tab" ) );
504
                useLayers2->setChecked(Optionen->displayLayers);
505
                groupNavigationLayout->addWidget( useLayers2 );
506
                LayoutSpecial->addWidget( groupNavigation );
507
                groupDisplayLayout->addLayout( LayoutSpecial );
508
                tabSpecialLayout->addWidget( groupDisplay );
509
                groupJava = new QGroupBox( tabSpecial, "groupJava" );
510
                groupJava->setTitle( tr( "Special Actions" ) );
511
                groupJava->setColumnLayout(0, Qt::Vertical );
512
                groupJava->layout()->setSpacing( 5 );
513
                groupJava->layout()->setMargin( 10 );
514
                groupJavaLayout = new QHBoxLayout( groupJava->layout() );
515
                groupJavaLayout->setAlignment( Qt::AlignTop );
516
                actionLabel = new QLabel( groupJava, "actionLabel" );
517
                actionLabel->setText( tr( "Javascript to be executed\nwhen Document is opened:" ) );
518
                groupJavaLayout->addWidget( actionLabel );
519
                actionCombo = new QComboBox( true, groupJava, "actionCombo" );
520
                actionCombo->setEditable(false);
521
                actionCombo->insertItem( tr("No Script"));
522
                QMap<QString,QString>::Iterator itja;
523
                for (itja = view->Doc->JavaScripts.begin(); itja != view->Doc->JavaScripts.end(); ++itja)
524
                        actionCombo->insertItem(itja.key());
525
                groupJavaLayout->addWidget( actionCombo );
526
                tabSpecialLayout->addWidget( groupJava );
527
                if (Optionen->PageLayout == PDFOptions::SinglePage)
528
                        singlePage->setChecked(true);
529
                else if (Optionen->PageLayout == PDFOptions::OneColumn)
530
                        continuousPages->setChecked(true);
531
                else if (Optionen->PageLayout == PDFOptions::TwoColumnLeft)
532
                        doublePageLeft->setChecked(true);
533
                else if (Optionen->PageLayout == PDFOptions::TwoColumnRight)
534
                        doublePageRight->setChecked(true);
535
                if (Optionen->Version == 15)
536
                        useLayers2->setEnabled(true);
537
                else
538
                        useLayers2->setEnabled(false);
539
                insertTab( tabSpecial, tr("Viewer") );
1307 fschmid 540
        }
4197 fschmid 541
 
542
 
1307 fschmid 543
        tabSecurity = new QWidget( this, "tabSecurity" );
544
        tabSecurityLayout = new QVBoxLayout( tabSecurity, 11, 5, "tabSecurityLayout");
545
        Encry = new QCheckBox( tr( "&Use Encryption" ), tabSecurity, "Enc" );
546
        Encry->setChecked( Optionen->Encrypt );
547
        tabSecurityLayout->addWidget( Encry );
548
        GroupPass = new QGroupBox( tr( "Passwords" ), tabSecurity, "GroupPass" );
549
        GroupPass->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, 0, 0,
550
                                               GroupPass->sizePolicy().hasHeightForWidth() ) );
551
        GroupPass->setColumnLayout(0, Qt::Vertical );
552
        GroupPass->layout()->setSpacing( 5 );
553
        GroupPass->layout()->setMargin( 10 );
554
        GroupPassLayout = new QGridLayout( GroupPass->layout() );
555
        GroupPassLayout->setAlignment( Qt::AlignTop );
556
        TextSec2 = new QLabel( tr( "&User:" ), GroupPass, "TextSec2" );
557
        GroupPassLayout->addWidget( TextSec2, 1, 0 );
558
        TextSec1 = new QLabel( tr( "&Owner:" ), GroupPass, "TextSec1" );
559
        GroupPassLayout->addWidget( TextSec1, 0, 0 );
560
        PassOwner = new QLineEdit( GroupPass, "PassOwner" );
561
        PassOwner->setEchoMode( QLineEdit::Password );
562
        PassOwner->setText(Optionen->PassOwner);
563
        TextSec1->setBuddy(PassOwner);
564
        GroupPassLayout->addWidget( PassOwner, 0, 1 );
565
        PassUser = new QLineEdit( GroupPass, "PassUser" );
566
        PassUser->setEchoMode( QLineEdit::Password );
567
        PassUser->setText(Optionen->PassUser);
568
        TextSec2->setBuddy(PassUser);
569
        GroupPassLayout->addWidget( PassUser, 1, 1 );
570
        tabSecurityLayout->addWidget( GroupPass );
571
 
572
        GroupSecSet = new QGroupBox( tr( "Settings" ), tabSecurity, "GroupSecSet" );
573
        GroupSecSet->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0,
574
                                    GroupSecSet->sizePolicy().hasHeightForWidth() ) );
575
        GroupSecSet->setColumnLayout(0, Qt::Vertical );
576
        GroupSecSet->layout()->setSpacing( 5 );
577
        GroupSecSet->layout()->setMargin( 10 );
578
        GroupSecSetLayout = new QVBoxLayout( GroupSecSet->layout() );
579
        GroupSecSetLayout->setAlignment( Qt::AlignTop );
580
        PrintSec = new QCheckBox( tr( "Allow &Printing the Document" ), GroupSecSet, "PrintSec" );
581
        PrintSec->setChecked( Optionen->Permissions & 4 );
582
        GroupSecSetLayout->addWidget( PrintSec );
583
        ModifySec = new QCheckBox( tr( "Allow &Changing the Document" ), GroupSecSet, "ModifySec" );
584
        ModifySec->setChecked( Optionen->Permissions & 8 );
585
        GroupSecSetLayout->addWidget( ModifySec );
586
        CopySec = new QCheckBox( tr( "Allow Cop&ying Text and Graphics" ), GroupSecSet, "CopySec" );
587
        CopySec->setChecked( Optionen->Permissions & 16 );
588
        GroupSecSetLayout->addWidget( CopySec );
589
        AddSec = new QCheckBox( tr( "Allow Adding &Annotations and Fields" ), GroupSecSet, "AddSec" );
590
        AddSec->setChecked( Optionen->Permissions & 32 );
591
        GroupSecSetLayout->addWidget( AddSec );
592
        tabSecurityLayout->addWidget( GroupSecSet );
593
        if (!Encry->isChecked())
594
        {
595
                GroupSecSet->setEnabled(false);
596
                GroupPass->setEnabled(false);
597
        }
598
        insertTab( tabSecurity, tr( "S&ecurity" ) );
599
 
600
        tabColor = new QWidget( this, "tabColor" );
601
        tabColorLayout = new QVBoxLayout( tabColor, 11, 5, "tabColorLayout");
602
        ColorGroup = new QGroupBox( tr( "General" ), tabColor, "ColorGroup" );
603
        ColorGroup->setColumnLayout(0, Qt::Vertical );
604
        ColorGroup->layout()->setSpacing( 5 );
605
        ColorGroup->layout()->setMargin( 10 );
606
        ColorGroupLayout = new QHBoxLayout( ColorGroup->layout() );
607
        ColorGroupLayout->setAlignment( Qt::AlignTop );
608
        ColorText1 = new QLabel( tr( "Output &Intended For:" ), ColorGroup, "ColorText1" );
609
        ColorGroupLayout->addWidget( ColorText1 );
610
        OutCombo = new QComboBox( true, ColorGroup, "OutCombo" );
611
        OutCombo->insertItem( tr( "Screen / Web" ) );
612
        OutCombo->insertItem( tr( "Printer" ) );
1476 fschmid 613
        OutCombo->insertItem( tr( "Grayscale" ) );
1307 fschmid 614
        OutCombo->setEditable(false);
1476 fschmid 615
        if (Optionen->UseRGB)
616
                OutCombo->setCurrentItem(0);
617
        else
618
        {
619
                if (Optionen->isGrayscale)
620
                        OutCombo->setCurrentItem(2);
621
                else
622
                        OutCombo->setCurrentItem(1);
623
        }
1307 fschmid 624
        ColorText1->setBuddy(OutCombo);
625
        ColorGroupLayout->addWidget( OutCombo );
626
        tabColorLayout->addWidget( ColorGroup );
627
 
3079 fschmid 628
        useSpot = new QCheckBox( tr( "Convert Spot Colors to Process Colors" ), tabColor, "useSpot" );
629
        useSpot->setChecked(!Optionen->UseSpotColors);
630
        tabColorLayout->addWidget( useSpot );
631
 
1307 fschmid 632
        UseLPI = new QCheckBox( tr( "&Use Custom Rendering Settings" ), tabColor, "UseLPI" );
633
        UseLPI->setChecked(Optionen->UseLPI);
634
        tabColorLayout->addWidget( UseLPI );
635
        LPIgroup = new QGroupBox( tr( "Rendering Settings" ), tabColor, "LPIgroup" );
636
        LPIgroup->setColumnLayout(0, Qt::Vertical );
637
        LPIgroup->layout()->setSpacing( 5 );
638
        LPIgroup->layout()->setMargin( 10 );
639
        LPIgroupLayout = new QGridLayout( LPIgroup->layout() );
640
        LPIgroupLayout->setAlignment( Qt::AlignTop );
641
        LPIcolor = new QComboBox( true, LPIgroup, "LPIcolor" );
642
        LPIcolor->setEditable(false);
643
        QMap<QString,LPIData>::Iterator itlp;
644
        for (itlp = Optionen->LPISettings.begin(); itlp != Optionen->LPISettings.end(); ++itlp)
645
        {
646
                LPIcolor->insertItem( itlp.key() );
647
        }
648
        LPIcolor->setCurrentItem(0);
649
        LPIgroupLayout->addWidget( LPIcolor, 0, 0 );
650
        textLPI1 = new QLabel( tr( "Fre&quency:" ), LPIgroup, "textLPI1" );
651
        LPIgroupLayout->addWidget( textLPI1, 0, 1 );
652
        LPIfreq = new QSpinBox( LPIgroup, "LPIfreq" );
653
        LPIfreq->setMinValue(10);
654
        LPIfreq->setMaxValue(1000);
655
        LPIfreq->setValue(Optionen->LPISettings[LPIcolor->currentText()].Frequency);
656
        textLPI1->setBuddy(LPIfreq);
657
        LPIgroupLayout->addWidget( LPIfreq, 0, 2 );
658
        textLPI2 = new QLabel( tr( "&Angle:" ), LPIgroup, "textLPI2" );
659
        LPIgroupLayout->addWidget( textLPI2, 1, 1 );
660
        LPIangle = new QSpinBox( LPIgroup, "LPIangle" );
661
        LPIangle->setSuffix( QString::fromUtf8(" °"));
662
        LPIangle->setMinValue(-180);
663
        LPIangle->setMaxValue(180);
664
        LPIangle->setValue(Optionen->LPISettings[LPIcolor->currentText()].Angle);
665
        textLPI2->setBuddy(LPIangle);
666
        LPIgroupLayout->addWidget( LPIangle, 1, 2 );
667
        textLPI3 = new QLabel( tr( "S&pot Function:" ), LPIgroup, "textLPI3" );
668
        LPIgroupLayout->addWidget( textLPI3, 2, 1 );
669
        LPIfunc = new QComboBox( true, LPIgroup, "LPIfunc" );
670
        LPIfunc->setEditable(false);
671
        LPIfunc->insertItem( tr( "Simple Dot" ) );
672
        LPIfunc->insertItem( tr( "Line" ) );
673
        LPIfunc->insertItem( tr( "Round" ) );
674
        LPIfunc->insertItem( tr( "Ellipse" ) );
675
        LPIfunc->setCurrentItem(Optionen->LPISettings[LPIcolor->currentText()].SpotFunc);
676
        textLPI3->setBuddy(LPIfunc);
677
        LPIgroupLayout->addWidget( LPIfunc, 2, 2 );
678
        tabColorLayout->addWidget( LPIgroup );
679
        SelLPIcolor = LPIcolor->currentText();
680
 
681
        GroupBox9 = new QGroupBox( tr( "Solid Colors:" ), tabColor, "GroupBox9" );
682
        GroupBox9->setColumnLayout(0, Qt::Vertical );
683
        GroupBox9->layout()->setSpacing( 5 );
684
        GroupBox9->layout()->setMargin( 10 );
685
        GroupBox9Layout = new QGridLayout( GroupBox9->layout() );
686
        GroupBox9Layout->setAlignment( Qt::AlignTop );
687
        EmbedProfs = new QCheckBox( GroupBox9, "EmbedProfs" );
688
        EmbedProfs->setText( tr( "Use ICC Profile" ) );
689
        EmbedProfs->setChecked(Optionen->UseProfiles);
690
        GroupBox9Layout->addMultiCellWidget( EmbedProfs, 0, 0, 0, 1 );
691
        ProfsTxt1 = new QLabel(GroupBox9, "ProfsTxt1");
692
        ProfsTxt1->setText( tr( "Profile:" ) );
693
        GroupBox9Layout->addWidget( ProfsTxt1, 1, 0 );
694
        ProfsTxt2 = new QLabel( GroupBox9, "ProfsTxt2_2" );
695
        ProfsTxt2->setText( tr( "Rendering-Intent:" ) );
696
        GroupBox9Layout->addWidget( ProfsTxt2, 1, 1 );
697
        SolidPr = new QComboBox(true, GroupBox9, "SolidPr" );
698
        SolidPr->setEditable(false);
699
        GroupBox9Layout->addWidget( SolidPr, 2, 0 );
700
        IntendS = new QComboBox( true, GroupBox9, "IntendS" );
701
        QString tmp_ip[] = { tr("Perceptual"), tr("Relative Colorimetric"), tr("Saturation"), tr("Absolute Colorimetric")};
702
        size_t ar_ip = sizeof(tmp_ip) / sizeof(*tmp_ip);
703
        for (uint a = 0; a < ar_ip; ++a)
704
                IntendS->insertItem(tmp_ip[a]);
705
        IntendS->setEditable(false);
706
        GroupBox9Layout->addWidget( IntendS, 2, 1 );
707
        tabColorLayout->addWidget( GroupBox9 );
708
        ProfsGroup = new QGroupBox( tr( "Images:" ), tabColor, "ProfsGroup" );
709
        ProfsGroup->setColumnLayout(0, Qt::Vertical );
710
        ProfsGroup->layout()->setSpacing( 5 );
711
        ProfsGroup->layout()->setMargin( 10 );
712
        ProfsGroupLayout = new QGridLayout( ProfsGroup->layout() );
713
        ProfsGroupLayout->setAlignment( Qt::AlignTop );
714
        EmbedProfs2 = new QCheckBox( tr( "Use ICC Profile" ), ProfsGroup, "EmbedProfs" );
715
        EmbedProfs2->setChecked(Optionen->UseProfiles2);
716
        ProfsGroupLayout->addMultiCellWidget( EmbedProfs2, 0, 0, 0, 1 );
717
        NoEmbedded = new QCheckBox( ProfsGroup, "NoEmbedded" );
718
        NoEmbedded->setText( tr( "Don't use embedded ICC profiles" ) );
719
        NoEmbedded->setChecked(Optionen->EmbeddedI);
720
        ProfsGroupLayout->addMultiCellWidget( NoEmbedded, 1, 1, 0, 1 );
721
        ProfsTxt3 = new QLabel( ProfsGroup, "ProfsTxt3" );
722
        ProfsTxt3->setText( tr( "Profile:" ) );
723
        ProfsGroupLayout->addWidget( ProfsTxt3, 2, 0 );
724
        ProfsTxt4 = new QLabel( ProfsGroup, "ProfsTxt2_2" );
725
        ProfsTxt4->setText( tr( "Rendering-Intent:" ) );
726
        ProfsGroupLayout->addWidget( ProfsTxt4, 2, 1 );
727
        ImageP = new QComboBox( true, ProfsGroup, "ImageP" );
728
        ImageP->setEditable(false);
729
        ProfsGroupLayout->addWidget( ImageP, 3, 0 );
730
        IntendI = new QComboBox( true, ProfsGroup, "IntendS" );
731
        for (uint a = 0; a < ar_ip; ++a)
732
                IntendI->insertItem(tmp_ip[a]);
733
        IntendI->setEditable(false);
734
        ProfsGroupLayout->addWidget( IntendI, 3, 1 );
735
        tabColorLayout->addWidget( ProfsGroup );
1476 fschmid 736
        if ((Optionen->UseRGB) || (Optionen->isGrayscale))
1307 fschmid 737
        {
738
                ProfsGroup->setEnabled(false);
739
                GroupBox9->setEnabled(false);
1476 fschmid 740
                EnablePr(0);
1307 fschmid 741
        }
1476 fschmid 742
        else
743
                EnablePr(1);
1307 fschmid 744
        EnablePG();
745
        EnablePGI();
746
#ifdef HAVE_CMS
747
 
748
        QString tp = Optionen->SolidProf;
4026 craig 749
        if (!ScMW->InputProfiles.contains(tp))
1307 fschmid 750
        {
751
                if (vie != 0)
2984 fschmid 752
                        tp = vie->Doc->CMSSettings.DefaultSolidColorProfile;
1307 fschmid 753
                else
2984 fschmid 754
                        tp = PrefsManager::instance()->appPrefs.DCMSset.DefaultSolidColorProfile;
1307 fschmid 755
        }
756
        ProfilesL::Iterator itp;
4026 craig 757
        ProfilesL::Iterator itpend=ScMW->InputProfiles.end();
758
        for (itp = ScMW->InputProfiles.begin(); itp != itpend; ++itp)
1307 fschmid 759
        {
760
                SolidPr->insertItem(itp.key());
761
                if (itp.key() == tp)
762
                {
763
                        if ((CMSuse) && (CMSavail))
764
                                SolidPr->setCurrentItem(SolidPr->count()-1);
765
                }
766
        }
767
        if ((CMSuse) && (CMSavail))
768
                IntendS->setCurrentItem(Optionen->Intent);
769
        QString tp1 = Optionen->ImageProf;
4026 craig 770
        if (!ScMW->InputProfiles.contains(tp1))
1307 fschmid 771
        {
772
                if (vie != 0)
2984 fschmid 773
                        tp1 = vie->Doc->CMSSettings.DefaultSolidColorProfile;
1307 fschmid 774
                else
2984 fschmid 775
                        tp1 = PrefsManager::instance()->appPrefs.DCMSset.DefaultSolidColorProfile;
1307 fschmid 776
        }
2891 cbradney 777
        ProfilesL::Iterator itp2;
4026 craig 778
        ProfilesL::Iterator itp2end=ScMW->InputProfiles.end();
779
        for (itp2 = ScMW->InputProfiles.begin(); itp2 != itp2end; ++itp2)
1307 fschmid 780
        {
781
                ImageP->insertItem(itp2.key());
782
                if (itp2.key() == tp1)
783
                {
784
                        if ((CMSuse) && (CMSavail))
785
                                ImageP->setCurrentItem(ImageP->count()-1);
786
                }
787
        }
788
        if ((CMSuse) && (CMSavail))
789
                IntendI->setCurrentItem(Optionen->Intent2);
790
        if ((!CMSuse) || (!CMSavail))
791
        {
792
                GroupBox9->hide();
793
                ProfsGroup->hide();
794
        }
795
#else
796
        GroupBox9->hide();
797
        ProfsGroup->hide();
798
#endif
799
 
800
        QSpacerItem* spacerCG = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
801
        tabColorLayout->addItem( spacerCG );
802
        insertTab( tabColor, tr( "C&olor" ) );
803
 
804
        tabPDFX = new QWidget( this, "tabPDFX" );
805
        tabPDFXLayout = new QVBoxLayout( tabPDFX, 11, 5, "tabPDFXLayout");
806
        X3Group = new QGroupBox( tabPDFX, "X3Group" );
807
        X3Group->setTitle( tr( "PDF/X-3 Output Intent" ) );
808
        X3Group->setColumnLayout(0, Qt::Vertical );
809
        X3Group->layout()->setSpacing( 5 );
810
        X3Group->layout()->setMargin( 10 );
811
        X3GroupLayout = new QGridLayout( X3Group->layout() );
812
        X3GroupLayout->setAlignment( Qt::AlignTop );
813
        PrintProfC = new QComboBox( true, X3Group, "PrintProfC" );
814
        PrintProfC->setEditable(false);
815
#ifdef HAVE_CMS
816
 
817
        ProfilesL::Iterator itp3;
818
        QString tp3 = Optionen->PrintProf;
819
        if (!PDFXProfiles->contains(tp3))
820
        {
821
                if (vie != 0)
822
                        tp3 = vie->Doc->CMSSettings.DefaultPrinterProfile;
823
                else
2834 cbradney 824
                        tp3 = PrefsManager::instance()->appPrefs.DCMSset.DefaultPrinterProfile;
1307 fschmid 825
        }
826
        for (itp3 = PDFXProfiles->begin(); itp3 != PDFXProfiles->end(); ++itp3)
827
        {
828
                PrintProfC->insertItem(itp3.key());
829
                if (itp3.key() == tp3)
830
                        PrintProfC->setCurrentItem(PrintProfC->count()-1);
831
        }
832
#endif
833
        X3GroupLayout->addWidget( PrintProfC, 0, 1 );
834
        InfoString = new QLineEdit( X3Group, "InfoString" );
835
        InfoString->setText(Optionen->Info);
836
        X3GroupLayout->addWidget( InfoString, 1, 1 );
837
        PDFX2 = new QLabel( InfoString, tr( "&Info String:" ), X3Group, "PDFX2" );
838
        X3GroupLayout->addWidget( PDFX2, 1, 0 );
839
        PDFX1 = new QLabel( PrintProfC, tr( "Output &Profile:" ), X3Group, "PDFX1" );
840
        X3GroupLayout->addWidget( PDFX1, 0, 0 );
841
        tabPDFXLayout->addWidget( X3Group );
842
        BleedGroup = new QGroupBox( tabPDFX, "BleedGroup" );
843
        BleedGroup->setTitle( tr( "Trim Box" ) );
844
        BleedGroup->setColumnLayout(0, Qt::Vertical );
845
        BleedGroup->layout()->setSpacing( 5 );
846
        BleedGroup->layout()->setMargin( 11 );
847
        BleedGroupLayout = new QGridLayout( BleedGroup->layout() );
848
        BleedGroupLayout->setAlignment( Qt::AlignTop );
849
        BleedIcon = new QLabel( BleedGroup, "BleedIcon" );
850
        BleedIcon->setMinimumSize( QSize( 74, 84 ) );
851
        BleedIcon->setMaximumSize( QSize( 74, 84 ) );
852
        BleedIcon->setFrameShape( QLabel::Panel );
853
        BleedIcon->setFrameShadow( QLabel::Sunken );
854
        BleedIcon->setScaledContents( false );
855
        BleedIcon->setAlignment( static_cast<int>( QLabel::AlignCenter ) );
856
        BleedGroupLayout->addWidget( BleedIcon, 1, 2 );
1792 cbradney 857
        BleedTop = new MSpinBox( BleedGroup, precision );
1307 fschmid 858
        BleedGroupLayout->addWidget( BleedTop, 0, 2 );
1792 cbradney 859
        BleedBottom = new MSpinBox( BleedGroup, precision );
1307 fschmid 860
        BleedGroupLayout->addWidget( BleedBottom, 2, 2 );
1792 cbradney 861
        BleedRight = new MSpinBox( BleedGroup, precision );
1307 fschmid 862
        BleedGroupLayout->addWidget( BleedRight, 1, 3 );
1792 cbradney 863
        BleedLeft = new MSpinBox( BleedGroup, precision );
1307 fschmid 864
        BleedGroupLayout->addWidget( BleedLeft, 1, 1 );
865
        QSpacerItem* spacerPX = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
866
        BleedGroupLayout->addItem( spacerPX, 1, 0 );
867
        QSpacerItem* spacerPX2 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
868
        BleedGroupLayout->addItem( spacerPX2, 1, 4 );
869
        tabPDFXLayout->addWidget( BleedGroup );
870
        insertTab( tabPDFX, tr( "PDF/X-&3" ) );
871
        BleedTop->setSuffix( unit );
872
        BleedTop->setMinValue(0);
1792 cbradney 873
        BleedTop->setMaxValue(PageH*unitRatio);
874
        BleedTop->setValue(Optionen->BleedTop*unitRatio);
1307 fschmid 875
        BleedBottom->setSuffix( unit );
876
        BleedBottom->setMinValue(0);
1792 cbradney 877
        BleedBottom->setMaxValue(PageH*unitRatio);
878
        BleedBottom->setValue(Optionen->BleedBottom*unitRatio);
1307 fschmid 879
        BleedRight->setSuffix( unit );
880
        BleedRight->setMinValue(0);
1792 cbradney 881
        BleedRight->setMaxValue(PageB*unitRatio);
882
        BleedRight->setValue(Optionen->BleedRight*unitRatio);
1307 fschmid 883
        BleedLeft->setSuffix( unit );
884
        BleedLeft->setMinValue(0);
1792 cbradney 885
        BleedLeft->setMaxValue(PageB*unitRatio);
886
        BleedLeft->setValue(Optionen->BleedLeft*unitRatio);
1307 fschmid 887
#ifdef HAVE_CMS
888
        if ((!CMSuse) || (!CMSavail))
889
                setTabEnabled(tabPDFX, false);
890
        if ((CMSuse) && (CMSavail) && (Optionen->Version == 12) && (!PDFXProfiles->isEmpty()))
1738 fschmid 891
                EnablePDFX(3);
1307 fschmid 892
        else
893
                setTabEnabled(tabPDFX, false);
894
#else
895
        setTabEnabled(tabPDFX, false);
896
#endif
897
        BleedChanged();
898
        if (vie != 0)
899
        {
900
                PgSel = 0;
901
                Pages->setCurrentItem(0);
902
                SetEffOpts(0);
903
                Pages->setEnabled(false);
904
                Effects->setEnabled(false);
905
                PagePrev->setEnabled(false);
906
                DoEffects();
907
                if (CheckBox10->isChecked())
908
                {
909
                        PageTime->setValue(EffVal[0].pageViewDuration);
910
                        EffectTime->setValue(EffVal[0].pageEffectDuration);
911
                        EffectType->setCurrentItem(EffVal[0].effectType);
912
                        EDirection->setCurrentItem(EffVal[0].Dm);
913
                        EDirection_2->setCurrentItem(EffVal[0].M);
914
                        EDirection_2_2->setCurrentItem(EffVal[0].Di);
915
                        SetEffOpts(EffectType->currentItem());
916
                }
917
                connect(EmbedFonts, SIGNAL(clicked()), this, SLOT(EmbedAll()));
918
                connect(AvailFlist, SIGNAL(clicked(QListBoxItem*)), this, SLOT(SelAFont(QListBoxItem*)));
919
                connect(EmbedList, SIGNAL(clicked(QListBoxItem*)), this, SLOT(SelEFont(QListBoxItem*)));
920
                connect(ToEmbed, SIGNAL(clicked()), this, SLOT(PutToEmbed()));
921
                connect(FromEmbed, SIGNAL(clicked()), this, SLOT(RemoveEmbed()));
922
                connect(SubsetFonts, SIGNAL(clicked()), this, SLOT(SubsetAll()));
923
                connect(SubsetList, SIGNAL(clicked(QListBoxItem*)), this, SLOT(SelSFont(QListBoxItem*)));
924
                connect(ToSubset, SIGNAL(clicked()), this, SLOT(PutToSubset()));
925
                connect(FromSubset, SIGNAL(clicked()), this, SLOT(RemoveSubset()));
926
                connect(PagePrev, SIGNAL(clicked()), this, SLOT(PagePr()));
927
                connect(Pages, SIGNAL(highlighted(int)), this, SLOT(SetPgEff(int)));
928
                connect(EffectType, SIGNAL(activated(int)), this, SLOT(SetEffOpts(int)));
929
                connect(EDirection_2_2, SIGNAL(activated(int)), this, SLOT(ValidDI(int)));
930
                connect(CheckBox10, SIGNAL(clicked()), this, SLOT(DoEffects()));
931
                connect(EonAllPg, SIGNAL(clicked()), this, SLOT(EffectOnAll()));
3388 fschmid 932
                connect(InfoString, SIGNAL(textChanged(const QString &)), this, SLOT(checkInfo()));
933
                connect(InfoString, SIGNAL(returnPressed()), this, SLOT(checkInfo()));
934
                connect(InfoString, SIGNAL(lostFocus()), this, SLOT(checkInfo()));
3849 subik 935
                QToolTip::add( EmbedFonts, "<qt>" + tr( "Embed fonts into the PDF. Embedding the fonts will preserve the layout and appearance of your document." ) + "</qt>");
2217 cbradney 936
                QToolTip::add( CheckBox10, "<qt>" + tr( "Enables presentation effects when using Adobe&#174; Reader&#174; in full screen mode." ) + "</qt>");
3849 subik 937
                QToolTip::add( PagePrev, "<qt>" + tr( "Show page previews of each page listed above." ) + "</qt>");
938
                QToolTip::add( PageTime, "<qt>" + tr( "Length of time the page is shown before the presentation starts on the selected page." ) + "</qt>" );
939
                QToolTip::add( EffectTime, "<qt>" + tr( "Length of time the effect runs. A shorter time will speed up the effect, a longer one will slow it down." ) + "</qt>" );
940
                QToolTip::add( EffectType, "<qt>" + tr( "Type of the display effect." ) + "</qt>" );
941
                QToolTip::add( EDirection, "<qt>" + tr( "Direction of the effect of moving lines for the split and blind effects." ) + "</qt>" );
942
                QToolTip::add( EDirection_2, "<qt>" + tr( "Starting position for the box and split effects." ) + "</qt>" );
943
                QToolTip::add( EDirection_2_2, "<qt>" + tr( "Direction of the glitter or wipe effects." ) + "</qt>" );
944
                QToolTip::add( EonAllPg, "<qt>" + tr( "Apply the selected effect to all pages." ) + "</qt>" );
1307 fschmid 945
        }
946
        connect(AllPages, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
947
        connect(DSColor, SIGNAL(clicked()), this, SLOT(DoDownsample()));
948
        connect(MirrorH, SIGNAL(clicked()), this, SLOT(PDFMirror()));
949
        connect(MirrorV, SIGNAL(clicked()), this, SLOT(PDFMirror()));
950
        connect(RotateDeg, SIGNAL(activated(int)), this, SLOT(Rotation(int)));
951
        connect(OutCombo, SIGNAL(activated(int)), this, SLOT(EnablePr(int)));
952
        connect(EmbedProfs, SIGNAL(clicked()), this, SLOT(EnablePG()));
953
        connect(EmbedProfs2, SIGNAL(clicked()), this, SLOT(EnablePGI()));
954
        connect(NoEmbedded, SIGNAL(clicked()), this, SLOT(EnablePGI2()));
1973 craig 955
        connect(PDFVersionCombo, SIGNAL(activated(int)), this, SLOT(EnablePDFX(int)));
1307 fschmid 956
        connect(BleedTop, SIGNAL(valueChanged(int)), this, SLOT(BleedChanged()));
957
        connect(BleedBottom, SIGNAL(valueChanged(int)), this, SLOT(BleedChanged()));
958
        connect(BleedLeft, SIGNAL(valueChanged(int)), this, SLOT(BleedChanged()));
959
        connect(BleedRight, SIGNAL(valueChanged(int)), this, SLOT(BleedChanged()));
960
        connect(Encry, SIGNAL(clicked()), this, SLOT(ToggleEncr()));
961
        connect(UseLPI, SIGNAL(clicked()), this, SLOT(EnableLPI2()));
962
        connect(LPIcolor, SIGNAL(activated(int)), this, SLOT(SelLPIcol(int)));
963
        //tooltips
3849 subik 964
        QToolTip::add( AllPages, "<qt>" + tr( "Export all pages to PDF" ) + "</qt>" );
965
        QToolTip::add( OnlySome, "<qt>" + tr( "Export a range of pages to PDF" ) );
966
        QToolTip::add( PageNr, "<qt>" + tr( "Insert a comma separated list of tokens where "
4197 fschmid 967
                                                    "a token can be * for all the pages, 1-5 for "
968
                                                    "a range of pages or a single page number.") + "</qt>" );
1307 fschmid 969
 
3495 cbradney 970
        QToolTip::add( PDFVersionCombo, "<qt>" + tr( "Determines the PDF compatibility. The default is PDF 1.3 which gives the widest compatibility. Choose PDF 1.4 if your file uses features such as transparency or you require 128 bit encryption. PDF/X-3 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." ) + "</qt>");
3849 subik 971
        QToolTip::add( ComboBind, "<qt>" + tr( "Determines the binding of pages in the PDF. Unless you know you need to change it leave the default choice - Left." ) + "</qt>" );
972
        QToolTip::add( CheckBox1, "<qt>" + tr( "Generates thumbnails of each page in the PDF. Some viewers can use the thumbnails for navigation." ) + "</qt>" );
973
        QToolTip::add( Article, "<qt>" + tr( "Generate PDF Articles, which is useful for navigating linked articles in a PDF." ) + "</qt>" );
974
        QToolTip::add( useLayers, "<qt>" + tr( "Layers in your document are exported to the PDF Only available if PDF 1.5 is choosen." ) + "</qt>" );
975
        QToolTip::add( CheckBM, "<qt>" + tr( "Embed the bookmarks you created in your document. These are useful for navigating long PDF documents." ) + "</qt>" );
976
        QToolTip::add( Resolution, "<qt>" + tr( "Export resolution of text and vector graphics. This does not affect the resolution of bitmap images like photos." ) + "</qt>" );
977
        QToolTip::add( Compression, "<qt>" + tr( "Enables lossless compression of text and graphics. Unless you have a reason, leave this checked. This reduces PDF file size." ) + "</qt>" );
3798 cbradney 978
        QToolTip::add( CMethod, "<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>");
3671 craig 979
        QToolTip::add( CQuality, "<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." ) + "</qt>");
3849 subik 980
        QToolTip::add( DSColor, "<qt>" + tr( "Re-sample your bitmap images to the selected DPI. Leaving this unchecked will render them at their native resolution. This can increase memory usage and slow down export." ) + "</qt>" );
981
        QToolTip::add( ValC, "<qt>" + tr( "DPI (Dots Per Inch) for image export.") + "</qt>" );
982
        QToolTip::add( Encry, "<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>" );
983
        QToolTip::add( PassOwner, "<qt>" + tr( "Choose a master password which enables or disables all the security features in your exported PDF" ) + "</qt>" );
984
        QToolTip::add( PassUser, "<qt>" + tr( "Choose a password for users to be able to read your PDF." ) + "</qt>" );
985
        QToolTip::add( PrintSec, "<qt>" + tr( "Allow printing of the PDF. If un-checked, printing is prevented. " ) + "</qt>" );
986
        QToolTip::add( ModifySec, "<qt>" + tr( "Allow modifying of the PDF. If un-checked, modifying the PDF is prevented." ) + "</qt>" );
3798 cbradney 987
        QToolTip::add( CopySec, "<qt>" + tr( "Allow copying of text or graphics from the PDF. If unchecked, text and graphics cannot be copied." ) + "</qt>" );
988
        QToolTip::add( AddSec, "<qt>" + tr( "Allow adding annotations and fields to the PDF. If unchecked, editing annotations and fields is prevented." ) + "</qt>" );
3849 subik 989
        QToolTip::add( OutCombo, "<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." ) + "</qt>" );
990
        QToolTip::add( UseLPI, "<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>" );
991
        QToolTip::add( EmbedProfs, "<qt>" + tr( "Embed a color profile for solid colors" ) + "</qt>" );
992
        QToolTip::add( SolidPr, "<qt>" + tr( "Color profile for solid colors" ) + "</qt>" );
993
        QToolTip::add( IntendS, "<qt>" + tr( "Rendering intent for solid colors" ) + "</qt>" );
994
        QToolTip::add( EmbedProfs2, "<qt>" + tr( "Embed a color profile for images" ) + "</qt>" );
995
        QToolTip::add( NoEmbedded, "<qt>" + tr( "Do not use color profiles that are embedded in source images" ) + "</qt>" );
996
        QToolTip::add( ImageP, "<qt>" + tr( "Color profile for images" ) + "</qt>" );
997
        QToolTip::add( IntendI, "<qt>" + tr( "Rendering intent for images" ) + "</qt>" );
998
        QToolTip::add( PrintProfC, "<qt>" + tr( "Output profile for printing. If possible, get some guidance from your printer on profile selection." ) + "</qt>" );
999
        QToolTip::add( InfoString, "<qt>" + tr( "Mandatory string for PDF/X-3 or the PDF will fail PDF/X-3 conformance. We recommend you use the title of the document." ) + "</qt>" );
1000
        QToolTip::add( BleedTop, "<qt>" + tr( "Distance for bleed from the top of the physical page" ) + "</qt>" );
1001
        QToolTip::add( BleedBottom, "<qt>" + tr( "Distance for bleed from the bottom of the physical page" ) + "</qt>" );
1002
        QToolTip::add( BleedLeft, "<qt>" + tr( "Distance for bleed from the left of the physical page" ) + "</qt>" );
1003
        QToolTip::add( BleedRight, "<qt>" + tr( "Distance for bleed from the right of the physical page" )  + "</qt>");
1004
        QToolTip::add( MirrorH, "<qt>" + tr( "Mirror Page(s) horizontally" ) + "</qt>" );
1005
        QToolTip::add( MirrorV, "<qt>" + tr( "Mirror Page(s) vertically" ) + "</qt>" );
4197 fschmid 1006
        QToolTip::add( useSpot,"<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>");
1307 fschmid 1007
}
1008
 
1828 fschmid 1009
void TabPDFOptions::restoreDefaults()
4197 fschmid 1010
{}
1828 fschmid 1011
 
3388 fschmid 1012
void TabPDFOptions::checkInfo()
1013
{
1014
        if ((PDFVersionCombo->currentItem() == 3) && (InfoString->text().isEmpty()))
1015
                emit noInfo();
1016
        else
1017
                emit hasInfo();
1018
}
1019
 
1307 fschmid 1020
void TabPDFOptions::ToggleEncr()
1021
{
1022
        bool setter = Encry->isChecked() ? true : false;
1023
        GroupSecSet->setEnabled(setter);
1024
        GroupPass->setEnabled(setter);
1025
}
1026
 
1027
void TabPDFOptions::BleedChanged()
1028
{
1792 cbradney 1029
        BleedTop->setMaxValue(pageH*unitRatio-BleedBottom->value());
1030
        BleedBottom->setMaxValue(pageH*unitRatio-BleedTop->value());
1031
        BleedRight->setMaxValue(pageB*unitRatio-BleedLeft->value());
1032
        BleedLeft->setMaxValue(pageB*unitRatio-BleedRight->value());
3333 avox 1033
        QPixmap pm(70,80);
1307 fschmid 1034
        pm.fill(white);
1035
        QPainter p;
1036
        p.begin(&pm);
1037
        p.setBrush(NoBrush);
1038
        p.setPen(black);
1039
        p.drawRect(0, 0, pm.width(), pm.height());
1040
        p.setPen(QPen(black, 1, DotLine, FlatCap, MiterJoin));
1792 cbradney 1041
        int x = qRound((BleedLeft->value() / unitRatio) * (70.0 / pageB));
1042
        int y = qRound((BleedTop->value() / unitRatio) * (80.0 / pageH));
1043
        int w =qRound((pageB-((BleedLeft->value()+BleedRight->value())/unitRatio))*(70.0/pageB));
1044
        int h = qRound((pageH-((BleedTop->value()+BleedBottom->value())/unitRatio))*(80.0/pageH));
1307 fschmid 1045
        p.drawRect(x, y, w, h);
1046
        BleedIcon->setPixmap(pm);
1047
        p.end();
1048
}
1049
 
1050
void TabPDFOptions::enableCMS(bool enable)
1051
{
1973 craig 1052
        disconnect(PDFVersionCombo, SIGNAL(activated(int)), this, SLOT(EnablePDFX(int)));
1053
        int a = PDFVersionCombo->currentItem();
1054
        PDFVersionCombo->clear();
2578 craig 1055
        PDFVersionCombo->insertItem("PDF 1.3");
1056
        PDFVersionCombo->insertItem("PDF 1.4");
1057
        PDFVersionCombo->insertItem("PDF 1.5");
1843 cbradney 1058
        cms=enable;
1307 fschmid 1059
        if (enable)
1973 craig 1060
                PDFVersionCombo->insertItem("PDF/X-3");
1307 fschmid 1061
        else
1738 fschmid 1062
                a = QMIN(a, 3);
1973 craig 1063
        PDFVersionCombo->setCurrentItem(a);
1307 fschmid 1064
        EnablePr(1);
1973 craig 1065
        connect(PDFVersionCombo, SIGNAL(activated(int)), this, SLOT(EnablePDFX(int)));
1307 fschmid 1066
}
1067
 
1068
void TabPDFOptions::EnablePDFX(int a)
1069
{
1843 cbradney 1070
        useLayers->setEnabled(a == 2);
4197 fschmid 1071
        useLayers2->setEnabled(a == 2);
1738 fschmid 1072
        if (a != 3)
1307 fschmid 1073
        {
1074
                setTabEnabled(tabPDFX, false);
1075
                setTabEnabled(tabSecurity, true);
1076
                OutCombo->setEnabled(true);
1077
                EmbedProfs2->setEnabled(true);
3564 fschmid 1078
                emit hasInfo();
1307 fschmid 1079
                if (view != 0)
1080
                {
1081
                        CheckBox10->setEnabled(true);
1082
                        EmbedFonts->setEnabled(true);
1781 fschmid 1083
                        if (EmbedList->count() != 0)
1084
                                FromEmbed->setEnabled(true);
1085
                        ToEmbed->setEnabled(true);
1307 fschmid 1086
                }
1087
                return;
1088
        }
1089
        disconnect(OutCombo, SIGNAL(activated(int)), this, SLOT(EnablePr(int)));
1090
        OutCombo->setCurrentItem(1);
1091
        OutCombo->setEnabled(false);
1092
        EnablePr(1);
1093
        EmbedProfs2->setChecked(true);
1094
        EmbedProfs2->setEnabled(false);
1095
        if (view != 0)
1096
        {
1097
                EmbedFonts->setChecked(true);
1098
                EmbedAll();
1099
                CheckBox10->setChecked(false);
1100
                CheckBox10->setEnabled(false);
1101
                EmbedFonts->setEnabled(false);
1781 fschmid 1102
                FromEmbed->setEnabled(false);
1103
                ToEmbed->setEnabled(false);
3388 fschmid 1104
                if (InfoString->text().isEmpty())
1105
                        emit noInfo();
1106
                else
1107
                        emit hasInfo();
1307 fschmid 1108
        }
1109
        EnablePGI();
1110
        setTabEnabled(tabPDFX, true);
1111
        setTabEnabled(tabSecurity, false);
1112
        connect(OutCombo, SIGNAL(activated(int)), this, SLOT(EnablePr(int)));
1113
}
1114
 
1115
void TabPDFOptions::EnablePGI()
1116
{
1117
        if (EmbedProfs2->isChecked())
1118
        {
1119
                NoEmbedded->setEnabled(true);
1120
                bool setter = NoEmbedded->isChecked() ? true : false;
1121
                ProfsTxt3->setEnabled(setter);
1122
                ProfsTxt4->setEnabled(setter);
1123
                ImageP->setEnabled(setter);
1124
                IntendI->setEnabled(setter);
1125
        }
1126
        else
1127
        {
1128
                ProfsTxt3->setEnabled(false);
1129
                ProfsTxt4->setEnabled(false);
1130
                ImageP->setEnabled(false);
1131
                IntendI->setEnabled(false);
1132
                NoEmbedded->setEnabled(false);
1133
        }
1134
}
1135
 
1136
void TabPDFOptions::EnablePGI2()
1137
{
1138
        bool setter = NoEmbedded->isChecked() ? true : false;
1139
        ProfsTxt3->setEnabled(setter);
1140
        ProfsTxt4->setEnabled(setter);
1141
        ImageP->setEnabled(setter);
1142
        IntendI->setEnabled(setter);
1143
}
1144
 
1145
void TabPDFOptions::EnablePG()
1146
{
1147
        bool setter = EmbedProfs->isChecked() ? true : false;
1148
        ProfsTxt1->setEnabled(setter);
1149
        ProfsTxt2->setEnabled(setter);
1150
        SolidPr->setEnabled(setter);
1151
        IntendS->setEnabled(setter);
1152
}
1153
 
1154
void TabPDFOptions::EnablePr(int a)
1155
{
1156
        EnableLPI(a);
1157
        bool setter = a == 1 ? true : false;
1158
        GroupBox9->setEnabled(setter);
1159
        ProfsGroup->setEnabled(setter);
1160
}
1161
 
1162
void TabPDFOptions::EnableLPI(int a)
1163
{
1164
        if (a == 1)
1165
        {
1166
#ifdef HAVE_CMS
1167
                QString tp = Opts->SolidProf;
4026 craig 1168
                if (!ScMW->InputProfiles.contains(tp))
1307 fschmid 1169
                {
1170
                        if (view != 0)
2984 fschmid 1171
                                tp = view->Doc->CMSSettings.DefaultSolidColorProfile;
1307 fschmid 1172
                        else
2984 fschmid 1173
                                tp = PrefsManager::instance()->appPrefs.DCMSset.DefaultSolidColorProfile;
1307 fschmid 1174
                }
2891 cbradney 1175
                SolidPr->clear();
1307 fschmid 1176
                ProfilesL::Iterator itp;
4026 craig 1177
                ProfilesL::Iterator itpend=ScMW->InputProfiles.end();
1178
                for (itp = ScMW->InputProfiles.begin(); itp != itpend; ++itp)
1307 fschmid 1179
                {
1180
                        SolidPr->insertItem(itp.key());
1181
                        if (itp.key() == tp)
1182
                        {
1183
                                if (cms)
1184
                                        SolidPr->setCurrentItem(SolidPr->count()-1);
1185
                        }
1186
                }
1187
                if (cms)
1188
                        IntendS->setCurrentItem(Opts->Intent);
1189
                QString tp1 = Opts->ImageProf;
4026 craig 1190
                if (!ScMW->InputProfiles.contains(tp1))
1307 fschmid 1191
                {
1192
                        if (view != 0)
2984 fschmid 1193
                                tp1 = view->Doc->CMSSettings.DefaultSolidColorProfile;
1307 fschmid 1194
                        else
2984 fschmid 1195
                                tp1 = PrefsManager::instance()->appPrefs.DCMSset.DefaultSolidColorProfile;
1307 fschmid 1196
                }
1197
                ImageP->clear();
2891 cbradney 1198
                ProfilesL::Iterator itp2;
4026 craig 1199
                ProfilesL::Iterator itp2end=ScMW->InputProfiles.end();
1200
                for (itp2 = ScMW->InputProfiles.begin(); itp2 != itp2end; ++itp2)
1307 fschmid 1201
                {
1202
                        ImageP->insertItem(itp2.key());
1203
                        if (itp2.key() == tp1)
1204
                        {
1205
                                if (cms)
1206
                                        ImageP->setCurrentItem(ImageP->count()-1);
1207
                        }
1208
                }
1209
                if (cms)
1210
                        IntendI->setCurrentItem(Opts->Intent2);
1211
#endif
1212
                if (cms)
1213
                {
1214
                        GroupBox9->show();
1215
                        ProfsGroup->show();
1476 fschmid 1216
                        UseLPI->hide();
3079 fschmid 1217
                        useSpot->hide();
1307 fschmid 1218
                }
1219
                else
1220
                {
1221
                        GroupBox9->hide();
1222
                        ProfsGroup->hide();
3079 fschmid 1223
                        useSpot->show();
1307 fschmid 1224
                        UseLPI->show();
1225
                        if (UseLPI->isChecked())
1226
                                LPIgroup->show();
1227
                        else
1228
                                LPIgroup->hide();
1229
                }
1230
        }
1231
        else
1232
        {
3079 fschmid 1233
                useSpot->hide();
1307 fschmid 1234
                UseLPI->hide();
1235
                LPIgroup->hide();
1236
        }
1237
}
1238
 
1239
void TabPDFOptions::EnableLPI2()
1240
{
1241
        if (UseLPI->isChecked())
1242
                LPIgroup->show();
1243
        else
1244
                LPIgroup->hide();
1245
}
1246
 
1247
void TabPDFOptions::SelLPIcol(int c)
1248
{
1249
        Opts->LPISettings[SelLPIcolor].Frequency = LPIfreq->value();
1250
        Opts->LPISettings[SelLPIcolor].Angle = LPIangle->value();
1251
        Opts->LPISettings[SelLPIcolor].SpotFunc = LPIfunc->currentItem();
1252
        LPIfreq->setValue(Opts->LPISettings[LPIcolor->text(c)].Frequency);
1253
        LPIangle->setValue(Opts->LPISettings[LPIcolor->text(c)].Angle);
1254
        LPIfunc->setCurrentItem(Opts->LPISettings[LPIcolor->text(c)].SpotFunc);
1255
        SelLPIcolor = LPIcolor->text(c);
1256
}
1257
 
1258
void TabPDFOptions::SelRange(bool e)
1259
{
1260
        bool setter = e ? false : true;
1261
        PageNr->setEnabled( setter );
1262
        if (setter == false)
1263
                CheckBM->setChecked(false);
1264
}
1265
 
1266
void TabPDFOptions::EffectOnAll()
1267
{
3724 cbradney 1268
        for (uint pg = 0; pg < view->Doc->Pages->count(); ++pg)
1307 fschmid 1269
        {
1270
                EffVal[pg].pageViewDuration = PageTime->value();
1271
                EffVal[pg].pageEffectDuration = EffectTime->value();
1272
                EffVal[pg].effectType = EffectType->currentItem();
1273
                EffVal[pg].Dm = EDirection->currentItem();
1274
                EffVal[pg].M = EDirection_2->currentItem();
1275
                EffVal[pg].Di = EDirection_2_2->currentItem();
1276
        }
1277
}
1278
 
1279
void TabPDFOptions::PDFMirror()
1280
{
1281
        Opts->MirrorH = MirrorH->isOn();
1282
        Opts->MirrorV = MirrorV->isOn();
1283
}
1284
 
1285
void TabPDFOptions::Rotation( int value )
1286
{
3849 subik 1287
        Opts->RotateDeg = value * 90;
1307 fschmid 1288
}
1289
 
1290
void TabPDFOptions::DoEffects()
1291
{
1292
        bool setter = CheckBox10->isChecked() ? true : false;
1293
        Pages->setEnabled(setter);
1294
        Effects->setEnabled(setter);
1295
        PagePrev->setEnabled(setter);
4197 fschmid 1296
        useFullScreen->setChecked(setter);
1307 fschmid 1297
}
1298
 
1299
void TabPDFOptions::ValidDI(int nr)
1300
{
1301
        if (!EDirection_2_2->listBox()->item(nr)->isSelectable())
1302
                EDirection_2_2->setCurrentItem(0);
1303
}
1304
 
1305
void TabPDFOptions::SetPgEff(int nr)
1306
{
1307
        if (nr < 0)
1308
                return;
1309
        EffVal[PgSel].pageViewDuration = PageTime->value();
1310
        EffVal[PgSel].pageEffectDuration = EffectTime->value();
1311
        EffVal[PgSel].effectType = EffectType->currentItem();
1312
        EffVal[PgSel].Dm = EDirection->currentItem();
1313
        EffVal[PgSel].M = EDirection_2->currentItem();
1314
        EffVal[PgSel].Di = EDirection_2_2->currentItem();
1315
        SetEffOpts(EffVal[nr].effectType);
1316
        PageTime->setValue(EffVal[nr].pageViewDuration);
1317
        EffectTime->setValue(EffVal[nr].pageEffectDuration);
1318
        EffectType->setCurrentItem(EffVal[nr].effectType);
1319
        EDirection->setCurrentItem(EffVal[nr].Dm);
1320
        EDirection_2->setCurrentItem(EffVal[nr].M);
1321
        EDirection_2_2->setCurrentItem(EffVal[nr].Di);
1322
        PgSel = nr;
1323
}
1324
 
1325
void TabPDFOptions::SetEffOpts(int nr)
1326
{
1327
        EDirection_2_2->listBox()->item(2)->setSelectable(false);
1328
        EDirection_2_2->listBox()->item(3)->setSelectable(false);
1329
        EDirection_2_2->listBox()->item(4)->setSelectable(false);
1330
        switch (nr)
1331
        {
1332
        case 0:
1333
        case 3:
1334
                EDirection->setEnabled(false);
1335
                EDirection_2->setEnabled(false);
1336
                EDirection_2_2->setEnabled(false);
1337
                break;
1338
        case 1:
1339
                EDirection->setEnabled(true);
1340
                EDirection_2->setEnabled(false);
1341
                EDirection_2_2->setEnabled(false);
1342
                break;
1343
        case 2:
1344
                EDirection->setEnabled(false);
1345
                EDirection_2->setEnabled(true);
1346
                EDirection_2_2->setEnabled(false);
1347
                break;
1348
        case 4:
1349
        case 6:
1350
                EDirection->setEnabled(false);
1351
                EDirection_2->setEnabled(false);
1352
                EDirection_2_2->setEnabled(true);
1353
                if (nr == 6)
1354
                {
1355
                        EDirection_2_2->listBox()->item(2)->setSelectable(true);
1356
                        EDirection_2_2->listBox()->item(3)->setSelectable(true);
1357
                }
1358
                else
1359
                        EDirection_2_2->listBox()->item(4)->setSelectable(true);
1360
                break;
1361
        case 5:
1362
                EDirection->setEnabled(true);
1363
                EDirection_2->setEnabled(true);
1364
                EDirection_2_2->setEnabled(false);
1365
                break;
1366
        }
1367
}
1368
 
1369
void TabPDFOptions::PagePr()
1370
{
1371
        disconnect(Pages, SIGNAL(highlighted(int)), this, SLOT(SetPgEff(int)));
1372
        QString tmp;
1815 fschmid 1373
        QPixmap pm;
1307 fschmid 1374
        int ci = Pages->currentItem();
1375
        if (PagePrev->isChecked())
1376
        {
3724 cbradney 1377
                for (uint pg = 0; pg < view->Doc->Pages->count(); ++pg)
1815 fschmid 1378
                {
1379
                        pm.convertFromImage(view->PageToPixmap(pg, 70));
1380
                        Pages->changeItem(pm, tr("Page")+" "+tmp.setNum(pg+1), pg);
1381
                }
1307 fschmid 1382
        }
1383
        else
1384
        {
3724 cbradney 1385
                for (uint pg = 0; pg < view->Doc->Pages->count(); ++pg)
1307 fschmid 1386
                        Pages->changeItem( tr("Page")+" "+tmp.setNum(pg+1), pg);
1387
        }
1388
        if (ci != -1)
1389
        {
1390
                PgSel = ci;
1391
                Pages->setCurrentItem(ci);
1392
        }
1393
        else
1394
        {
1395
                PgSel = 0;
1396
                Pages->clearSelection();
1397
        }
1398
        connect(Pages, SIGNAL(highlighted(int)), this, SLOT(SetPgEff(int)));
1399
}
1400
 
1401
void TabPDFOptions::DoDownsample()
1402
{
1403
        if (DSColor->isChecked())
1404
        {
1405
                ValC->setEnabled(true);
1406
                if (ValC->value() > Resolution->value())
1407
                        ValC->setValue(Resolution->value());
1408
                ValC->setMaxValue(Resolution->value());
1409
                ValC->setMinValue(35);
1410
        }
1411
        else
1412
                ValC->setEnabled(false);
1413
}
1414
 
1415
void TabPDFOptions::RemoveEmbed()
1416
{
1417
        FontsToEmbed.remove(EmbedList->currentText());
1418
        EmbedList->removeItem(EmbedList->currentItem());
1419
        EmbedList->clearSelection();
1420
        if (EmbedList->count() == 0)
1421
        {
1422
                FromEmbed->setEnabled(false);
1423
                ToSubset->setEnabled(false);
1424
        }
1425
}
1426
 
1427
void TabPDFOptions::PutToEmbed()
1428
{
1429
        if (EmbedList->count() != 0)
1430
        {
3633 fschmid 1431
                if (!(*AllFontsP)[AvailFlist->currentText()]->Subset)
1307 fschmid 1432
                {
3633 fschmid 1433
                        if (EmbedList->findItem(AvailFlist->currentText()) == NULL)
1434
                        {
1435
                                FontsToEmbed.append(AvailFlist->currentText());
1436
                                EmbedList->insertItem(AvailFlist->currentText());
1437
                        }
1307 fschmid 1438
                }
3633 fschmid 1439
                else
1440
                {
1441
                        if (SubsetList->count() != 0)
1442
                        {
1443
                                if (SubsetList->findItem(AvailFlist->currentText()) == NULL)
1444
                                {
1445
                                        FontsToSubset.append(AvailFlist->currentText());
1446
                                        SubsetList->insertItem(AvailFlist->currentText());
1447
                                }
1448
                        }
1449
                        else
1450
                        {
1451
                                FontsToSubset.append(AvailFlist->currentText());
1452
                                SubsetList->insertItem(AvailFlist->currentText());
1453
                        }
1454
                }
1307 fschmid 1455
        }
1456
        else
1457
        {
3633 fschmid 1458
                if (!(*AllFontsP)[AvailFlist->currentText()]->Subset)
1459
                {
1460
                        FontsToEmbed.append(AvailFlist->currentText());
1461
                        EmbedList->insertItem(AvailFlist->currentText());
1462
                }
1463
                else
1464
                {
1465
                        if (SubsetList->count() != 0)
1466
                        {
1467
                                if (SubsetList->findItem(AvailFlist->currentText()) == NULL)
1468
                                {
1469
                                        FontsToSubset.append(AvailFlist->currentText());
1470
                                        SubsetList->insertItem(AvailFlist->currentText());
1471
                                }
1472
                        }
1473
                        else
1474
                        {
1475
                                FontsToSubset.append(AvailFlist->currentText());
1476
                                SubsetList->insertItem(AvailFlist->currentText());
1477
                        }
1478
                }
1307 fschmid 1479
        }
1480
}
1481
 
1482
void TabPDFOptions::RemoveSubset()
1483
{
3633 fschmid 1484
        if (!(*AllFontsP)[SubsetList->currentText()]->Subset)
1485
        {
1486
                FontsToSubset.remove(SubsetList->currentText());
1487
                FontsToEmbed.append(SubsetList->currentText());
1488
                EmbedList->insertItem(SubsetList->currentText());
1489
                SubsetList->removeItem(SubsetList->currentItem());
1490
                SubsetList->clearSelection();
1491
                if (SubsetList->count() == 0)
1492
                        FromSubset->setEnabled(false);
1493
        }
1307 fschmid 1494
}
1495
 
1496
void TabPDFOptions::PutToSubset()
1497
{
1498
        if (SubsetList->count() != 0)
1499
        {
1500
                if (SubsetList->findItem(EmbedList->currentText()) == NULL)
1501
                {
1502
                        FontsToSubset.append(EmbedList->currentText());
1503
                        SubsetList->insertItem(EmbedList->currentText());
1504
                }
1505
        }
1506
        else
1507
        {
1508
                FontsToSubset.append(EmbedList->currentText());
1509
                SubsetList->insertItem(EmbedList->currentText());
1510
        }
1511
        FontsToEmbed.remove(EmbedList->currentText());
1512
        EmbedList->removeItem(EmbedList->currentItem());
1513
        EmbedList->clearSelection();
1514
        if (EmbedList->count() == 0)
1515
        {
1516
                FromEmbed->setEnabled(false);
1517
                ToSubset->setEnabled(false);
1518
        }
1519
}
1520
 
1521
void TabPDFOptions::SelAFont(QListBoxItem *c)
1522
{
1523
        if ((c != NULL) && (!EmbedFonts->isChecked()))
1524
        {
1525
                FromEmbed->setEnabled(false);
1526
                if (c->isSelectable())
1527
                        ToEmbed->setEnabled(true);
1528
                ToSubset->setEnabled(false);
1529
                FromSubset->setEnabled(false);
1530
                EmbedList->clearSelection();
1531
                SubsetList->clearSelection();
1532
        }
1533
}
1534
 
1535
void TabPDFOptions::SelEFont(QListBoxItem *c)
1536
{
1537
        if ((c != NULL) && (!EmbedFonts->isChecked()))
1538
        {
1781 fschmid 1539
                if (!isTabEnabled(tabPDFX))
1540
                        FromEmbed->setEnabled(true);
1307 fschmid 1541
                ToEmbed->setEnabled(false);
1542
                ToSubset->setEnabled(true);
1543
                FromSubset->setEnabled(false);
1544
                AvailFlist->clearSelection();
1545
                SubsetList->clearSelection();
1546
        }
1547
}
1548
 
1549
void TabPDFOptions::SelSFont(QListBoxItem *c)
1550
{
1551
        if ((c != NULL) && (!EmbedFonts->isChecked()))
1552
        {
1553
                FromSubset->setEnabled(true);
1554
                ToSubset->setEnabled(false);
1555
                ToEmbed->setEnabled(false);
1556
                FromEmbed->setEnabled(false);
1557
                EmbedList->clearSelection();
1558
                AvailFlist->clearSelection();
1559
        }
1560
}
1561
 
1562
void TabPDFOptions::EmbedAll()
1563
{
1564
        if (EmbedFonts->isChecked())
1565
        {
1566
                SubsetFonts->setChecked(false);
1567
                EmbedList->clear();
1568
                FontsToEmbed.clear();
1569
                SubsetList->clear();
1570
                FontsToSubset.clear();
1571
                FromEmbed->setEnabled(false);
1572
                ToEmbed->setEnabled(false);
1573
                ToSubset->setEnabled(false);
1574
                FromSubset->setEnabled(false);
1575
                for (uint a=0; a < AvailFlist->count(); ++a)
1576
                {
1577
                        if (AvailFlist->item(a)->isSelectable())
1578
                        {
3633 fschmid 1579
                                if (!(*AllFontsP)[AvailFlist->item(a)->text()]->Subset)
1580
                                {
1581
                                        FontsToEmbed.append(AvailFlist->item(a)->text());
1582
                                        EmbedList->insertItem(AvailFlist->item(a)->text());
1583
                                }
1584
                                else
1585
                                {
1586
                                        FontsToSubset.append(AvailFlist->item(a)->text());
1587
                                        SubsetList->insertItem(AvailFlist->item(a)->text());
1588
                                }
1307 fschmid 1589
                        }
1590
                }
1591
        }
1592
}
1593
 
1594
void TabPDFOptions::SubsetAll()
1595
{
1596
        if (SubsetFonts->isChecked())
1597
        {
1598
                EmbedFonts->setChecked(false);
1599
                EmbedList->clear();
1600
                FontsToEmbed.clear();
1601
                SubsetList->clear();
1602
                FontsToSubset.clear();
1603
                FromEmbed->setEnabled(false);
1604
                ToEmbed->setEnabled(false);
1605
                ToSubset->setEnabled(false);
1606
                FromSubset->setEnabled(false);
1607
                for (uint a=0; a < AvailFlist->count(); ++a)
1608
                {
1609
                        if (AvailFlist->item(a)->isSelectable())
1610
                        {
1611
                                FontsToSubset.append(AvailFlist->item(a)->text());
1612
                                SubsetList->insertItem(AvailFlist->item(a)->text());
1613
                        }
1614
                }
1615
        }
1616
}