split off torrent actions popup
This commit is contained in:
parent
f748660cac
commit
183a97785b
|
@ -47,6 +47,7 @@ from popup import Popup,SelectablePopup,MessagePopup
|
|||
from add_util import add_torrent
|
||||
from input_popup import InputPopup
|
||||
from torrentdetail import TorrentDetail
|
||||
from torrent_actions import torrent_actions_popup
|
||||
|
||||
import format_utils
|
||||
|
||||
|
@ -106,19 +107,6 @@ Enter - Show torrent actions popup. Here you can do things like
|
|||
"""
|
||||
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:
|
||||
ALL=0
|
||||
ACTIVE=1
|
||||
|
@ -268,7 +256,7 @@ class AllTorrents(BaseMode):
|
|||
self.curoff = self.cursel - self.rows + 5
|
||||
return prevoff != self.curoff
|
||||
|
||||
def _current_torrent_id(self):
|
||||
def current_torrent_id(self):
|
||||
if self._sorted_ids:
|
||||
return self._sorted_ids[self.cursel-1]
|
||||
else:
|
||||
|
@ -341,70 +329,6 @@ class AllTorrents(BaseMode):
|
|||
td = TorrentDetail(self,tid,self.stdscr,self.encoding)
|
||||
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):
|
||||
if data==FILTER.ALL:
|
||||
|
@ -475,6 +399,14 @@ class AllTorrents(BaseMode):
|
|||
def report_message(self,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):
|
||||
#log.error("ref")
|
||||
#import traceback
|
||||
|
@ -627,7 +559,7 @@ class AllTorrents(BaseMode):
|
|||
|
||||
elif c == curses.KEY_RIGHT:
|
||||
# We enter a new mode for the selected torrent here
|
||||
tid = self._current_torrent_id()
|
||||
tid = self.current_torrent_id()
|
||||
if tid:
|
||||
self.show_torrent_details(tid)
|
||||
return
|
||||
|
@ -636,7 +568,8 @@ class AllTorrents(BaseMode):
|
|||
elif (c == curses.KEY_ENTER or c == 10) and self.numtorrents:
|
||||
self.marked.append(self.cursel)
|
||||
self.last_mark = self.cursel
|
||||
self._show_torrent_actions_popup()
|
||||
torrent_actions_popup(self,self._selected_torrent_ids(),details=True)
|
||||
return
|
||||
|
||||
else:
|
||||
if c > 31 and c < 256:
|
||||
|
@ -647,7 +580,7 @@ class AllTorrents(BaseMode):
|
|||
if not self._scroll_down(1):
|
||||
effected_lines = [self.cursel-2,self.cursel-1]
|
||||
elif chr(c) == 'i':
|
||||
cid = self._current_torrent_id()
|
||||
cid = self.current_torrent_id()
|
||||
if cid:
|
||||
self.popup = Popup(self,"Info",close_cb=lambda:self.updater.set_torrent_to_update(None,None))
|
||||
self.popup.add_line("Getting torrent info...")
|
||||
|
|
|
@ -186,6 +186,18 @@ class BaseMode(CursesStdIO):
|
|||
self.add_string(0, self.statusbars.topbar)
|
||||
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):
|
||||
"""
|
||||
Refreshes the screen.
|
||||
|
|
Loading…
Reference in New Issue