Gui: code refactoring that handles printer settings, also support color mode
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user