Gui: fix printing from ImageView

This commit is contained in:
wmayer
2023-03-19 18:56:32 +01:00
parent 965aeb4b6b
commit a9bff40914
2 changed files with 24 additions and 14 deletions

View File

@@ -286,21 +286,19 @@ QImage ImageView::imageFromClipboard()
void ImageView::print(QPrinter* printer)
{
QPrintDialog dialog(printer, this);
if (dialog.exec()) {
QPainter painter(printer);
QPixmap pixmap = QPixmap::fromImage(rawImage);
QRect rect = painter.viewport();
QSize size = pixmap.size();
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
painter.setWindow(pixmap.rect());
painter.drawPixmap(0, 0, pixmap);
}
QPainter painter(printer);
QPixmap pixmap = QPixmap::fromImage(rawImage);
QRect rect = painter.viewport();
QSize size = pixmap.size();
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
painter.setWindow(pixmap.rect());
painter.drawPixmap(0, 0, pixmap);
}
bool ImageView::onMsg(const char* pMsg,const char**)
bool ImageView::onMsg(const char* pMsg,const char** ppReturn)
{
Q_UNUSED(ppReturn)
if (strcmp("ViewFit", pMsg) == 0) {
fitToWindow(true);
return true;

View File

@@ -272,7 +272,13 @@ void MDIView::printPreview()
void MDIView::savePrinterSettings(QPrinter* printer)
{
auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer");
hGrp = hGrp->GetGroup(printer->printerName().toUtf8());
QString printerName = printer->printerName();
if (printerName.isEmpty()) {
// no printer defined
return;
}
hGrp = hGrp->GetGroup(printerName.toUtf8());
hGrp->SetInt("DefaultPageSize", printer->pageLayout().pageSize().id());
hGrp->SetInt("DefaultPageOrientation", static_cast<int>(printer->pageLayout().orientation()));
@@ -282,7 +288,13 @@ void MDIView::savePrinterSettings(QPrinter* printer)
void MDIView::restorePrinterSettings(QPrinter* printer)
{
auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer");
hGrp = hGrp->GetGroup(printer->printerName().toUtf8());
QString printerName = printer->printerName();
if (printerName.isEmpty()) {
// no printer defined
return;
}
hGrp = hGrp->GetGroup(printerName.toUtf8());
QPrinterInfo info = QPrinterInfo::defaultPrinter();
int initialDefaultPageSize = info.isNull() ? QPageSize::A4 : info.defaultPageSize().id();