summaryrefslogtreecommitdiffstats
path: root/deluge/plugins/Label/deluge_label/gtkui/__init__.py
blob: eeaeadcc88b5da1d6473dc0a660aeab081ed0815 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# -*- coding: utf-8 -*-
#
# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
#
# 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.
#

from __future__ import unicode_literals

import logging

from deluge import component  # for systray
from deluge.plugins.pluginbase import Gtk3PluginBase

from . import label_config, sidebar_menu, submenu

log = logging.getLogger(__name__)

NO_LABEL = 'No Label'


def cell_data_label(column, cell, model, row, data):
    cell.set_property('text', str(model.get_value(row, data)))


class GtkUI(Gtk3PluginBase):
    def start(self):
        if self.label_menu:
            self.label_menu.on_show()

    def enable(self):
        self.plugin = component.get('PluginManager')
        self.torrentmenu = component.get('MenuBar').torrentmenu
        self.label_menu = None
        self.labelcfg = None
        self.sidebar_menu = None
        self.load_interface()

    def disable(self):
        if self.label_menu in self.torrentmenu.get_children():
            self.torrentmenu.remove(self.label_menu)

        self.labelcfg.unload()
        self.sidebar_menu.unload()
        del self.sidebar_menu

        component.get('TorrentView').remove_column(_('Label'))

    def load_interface(self):
        # sidebar
        # disabled
        if not self.sidebar_menu:
            self.sidebar_menu = sidebar_menu.LabelSidebarMenu()
        # self.sidebar.load()

        # menu:
        log.debug('add items to torrentview-popup menu.')
        self.label_menu = submenu.LabelMenu()
        self.torrentmenu.append(self.label_menu)
        self.label_menu.show_all()

        # columns:
        self.load_columns()

        # config:
        if not self.labelcfg:
            self.labelcfg = label_config.LabelConfig(self.plugin)
        self.labelcfg.load()

        log.debug('Finished loading Label plugin')

    def load_columns(self):
        log.debug('add columns')

        component.get('TorrentView').add_text_column(_('Label'), status_field=['label'])