Gui: code refactoring that handles printer settings, also support color mode

This commit is contained in:
wmayer
2022-01-24 12:45:06 +01:00
parent 3dfdc6804f
commit 369fc153b1
3 changed files with 41 additions and 11 deletions

View File

@@ -26,12 +26,15 @@
#ifndef _PreComp_
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <qapplication.h>
# include <qregexp.h>
# include <QApplication>
# include <QRegExp>
# include <QEvent>
# include <QCloseEvent>
# include <QMdiSubWindow>
#include <iostream>
# include <QPrinter>
# include <QPrintDialog>
# include <QPrinterInfo>
# include <iostream>
#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<int>(printer->pageLayout().orientation()));
hGrp->SetInt("DefaultColorMode", static_cast<int>(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<QPageSize::PageSizeId>(defaultPageSize)));
printer->setPageOrientation(static_cast<QPageLayout::Orientation>(defaultPageOrientation));
printer->setColorMode(static_cast<QPrinter::ColorMode>(defaultColorMode));
}
QStringList MDIView::undoActions() const
{
QStringList actions;

View File

@@ -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 */

View File

@@ -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<QPageSize::PageSizeId>(defaultPageSize)));
printer.setPageOrientation(static_cast<QPageLayout::Orientation>(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<int>(printer.pageLayout().orientation()));
savePrinterSettings(&printer);
}
void View3DInventor::print(QPrinter* printer)