Subversion Repositories Scribus

Rev

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