From 32d539277633a03710877ab0c37cf33d2da8584e Mon Sep 17 00:00:00 2001 From: Calum Lind Date: Fri, 16 Jun 2017 16:49:09 +0100 Subject: [PATCH] [#2499|GTKUI] Add key shortcuts for changing queue position - Ctrl+Alt+[Shift]+{Up|Down} --- ChangeLog | 5 +++++ deluge/ui/gtkui/torrentview.py | 32 +++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5dead9ea8..caa611439 100644 --- a/ChangeLog +++ b/ChangeLog @@ -35,6 +35,11 @@ torrent's status tab. * #2093: Make torrent opening compatible with all unicode paths. * #1084: Fix magnet association button on Windows + * Add keyboard shortcuts for changing queue position: + - Up: Ctrl+Alt+Up + - Down: Ctrl+Alt+Down + - Top: Ctrl+Alt+Shift+Up + - Bottom: Ctrl+Alt+Shift+Down ==== WebUI ==== * Server (deluge-web) now daemonizes by default, use -d or --do-not-daemonize to disable. diff --git a/deluge/ui/gtkui/torrentview.py b/deluge/ui/gtkui/torrentview.py index 97e579593..9e24428f8 100644 --- a/deluge/ui/gtkui/torrentview.py +++ b/deluge/ui/gtkui/torrentview.py @@ -15,7 +15,7 @@ from locale import strcoll from gobject import TYPE_UINT64, idle_add from gtk import ENTRY_ICON_SECONDARY -from gtk.gdk import SHIFT_MASK, keyval_name +from gtk.gdk import CONTROL_MASK, MOD1_MASK, SHIFT_MASK, keyval_name from twisted.internet import reactor import deluge.component as component @@ -26,6 +26,8 @@ from deluge.ui.gtkui.removetorrentdialog import RemoveTorrentDialog log = logging.getLogger(__name__) +CTRL_ALT_MASK = CONTROL_MASK | MOD1_MASK + def str_nocase_sort(model, iter1, iter2, data): """ @@ -721,6 +723,34 @@ class TorrentView(ListView, component.Component): if func: return func(event) + def keypress_up(self, event): + """Handle any Up arrow keypresses""" + log.debug('keypress_up') + torrents = self.get_selected_torrents() + if not torrents: + return + + # Move queue position up with Ctrl+Alt or Ctrl+Alt+Shift + if event.get_state() & CTRL_ALT_MASK: + if event.get_state() & SHIFT_MASK: + client.core.queue_top(torrents) + else: + client.core.queue_up(torrents) + + def keypress_down(self, event): + """Handle any Down arrow keypresses""" + log.debug('keypress_down') + torrents = self.get_selected_torrents() + if not torrents: + return + + # Move queue position down with Ctrl+Alt or Ctrl+Alt+Shift + if event.get_state() & CTRL_ALT_MASK: + if event.get_state() & SHIFT_MASK: + client.core.queue_bottom(torrents) + else: + client.core.queue_down(torrents) + def keypress_delete(self, event): log.debug('keypress_delete') torrents = self.get_selected_torrents()