Merge branch 'issues/1630' of https://github.com/jdkaplan/qutebrowser into jdkaplan-issues/1630
This commit is contained in:
commit
7a39021d41
@ -228,6 +228,7 @@ Contributors, sorted by the number of commits in descending order:
|
||||
* Matthias Lisin
|
||||
* Marcel Schilling
|
||||
* Johannes Martinsson
|
||||
* Jeremy Kaplan
|
||||
* Jean-Christophe Petkovich
|
||||
* Jay Kamat
|
||||
* Helen Sherwood-Taylor
|
||||
|
@ -495,12 +495,13 @@ If the pasted text contains newlines, each line gets opened in its own tab.
|
||||
|
||||
[[print]]
|
||||
=== print
|
||||
Syntax: +:print [*--preview*]+
|
||||
Syntax: +:print [*--preview*] [*--pdf* 'file']+
|
||||
|
||||
Print the current/[count]th tab.
|
||||
|
||||
==== optional arguments
|
||||
* +*-p*+, +*--preview*+: Show preview instead of printing.
|
||||
* +*-f*+, +*--pdf*+: The file path to write the PDF to.
|
||||
|
||||
==== count
|
||||
The tab index to print.
|
||||
|
@ -28,7 +28,7 @@ import functools
|
||||
from PyQt5.QtWidgets import QApplication, QTabBar
|
||||
from PyQt5.QtCore import Qt, QUrl, QEvent
|
||||
from PyQt5.QtGui import QKeyEvent
|
||||
from PyQt5.QtPrintSupport import QPrintDialog, QPrintPreviewDialog
|
||||
from PyQt5.QtPrintSupport import QPrintDialog, QPrinter, QPrintPreviewDialog
|
||||
from PyQt5.QtWebKitWidgets import QWebPage
|
||||
try:
|
||||
from PyQt5.QtWebEngineWidgets import QWebEnginePage
|
||||
@ -299,12 +299,14 @@ class CommandDispatcher:
|
||||
@cmdutils.register(instance='command-dispatcher', name='print',
|
||||
scope='window')
|
||||
@cmdutils.argument('count', count=True)
|
||||
def printpage(self, preview=False, count=None):
|
||||
@cmdutils.argument('pdf', flag='f', metavar='file')
|
||||
def printpage(self, preview=False, count=None, *, pdf=None):
|
||||
"""Print the current/[count]th tab.
|
||||
|
||||
Args:
|
||||
preview: Show preview instead of printing.
|
||||
count: The tab index to print, or None.
|
||||
pdf: The file path to write the PDF to.
|
||||
"""
|
||||
if not qtutils.check_print_compat():
|
||||
# WORKAROUND (remove this when we bump the requirements to 5.3.0)
|
||||
@ -320,6 +322,15 @@ class CommandDispatcher:
|
||||
Qt.WindowMinimizeButtonHint)
|
||||
diag.paintRequested.connect(tab.print)
|
||||
diag.exec_()
|
||||
elif pdf:
|
||||
pdf = os.path.expanduser(pdf)
|
||||
directory = os.path.dirname(pdf)
|
||||
if directory and not os.path.exists(directory):
|
||||
os.mkdir(directory)
|
||||
printer = QPrinter()
|
||||
printer.setOutputFileName(pdf)
|
||||
tab.print(printer)
|
||||
log.misc.debug("Print to file: {}".format(pdf))
|
||||
else:
|
||||
diag = QPrintDialog()
|
||||
diag.setAttribute(Qt.WA_DeleteOnClose)
|
||||
|
@ -339,6 +339,13 @@ Feature: Various utility commands.
|
||||
And I run :debug-pyeval QApplication.instance().activeModalWidget().close()
|
||||
Then no crash should happen
|
||||
|
||||
Scenario: print pdf
|
||||
Given a new tmpdir
|
||||
When I open data/hello.txt
|
||||
And I run :print --pdf (tmpdir)/hello.pdf
|
||||
And I wait for "Print to file: *" in the log or skip the test
|
||||
Then the file hello.pdf should exist in the tmpdir
|
||||
|
||||
# :pyeval
|
||||
|
||||
Scenario: Running :pyeval
|
||||
|
@ -73,3 +73,14 @@ def check_cookie(quteproc, name, value):
|
||||
data = json.loads(content)
|
||||
print(data)
|
||||
assert data['cookies'][name] == value
|
||||
|
||||
|
||||
@bdd.given(bdd.parsers.parse('a new tmpdir'))
|
||||
def tmpdir(tmpdir_factory):
|
||||
return tmpdir_factory.mktemp('tmpdir')
|
||||
|
||||
|
||||
@bdd.then(bdd.parsers.parse('the file {filename} should exist in the tmpdir'))
|
||||
def file_exists(quteproc, tmpdir, filename):
|
||||
path = tmpdir / filename
|
||||
assert os.path.exists(str(path))
|
||||
|
Loading…
Reference in New Issue
Block a user