summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/browsertab.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/browsertab.py')
-rw-r--r--qutebrowser/browser/browsertab.py29
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):