Specify window and tab instead of 'current'
This commit is contained in:
parent
a1e0ccb787
commit
8bb887ddab
@ -1153,8 +1153,8 @@ class CommandDispatcher:
|
|||||||
mhtml_: Download the current page and all assets as mhtml file.
|
mhtml_: Download the current page and all assets as mhtml file.
|
||||||
"""
|
"""
|
||||||
if dest_old is not None:
|
if dest_old is not None:
|
||||||
message.warning('current', ":download [url] [dest] is deprecated -"
|
message.warning(self._win_id, ":download [url] [dest] is deprecated"
|
||||||
" use download --dest [dest] [url]")
|
" - use download --dest [dest] [url]")
|
||||||
if dest is not None:
|
if dest is not None:
|
||||||
raise cmdexc.CommandError("Can't give two destinations for the"
|
raise cmdexc.CommandError("Can't give two destinations for the"
|
||||||
" download.")
|
" download.")
|
||||||
@ -1183,6 +1183,7 @@ class CommandDispatcher:
|
|||||||
Args:
|
Args:
|
||||||
dest: The file path to write the download to.
|
dest: The file path to write the download to.
|
||||||
"""
|
"""
|
||||||
|
tab_id = self._current_index()
|
||||||
if dest is None:
|
if dest is None:
|
||||||
suggested_fn = self._current_title() + ".mht"
|
suggested_fn = self._current_title() + ".mht"
|
||||||
q = usertypes.Question()
|
q = usertypes.Question()
|
||||||
@ -1190,12 +1191,15 @@ class CommandDispatcher:
|
|||||||
q.mode = usertypes.PromptMode.text
|
q.mode = usertypes.PromptMode.text
|
||||||
q.completed.connect(q.deleteLater)
|
q.completed.connect(q.deleteLater)
|
||||||
q.default = downloads.path_suggestion(suggested_fn)
|
q.default = downloads.path_suggestion(suggested_fn)
|
||||||
q.answered.connect(mhtml.start_download_checked)
|
q.answered.connect(functools.partial(
|
||||||
|
mhtml.start_download_checked, win_id=self._win_id,
|
||||||
|
tab_id=tab_id))
|
||||||
message_bridge = objreg.get("message-bridge", scope="window",
|
message_bridge = objreg.get("message-bridge", scope="window",
|
||||||
window=self._win_id)
|
window=self._win_id)
|
||||||
message_bridge.ask(q, blocking=False)
|
message_bridge.ask(q, blocking=False)
|
||||||
else:
|
else:
|
||||||
mhtml.start_download_checked(dest)
|
mhtml.start_download_checked(dest, win_id=self._win_id,
|
||||||
|
tab_id=tab_id)
|
||||||
|
|
||||||
@cmdutils.register(instance='command-dispatcher', scope='window',
|
@cmdutils.register(instance='command-dispatcher', scope='window',
|
||||||
deprecated="Use :download instead.")
|
deprecated="Use :download instead.")
|
||||||
|
@ -415,39 +415,42 @@ class _NoCloseBytesIO(io.BytesIO): # pylint: disable=no-init
|
|||||||
super().close()
|
super().close()
|
||||||
|
|
||||||
|
|
||||||
def start_download(dest):
|
def _start_download(dest, win_id, tab_id):
|
||||||
"""Start downloading the current page and all assets to a MHTML file.
|
"""Start downloading the current page and all assets to a MHTML file.
|
||||||
|
|
||||||
This will overwrite dest if it already exists.
|
This will overwrite dest if it already exists.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
dest: The filename where the resulting file should be saved.
|
dest: The filename where the resulting file should be saved.
|
||||||
|
win_id, tab_id: Specify the tab whose page should be loaded.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
dest = os.path.expanduser(dest)
|
dest = os.path.expanduser(dest)
|
||||||
web_view = objreg.get('webview', scope='tab', tab='current')
|
web_view = objreg.get('webview', scope='tab', window=win_id, tab=tab_id)
|
||||||
loader = _Downloader(web_view, dest)
|
loader = _Downloader(web_view, dest)
|
||||||
loader.run()
|
loader.run()
|
||||||
|
|
||||||
|
def start_download_checked(dest, win_id, tab_id):
|
||||||
def start_download_checked(dest):
|
|
||||||
"""First check if dest is already a file, then start the download.
|
"""First check if dest is already a file, then start the download.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
dest: The filename where the resulting file should be saved.
|
dest: The filename where the resulting file should be saved.
|
||||||
|
win_id, tab_id: Specify the tab whose page should be loaded.
|
||||||
"""
|
"""
|
||||||
# start_download will call os.path.expanduser on dest too, so no need to
|
# start_download will call os.path.expanduser on dest too, so no need to
|
||||||
# overwrite dest. We just want to make sure that we're checking
|
# overwrite dest. We just want to make sure that we're checking
|
||||||
# the right path here. This also means that the user question will show the
|
# the right path here. This also means that the user question will show the
|
||||||
# original path, not the expanded.
|
# original path, not the expanded.
|
||||||
if not os.path.isfile(os.path.expanduser(dest)):
|
if not os.path.isfile(os.path.expanduser(dest)):
|
||||||
start_download(dest)
|
_start_download(dest, win_id=win_id, tab_id=tab_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
q = usertypes.Question()
|
q = usertypes.Question()
|
||||||
q.mode = usertypes.PromptMode.yesno
|
q.mode = usertypes.PromptMode.yesno
|
||||||
q.text = "{} exists. Overwrite?".format(dest)
|
q.text = "{} exists. Overwrite?".format(dest)
|
||||||
q.completed.connect(q.deleteLater)
|
q.completed.connect(q.deleteLater)
|
||||||
q.answered_yes.connect(functools.partial(start_download, dest))
|
q.answered_yes.connect(functools.partial(
|
||||||
|
_start_download, dest, win_id=win_id, tab_id=tab_id))
|
||||||
message_bridge = objreg.get('message-bridge', scope='window',
|
message_bridge = objreg.get('message-bridge', scope='window',
|
||||||
window='current')
|
window=win_id)
|
||||||
message_bridge.ask(q, blocking=False)
|
message_bridge.ask(q, blocking=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user