From 89108be01300197672e4c99ff2fff5814f4663c6 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 6 Feb 2017 12:54:13 +0100 Subject: [PATCH] Clean up printing code in browser.commands --- qutebrowser/browser/commands.py | 66 ++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index c32b58d05..2b6e0ca81 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -349,6 +349,43 @@ class CommandDispatcher: if tab is not None: tab.stop() + def _print_preview(self, tab): + """Show a print preview.""" + tab.printing.check_preview_support() + def print_callback(ok): + if not ok: + message.error("Printing failed!") + + diag = QPrintPreviewDialog() + diag.setAttribute(Qt.WA_DeleteOnClose) + diag.setWindowFlags(diag.windowFlags() | Qt.WindowMaximizeButtonHint | + Qt.WindowMinimizeButtonHint) + diag.paintRequested.connect(functools.partial( + tab.printing.to_printer, callback=print_callback)) + diag.exec_() + + def _print_pdf(self, tab, filename): + tab.printing.check_pdf_support() + """Print to the given PDF file.""" + filename = os.path.expanduser(filename) + directory = os.path.dirname(filename) + if directory and not os.path.exists(directory): + os.mkdir(directory) + tab.printing.to_filename(filename) + log.misc.debug("Print to file: {}".format(filename)) + + def _print(self, tab): + """Print with a QPrintDialog.""" + def print_callback(ok): + """Called when printing finished.""" + if not ok: + message.error("Printing failed!") + diag.deleteLater() + + diag = QPrintDialog() + diag.open(lambda: tab.printing.to_printer(diag.printer(), + print_callback)) + @cmdutils.register(instance='command-dispatcher', name='print', scope='window') @cmdutils.argument('count', count=True) @@ -376,34 +413,11 @@ class CommandDispatcher: raise cmdexc.CommandError(e) if preview: - def print_callback(ok): - if not ok: - message.error("Printing failed!") - - diag = QPrintPreviewDialog() - diag.setAttribute(Qt.WA_DeleteOnClose) - diag.setWindowFlags(diag.windowFlags() | - Qt.WindowMaximizeButtonHint | - Qt.WindowMinimizeButtonHint) - diag.paintRequested.connect(functools.partial( - tab.printing.to_printer, callback=print_callback)) - diag.exec_() + self._print_preview(tab) elif pdf: - pdf = os.path.expanduser(pdf) - directory = os.path.dirname(pdf) - if directory and not os.path.exists(directory): - os.mkdir(directory) - tab.printing.to_pdf(pdf) - log.misc.debug("Print to file: {}".format(pdf)) + self._print_pdf(tab, pdf) else: - def print_callback(ok): - if not ok: - message.error("Printing failed!") - diag.deleteLater() - - diag = QPrintDialog() - diag.open(lambda: - tab.printing.to_printer(diag.printer(), print_callback)) + self._print(tab) @cmdutils.register(instance='command-dispatcher', scope='window') def tab_clone(self, bg=False, window=False):