mirror of
https://git.deluge-torrent.org/deluge
synced 2025-08-05 07:58:38 +00:00
split off torrent actions popup
This commit is contained in:
parent
f748660cac
commit
183a97785b
2 changed files with 26 additions and 81 deletions
|
@ -47,6 +47,7 @@ from popup import Popup,SelectablePopup,MessagePopup
|
||||||
from add_util import add_torrent
|
from add_util import add_torrent
|
||||||
from input_popup import InputPopup
|
from input_popup import InputPopup
|
||||||
from torrentdetail import TorrentDetail
|
from torrentdetail import TorrentDetail
|
||||||
|
from torrent_actions import torrent_actions_popup
|
||||||
|
|
||||||
import format_utils
|
import format_utils
|
||||||
|
|
||||||
|
@ -106,19 +107,6 @@ Enter - Show torrent actions popup. Here you can do things like
|
||||||
"""
|
"""
|
||||||
HELP_LINES = HELP_STR.split('\n')
|
HELP_LINES = HELP_STR.split('\n')
|
||||||
|
|
||||||
class ACTION:
|
|
||||||
PAUSE=0
|
|
||||||
RESUME=1
|
|
||||||
REANNOUNCE=2
|
|
||||||
EDIT_TRACKERS=3
|
|
||||||
RECHECK=4
|
|
||||||
REMOVE=5
|
|
||||||
|
|
||||||
REMOVE_DATA=6
|
|
||||||
REMOVE_NODATA=7
|
|
||||||
|
|
||||||
DETAILS=8
|
|
||||||
|
|
||||||
class FILTER:
|
class FILTER:
|
||||||
ALL=0
|
ALL=0
|
||||||
ACTIVE=1
|
ACTIVE=1
|
||||||
|
@ -268,7 +256,7 @@ class AllTorrents(BaseMode):
|
||||||
self.curoff = self.cursel - self.rows + 5
|
self.curoff = self.cursel - self.rows + 5
|
||||||
return prevoff != self.curoff
|
return prevoff != self.curoff
|
||||||
|
|
||||||
def _current_torrent_id(self):
|
def current_torrent_id(self):
|
||||||
if self._sorted_ids:
|
if self._sorted_ids:
|
||||||
return self._sorted_ids[self.cursel-1]
|
return self._sorted_ids[self.cursel-1]
|
||||||
else:
|
else:
|
||||||
|
@ -341,70 +329,6 @@ class AllTorrents(BaseMode):
|
||||||
td = TorrentDetail(self,tid,self.stdscr,self.encoding)
|
td = TorrentDetail(self,tid,self.stdscr,self.encoding)
|
||||||
component.get("ConsoleUI").set_mode(td)
|
component.get("ConsoleUI").set_mode(td)
|
||||||
|
|
||||||
def _action_error(self, error):
|
|
||||||
rerr = error.value
|
|
||||||
self.report_message("An Error Occurred","%s got error %s: %s"%(rerr.method,rerr.exception_type,rerr.exception_msg))
|
|
||||||
self.refresh()
|
|
||||||
|
|
||||||
def _torrent_action(self, idx, data):
|
|
||||||
log.error("Action %d",data)
|
|
||||||
ids = self._selected_torrent_ids()
|
|
||||||
if ids:
|
|
||||||
if data==ACTION.PAUSE:
|
|
||||||
log.debug("Pausing torrents: %s",ids)
|
|
||||||
client.core.pause_torrent(ids).addErrback(self._action_error)
|
|
||||||
elif data==ACTION.RESUME:
|
|
||||||
log.debug("Resuming torrents: %s", ids)
|
|
||||||
client.core.resume_torrent(ids).addErrback(self._action_error)
|
|
||||||
elif data==ACTION.REMOVE:
|
|
||||||
def do_remove(tid,data):
|
|
||||||
ids = self._selected_torrent_ids()
|
|
||||||
if data:
|
|
||||||
wd = data==ACTION.REMOVE_DATA
|
|
||||||
for tid in ids:
|
|
||||||
log.debug("Removing torrent: %s,%d",tid,wd)
|
|
||||||
client.core.remove_torrent(tid,wd).addErrback(self._action_error)
|
|
||||||
if len(ids) == 1:
|
|
||||||
self.marked = []
|
|
||||||
self.last_mark = -1
|
|
||||||
return True
|
|
||||||
self.popup = SelectablePopup(self,"Confirm Remove",do_remove)
|
|
||||||
self.popup.add_line("Are you sure you want to remove the marked torrents?",selectable=False)
|
|
||||||
self.popup.add_line("Remove with _data",data=ACTION.REMOVE_DATA)
|
|
||||||
self.popup.add_line("Remove _torrent",data=ACTION.REMOVE_NODATA)
|
|
||||||
self.popup.add_line("_Cancel",data=0)
|
|
||||||
return False
|
|
||||||
elif data==ACTION.RECHECK:
|
|
||||||
log.debug("Rechecking torrents: %s", ids)
|
|
||||||
client.core.force_recheck(ids).addErrback(self._action_error)
|
|
||||||
elif data==ACTION.REANNOUNCE:
|
|
||||||
log.debug("Reannouncing torrents: %s",ids)
|
|
||||||
client.core.force_reannounce(ids).addErrback(self._action_error)
|
|
||||||
elif data==ACTION.DETAILS:
|
|
||||||
log.debug("Torrent details")
|
|
||||||
tid = self._current_torrent_id()
|
|
||||||
if tid:
|
|
||||||
self.show_torrent_details(tid)
|
|
||||||
else:
|
|
||||||
log.error("No current torrent in _torrent_action, this is a bug")
|
|
||||||
if len(ids) == 1:
|
|
||||||
self.marked = []
|
|
||||||
self.last_mark = -1
|
|
||||||
return True
|
|
||||||
|
|
||||||
def _show_torrent_actions_popup(self):
|
|
||||||
#cid = self._current_torrent_id()
|
|
||||||
if self.marked:
|
|
||||||
self.popup = SelectablePopup(self,"Torrent Actions",self._torrent_action)
|
|
||||||
self.popup.add_line("_Pause",data=ACTION.PAUSE)
|
|
||||||
self.popup.add_line("_Resume",data=ACTION.RESUME)
|
|
||||||
self.popup.add_divider()
|
|
||||||
self.popup.add_line("_Update Tracker",data=ACTION.REANNOUNCE)
|
|
||||||
self.popup.add_divider()
|
|
||||||
self.popup.add_line("Remo_ve Torrent",data=ACTION.REMOVE)
|
|
||||||
self.popup.add_line("_Force Recheck",data=ACTION.RECHECK)
|
|
||||||
self.popup.add_divider()
|
|
||||||
self.popup.add_line("Torrent _Details",data=ACTION.DETAILS)
|
|
||||||
|
|
||||||
def _torrent_filter(self, idx, data):
|
def _torrent_filter(self, idx, data):
|
||||||
if data==FILTER.ALL:
|
if data==FILTER.ALL:
|
||||||
|
@ -475,6 +399,14 @@ class AllTorrents(BaseMode):
|
||||||
def report_message(self,title,message):
|
def report_message(self,title,message):
|
||||||
self.messages.append((title,message))
|
self.messages.append((title,message))
|
||||||
|
|
||||||
|
def clear_marks(self):
|
||||||
|
self.marked = []
|
||||||
|
self.last_mark = -1
|
||||||
|
|
||||||
|
def set_popup(self,pu):
|
||||||
|
self.popup = pu
|
||||||
|
self.refresh()
|
||||||
|
|
||||||
def refresh(self,lines=None):
|
def refresh(self,lines=None):
|
||||||
#log.error("ref")
|
#log.error("ref")
|
||||||
#import traceback
|
#import traceback
|
||||||
|
@ -627,7 +559,7 @@ class AllTorrents(BaseMode):
|
||||||
|
|
||||||
elif c == curses.KEY_RIGHT:
|
elif c == curses.KEY_RIGHT:
|
||||||
# We enter a new mode for the selected torrent here
|
# We enter a new mode for the selected torrent here
|
||||||
tid = self._current_torrent_id()
|
tid = self.current_torrent_id()
|
||||||
if tid:
|
if tid:
|
||||||
self.show_torrent_details(tid)
|
self.show_torrent_details(tid)
|
||||||
return
|
return
|
||||||
|
@ -636,7 +568,8 @@ class AllTorrents(BaseMode):
|
||||||
elif (c == curses.KEY_ENTER or c == 10) and self.numtorrents:
|
elif (c == curses.KEY_ENTER or c == 10) and self.numtorrents:
|
||||||
self.marked.append(self.cursel)
|
self.marked.append(self.cursel)
|
||||||
self.last_mark = self.cursel
|
self.last_mark = self.cursel
|
||||||
self._show_torrent_actions_popup()
|
torrent_actions_popup(self,self._selected_torrent_ids(),details=True)
|
||||||
|
return
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if c > 31 and c < 256:
|
if c > 31 and c < 256:
|
||||||
|
@ -647,7 +580,7 @@ class AllTorrents(BaseMode):
|
||||||
if not self._scroll_down(1):
|
if not self._scroll_down(1):
|
||||||
effected_lines = [self.cursel-2,self.cursel-1]
|
effected_lines = [self.cursel-2,self.cursel-1]
|
||||||
elif chr(c) == 'i':
|
elif chr(c) == 'i':
|
||||||
cid = self._current_torrent_id()
|
cid = self.current_torrent_id()
|
||||||
if cid:
|
if cid:
|
||||||
self.popup = Popup(self,"Info",close_cb=lambda:self.updater.set_torrent_to_update(None,None))
|
self.popup = Popup(self,"Info",close_cb=lambda:self.updater.set_torrent_to_update(None,None))
|
||||||
self.popup.add_line("Getting torrent info...")
|
self.popup.add_line("Getting torrent info...")
|
||||||
|
|
|
@ -186,6 +186,18 @@ class BaseMode(CursesStdIO):
|
||||||
self.add_string(0, self.statusbars.topbar)
|
self.add_string(0, self.statusbars.topbar)
|
||||||
self.add_string(self.rows - 1, self.statusbars.bottombar)
|
self.add_string(self.rows - 1, self.statusbars.bottombar)
|
||||||
|
|
||||||
|
# This mode doesn't report errors
|
||||||
|
def report_message(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# This mode doesn't do anything with popups
|
||||||
|
def set_popup(self,popup):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# This mode doesn't support marking
|
||||||
|
def clear_marks(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
"""
|
"""
|
||||||
Refreshes the screen.
|
Refreshes the screen.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue