summaryrefslogtreecommitdiffstats
path: root/deluge/plugins/Toggle/deluge_toggle/gtkui.py
blob: f9d8cf917f93affe3b0aacdc0270541608ae8f65 (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
# -*- coding: utf-8 -*-
#
# Copyright (C) 2010 John Garland <johnnybg+deluge@gmail.com>
#
# Basic plugin template created by:
# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
# Copyright (C) 2007-2009 Andrew Resch <andrewresch@gmail.com>
# Copyright (C) 2009 Damien Churchill <damoxc@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.
#

import logging

import deluge.component as component
from deluge.plugins.pluginbase import Gtk3PluginBase
from deluge.ui.client import client

log = logging.getLogger(__name__)


class GtkUI(Gtk3PluginBase):
    def enable(self):
        self.core = client.toggle
        self.plugin = component.get('PluginManager')
        self.separator = self.plugin.add_toolbar_separator()
        self.button = self.plugin.add_toolbar_button(
            self._on_button_clicked,
            label='Pause Session',
            stock='gtk-media-pause',
            tooltip='Pause the session',
        )

    def disable(self):
        component.get('PluginManager').remove_toolbar_button(self.button)
        component.get('PluginManager').remove_toolbar_button(self.separator)

    def update(self):
        def _on_get_status(paused):
            if paused:
                self.button.set_label('Resume Session')
                self.button.set_tooltip_text('Resume the session')
                self.button.set_stock_id('gtk-media-play')
            else:
                self.button.set_label('Pause Session')
                self.button.set_tooltip_text('Pause the session')
                self.button.set_stock_id('gtk-media-pause')

        self.core.get_status().addCallback(_on_get_status)

    def _on_button_clicked(self, widget):
        self.core.toggle()