Subversion Repositories Scribus

Rev

Rev 1921 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 paul 1
/****************************************************************************
2
** Form implementation generated from reading ui file 'Druck.ui'
3
**
4
** Created: Mon Sep 17 21:42:19 2001
5
**      by:  The User Interface Compiler (uic)
6
**
7
** WARNING! All changes made in this file will be lost!
8
****************************************************************************/
9
#include "druck.h"
10
#include "druck.moc"
128 Franz 11
 
612 cbradney 12
#ifdef _MSC_VER
13
 #if (_MSC_VER >= 1200)
14
  #include "win-config.h"
15
 #endif
128 Franz 16
#else
17
 #include "config.h"
18
#endif
19
 
415 Franz 20
#include "prefsfile.h"
3 paul 21
#include "customfdialog.h"
22
#include "cupsoptions.h"
23
#include <qtextstream.h>
24
#include <qstringlist.h>
25
#include <qdir.h>
26
#include <qfileinfo.h>
27
#include <qmap.h>
28
#ifdef HAVE_CUPS
29
#include <cups/cups.h>
30
#endif
31
#ifdef HAVE_CMS
32
extern bool CMSuse;
33
#endif
34
 
35
extern bool loadText(QString nam, QString *Buffer);
36
extern QPixmap loadIcon(QString nam);
415 Franz 37
extern PrefsFile* prefsFile;
3 paul 38
 
1860 fschmid 39
AdvOptions::AdvOptions(QWidget* parent, bool Hm, bool Vm, bool Ic, int ps, bool DoGcr, bool doDev) : QDialog( parent, "prin", true, 0 )
3 paul 40
{
41
        setCaption( tr( "Advanced Options" ) );
248 Franz 42
        setIcon(loadIcon("AppIcon.png"));
3 paul 43
        AdvOptionsLayout = new QVBoxLayout( this );
44
        AdvOptionsLayout->setSpacing( 5 );
45
        AdvOptionsLayout->setMargin( 10 );
348 Franz 46
        MirrorH = new QCheckBox( tr("Mirror Page(s) &Horizontal"), this, "MirrorH");
3 paul 47
        MirrorH->setChecked(Hm);
48
        AdvOptionsLayout->addWidget( MirrorH );
348 Franz 49
        MirrorV = new QCheckBox( tr("Mirror Page(s) &Vertical"), this, "MirrorV");
3 paul 50
        MirrorV->setChecked(Vm);
51
        AdvOptionsLayout->addWidget( MirrorV );
356 Franz 52
        GcR = new QCheckBox( tr("Apply Under Color &Removal"), this, "GCR");
344 Franz 53
        GcR->setChecked(DoGcr);
54
        AdvOptionsLayout->addWidget( GcR );
1860 fschmid 55
        devPar = new QCheckBox( tr("Set Media Size"), this, "devPar");
56
        devPar->setChecked(doDev);
57
        AdvOptionsLayout->addWidget( devPar );
3 paul 58
#ifdef HAVE_CMS
59
        if (CMSuse)
161 Franz 60
        {
348 Franz 61
                UseICC = new QCheckBox( tr("Apply &ICC Profiles"), this, "ICC");
3 paul 62
                UseICC->setChecked(Ic);
63
                AdvOptionsLayout->addWidget( UseICC );
161 Franz 64
        }
3 paul 65
#endif
348 Franz 66
        ButtonGroupP = new QButtonGroup( "", this, "ButtonGroup5" );
307 Franz 67
        ButtonGroupP->setFrameShape( QButtonGroup::NoFrame );
68
        ButtonGroupP->setColumnLayout(0, Qt::Vertical );
69
        ButtonGroupP->layout()->setSpacing( 0 );
70
        ButtonGroupP->layout()->setMargin( 0 );
71
        ButtonGroupPLayout = new QVBoxLayout( ButtonGroupP->layout() );
72
        ButtonGroupPLayout->setSpacing( 6 );
73
        ButtonGroupPLayout->setMargin( 0 );
348 Franz 74
        PS1 = new QRadioButton( tr( "PostScript Level &1" ), ButtonGroupP, "RadioButton1" );
75
        PS2 = new QRadioButton( tr( "PostScript Level &2" ), ButtonGroupP, "RadioButton1" );
76
        PS3 = new QRadioButton( tr( "PostScript Level &3" ), ButtonGroupP, "RadioButton1" );
307 Franz 77
        PS3->setChecked( true );
78
        if (ps == 3)
79
                PS3->setChecked( true );
80
        if (ps == 2)
81
                PS2->setChecked( true );
82
        if (ps == 1)
83
                PS1->setChecked( true );
84
        ButtonGroupPLayout->addWidget( PS1 );
348 Franz 85
        ButtonGroupPLayout->addWidget( PS2 );
86
        ButtonGroupPLayout->addWidget( PS3 );
307 Franz 87
        AdvOptionsLayout->addWidget( ButtonGroupP );
3 paul 88
 
89
        Layout2 = new QHBoxLayout;
356 Franz 90
        Layout2->setSpacing( 6 );
3 paul 91
        Layout2->setMargin( 0 );
92
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
93
        Layout2->addItem( spacer );
348 Franz 94
        PushButton1 = new QPushButton( tr( "&OK" ), this, "PushButton1" );
3 paul 95
        Layout2->addWidget( PushButton1 );
348 Franz 96
        PushButton2 = new QPushButton( tr( "&Cancel" ), this, "PushButton1_2" );
161 Franz 97
        PushButton2->setDefault( true );
3 paul 98
        PushButton2->setFocus();
99
        Layout2->addWidget( PushButton2 );
100
        AdvOptionsLayout->addLayout( Layout2 );
101
        setMinimumSize( sizeHint() );
307 Franz 102
        QToolTip::add( PS3, tr( "Creates PostScript Level 3" ) );
103
        QToolTip::add( PS2, tr( "Creates PostScript Level 2 only, beware,\nthis can create huge files" ) );
104
        QToolTip::add( PS1, tr( "Creates PostScript Level 1 only, beware,\nthis can create huge files" ) );
2041 mrdocs 105
        QToolTip::add( devPar, tr( "This enables you to explicitely set,\nthe media size of the postscript file.\nNot recommended unless\n requested by your printer." ) );
362 Franz 106
        QToolTip::add( GcR, tr( "A way of switching off some of the gray shades which are composed\n"
358 Franz 107
                                           "of cyan, yellow and magenta and using black instead.\n"
108
                                                                           "UCR most affects parts of images which are neutral and/or dark tones\n"
109
                                                                           "which are close to the gray. Use of this may improve printing some images\n"
110
                                                                           "and some experimentation and testing is need on a case by case basis.\n"
111
                                                                           "UCR reduces the possibility of over saturation with CMY inks." ) );
112
 
3 paul 113
        connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
114
        connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
115
}
116
 
344 Franz 117
Druck::Druck( QWidget* parent, QString PDatei, QString PDev, QString PCom, bool gcr)
248 Franz 118
                : QDialog( parent, "Dr", true, 0)
3 paul 119
{
451 tsoots 120
        prefs = prefsFile->getContext("print_options");
161 Franz 121
        PrinterOpts = "";
248 Franz 122
        setCaption( tr( "Setup Printer" ) );
123
        setIcon(loadIcon("AppIcon.png"));
124
        DruckLayout = new QVBoxLayout( this );
125
        DruckLayout->setSpacing( 6 );
126
        DruckLayout->setMargin( 10 );
3 paul 127
 
248 Franz 128
        Drucker = new QGroupBox( this, "Drucker" );
348 Franz 129
        Drucker->setTitle( tr( "Print Destination" ) );
248 Franz 130
        Drucker->setColumnLayout(0, Qt::Vertical );
131
        Drucker->layout()->setSpacing( 0 );
132
        Drucker->layout()->setMargin( 0 );
133
        DruckerLayout = new QGridLayout( Drucker->layout() );
134
        DruckerLayout->setAlignment( Qt::AlignTop );
135
        DruckerLayout->setSpacing( 6 );
136
        DruckerLayout->setMargin( 10 );
3 paul 137
 
248 Franz 138
        Layout1x = new QHBoxLayout;
139
        Layout1x->setSpacing( 6 );
140
        Layout1x->setMargin( 0 );
141
        PrintDest = new QComboBox( true, Drucker, "PrintDest" );
142
        PrintDest->setMinimumSize( QSize( 250, 22 ) );
143
        PrintDest->setMaximumSize( QSize( 260, 22 ) );
144
        PrintDest->setEditable(false);
145
        QString Pcap;
146
        QString tmp;
147
        QStringList wt;
3 paul 148
#ifdef HAVE_CUPS
161 Franz 149
        cups_dest_t *dests;
150
        int num_dests = cupsGetDests(&dests);
151
        for (int pr = 0; pr < num_dests; ++pr)
152
        {
153
                tmp = QString(dests[pr].name);
248 Franz 154
                PrintDest->insertItem(tmp);
155
                if (tmp == PDev)
156
                {
157
                        PrintDest->setCurrentItem(PrintDest->count()-1);
158
                        ToFile = false;
159
                }
161 Franz 160
        }
161
        cupsFreeDests(num_dests, dests);
3 paul 162
#else
248 Franz 163
        if (loadText("/etc/printcap", &Pcap))
164
        {
165
                QTextStream ts(&Pcap, IO_ReadOnly);
166
                while(!ts.atEnd())
167
                {
168
                        tmp = ts.readLine();
169
                        if (tmp.isEmpty())
170
                                continue;
171
                        if ((tmp[0] != '#') && (tmp[0] != ' ') && (tmp[0] != '\n') && (tmp[0] != '\t'))
172
                        {
173
                                tmp = tmp.stripWhiteSpace();
174
                                tmp = tmp.left(tmp.length() - (tmp.right(2) == ":\\" ? 2 : 1));
161 Franz 175
                                wt = QStringList::split("|", tmp);
248 Franz 176
                                PrintDest->insertItem(wt[0]);
177
                                if (wt[0] == PDev)
178
                                {
179
                                        PrintDest->setCurrentItem(PrintDest->count()-1);
180
                                        ToFile = false;
181
                                }
182
                        }
183
                }
184
        }
3 paul 185
#endif
248 Franz 186
        PrintDest->insertItem( tr("File"));
187
        if (PDev == "")
188
        {
189
                Geraet = PrintDest->text(0);
190
                ToFile = false;
191
        }
192
        else
193
                Geraet = PDev;
451 tsoots 194
 
248 Franz 195
        Layout1x->addWidget( PrintDest );
3 paul 196
 
197
#ifdef HAVE_CUPS
348 Franz 198
        OptButton = new QPushButton( tr( "&Options..." ), Drucker, "Optionen" );
248 Franz 199
        Layout1x->addWidget( OptButton );
3 paul 200
#endif
248 Franz 201
        QSpacerItem* spacerDR = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
202
        Layout1x->addItem( spacerDR );
203
        DruckerLayout->addLayout( Layout1x, 0, 0);
204
        Layout1 = new QHBoxLayout;
205
        Layout1->setSpacing( 6 );
206
        Layout1->setMargin( 0 );
348 Franz 207
        LineEdit1 = new QLineEdit( PDatei, Drucker, "LineEdit1" );
208
        LineEdit1->setMinimumSize( QSize( 240, 22 ) );
209
        LineEdit1->setEnabled(false);
210
        DateiT = new QLabel( LineEdit1, tr( "&File:" ), Drucker, "DateiT" );
248 Franz 211
        DateiT->setEnabled( false );
212
        Layout1->addWidget( DateiT );
213
        Layout1->addWidget( LineEdit1 );
214
        ToolButton1 = new QToolButton( Drucker, "ToolButton1" );
348 Franz 215
        ToolButton1->setText( tr( "C&hange..." ) );
248 Franz 216
        ToolButton1->setMinimumSize( QSize( 80, 22 ) );
217
        ToolButton1->setEnabled(false);
261 Franz 218
        ToolButton1->setFocusPolicy( QToolButton::TabFocus );
248 Franz 219
        Layout1->addWidget( ToolButton1 );
220
        DruckerLayout->addLayout( Layout1, 1, 0 );
3 paul 221
 
348 Franz 222
        OtherCom = new QCheckBox(tr("A&lternative Printer Command"), Drucker, "Dc");
248 Franz 223
        OtherCom->setChecked(false);
362 Franz 224
        QToolTip::add( OtherCom, tr( "Use an alternative print manager, such as kprinter or gtklp,\nto utilize additional printing options") );
248 Franz 225
        DruckerLayout->addWidget( OtherCom, 2, 0, Qt::AlignLeft);
226
        LayoutCC = new QHBoxLayout;
227
        LayoutCC->setSpacing( 6 );
228
        LayoutCC->setMargin( 0 );
348 Franz 229
        Command = new QLineEdit( PCom, Drucker, "LineEdit12" );
230
        Command->setMinimumSize( QSize( 240, 22 ) );
231
        Command->setEnabled(false);
232
        OthText = new QLabel( Command, tr( "Co&mmand:" ), Drucker, "DateiTc" );
248 Franz 233
        OthText->setEnabled( false );
234
        LayoutCC->addWidget( OthText );
235
        LayoutCC->addWidget( Command );
236
        DruckerLayout->addLayout( LayoutCC, 3, 0 );
237
        DruckLayout->addWidget( Drucker );
3 paul 238
 
239
 
348 Franz 240
        Umfang = new QButtonGroup( tr( "Range" ), this, "Umfang" );
248 Franz 241
        Umfang->setColumnLayout(0, Qt::Vertical );
242
        Umfang->layout()->setSpacing( 0 );
243
        Umfang->layout()->setMargin( 0 );
244
        UmfangLayout = new QHBoxLayout( Umfang->layout() );
245
        UmfangLayout->setAlignment( Qt::AlignTop );
246
        UmfangLayout->setSpacing( 6 );
247
        UmfangLayout->setMargin( 5 );
3 paul 248
 
348 Franz 249
        ButtonGroup5 = new QButtonGroup( "", Umfang, "ButtonGroup5" );
248 Franz 250
        ButtonGroup5->setFrameShape( QButtonGroup::NoFrame );
251
        ButtonGroup5->setColumnLayout(0, Qt::Vertical );
252
        ButtonGroup5->layout()->setSpacing( 0 );
253
        ButtonGroup5->layout()->setMargin( 0 );
254
        ButtonGroup5Layout = new QGridLayout( ButtonGroup5->layout() );
255
        ButtonGroup5Layout->setAlignment( Qt::AlignTop );
256
        ButtonGroup5Layout->setSpacing( 6 );
257
        ButtonGroup5Layout->setMargin( 5 );
348 Franz 258
        RadioButton1 = new QRadioButton( tr( "Print &All" ), ButtonGroup5, "RadioButton1" );
307 Franz 259
        RadioButton1->setChecked( true );
260
        ButtonGroup5Layout->addMultiCellWidget( RadioButton1, 0, 0, 0, 1 );
348 Franz 261
        CurrentPage = new QRadioButton( tr( "Print Current Pa&ge" ), ButtonGroup5, "RadioButton2" );
307 Franz 262
        ButtonGroup5Layout->addMultiCellWidget( CurrentPage, 1, 1, 0, 1 );
348 Franz 263
        RadioButton2 = new QRadioButton( tr( "Print &Range" ), ButtonGroup5, "RadioButton2" );
307 Franz 264
        ButtonGroup5Layout->addMultiCellWidget( RadioButton2, 2, 2, 0, 1 );
328 Franz 265
        PageNr = new QLineEdit( ButtonGroup5, "PageNr" );
266
        PageNr->setEnabled(false);
267
        QToolTip::add( PageNr, tr( "Insert a comma separated list of tokens where\n"
268
                                           "a token can be * for all the pages, 1-5 for\n"
269
                                           "a range of pages or a single page number.") );
270
        ButtonGroup5Layout->addWidget( PageNr, 3, 1 );
248 Franz 271
        UmfangLayout->addWidget( ButtonGroup5 );
3 paul 272
 
248 Franz 273
        ButtonGroup4 = new QButtonGroup( Umfang, "ButtonGroup4" );
274
        ButtonGroup4->setFrameShape( QButtonGroup::NoFrame );
283 Franz 275
        ButtonGroup4->setTitle( "" );
248 Franz 276
        ButtonGroup4->setColumnLayout(0, Qt::Vertical );
277
        ButtonGroup4->layout()->setSpacing( 0 );
278
        ButtonGroup4->layout()->setMargin( 0 );
279
        ButtonGroup4Layout = new QGridLayout( ButtonGroup4->layout() );
280
        ButtonGroup4Layout->setAlignment( Qt::AlignTop );
281
        ButtonGroup4Layout->setSpacing( 6 );
282
        ButtonGroup4Layout->setMargin( 5 );
3 paul 283
 
284
 
248 Franz 285
        Copies = new QSpinBox( ButtonGroup4, "Copies" );
286
        Copies->setEnabled( true );
287
        Copies->setMinimumSize( QSize( 70, 22 ) );
288
        Copies->setMinValue( 1 );
289
        Copies->setMaxValue(1000);
290
        Copies->setValue(1);
348 Franz 291
        TextLabel3 = new QLabel( Copies, tr( "N&umber of Copies:" ), ButtonGroup4, "TextLabel3" );
292
        ButtonGroup4Layout->addWidget( TextLabel3, 0, 0 );
329 Franz 293
        ButtonGroup4Layout->addWidget( Copies, 0, 1 );
248 Franz 294
        UmfangLayout->addWidget( ButtonGroup4 );
295
        DruckLayout->addWidget( Umfang );
3 paul 296
 
248 Franz 297
        Optionen = new QButtonGroup( this, "Optionen" );
298
        Optionen->setTitle( tr( "Options" ) );
299
        Optionen->setColumnLayout(0, Qt::Vertical );
300
        Optionen->layout()->setSpacing( 0 );
301
        Optionen->layout()->setMargin( 0 );
302
        OptionenLayout = new QGridLayout( Optionen->layout() );
303
        OptionenLayout->setAlignment( Qt::AlignTop );
304
        OptionenLayout->setSpacing( 5 );
305
        OptionenLayout->setMargin( 5 );
3 paul 306
 
248 Franz 307
        ButtonGroup3 = new QButtonGroup( Optionen, "ButtonGroup3" );
308
        ButtonGroup3->setGeometry( QRect( 11, 19, 138, 95 ) );
309
        ButtonGroup3->setFrameShape( QButtonGroup::NoFrame );
283 Franz 310
        ButtonGroup3->setTitle( "" );
248 Franz 311
        ButtonGroup3->setColumnLayout(0, Qt::Vertical );
312
        ButtonGroup3->layout()->setSpacing( 0 );
313
        ButtonGroup3->layout()->setMargin( 0 );
314
        ButtonGroup3Layout = new QVBoxLayout( ButtonGroup3->layout() );
315
        ButtonGroup3Layout->setAlignment( Qt::AlignTop );
316
        ButtonGroup3Layout->setSpacing( 5 );
317
        ButtonGroup3Layout->setMargin( 5 );
3 paul 318
 
348 Franz 319
        NormalP = new QRadioButton( tr( "Print &Normal" ), ButtonGroup3, "NormalP" );
248 Franz 320
        NormalP->setChecked( true );
321
        ButtonGroup3Layout->addWidget( NormalP );
3 paul 322
 
348 Franz 323
        PrintSep = new QRadioButton( tr( "Print &Separations" ), ButtonGroup3, "PrintSep" );
261 Franz 324
        PrintSep->setFocusPolicy( QRadioButton::TabFocus );
248 Franz 325
        ButtonGroup3Layout->addWidget( PrintSep );
326
        ToSeparation = false;
3 paul 327
 
248 Franz 328
        SepArt = new QComboBox( true, ButtonGroup3, "SepArt" );
223 Franz 329
        /* PFJ - 29.02.04 - Altered to QString, size_t, for */
248 Franz 330
        QString sep[] =
331
            {
332
                tr("All"), tr("Cyan"), tr("Magenta"), tr("Yellow"),
333
                tr("Black")
334
            };
223 Franz 335
        size_t sepArray = sizeof(sep) / sizeof(*sep);
336
        for (uint prop = 0; prop < sepArray; ++prop)
337
                SepArt->insertItem(sep[prop]);
248 Franz 338
        SepArt->setEnabled( false );
339
        SepArt->setEditable( false );
340
        ButtonGroup3Layout->addWidget( SepArt );
341
        OptionenLayout->addWidget( ButtonGroup3, 0, 0, Qt::AlignLeft );
3 paul 342
 
248 Franz 343
        ButtonGroup3_2 = new QButtonGroup( Optionen, "ButtonGroup3_2" );
344
        ButtonGroup3_2->setFrameShape( QButtonGroup::NoFrame );
345
        ButtonGroup3_2->setTitle( "" );
346
        ButtonGroup3_2->setColumnLayout(0, Qt::Vertical );
347
        ButtonGroup3_2->layout()->setSpacing( 0 );
348
        ButtonGroup3_2->layout()->setMargin( 0 );
349
        ButtonGroup3_2Layout = new QVBoxLayout( ButtonGroup3_2->layout() );
350
        ButtonGroup3_2Layout->setAlignment( Qt::AlignTop );
351
        ButtonGroup3_2Layout->setSpacing( 5 );
352
        ButtonGroup3_2Layout->setMargin( 5 );
3 paul 353
 
348 Franz 354
        PrintGray = new QRadioButton( tr( "Pr&int In Color If Available" ), ButtonGroup3_2, "PrintGray" );
248 Franz 355
        PrintGray->setChecked( true );
261 Franz 356
        PrintGray->setFocusPolicy( QRadioButton::TabFocus );
248 Franz 357
        ButtonGroup3_2Layout->addWidget( PrintGray );
3 paul 358
 
348 Franz 359
        PrintGray2 = new QRadioButton( tr( "Print In Gra&yscale" ), ButtonGroup3_2, "PrintGray2" );
248 Franz 360
        ButtonGroup3_2Layout->addWidget( PrintGray2 );
451 tsoots 361
        MirrorH = prefs->getBool("MirrorH", false);
362
        MirrorV = prefs->getBool("MirrorV", false);
363
        ICCinUse = prefs->getBool("ICCinUse", false);
1860 fschmid 364
        doDev = prefs->getBool("doDev", false);
451 tsoots 365
        DoGCR = prefs->getBool("DoGCR", gcr);
366
        PSLevel = prefs->getInt("PSLevel", 3);
348 Franz 367
        AdvOptButton = new QPushButton( tr("Ad&vanced Options..."), ButtonGroup3_2, "Adv");
248 Franz 368
        ButtonGroup3_2Layout->addWidget( AdvOptButton );
3 paul 369
 
248 Franz 370
        OptionenLayout->addWidget( ButtonGroup3_2, 0, 1 );
371
        DruckLayout->addWidget( Optionen );
3 paul 372
 
248 Franz 373
        Layout2 = new QHBoxLayout;
374
        Layout2->setSpacing( 24 );
375
        Layout2->setMargin( 0 );
376
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
377
        Layout2->addItem( spacer );
3 paul 378
 
348 Franz 379
        OKButton = new QPushButton( tr( "&Print" ), this, "OKButton" );
248 Franz 380
        OKButton->setDefault( true );
381
        Layout2->addWidget( OKButton );
348 Franz 382
        OKButton_2 = new QPushButton( tr( "&Cancel" ), this, "OKButton_2" );
248 Franz 383
        OKButton_2->setDefault( false );
384
        Layout2->addWidget( OKButton_2 );
3 paul 385
 
248 Franz 386
        DruckLayout->addLayout( Layout2 );
387
        if ((PDev== tr("File")) || (PrintDest->count() == 1))
388
        {
389
                PrintDest->setCurrentItem(PrintDest->count()-1);
390
                DateiT->setEnabled(true);
391
                LineEdit1->setEnabled(true);
392
                ToolButton1->setEnabled(true);
393
                ToFile = true;
394
        }
395
        setMaximumSize(sizeHint());
260 Franz 396
        //tab order
397
#ifdef HAVE_CUPS
398
        setTabOrder( PrintDest, OptButton );
399
        setTabOrder( OptButton, LineEdit1);
400
#else
401
        setTabOrder( PrintDest, LineEdit1 );
402
#endif
403
        setTabOrder( LineEdit1,ToolButton1);
404
        setTabOrder( ToolButton1,OtherCom);
405
        setTabOrder( OtherCom, Command );
406
        setTabOrder( Command, RadioButton1 );
307 Franz 407
        setTabOrder( RadioButton1, CurrentPage );
408
        setTabOrder( CurrentPage, RadioButton2 );
329 Franz 409
        setTabOrder( RadioButton2, Copies );
260 Franz 410
        setTabOrder( Copies, NormalP );
411
        setTabOrder( NormalP, PrintSep );
412
        setTabOrder( PrintSep, SepArt );
413
        setTabOrder( SepArt, PrintGray );
414
        setTabOrder( PrintGray, PrintGray2 );
415
        setTabOrder( PrintGray2, AdvOptButton );
416
        setTabOrder( AdvOptButton, OKButton );
417
        setTabOrder( OKButton, OKButton_2 );
261 Franz 418
//      setTabOrder( OKButton_2, PrintDest );
260 Franz 419
        PrintDest->setFocus();
248 Franz 420
        // signals and slots connections
451 tsoots 421
        connect( OKButton, SIGNAL( clicked() ), this, SLOT( okButtonClicked() ) );
248 Franz 422
        connect( OKButton_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
423
        connect( PrintDest, SIGNAL(activated(const QString&)), this, SLOT(SelPrinter(const QString&)));
424
        connect( RadioButton1, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
307 Franz 425
        connect( CurrentPage, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
248 Franz 426
        connect( NormalP, SIGNAL(toggled(bool)), this, SLOT(SelMode(bool)));
427
        connect( ToolButton1, SIGNAL(clicked()), this, SLOT(SelFile()));
428
        connect( OtherCom, SIGNAL(clicked()), this, SLOT(SelComm()));
429
        connect( AdvOptButton, SIGNAL( clicked() ), this, SLOT( SetAdvOptions() ) );
3 paul 430
#ifdef HAVE_CUPS
248 Franz 431
        connect( OptButton, SIGNAL( clicked() ), this, SLOT( SetOptions() ) );
3 paul 432
#endif
451 tsoots 433
        setStoredValues();
3 paul 434
}
435
 
436
void Druck::SetAdvOptions()
437
{
1860 fschmid 438
        AdvOptions* dia = new AdvOptions(this, MirrorH, MirrorV, ICCinUse, PSLevel, DoGCR, doDev);
3 paul 439
        if (dia->exec())
161 Franz 440
        {
248 Franz 441
                MirrorH = dia->MirrorH->isChecked();
442
                MirrorV = dia->MirrorV->isChecked();
344 Franz 443
                DoGCR = dia->GcR->isChecked();
1860 fschmid 444
                doDev = dia->devPar->isChecked();
3 paul 445
#ifdef HAVE_CMS
446
                if (CMSuse)
451 tsoots 447
                {
3 paul 448
                        ICCinUse = dia->UseICC->isChecked();
451 tsoots 449
                        prefs->set("ICCinUse", ICCinUse);
450
                }
3 paul 451
#endif
307 Franz 452
                if (dia->PS1->isChecked())
453
                        PSLevel = 1;
454
                if (dia->PS2->isChecked())
455
                        PSLevel = 2;
456
                if (dia->PS3->isChecked())
457
                        PSLevel = 3;
451 tsoots 458
                prefs->set("MirrorH", MirrorH);
459
                prefs->set("MirrorV", MirrorV);
460
                prefs->set("DoGCR", DoGCR);
461
                prefs->set("PSLevel", PSLevel);
1860 fschmid 462
                prefs->set("doDev", doDev);
161 Franz 463
        }
3 paul 464
        delete dia;
465
}
466
 
467
void Druck::SetOptions()
468
{
469
        PrinterOpts = "";
470
        CupsOptions* dia = new CupsOptions(this, Geraet);
471
        if (dia->exec())
161 Franz 472
        {
3 paul 473
                struct CupsOptions::OpData daten;
474
                QMap<QString,CupsOptions::OpData>::Iterator it;
475
                for (it = dia->KeyToText.begin(); it != dia->KeyToText.end(); ++it)
161 Franz 476
                {
477
                        if (dia->KeyToDefault[it.key()] != dia->FlagsOpt.at(it.data().Cnum)->currentText())
3 paul 478
                        {
479
                                if (it.data().KeyW == "mirror")
480
                                        PrinterOpts += " -o mirror";
481
                                else
161 Franz 482
                                {
483
                                        if (it.data().KeyW == "page-set")
3 paul 484
                                        {
485
                                                PrinterOpts += " -o "+it.data().KeyW+"=";
486
                                                if (dia->FlagsOpt.at(it.data().Cnum)->currentItem() == 1)
487
                                                        PrinterOpts += "even";
488
                                                else
489
                                                        PrinterOpts += "odd";
161 Franz 490
                                        }
3 paul 491
                                        else
161 Franz 492
                                        {
493
                                                if (it.data().KeyW == "number-up")
3 paul 494
                                                {
495
                                                        PrinterOpts += " -o "+it.data().KeyW+"=";
496
                                                        switch (dia->FlagsOpt.at(it.data().Cnum)->currentItem())
161 Franz 497
                                                        {
248 Franz 498
                                                        case 1:
499
                                                                PrinterOpts += "2";
500
                                                                break;
501
                                                        case 2:
502
                                                                PrinterOpts += "4";
503
                                                                break;
504
                                                        case 3:
505
                                                                PrinterOpts += "6";
506
                                                                break;
507
                                                        case 4:
508
                                                                PrinterOpts += "9";
509
                                                                break;
510
                                                        case 5:
511
                                                                PrinterOpts += "16";
512
                                                                break;
3 paul 513
                                                        }
161 Franz 514
                                                }
3 paul 515
                                                else
161 Franz 516
                                                {
55 Franz 517
                                                        if (it.data().KeyW == "orientation")
518
                                                                PrinterOpts += " -o landscape";
519
                                                        else
248 Franz 520
                                                                PrinterOpts += " -o " +
521
                                                                               it.data().KeyW+"="+dia->FlagsOpt.at(it.data().Cnum)->currentText();
3 paul 522
                                                }
523
                                        }
524
                                }
161 Franz 525
                        }
248 Franz 526
                }
161 Franz 527
        }
3 paul 528
        delete dia;
529
}
530
 
531
void Druck::SelComm()
532
{
223 Franz 533
        /* PFJ - 29.02.04 - removed OthText, Command and PrintDest from switch */
534
        bool test = OtherCom->isChecked() ? true : false;
535
        OthText->setEnabled(test);
536
        Command->setEnabled(test);
537
        PrintDest->setEnabled(!test);
3 paul 538
        if (OtherCom->isChecked())
161 Franz 539
        {
248 Franz 540
                DateiT->setEnabled(false);
541
                LineEdit1->setEnabled(false);
542
                ToolButton1->setEnabled(false);
543
                ToFile = false;
3 paul 544
#ifdef HAVE_CUPS
545
                OptButton->setEnabled(false);
546
#endif
248 Franz 547
 
548
        }
3 paul 549
        else
161 Franz 550
        {
3 paul 551
                SelPrinter(PrintDest->currentText());
552
#ifdef HAVE_CUPS
553
                if (Geraet != tr("File"))
554
                        OptButton->setEnabled(true);
555
#endif
248 Franz 556
 
161 Franz 557
        }
3 paul 558
}
559
 
560
void Druck::SelPrinter(const QString& prn)
561
{
80 Franz 562
        bool setter = prn == tr("File") ? true : false;
161 Franz 563
        DateiT->setEnabled(setter);
564
        LineEdit1->setEnabled(setter);
565
        ToolButton1->setEnabled(setter);
566
        ToFile = setter;
3 paul 567
#ifdef HAVE_CUPS
85 Franz 568
        OptButton->setEnabled(!setter);
3 paul 569
#endif
570
        Geraet = prn;
571
}
572
 
573
void Druck::SelRange(bool e)
574
{
328 Franz 575
        PageNr->setEnabled(!e);
3 paul 576
}
577
 
578
void Druck::SelMode(bool e)
579
{
85 Franz 580
        SepArt->setEnabled( !e );
161 Franz 581
        ToSeparation = !e;
3 paul 582
}
583
 
584
void Druck::SelFile()
585
{
415 Franz 586
        PrefsContext* dirs = prefsFile->getContext("dirs");
587
        QString wdir = dirs->get("druck", ".");
588
        CustomFDialog dia(this, wdir, tr("Save as"), tr("Postscript-Files (*.ps);;All Files (*)"), false, false);
3 paul 589
        if (LineEdit1->text() != "")
590
                dia.setSelection(LineEdit1->text());
591
        if (dia.exec() == QDialog::Accepted)
415 Franz 592
        {
593
                QString selectedFile = dia.selectedFile();
594
                dirs->set("druck", selectedFile.left(selectedFile.findRev("/")));
595
                LineEdit1->setText(selectedFile);
596
        }
3 paul 597
}
598
 
307 Franz 599
void Druck::setMinMax(int min, int max, int cur)
3 paul 600
{
329 Franz 601
        QString tmp, tmp2;
348 Franz 602
        CurrentPage->setText(tr( "Print Current Pa&ge" )+" ("+tmp.setNum(cur)+")");
329 Franz 603
        PageNr->setText(tmp.setNum(min)+"-"+tmp2.setNum(max));
3 paul 604
}
605
 
451 tsoots 606
void Druck::okButtonClicked()
607
{
608
        prefs->set("PrintDest", PrintDest->currentItem());
609
        prefs->set("OtherCom", OtherCom->isChecked());
610
        prefs->set("PrintAll", RadioButton1->isChecked());
611
        prefs->set("CurrentPage", CurrentPage->isChecked());
612
        prefs->set("PrintRange", RadioButton2->isChecked());
613
        prefs->set("PageNr", PageNr->text());
614
        prefs->set("Copies", Copies->value());
615
        prefs->set("NormalP", NormalP->isChecked());
616
        prefs->set("PrintSep", PrintSep->isChecked());
617
        prefs->set("PrintGray", PrintGray->isChecked());
618
        prefs->set("PrintGray2", PrintGray2->isChecked());
619
        prefs->set("SepArt", SepArt->currentItem());
620
        accept();      
621
}
622
 
623
void Druck::setStoredValues()
624
{
625
        int selectedDest = prefs->getInt("PrintDest", 0);
626
        if ((selectedDest > -1) && (selectedDest < PrintDest->count()))
627
        {
628
                PrintDest->setCurrentItem(selectedDest);
629
                if (PrintDest->currentText() == tr("File"))
630
                        SelPrinter(tr("File"));
631
        }
632
        OtherCom->setChecked(prefs->getBool("OtherCom", false));
633
        if (OtherCom->isChecked())
634
                SelComm();
635
        RadioButton1->setChecked(prefs->getBool("PrintAll", true));
636
        CurrentPage->setChecked(prefs->getBool("CurrentPage", false));
637
        RadioButton2->setChecked(prefs->getBool("PrintRange", false));
638
        PageNr->setText(prefs->get("PageNr", "1-1"));
639
        Copies->setValue(prefs->getInt("Copies", 1));
640
        NormalP->setChecked(prefs->getBool("NormalP", true));
641
        PrintSep->setChecked(prefs->getBool("PrintSep", false));
642
        PrintGray->setChecked(prefs->getBool("PrintGray", true));
643
        PrintGray2->setChecked(prefs->getBool("PrintGray2", false));
644
        int selectedSep = prefs->getInt("SepArt", 0);
645
        if ((selectedSep > -1) && (selectedSep < 5))
646
                SepArt->setCurrentItem(selectedSep);
647
}
648
 
3 paul 649
QString Druck::printerName()
650
{
651
        return Geraet;
652
}
653
 
654
QString Druck::outputFileName()
655
{
656
        return LineEdit1->text();
657
}
658
 
659
bool Druck::outputToFile()
660
{
661
        return ToFile;
662
}
663
 
664
int Druck::numCopies()
665
{
666
        return Copies->value();
667
}
668
 
669
bool Druck::outputSeparations()
670
{
671
        return ToSeparation;
672
}
673
 
674
QString Druck::separationName()
675
{
676
        return SepArt->currentText();
677
}
678
 
679
bool Druck::color()
680
{
681
        return PrintGray->isChecked();
682
}