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