mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 23:13:25 +00:00
Printing: only give up if no size is available
Checking for available printers appears to sometimes fail, even if there is a valid PDF or PS printer. Instead we bail if we can't get a valid size for the printer. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
095e8081ca
commit
4fd0dfcabb
3 changed files with 13 additions and 23 deletions
|
@ -66,24 +66,8 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f
|
|||
connect(quit, SIGNAL(activated()), parent, SLOT(close()));
|
||||
}
|
||||
|
||||
bool PrintDialog::checkForAvailablePrinters(void)
|
||||
{
|
||||
QList<QPrinterInfo> list = QPrinterInfo::availablePrinters();
|
||||
if (!list.length()) {
|
||||
QMessageBox msgBox;
|
||||
msgBox.setIcon(QMessageBox::Critical);
|
||||
msgBox.setText(tr("Subsurface cannot find installed printers on this system!"));
|
||||
msgBox.setWindowIcon(QIcon(":subsurface-icon"));
|
||||
msgBox.exec();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void PrintDialog::previewClicked(void)
|
||||
{
|
||||
if (!checkForAvailablePrinters())
|
||||
return;
|
||||
QPrintPreviewDialog previewDialog(&printer, this);
|
||||
connect(&previewDialog, SIGNAL(paintRequested(QPrinter *)), this, SLOT(onPaintRequested(QPrinter *)));
|
||||
previewDialog.exec();
|
||||
|
@ -91,8 +75,6 @@ void PrintDialog::previewClicked(void)
|
|||
|
||||
void PrintDialog::printClicked(void)
|
||||
{
|
||||
if (!checkForAvailablePrinters())
|
||||
return;
|
||||
QPrintDialog printDialog(&printer, this);
|
||||
if (printDialog.exec() == QDialog::Accepted){
|
||||
printLayout->print();
|
||||
|
|
|
@ -18,7 +18,6 @@ public:
|
|||
explicit PrintDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
|
||||
|
||||
private:
|
||||
bool checkForAvailablePrinters(void);
|
||||
PrintOptions *optionsWidget;
|
||||
PrintLayout *printLayout;
|
||||
QProgressBar *progressBar;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <QHeaderView>
|
||||
#include <QPointer>
|
||||
#include <QPicture>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "../dive.h"
|
||||
|
@ -64,6 +65,14 @@ void PrintLayout::print()
|
|||
{
|
||||
// we call setup each time to check if the printer properties have changed
|
||||
setup();
|
||||
if (pageW == 0 || pageH == 0) {
|
||||
QMessageBox msgBox;
|
||||
msgBox.setIcon(QMessageBox::Critical);
|
||||
msgBox.setText(tr("Subsurface cannot find a usable printer on this system!"));
|
||||
msgBox.setWindowIcon(QIcon(":subsurface-icon"));
|
||||
msgBox.exec();
|
||||
return;
|
||||
}
|
||||
switch (printOptions->type) {
|
||||
case options::PRETTY:
|
||||
printProfileDives(3, 2);
|
||||
|
@ -422,13 +431,13 @@ void PrintLayout::printTable()
|
|||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
|
||||
(void)headingRowHeightD2;
|
||||
QRegion region(0, pageIndexes.at(i) - 1,
|
||||
table.width(),
|
||||
pageIndexes.at(i + 1) - pageIndexes.at(i) + 1);
|
||||
table.width(),
|
||||
pageIndexes.at(i + 1) - pageIndexes.at(i) + 1);
|
||||
table.render(&painter, QPoint(0, 0), region);
|
||||
#else
|
||||
QRegion region(0, pageIndexes.at(i) + headingRowHeightD2 - 1,
|
||||
table.width(),
|
||||
pageIndexes.at(i + 1) - (pageIndexes.at(i) + headingRowHeightD2) + 1);
|
||||
table.width(),
|
||||
pageIndexes.at(i + 1) - (pageIndexes.at(i) + headingRowHeightD2) + 1);
|
||||
// vectorize the table first by using QPicture
|
||||
QPicture pic;
|
||||
QPainter picPainter;
|
||||
|
|
Loading…
Add table
Reference in a new issue