Specify window and tab instead of 'current'

This commit is contained in:
Daniel 2015-10-19 12:13:49 +02:00
parent a1e0ccb787
commit 8bb887ddab
2 changed files with 18 additions and 11 deletions

View File

@ -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.")

View File

@ -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)