Subversion Repositories Scribus

Rev

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