diff options
Diffstat (limited to 'qutebrowser/browser/browsertab.py')
-rw-r--r-- | qutebrowser/browser/browsertab.py | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 0170b4627..9a2d13242 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -25,7 +25,8 @@ import itertools import attr from PyQt5.QtCore import pyqtSignal, pyqtSlot, QUrl, QObject, QSizeF, Qt from PyQt5.QtGui import QIcon -from PyQt5.QtWidgets import QWidget, QApplication +from PyQt5.QtWidgets import QWidget, QApplication, QDialog +from PyQt5.QtPrintSupport import QPrintDialog import pygments import pygments.lexers @@ -187,8 +188,9 @@ class AbstractPrinting: """Attribute of AbstractTab for printing the page.""" - def __init__(self): + def __init__(self, tab): self._widget = None + self._tab = tab def check_pdf_support(self): raise NotImplementedError @@ -212,6 +214,29 @@ class AbstractPrinting: """ raise NotImplementedError + def show_dialog(self): + """Print with a QPrintDialog.""" + self.check_printer_support() + + def print_callback(ok): + """Called when printing finished.""" + if not ok: + message.error("Printing failed!") + diag.deleteLater() + + def do_print(): + """Called when the dialog was closed.""" + self.to_printer(diag.printer(), print_callback) + + diag = QPrintDialog(self._tab) + if utils.is_mac: + # For some reason we get a segfault when using open() on macOS + ret = diag.exec_() + if ret == QDialog.Accepted: + do_print() + else: + diag.open(do_print) + class AbstractSearch(QObject): |