From 27767e46e2eef4f32ec89b96e0d6ccb1e1542854 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 6 Oct 2016 19:28:58 +0300 Subject: [PATCH] Warn about invalid margins. ref #570. --HG-- branch : develop --- .../dialogs/dialoglayoutsettings.cpp | 32 ++++++------------- .../valentina/dialogs/dialoglayoutsettings.h | 1 - src/app/valentina/mainwindowsnogui.cpp | 7 +++- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/app/valentina/dialogs/dialoglayoutsettings.cpp b/src/app/valentina/dialogs/dialoglayoutsettings.cpp index 6cb62b425..b44bb2be4 100644 --- a/src/app/valentina/dialogs/dialoglayoutsettings.cpp +++ b/src/app/valentina/dialogs/dialoglayoutsettings.cpp @@ -583,8 +583,8 @@ void DialogLayoutSettings::DialogAccepted() } else { - const QMarginsF minFields = RoundMargins(MinPrinterFields()); - const QMarginsF fields = RoundMargins(GetFields()); + const QMarginsF minFields = MinPrinterFields(); + const QMarginsF fields = GetFields(); if (fields.left() < minFields.left() || fields.right() < minFields.right() || fields.top() < minFields.top() || fields.bottom() < minFields.bottom()) { @@ -594,25 +594,24 @@ void DialogLayoutSettings::DialogAccepted() QMessageBox::Yes|QMessageBox::No, QMessageBox::No); if (answer == QMessageBox::No) { - const QMarginsF defFields = RoundMargins(GetDefPrinterFields()); - if (fields.left() < defFields.left()) + if (fields.left() < minFields.left()) { - ui->doubleSpinBoxLeftField->setValue(UnitConvertor(defFields.left(), Unit::Px, LayoutUnit())); + ui->doubleSpinBoxLeftField->setValue(UnitConvertor(minFields.left(), Unit::Px, LayoutUnit())); } - if (fields.right() < defFields.right()) + if (fields.right() < minFields.right()) { - ui->doubleSpinBoxRightField->setValue(UnitConvertor(defFields.right(), Unit::Px, LayoutUnit())); + ui->doubleSpinBoxRightField->setValue(UnitConvertor(minFields.right(), Unit::Px, LayoutUnit())); } - if (fields.top() < defFields.top()) + if (fields.top() < minFields.top()) { - ui->doubleSpinBoxTopField->setValue(UnitConvertor(defFields.top(), Unit::Px, LayoutUnit())); + ui->doubleSpinBoxTopField->setValue(UnitConvertor(minFields.top(), Unit::Px, LayoutUnit())); } - if (fields.bottom() < defFields.bottom()) + if (fields.bottom() < minFields.bottom()) { - ui->doubleSpinBoxBottomField->setValue(UnitConvertor(defFields.bottom(), Unit::Px, + ui->doubleSpinBoxBottomField->setValue(UnitConvertor(minFields.bottom(), Unit::Px, LayoutUnit())); } @@ -947,17 +946,6 @@ QSizeF DialogLayoutSettings::RoundTemplateSize(qreal width, qreal height) const return QSizeF(width, height); } -//--------------------------------------------------------------------------------------------------------------------- -QMarginsF DialogLayoutSettings::RoundMargins(const QMarginsF &margins) const -{ - QMarginsF newMargins; - newMargins.setLeft(qRound(margins.left() * 100.0) / 100.0); - newMargins.setRight(qRound(margins.right() * 100.0) / 100.0); - newMargins.setTop(qRound(margins.top() * 100.0) / 100.0); - newMargins.setBottom(qRound(margins.bottom() * 100.0) / 100.0); - return newMargins; -} - //--------------------------------------------------------------------------------------------------------------------- QMarginsF DialogLayoutSettings::MinPrinterFields() const { diff --git a/src/app/valentina/dialogs/dialoglayoutsettings.h b/src/app/valentina/dialogs/dialoglayoutsettings.h index 0a2115d86..4350baf55 100644 --- a/src/app/valentina/dialogs/dialoglayoutsettings.h +++ b/src/app/valentina/dialogs/dialoglayoutsettings.h @@ -158,7 +158,6 @@ private: QSizeF Template(); QSizeF TemplateSize(const PaperSizeTemplate &tmpl) const; QSizeF RoundTemplateSize(qreal width, qreal height) const; - QMarginsF RoundMargins(const QMarginsF &margins) const; QMarginsF MinPrinterFields() const; QMarginsF GetDefPrinterFields() const; diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index 423d5650e..b5ac49e0b 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -964,7 +964,12 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, const PrintType &pr const qreal top = FromPixel(margins.top(), Unit::Mm); const qreal right = FromPixel(margins.right(), Unit::Mm); const qreal bottom = FromPixel(margins.bottom(), Unit::Mm); - printer->setPageMargins(left, top, right, bottom, QPrinter::Millimeter); + const bool success = printer->setPageMargins(left, top, right, bottom, QPrinter::Millimeter); + + if (not success) + { + qWarning() << tr("Cannot set printer margins"); + } switch(printType) {