diff options
Diffstat (limited to '')
-rw-r--r-- | deluge/ui/gtk3/sidebar.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/deluge/ui/gtk3/sidebar.py b/deluge/ui/gtk3/sidebar.py new file mode 100644 index 0000000..1d75191 --- /dev/null +++ b/deluge/ui/gtk3/sidebar.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2007 Andrew Resch <andrewresch@gmail.com> +# 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 gi.repository.Gtk import Label, PolicyType, ScrolledWindow + +import deluge.component as component +from deluge.configmanager import ConfigManager + +log = logging.getLogger(__name__) + + +class SideBar(component.Component): + """ + manages the sidebar-tabs. + purpose : plugins + """ + + def __init__(self): + component.Component.__init__(self, 'SideBar') + main_builder = component.get('MainWindow').get_builder() + self.notebook = main_builder.get_object('sidebar_notebook') + self.config = ConfigManager('gtk3ui.conf') + + # Tabs holds references to the Tab widgets by their name + self.tabs = {} + + # Hide if necessary + self.visible(self.config['show_sidebar']) + + def visible(self, visible): + self.notebook.show() if visible else self.notebook.hide() + self.config['show_sidebar'] = visible + + def add_tab(self, widget, tab_name, label): + """Adds a tab object to the notebook.""" + log.debug('add tab: %s', tab_name) + self.tabs[tab_name] = widget + scrolled = ScrolledWindow() + scrolled.set_policy(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC) + scrolled.add(widget) + self.notebook.insert_page(scrolled, Label(label=label), -1) + scrolled.show_all() + + self.after_update() + + def remove_tab(self, tab_name): + """Removes a tab by name.""" + self.notebook.remove_page(self.notebook.page_num(self.tabs[tab_name])) + del self.tabs[tab_name] + + self.after_update() + + def after_update(self): + # If there are no tabs visible, then do not show the notebook + if len(self.tabs) == 0: + self.visible(False) + + # If there is 1 tab, hide the tab-headers + if len(self.tabs) == 1: + self.notebook.set_show_tabs(False) + else: + self.notebook.set_show_tabs(True) |