Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
4430 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
10863 cbradney 7
#include "printdialog.h"
128 Franz 8
 
9907 fschmid 9
#include <QDir>
10
#include <QMap>
11
#include <QStringList>
12
#include <QByteArray>
13
 
2688 craig 14
#include "scconfig.h"
7117 jghali 15
#include "scpaths.h"
5880 jghali 16
#include "scribusdoc.h"
10835 cbradney 17
#include "ui/createrange.h"
2952 cbradney 18
#include "commonstrings.h"
2856 cbradney 19
#include "prefsmanager.h"
3252 craig 20
#include "prefscontext.h"
415 Franz 21
#include "prefsfile.h"
3 paul 22
#include "customfdialog.h"
10947 jghali 23
#include "cupsoptions.h"        
24
#if defined(_WIN32)
9907 fschmid 25
        #include <windows.h>
26
        #include <winspool.h>
10947 jghali 27
#else
28
        #include <cups/cups.h>
3 paul 29
#endif
10213 fschmid 30
#include "util_printer.h"
10200 cbradney 31
#include "util_icon.h"
10648 fschmid 32
#include "util.h"
6954 fschmid 33
#include "units.h"
6663 cbradney 34
#include "usertaskstructs.h"
9907 fschmid 35
#include "scrspinbox.h"
6663 cbradney 36
 
3234 fschmid 37
extern bool previewDinUse;
3 paul 38
 
10863 cbradney 39
PrintDialog::PrintDialog( QWidget* parent, ScribusDoc* doc, QString PDatei, QString PDev, QString PCom, QByteArray& PSettings, bool gcr, QStringList spots)
9907 fschmid 40
                : QDialog( parent )
3 paul 41
{
12243 fschmid 42
        setupUi(this);
9907 fschmid 43
        setModal(true);
6119 tsoots 44
        cdia = 0;
5880 jghali 45
        m_doc = doc;
8602 cbradney 46
        unit = doc->unitIndex();
6954 fschmid 47
        unitRatio = unitGetRatioFromIndex(doc->unitIndex());
2856 cbradney 48
        prefs = PrefsManager::instance()->prefsFile->getContext("print_options");
4361 cbradney 49
        DevMode = PSettings;
161 Franz 50
        PrinterOpts = "";
9907 fschmid 51
        setWindowIcon(QIcon(loadIcon("AppIcon.png")));
52
        pageNrButton->setIcon(QIcon(loadIcon("ellipsis.png")));
10947 jghali 53
        printEngines->addItem( CommonStrings::trPostScript1 );
54
        printEngines->addItem( CommonStrings::trPostScript2 );
55
        printEngines->addItem( CommonStrings::trPostScript3 );
12243 fschmid 56
        markOffset->setNewUnit(unit);
57
        markOffset->setMinimum(0);
58
        markOffset->setMaximum(3000*unitRatio);
59
        BleedBottom->setNewUnit(unit);
60
        BleedBottom->setMinimum(0);
61
        BleedBottom->setMaximum(3000*unitRatio);
62
        BleedLeft->setNewUnit(unit);
63
        BleedLeft->setMinimum(0);
64
        BleedLeft->setMaximum(3000*unitRatio);
65
        BleedRight->setNewUnit(unit);
66
        BleedRight->setMinimum(0);
67
        BleedRight->setMaximum(3000*unitRatio);
68
        BleedTop->setNewUnit(unit);
69
        BleedTop->setMinimum(0);
70
        BleedTop->setMaximum(3000*unitRatio);
3234 fschmid 71
        previewButton->setEnabled(!previewDinUse);
10947 jghali 72
        // Fill printer list
73
        QString Pcap;
74
        QString printerName;
75
        QStringList printerNames = PrinterUtil::getPrinterNames();
76
        int numPrinters = printerNames.count();
77
        for( int i = 0; i < numPrinters; i++)
78
        {
79
                printerName = printerNames[i];
80
                PrintDest->addItem(printerName);
81
                if( printerName == PDev )
82
                {
83
                        PrintDest->setCurrentIndex(PrintDest->count()-1);
84
                        prefs->set("CurrentPrn", PrintDest->currentText());
85
                }
86
        }
87
 
88
        PrintDest->addItem( tr("File"));
89
 
90
        // Fill Separation list
91
        QString sep[] =
92
            {
93
                tr("All"), tr("Cyan"), tr("Magenta"), tr("Yellow"),
94
                tr("Black")
95
            };
96
        size_t sepArray = sizeof(sep) / sizeof(*sep);
97
        for (uint prop = 0; prop < sepArray; ++prop)
98
                SepArt->addItem(sep[prop]);
99
        SepArt->addItems(spots);
100
 
101
        if (m_doc->currentPageLayout != 0)
102
        {
103
                BleedTxt3->setText( tr( "Inside:" ) );
104
                BleedTxt4->setText( tr( "Outside:" ) );
105
        }
106
 
248 Franz 107
        if ((PDev== tr("File")) || (PrintDest->count() == 1))
108
        {
9907 fschmid 109
                PrintDest->setCurrentIndex(PrintDest->count()-1);
4361 cbradney 110
                prefs->set("CurrentPrn", PrintDest->currentText());
248 Franz 111
                DateiT->setEnabled(true);
112
                LineEdit1->setEnabled(true);
113
                ToolButton1->setEnabled(true);
114
        }
4361 cbradney 115
 
248 Franz 116
        setMaximumSize(sizeHint());
260 Franz 117
        PrintDest->setFocus();
248 Franz 118
        // signals and slots connections
451 tsoots 119
        connect( OKButton, SIGNAL( clicked() ), this, SLOT( okButtonClicked() ) );
248 Franz 120
        connect( OKButton_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
121
        connect( PrintDest, SIGNAL(activated(const QString&)), this, SLOT(SelPrinter(const QString&)));
10947 jghali 122
        connect( printEngines, SIGNAL(activated(const QString&)), this, SLOT(SelEngine(const QString&)));
248 Franz 123
        connect( RadioButton1, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
307 Franz 124
        connect( CurrentPage, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
6663 cbradney 125
        connect( pageNrButton, SIGNAL(clicked()), this, SLOT(createPageNumberRange()));
3234 fschmid 126
        connect( PrintSep, SIGNAL(activated(int)), this, SLOT(SelMode(int)));
248 Franz 127
        connect( ToolButton1, SIGNAL(clicked()), this, SLOT(SelFile()));
128
        connect( OtherCom, SIGNAL(clicked()), this, SLOT(SelComm()));
6690 fschmid 129
        connect( previewButton, SIGNAL(clicked()), this, SLOT(previewButtonClicked()));
10947 jghali 130
        connect( docBleeds, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
248 Franz 131
        connect( OptButton, SIGNAL( clicked() ), this, SLOT( SetOptions() ) );
4361 cbradney 132
 
3234 fschmid 133
        setStoredValues(gcr);
4506 cbradney 134
#if defined(_WIN32)
11987 jghali 135
        if (!outputToFile())
4506 cbradney 136
                PrinterUtil::initDeviceSettings( PrintDest->currentText(), DevMode );
137
#endif
11987 jghali 138
 
139
        printEngineMap = PrinterUtil::getPrintEngineSupport(PrintDest->currentText(), outputToFile());
10947 jghali 140
        refreshPrintEngineBox();
141
 
142
        bool ps1Supported = printEngineMap.contains(CommonStrings::trPostScript1);
143
        bool ps2Supported = printEngineMap.contains(CommonStrings::trPostScript2);
144
        bool ps3Supported = printEngineMap.contains(CommonStrings::trPostScript3);
145
        bool psSupported  = (ps1Supported || ps2Supported || ps3Supported);
11987 jghali 146
        printEngines->setEnabled(psSupported || outputToFile());
10947 jghali 147
        UseICC->setEnabled(m_doc->HasCMS && psSupported);
3 paul 148
}
149
 
10863 cbradney 150
PrintDialog::~PrintDialog()
6663 cbradney 151
{
9907 fschmid 152
#ifdef HAVE_CUPS
6663 cbradney 153
        delete cdia;
9907 fschmid 154
#endif
6663 cbradney 155
        cdia = 0;
156
}
157
 
10863 cbradney 158
void PrintDialog::SetOptions()
3 paul 159
{
4361 cbradney 160
#ifdef HAVE_CUPS
3 paul 161
        PrinterOpts = "";
6119 tsoots 162
        if (!cdia)
11987 jghali 163
                cdia = new CupsOptions(this, PrintDest->currentText());
6119 tsoots 164
        if (!cdia->exec())
161 Franz 165
        {
6119 tsoots 166
                delete cdia; // if options was canceled delete dia 
167
                cdia = 0;    // so that getoptions() in the okButtonClicked() will get 
168
                             // the default values from the last succesful run
169
        }
170
 
171
#elif defined(_WIN32)
172
        bool done;
8501 cbradney 173
        Qt::HANDLE handle = NULL;
6119 tsoots 174
        // Retrieve the selected printer
10304 jghali 175
        QString printerS = PrintDest->currentText();
6119 tsoots 176
        // Get a printer handle
10304 jghali 177
        done = OpenPrinterW( (LPWSTR) printerS.utf16(), &handle, NULL );
6119 tsoots 178
        if(!done)
179
                return;
180
        // Merge stored settings, prompt user and return user settings
10304 jghali 181
        DocumentPropertiesW( winId(), handle, (LPWSTR) printerS.utf16(), (DEVMODEW*) DevMode.data(), (DEVMODEW*) DevMode.data(),
6119 tsoots 182
                                                DM_IN_BUFFER | DM_IN_PROMPT | DM_OUT_BUFFER);
183
        // Free the printer handle
184
        ClosePrinter( handle );
185
#endif
186
}
187
 
10863 cbradney 188
void PrintDialog::getOptions()
6119 tsoots 189
{
190
#ifdef HAVE_CUPS
6121 tsoots 191
        PrinterOpts = "";
6119 tsoots 192
        if (!cdia)
11987 jghali 193
                cdia = new CupsOptions(this, PrintDest->currentText());
6119 tsoots 194
        struct CupsOptions::OpData daten;
195
        QMap<QString,CupsOptions::OpData>::Iterator it;
196
        for (it = cdia->KeyToText.begin(); it != cdia->KeyToText.end(); ++it)
197
        {
10427 cbradney 198
                if (cdia->KeyToDefault[it.key()] != cdia->FlagsOpt.at(it.value().Cnum)->currentText())
161 Franz 199
                {
10427 cbradney 200
                        if (it.value().KeyW == "mirror")
6119 tsoots 201
                                PrinterOpts += " -o mirror";
202
                        else
3 paul 203
                        {
10427 cbradney 204
                                if (it.value().KeyW == "page-set")
6119 tsoots 205
                                {
10427 cbradney 206
                                        PrinterOpts += " -o "+it.value().KeyW+"=";
10502 fschmid 207
                                        if (cdia->FlagsOpt.at(it.value().Cnum)->currentIndex() == 1)
6119 tsoots 208
                                                PrinterOpts += "even";
209
                                        else
210
                                                PrinterOpts += "odd";
211
                                }
3 paul 212
                                else
161 Franz 213
                                {
10427 cbradney 214
                                        if (it.value().KeyW == "number-up")
3 paul 215
                                        {
10427 cbradney 216
                                                PrinterOpts += " -o "+it.value().KeyW+"=";
10502 fschmid 217
                                                switch (cdia->FlagsOpt.at(it.value().Cnum)->currentIndex())
3 paul 218
                                                {
248 Franz 219
                                                        case 1:
220
                                                                PrinterOpts += "2";
221
                                                                break;
222
                                                        case 2:
223
                                                                PrinterOpts += "4";
224
                                                                break;
225
                                                        case 3:
226
                                                                PrinterOpts += "6";
227
                                                                break;
228
                                                        case 4:
229
                                                                PrinterOpts += "9";
230
                                                                break;
231
                                                        case 5:
232
                                                                PrinterOpts += "16";
233
                                                                break;
161 Franz 234
                                                }
6119 tsoots 235
                                        }
236
                                        else
237
                                        {
10427 cbradney 238
                                                if (it.value().KeyW == "orientation")
6119 tsoots 239
                                                        PrinterOpts += " -o landscape";
3 paul 240
                                                else
6119 tsoots 241
                                                        PrinterOpts += " -o " +
10427 cbradney 242
                                                                        it.value().KeyW+"="+cdia->FlagsOpt.at(it.value().Cnum)->currentText();
3 paul 243
                                        }
244
                                }
161 Franz 245
                        }
248 Franz 246
                }
161 Franz 247
        }
4361 cbradney 248
#endif
3 paul 249
}
250
 
10863 cbradney 251
void PrintDialog::SelComm()
3 paul 252
{
223 Franz 253
        /* PFJ - 29.02.04 - removed OthText, Command and PrintDest from switch */
254
        bool test = OtherCom->isChecked() ? true : false;
255
        OthText->setEnabled(test);
256
        Command->setEnabled(test);
257
        PrintDest->setEnabled(!test);
3 paul 258
        if (OtherCom->isChecked())
161 Franz 259
        {
248 Franz 260
                DateiT->setEnabled(false);
261
                LineEdit1->setEnabled(false);
262
                ToolButton1->setEnabled(false);
3 paul 263
                OptButton->setEnabled(false);
248 Franz 264
        }
3 paul 265
        else
161 Franz 266
        {
3 paul 267
                SelPrinter(PrintDest->currentText());
11987 jghali 268
                if (PrintDest->currentText() != tr("File"))
3 paul 269
                        OptButton->setEnabled(true);
161 Franz 270
        }
3 paul 271
}
272
 
10947 jghali 273
void PrintDialog::SelEngine(const QString& eng)
274
{
275
        prefs->set("CurrentPrnEngine", printEngineMap[printEngines->currentText()]);
11987 jghali 276
        bool psSupported = outputToFile();
277
        psSupported |= (eng == CommonStrings::trPostScript1);
278
        psSupported |= (eng == CommonStrings::trPostScript2);
279
        psSupported |= (eng == CommonStrings::trPostScript3);
280
        if (psSupported)
281
        {
282
                PrintSep->setEnabled( true );
283
                UseICC->setEnabled( m_doc->HasCMS );
284
        }
285
        else
286
        {
287
                setCurrentComboItem(PrintSep, tr("Print Normal"));
288
                PrintSep->setEnabled( false );
289
                setCurrentComboItem(SepArt, tr("All"));
290
                SepArt->setEnabled( false );
291
                UseICC->setEnabled( false );
292
                UseICC->setChecked( false );
293
        }
10947 jghali 294
}
295
 
10863 cbradney 296
void PrintDialog::SelPrinter(const QString& prn)
3 paul 297
{
10947 jghali 298
        bool toFile = prn == tr("File") ? true : false;
299
        DateiT->setEnabled(toFile);
300
        LineEdit1->setEnabled(toFile);
301
        ToolButton1->setEnabled(toFile);
302
        OptButton->setEnabled(!toFile);
4506 cbradney 303
#if defined(_WIN32)
11987 jghali 304
        if (!toFile)
10947 jghali 305
        {
4506 cbradney 306
                if( !PrinterUtil::getDefaultSettings(PrintDest->currentText(), DevMode) )
10723 jghali 307
                        qWarning( tr("Failed to retrieve printer settings").toAscii().data() );
10947 jghali 308
        }
4506 cbradney 309
#endif
10947 jghali 310
 
311
        // Get page description language supported by the selected printer
11987 jghali 312
        printEngineMap = PrinterUtil::getPrintEngineSupport(prn, toFile);
10947 jghali 313
        refreshPrintEngineBox();
314
 
315
        prefs->set("CurrentPrn", prn);
316
        prefs->set("CurrentPrnEngine", printEngineMap[printEngines->currentText()]);
317
 
318
        bool ps1Supported = printEngineMap.contains(CommonStrings::trPostScript1);
319
        bool ps2Supported = printEngineMap.contains(CommonStrings::trPostScript2);
320
        bool ps3Supported = printEngineMap.contains(CommonStrings::trPostScript3);
321
        bool psSupported  = (ps1Supported || ps2Supported || ps3Supported);
11987 jghali 322
        if (psSupported || toFile)
4361 cbradney 323
        {
10947 jghali 324
                printEngines->setEnabled( true );
4361 cbradney 325
                PrintSep->setEnabled( true );
10947 jghali 326
                UseICC->setEnabled( m_doc->HasCMS );
4361 cbradney 327
        }
328
        else
329
        {
10947 jghali 330
                printEngines->setEnabled( false );
10648 fschmid 331
                setCurrentComboItem(PrintSep, tr("Print Normal"));
4361 cbradney 332
                PrintSep->setEnabled( false );
10648 fschmid 333
                setCurrentComboItem(SepArt, tr("All"));
4361 cbradney 334
                SepArt->setEnabled( false );
10947 jghali 335
                UseICC->setEnabled( false );
336
                UseICC->setChecked( false );
4361 cbradney 337
        }
3 paul 338
}
339
 
10863 cbradney 340
void PrintDialog::SelRange(bool e)
3 paul 341
{
6663 cbradney 342
        pageNr->setEnabled(!e);
343
        pageNrButton->setEnabled(!e);
3 paul 344
}
345
 
10863 cbradney 346
void PrintDialog::SelMode(int e)
3 paul 347
{
11987 jghali 348
        SepArt->setEnabled( (e != 0) );
3 paul 349
}
350
 
10863 cbradney 351
void PrintDialog::SelFile()
3 paul 352
{
2856 cbradney 353
        PrefsContext* dirs = PrefsManager::instance()->prefsFile->getContext("dirs");
10863 cbradney 354
        QString wdir = dirs->get("printdir", ".");
12243 fschmid 355
        CustomFDialog dia(this, wdir, tr("Save as"), tr("PostScript Files (*.ps);;All Files (*)"), fdNone | fdHidePreviewCheckBox);
2877 cbradney 356
        if (!LineEdit1->text().isEmpty())
3 paul 357
                dia.setSelection(LineEdit1->text());
358
        if (dia.exec() == QDialog::Accepted)
415 Franz 359
        {
360
                QString selectedFile = dia.selectedFile();
10863 cbradney 361
                dirs->set("printdir", selectedFile.left(selectedFile.lastIndexOf("/")));
7117 jghali 362
                LineEdit1->setText( QDir::convertSeparators(selectedFile) );
415 Franz 363
        }
3 paul 364
}
365
 
10863 cbradney 366
void PrintDialog::setMinMax(int min, int max, int cur)
3 paul 367
{
329 Franz 368
        QString tmp, tmp2;
2397 cbradney 369
        CurrentPage->setText( tr( "Print Current Pa&ge" )+" ("+tmp.setNum(cur)+")");
6663 cbradney 370
        pageNr->setText(tmp.setNum(min)+"-"+tmp2.setNum(max));
3 paul 371
}
372
 
10863 cbradney 373
void PrintDialog::storeValues()
451 tsoots 374
{
6119 tsoots 375
        getOptions(); // options were not set get last options with this hack
7104 fschmid 376
 
377
        m_doc->Print_Options.printer = PrintDest->currentText();
11639 jghali 378
        m_doc->Print_Options.filename = QDir::fromNativeSeparators(LineEdit1->text());
11987 jghali 379
        m_doc->Print_Options.toFile = outputToFile();
7104 fschmid 380
        m_doc->Print_Options.copies = numCopies();
381
        m_doc->Print_Options.outputSeparations = outputSeparations();
382
        m_doc->Print_Options.separationName = separationName();
383
        m_doc->Print_Options.allSeparations = allSeparations();
384
        if (m_doc->Print_Options.outputSeparations)
385
                m_doc->Print_Options.useSpotColors = true;
386
        else
387
                m_doc->Print_Options.useSpotColors = doSpot();
388
        m_doc->Print_Options.useColor = color();
10947 jghali 389
        m_doc->Print_Options.mirrorH  = mirrorHorizontal();
390
        m_doc->Print_Options.mirrorV  = mirrorVertical();
391
        m_doc->Print_Options.useICC   = ICCinUse();
392
        m_doc->Print_Options.doClip   = doClip();
393
        m_doc->Print_Options.doGCR    = doGCR();
394
        m_doc->Print_Options.prnEngine= printEngine();
7104 fschmid 395
        m_doc->Print_Options.setDevParam = doDev();
396
        m_doc->Print_Options.doOverprint = doOverprint();
12247 jghali 397
        m_doc->Print_Options.useDocBleeds  = docBleeds->isChecked();
10947 jghali 398
        m_doc->Print_Options.bleeds.Top    = BleedTop->value() / m_doc->unitRatio();
399
        m_doc->Print_Options.bleeds.Left   = BleedLeft->value() / m_doc->unitRatio();
400
        m_doc->Print_Options.bleeds.Right  = BleedRight->value() / m_doc->unitRatio();
7225 cbradney 401
        m_doc->Print_Options.bleeds.Bottom = BleedBottom->value() / m_doc->unitRatio();
7104 fschmid 402
        m_doc->Print_Options.markOffset = markOffset->value() / m_doc->unitRatio();
10947 jghali 403
        m_doc->Print_Options.cropMarks  = cropMarks->isChecked();
7104 fschmid 404
        m_doc->Print_Options.bleedMarks = bleedMarks->isChecked();
405
        m_doc->Print_Options.registrationMarks = registrationMarks->isChecked();
406
        m_doc->Print_Options.colorMarks = colorMarks->isChecked();
407
        if (OtherCom->isChecked())
408
        {
409
                m_doc->Print_Options.printerCommand = Command->text();
410
                m_doc->Print_Options.useAltPrintCommand = true;
411
        }
412
        else
413
                m_doc->Print_Options.useAltPrintCommand = false;
414
#ifdef HAVE_CUPS
10967 jghali 415
        m_doc->Print_Options.printerOptions = PrinterOpts;
7104 fschmid 416
#else
10967 jghali 417
        m_doc->Print_Options.printerOptions = QString("");
7104 fschmid 418
#endif
10967 jghali 419
        m_doc->Print_Options.devMode = DevMode;
6690 fschmid 420
}
421
 
10863 cbradney 422
void PrintDialog::okButtonClicked()
6690 fschmid 423
{
424
        storeValues();
3234 fschmid 425
        accept();
451 tsoots 426
}
427
 
10863 cbradney 428
void PrintDialog::previewButtonClicked()
6690 fschmid 429
{
430
        storeValues();
431
        emit doPreview();
432
}
433
 
12253 jghali 434
void PrintDialog::getDefaultPrintOptions(PrintOptions& options, bool gcr)
435
{
436
        QStringList spots;
437
        options.firstUse = true;
438
        options.printer  = prefs->getInt("PrintDest", 0);
439
        options.useAltPrintCommand = prefs->getBool("OtherCom", false);
440
        options.printerCommand = prefs->get("Command", "");
441
        options.outputSeparations = prefs->getInt("Separations", 0);
442
        options.useColor = (prefs->getInt("PrintColor", 0) == 0);
443
        spots << tr("All") << tr("Cyan") << tr("Magenta") << tr("Yellow") << tr("Black");
444
        int selectedSep  = prefs->getInt("SepArt", 0);
445
        if ((selectedSep < 0) || (selectedSep > 4))
446
                selectedSep = 0;
447
        options.separationName = spots.at(selectedSep);
448
        options.prnEngine = (PrintEngine) prefs->getInt("PSLevel", PostScript3);
449
        options.mirrorH = prefs->getBool("MirrorH", false);
450
        options.mirrorV = prefs->getBool("MirrorV", false);
451
        options.setDevParam = prefs->getBool("doDev", false);
452
        options.doGCR   = prefs->getBool("DoGCR", gcr);
453
        options.doClip  = prefs->getBool("Clip", false);
454
        options.useSpotColors = prefs->getBool("doSpot", true);
455
        options.doOverprint = prefs->getBool("doOverprint", false);
456
        options.useICC  = m_doc->HasCMS ? prefs->getBool("ICCinUse", false) : false;
457
        options.useDocBleeds  = true;
458
        options.bleeds.Top    = m_doc->bleeds.Top;
459
        options.bleeds.Bottom = m_doc->bleeds.Bottom;
460
        options.bleeds.Right  = m_doc->bleeds.Right;
461
        options.bleeds.Left   = m_doc->bleeds.Left;
462
        options.markOffset = prefs->getDouble("markOffset",0.0);
463
        options.cropMarks  = prefs->getBool("cropMarks", false);
464
        options.bleedMarks = prefs->getBool("bleedMarks", false);
465
        options.registrationMarks = prefs->getBool("registrationMarks", false);
466
        options.colorMarks = prefs->getBool("colorMarks", false);
467
}
468
 
10863 cbradney 469
void PrintDialog::setStoredValues(bool gcr)
451 tsoots 470
{
7104 fschmid 471
        if (m_doc->Print_Options.firstUse)
12253 jghali 472
                getDefaultPrintOptions(m_doc->Print_Options, gcr);
473
 
474
        int selectedDest = PrintDest->findText(m_doc->Print_Options.printer);
475
        if ((selectedDest > -1) && (selectedDest < PrintDest->count()))
451 tsoots 476
        {
12253 jghali 477
                PrintDest->setCurrentIndex(selectedDest);
478
                prefs->set("CurrentPrn", PrintDest->currentText());
479
                SelPrinter(PrintDest->currentText());
451 tsoots 480
        }
12253 jghali 481
        OtherCom->setChecked(m_doc->Print_Options.useAltPrintCommand);
482
        if (OtherCom->isChecked())
483
        {
484
                SelComm();
485
                Command->setText(m_doc->Print_Options.printerCommand);
486
        }
487
        RadioButton1->setChecked(prefs->getBool("PrintAll", true));
488
        CurrentPage->setChecked(prefs->getBool("CurrentPage", false));
489
        bool printRangeChecked=prefs->getBool("PrintRange", false);
490
        RadioButton2->setChecked(printRangeChecked);
491
        pageNr->setEnabled(printRangeChecked);
492
        pageNr->setText(prefs->get("PageNr", "1-1"));
493
        Copies->setValue(1);
494
        PrintSep->setCurrentIndex(m_doc->Print_Options.outputSeparations);
495
        colorType->setCurrentIndex(m_doc->Print_Options.useColor ? 0 : 1);
496
        ColorList usedSpots;
497
        m_doc->getUsedColors(usedSpots, true);
498
        QStringList spots = usedSpots.keys();
499
        spots.prepend( tr("Black"));
500
        spots.prepend( tr("Yellow"));
501
        spots.prepend( tr("Magenta"));
502
        spots.prepend( tr("Cyan"));
503
        spots.prepend( tr("All"));
504
        int selectedSep = spots.indexOf(m_doc->Print_Options.separationName);
505
        if ((selectedSep > -1) && (selectedSep < SepArt->count()))
506
                SepArt->setCurrentIndex(selectedSep);
507
        if (PrintSep->currentIndex() == 1)
508
                SepArt->setEnabled(true);
509
        setPrintEngine(m_doc->Print_Options.prnEngine);
510
        MirrorHor->setChecked(m_doc->Print_Options.mirrorH);
511
        MirrorVert->setChecked(m_doc->Print_Options.mirrorV);
512
        devPar->setChecked(m_doc->Print_Options.setDevParam);
513
        GcR->setChecked(m_doc->Print_Options.doGCR);
514
        ClipMarg->setChecked(m_doc->Print_Options.doClip);
515
        spotColors->setChecked(!m_doc->Print_Options.useSpotColors);
516
        overprintMode->setChecked(m_doc->Print_Options.doOverprint);
517
        bool iccInUse  = m_doc->HasCMS ? m_doc->Print_Options.useICC : false;
518
        bool psPrinter = PrinterUtil::isPostscriptPrinter(PrintDest->currentText()) || outputToFile();
519
        UseICC->setChecked( psPrinter ? iccInUse : false );
520
        UseICC->setEnabled( psPrinter );
521
        docBleeds->setChecked(m_doc->Print_Options.useDocBleeds);
522
        if (docBleeds->isChecked())
523
        {
524
                BleedTop->setValue(m_doc->bleeds.Top*unitRatio);
525
                BleedBottom->setValue(m_doc->bleeds.Bottom*unitRatio);
526
                BleedRight->setValue(m_doc->bleeds.Right*unitRatio);
527
                BleedLeft->setValue(m_doc->bleeds.Left*unitRatio);
528
        }
7104 fschmid 529
        else
6688 fschmid 530
        {
12253 jghali 531
                BleedTop->setValue(m_doc->Print_Options.bleeds.Top*unitRatio);
532
                BleedBottom->setValue(m_doc->Print_Options.bleeds.Bottom*unitRatio);
533
                BleedRight->setValue(m_doc->Print_Options.bleeds.Right*unitRatio);
534
                BleedLeft->setValue(m_doc->Print_Options.bleeds.Left*unitRatio);
6688 fschmid 535
        }
12247 jghali 536
        BleedTop->setEnabled(!docBleeds->isChecked());
537
        BleedBottom->setEnabled(!docBleeds->isChecked());
538
        BleedRight->setEnabled(!docBleeds->isChecked());
539
        BleedLeft->setEnabled(!docBleeds->isChecked());
12253 jghali 540
        markOffset->setValue(m_doc->Print_Options.markOffset*unitRatio);
541
        cropMarks->setChecked(m_doc->Print_Options.cropMarks);
542
        bleedMarks->setChecked(m_doc->Print_Options.bleedMarks);
543
        registrationMarks->setChecked(m_doc->Print_Options.registrationMarks);
544
        colorMarks->setChecked(m_doc->Print_Options.colorMarks);
451 tsoots 545
}
546
 
10863 cbradney 547
QString PrintDialog::printerName()
3 paul 548
{
11987 jghali 549
        return PrintDest->currentText();
3 paul 550
}
551
 
10863 cbradney 552
QString PrintDialog::outputFileName()
3 paul 553
{
11639 jghali 554
        return QDir::fromNativeSeparators(LineEdit1->text());
3 paul 555
}
556
 
10863 cbradney 557
bool PrintDialog::outputToFile()
3 paul 558
{
11987 jghali 559
        return (PrintDest->currentText() == tr("File"));
3 paul 560
}
561
 
10863 cbradney 562
int PrintDialog::numCopies()
3 paul 563
{
564
        return Copies->value();
565
}
566
 
10863 cbradney 567
bool PrintDialog::outputSeparations()
3 paul 568
{
11987 jghali 569
        return SepArt->isEnabled();
3 paul 570
}
571
 
10863 cbradney 572
QString PrintDialog::separationName()
3 paul 573
{
574
        return SepArt->currentText();
575
}
576
 
10863 cbradney 577
QStringList PrintDialog::allSeparations()
3068 fschmid 578
{
579
        QStringList ret;
580
        for (int a = 1; a < SepArt->count(); ++a)
581
        {
10502 fschmid 582
                ret.append(SepArt->itemText(a));
3068 fschmid 583
        }
584
        return ret;
585
}
3234 fschmid 586
 
10863 cbradney 587
bool PrintDialog::color()
3 paul 588
{
10502 fschmid 589
        if (colorType->currentIndex() == 0)
3234 fschmid 590
                return true;
591
        else
592
                return false;
3 paul 593
}
3234 fschmid 594
 
10863 cbradney 595
bool PrintDialog::mirrorHorizontal()
3234 fschmid 596
{
597
        return MirrorHor->isChecked();
598
}
599
 
10863 cbradney 600
bool PrintDialog::mirrorVertical()
3234 fschmid 601
{
602
        return MirrorVert->isChecked();
603
}
604
 
10863 cbradney 605
bool PrintDialog::doGCR()
3234 fschmid 606
{
607
        return GcR->isChecked();
608
}
609
 
10863 cbradney 610
bool PrintDialog::doClip()
4649 fschmid 611
{
612
        return ClipMarg->isChecked();
613
}
614
 
10947 jghali 615
PrintEngine PrintDialog::printEngine()
3234 fschmid 616
{
10947 jghali 617
        return printEngineMap[printEngines->currentText()];
3234 fschmid 618
}
619
 
10863 cbradney 620
bool PrintDialog::doDev()
3234 fschmid 621
{
622
        return devPar->isChecked();
623
}
624
 
10863 cbradney 625
bool PrintDialog::doSpot()
3234 fschmid 626
{
627
        return !spotColors->isChecked();
628
}
629
 
10863 cbradney 630
bool PrintDialog::doOverprint()
5308 fschmid 631
{
632
        return overprintMode->isChecked();
633
}
634
 
10863 cbradney 635
bool PrintDialog::ICCinUse()
3234 fschmid 636
{
10947 jghali 637
        return (m_doc->HasCMS && UseICC->isChecked());
3234 fschmid 638
}
6119 tsoots 639
 
12243 fschmid 640
bool PrintDialog::doPrintAll()
641
{
642
        return RadioButton1->isChecked();
643
}
644
 
645
bool PrintDialog::doPrintCurrentPage()
646
{
647
        return CurrentPage->isChecked();
648
}
649
 
650
QString PrintDialog::getPageString()
651
{
652
        return pageNr->text();
653
}
654
 
10863 cbradney 655
void PrintDialog::doDocBleeds()
6954 fschmid 656
{
657
        if (docBleeds->isChecked())
658
        {
659
                prefs->set("BleedTop", BleedTop->value() / unitRatio);
660
                prefs->set("BleedBottom", BleedBottom->value() / unitRatio);
661
                prefs->set("BleedRight", BleedRight->value() / unitRatio);
662
                prefs->set("BleedLeft", BleedLeft->value() / unitRatio);
7225 cbradney 663
                BleedTop->setValue(m_doc->bleeds.Top*unitRatio);
664
                BleedBottom->setValue(m_doc->bleeds.Bottom*unitRatio);
665
                BleedRight->setValue(m_doc->bleeds.Right*unitRatio);
666
                BleedLeft->setValue(m_doc->bleeds.Left*unitRatio);
6954 fschmid 667
        }
668
        else
669
        {
670
                BleedTop->setValue(prefs->getDouble("BleedTop",0.0)*unitRatio);
671
                BleedBottom->setValue(prefs->getDouble("BleedBottom",0.0)*unitRatio);
672
                BleedRight->setValue(prefs->getDouble("BleedRight",0.0)*unitRatio);
673
                BleedLeft->setValue(prefs->getDouble("BleedLeft",0.0)*unitRatio);
674
        }
12247 jghali 675
        bool isChecked = docBleeds->isChecked();
676
        prefs->set("UseDocBleeds", isChecked);
677
        BleedTop->setEnabled(!isChecked);
678
        BleedBottom->setEnabled(!isChecked);
679
        BleedRight->setEnabled(!isChecked);
680
        BleedLeft->setEnabled(!isChecked);
6954 fschmid 681
}
6663 cbradney 682
 
10863 cbradney 683
void PrintDialog::createPageNumberRange( )
6119 tsoots 684
{
6663 cbradney 685
        if (m_doc!=0)
686
        {
6775 cbradney 687
                CreateRange cr(pageNr->text(), m_doc->DocPages.count(), this);
6663 cbradney 688
                if (cr.exec())
689
                {
690
                        CreateRangeData crData;
691
                        cr.getCreateRangeData(crData);
692
                        pageNr->setText(crData.pageRange);
693
                        return;
694
                }
695
        }
696
        pageNr->setText(QString::null);
6119 tsoots 697
}
10947 jghali 698
 
699
void PrintDialog::refreshPrintEngineBox()
700
{
701
        int index = 0, oldPDLIndex = 0;
702
        QString oldPDL  = printEngines->currentText();
703
        PrintEngineMap::Iterator it, itEnd = printEngineMap.end();
704
        printEngines->clear();
705
        for (it = printEngineMap.begin(); it != itEnd; ++it)
706
        {
707
                printEngines->addItem(it.key());
708
                if (it.key() == oldPDL)
709
                        oldPDLIndex = index;
710
                index++;
711
        }
712
        printEngines->setCurrentIndex( oldPDLIndex );
713
}
714
 
715
void PrintDialog::setPrintEngine(PrintEngine pdl)
716
{
717
        QString pdlString = printEngineMap.key(pdl, "");
718
        int itemIndex = printEngines->findText(pdlString);
719
        if (itemIndex >= 0)
720
                printEngines->setCurrentIndex(itemIndex);
721
        else if(printEngines->count() > 0)
722
        {
723
                pdlString = printEngineMap.key(PostScript3, "");
724
                itemIndex = printEngines->findText(pdlString);
725
                if (itemIndex >= 0)
726
                        printEngines->setCurrentIndex(itemIndex);
727
                else
728
                        printEngines->setCurrentIndex(printEngines->count() - 1);
729
        }
10950 subik 730
}
731
 
11639 jghali 732