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 */
7 /***************************************************************************
8 useprintermarginsdialog.cpp - description
9 -------------------
10 copyright : (C) 2006 by Craig Bradney
11 email : cbradney@zip.com.au
12 ***************************************************************************/
13
14 #include "useprintermarginsdialog.h"
15
16 #include <QComboBox>
17 #include <QGroupBox>
18 #include <QLineEdit>
19 #include <QPushButton>
20
21 #include "util_printer.h"
22
23
24
25 // This class implements only the non-GUI parts of the
26 // UsePrinterMargins dialog. Please use Qt Designer on
27 // useprintermarginsdialog.ui if you need to modify the layout,
28 // widget properties, etc.
29
UsePrinterMarginsDialog(QWidget * parent,const QSizeF & pageSize,const QString & pageSizeName,double unitRatio,const QString & suffix)30 UsePrinterMarginsDialog::UsePrinterMarginsDialog(QWidget* parent, const QSizeF& pageSize, const QString& pageSizeName, double unitRatio, const QString& suffix )
31 : QDialog(parent)
32 {
33 setupUi(this);
34
35 m_margins = QMarginsF(0.0, 0.0, 0.0, 0.0);
36 m_pageSize = pageSize;
37 m_pageSizeName = pageSizeName;
38 m_unitRatio = unitRatio;
39 m_suffix = suffix;
40
41 QStringList printerNames = PrinterUtil::getPrinterNames();
42 printerComboBox->clear();
43 if (printerNames.count() > 0 && !pageSize.isEmpty())
44 {
45 printerComboBox->insertItems(0, printerNames);
46 getPrinterMarginValues(printerNames.first());
47 marginsGroupBox->setTitle( tr("Minimum Margins for Page Size %1").arg(pageSizeName));
48 connect(printerComboBox, SIGNAL(activated(const QString&)), this, SLOT(getPrinterMarginValues(const QString&)));
49 }
50
51 connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
52 connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
53 }
54
~UsePrinterMarginsDialog()55 UsePrinterMarginsDialog::~UsePrinterMarginsDialog()
56 {
57 }
58
getNewPrinterMargins(double & topMargin,double & bottomMargin,double & leftMargin,double & rightMargin)59 void UsePrinterMarginsDialog::getNewPrinterMargins(double &topMargin, double &bottomMargin, double &leftMargin, double &rightMargin)
60 {
61 topMargin = m_margins.top();
62 bottomMargin = m_margins.bottom();
63 leftMargin = m_margins.left();
64 rightMargin = m_margins.right();
65 }
66
getPrinterMarginValues(const QString & printerName)67 void UsePrinterMarginsDialog::getPrinterMarginValues(const QString& printerName)
68 {
69 m_margins = QMarginsF(0.0, 0.0, 0.0, 0.0);
70 bool foundSize = PrinterUtil::getPrinterMarginValues(printerName, m_pageSize, m_margins);
71
72 topLineEdit->setEnabled(foundSize);
73 bottomLineEdit->setEnabled(foundSize);
74 leftLineEdit->setEnabled(foundSize);
75 rightLineEdit->setEnabled(foundSize);
76 okButton->setEnabled(foundSize);
77
78 topLineEdit->setText(QString::number(m_margins.top() * m_unitRatio,'g', 4) + m_suffix);
79 bottomLineEdit->setText(QString::number(m_margins.bottom() * m_unitRatio,'g', 4) + m_suffix);
80 leftLineEdit->setText(QString::number(m_margins.left() * m_unitRatio,'g', 4) + m_suffix);
81 rightLineEdit->setText(QString::number(m_margins.right() * m_unitRatio,'g', 4) + m_suffix);
82 }
83