Subversion Repositories Scribus

Rev

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