From 369fc153b1326a755c752d240e288b9e1bc3ac61 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 24 Jan 2022 12:45:06 +0100 Subject: [PATCH] Gui: code refactoring that handles printer settings, also support color mode --- src/Gui/MDIView.cpp | 35 ++++++++++++++++++++++++++++++++--- src/Gui/MDIView.h | 4 ++++ src/Gui/View3DInventor.cpp | 13 +++++-------- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp index a6f3a652e6..5de18f7b63 100644 --- a/src/Gui/MDIView.cpp +++ b/src/Gui/MDIView.cpp @@ -26,12 +26,15 @@ #ifndef _PreComp_ # include # include -# include -# include +# include +# include # include # include # include -#include +# include +# include +# include +# include #endif @@ -244,6 +247,32 @@ void MDIView::printPreview() std::cerr << "Printing preview not implemented for " << this->metaObject()->className() << std::endl; } +void MDIView::savePrinterSettings(QPrinter* printer) +{ + auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer"); + hGrp = hGrp->GetGroup(printer->printerName().toUtf8()); + + hGrp->SetInt("DefaultPageSize", printer->pageLayout().pageSize().id()); + hGrp->SetInt("DefaultPageOrientation", static_cast(printer->pageLayout().orientation())); + hGrp->SetInt("DefaultColorMode", static_cast(printer->colorMode())); +} + +void MDIView::restorePrinterSettings(QPrinter* printer) +{ + auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer"); + hGrp = hGrp->GetGroup(printer->printerName().toUtf8()); + + QPrinterInfo info = QPrinterInfo::defaultPrinter(); + int initialDefaultPageSize = info.isNull() ? QPageSize::A4 : info.defaultPageSize().id(); + int defaultPageSize = hGrp->GetInt("DefaultPageSize", initialDefaultPageSize); + int defaultPageOrientation = hGrp->GetInt("DefaultPageOrientation", QPageLayout::Portrait); + int defaultColorMode = hGrp->GetInt("DefaultColorMode", QPrinter::ColorMode::Color); + + printer->setPageSize(QPageSize(static_cast(defaultPageSize))); + printer->setPageOrientation(static_cast(defaultPageOrientation)); + printer->setColorMode(static_cast(defaultColorMode)); +} + QStringList MDIView::undoActions() const { QStringList actions; diff --git a/src/Gui/MDIView.h b/src/Gui/MDIView.h index 5a0e97431a..036bb63f33 100644 --- a/src/Gui/MDIView.h +++ b/src/Gui/MDIView.h @@ -93,6 +93,10 @@ public: virtual void printPdf(); /** Show a preview dialog */ virtual void printPreview(); + /** Save the printer configuration */ + void savePrinterSettings(QPrinter* printer); + /** Restore the printer configuration */ + void restorePrinterSettings(QPrinter* printer); //@} /** @name Undo/Redo actions */ diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index ab8e284b10..44d282e5c5 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -494,10 +494,13 @@ void View3DInventor::print() { QPrinter printer(QPrinter::ScreenResolution); printer.setFullPage(true); + restorePrinterSettings(&printer); + QPrintDialog dlg(&printer, this); if (dlg.exec() == QDialog::Accepted) { Gui::WaitCursor wc; print(&printer); + savePrinterSettings(&printer); } } @@ -518,19 +521,13 @@ void View3DInventor::printPreview() { QPrinter printer(QPrinter::ScreenResolution); printer.setFullPage(true); - hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); - int initialDefaultPageSize = !QPrinterInfo::defaultPrinter().isNull() ? QPrinterInfo::defaultPrinter().defaultPageSize().id() : QPageSize::A4; - int defaultPageSize = hGrp->GetInt("DefaultPageSize", initialDefaultPageSize); - int defaultPageOrientation = hGrp->GetInt("DefaultPageOrientation", QPageLayout::Portrait); - printer.setPageSize(QPageSize(static_cast(defaultPageSize))); - printer.setPageOrientation(static_cast(defaultPageOrientation)); + restorePrinterSettings(&printer); QPrintPreviewDialog dlg(&printer, this); connect(&dlg, SIGNAL(paintRequested (QPrinter *)), this, SLOT(print(QPrinter *))); dlg.exec(); - hGrp -> SetInt("DefaultPageSize", printer.pageLayout().pageSize().id()); - hGrp -> SetInt("DefaultPageOrientation", static_cast(printer.pageLayout().orientation())); + savePrinterSettings(&printer); } void View3DInventor::print(QPrinter* printer)