From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- deluge/plugins/Label/deluge_label/gtkui/submenu.py | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 deluge/plugins/Label/deluge_label/gtkui/submenu.py (limited to 'deluge/plugins/Label/deluge_label/gtkui/submenu.py') diff --git a/deluge/plugins/Label/deluge_label/gtkui/submenu.py b/deluge/plugins/Label/deluge_label/gtkui/submenu.py new file mode 100644 index 0000000..54b6594 --- /dev/null +++ b/deluge/plugins/Label/deluge_label/gtkui/submenu.py @@ -0,0 +1,62 @@ +# +# Copyright (C) 2008 Martijn Voncken +# +# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with +# the additional special exception to link portions of this program with the OpenSSL library. +# See LICENSE for more details. +# + + +import logging + +from gi.repository.Gtk import Menu, MenuItem + +from deluge import component # for systray +from deluge.ui.client import client + +log = logging.getLogger(__name__) + + +# Deferred Translation +def _(message): + return message + + +NO_LABEL = _('No Label') +del _ + + +class LabelMenu(MenuItem): + def __init__(self): + MenuItem.__init__(self, _('Label')) # noqa: F821 + + self.sub_menu = Menu() + self.set_submenu(self.sub_menu) + self.items = [] + + # attach.. + self.sub_menu.connect('show', self.on_show, None) + + def get_torrent_ids(self): + return component.get('TorrentView').get_selected_torrents() + + def on_show(self, widget=None, data=None): + log.debug('label-on-show') + client.label.get_labels().addCallback(self.cb_labels) + + def cb_labels(self, labels): + for child in self.sub_menu.get_children(): + self.sub_menu.remove(child) + for label in [NO_LABEL] + list(labels): + if label == NO_LABEL: + item = MenuItem(_(NO_LABEL)) # noqa: F821 + else: + item = MenuItem(label) + item.connect('activate', self.on_select_label, label) + self.sub_menu.append(item) + self.show_all() + + def on_select_label(self, widget=None, label_id=None): + log.debug('select label:%s,%s', label_id, self.get_torrent_ids()) + for torrent_id in self.get_torrent_ids(): + client.label.set_torrent(torrent_id, label_id) -- cgit v1.2.3