# __init__.py # Copyright (C) 2007,2008 Steven Brown # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . import rhythmdb, rb import gobject, gtk import gconf from ConfigureDialog import ConfigureDialog toolbar_button_key = 'toolbar_button' context_menu_key = 'context_menu' gconf_keys = { 'toolbar_button' : '/apps/rhythmbox/plugins/jump-to-playing/show_in_toolbar_button', 'context_menu': '/apps/rhythmbox/plugins/jump-to-playing/show_in_context_menu' } ui_toolbar_button = """ """ ui_context_menu = """ """ class JumpToPlaying (rb.Plugin): def __init__ (self): rb.Plugin.__init__(self) def update_ui (self): uim = self.shell.get_ui_manager() tb = self.get_gconf_key(toolbar_button_key) cm = self.get_gconf_key(context_menu_key) if (("1" == tb) and (None == self.ui_tb)): self.ui_tb = uim.add_ui_from_string(ui_toolbar_button) elif (("0" == tb) and (self.ui_tb != None)): uim.remove_ui(self.ui_tb) self.ui_tb = None if (("1" == cm) and (None == self.ui_cm)): self.ui_cm = uim.add_ui_from_string(ui_context_menu) elif (("0" == cm) and (self.ui_cm != None)): uim.remove_ui(self.ui_cm) self.ui_cm = None uim.ensure_update() def activate (self, shell): uim = shell.get_ui_manager() self.shell = shell # initialize self.toolbar_button and self.context_menu self.check_gconf_keys_initialised() # connect to action toggled signal for small display self.ui_tb = None self.ui_cm = None self.update_ui() # hide the button in Small Display mode small_display_toggle = uim.get_widget ("/MenuBar/ViewMenu/ViewSmallDisplayMenu") tb_widget = uim.get_widget ("/ToolBar/PluginPlaceholder/ToolBarJumpToPlaying") self.tb_conn_id = small_display_toggle.connect ('toggled', self.hide_if_active, tb_widget) br_widget = uim.get_widget ("/ToolBar/Browse") self.br_conn_id = small_display_toggle.connect ('toggled', self.hide_if_active, br_widget) # start hidden if in small_display is_small = gconf.client_get_default().get_bool("/apps/rhythmbox/ui/small_display") if (is_small): tb_widget.hide() br_widget.hide() def deactivate (self, shell): uim = shell.get_ui_manager() if (self.ui_tb != None): uim.remove_ui(self.ui_tb) del self.ui_tb if (self.ui_cm != None): uim.remove_ui(self.ui_cm) del self.ui_cm small_display_toggle = uim.get_widget ("/MenuBar/ViewMenu/ViewSmallDisplayMenu") small_display_toggle.disconnect (self.br_conn_id) small_display_toggle.disconnect (self.tb_conn_id) uim.ensure_update() def create_configure_dialog (self, dialog = None): if not dialog: glade_file = self.find_file("jump-to-playing-prefs.glade") dialog = ConfigureDialog (glade_file, gconf_keys, self).get_dialog() dialog.present() return dialog #check if keys exist in gconf, if not create default configuration def check_gconf_keys_initialised (self): self.toolbar_button, self.context_menu = self.get_prefs() if (self.toolbar_button is None): self.set_gconf_key('toolbar_button', "1") if (self.context_menu is None): self.set_gconf_key('context_menu', "1") self.toolbar_button, self.context_menu = self.get_prefs() def get_prefs (self): toolbar_button = self.get_gconf_key('toolbar_button') context_menu = self.get_gconf_key('context_menu') return (toolbar_button, context_menu) def set_gconf_key (self, key, val): if (key not in (toolbar_button_key, context_menu_key) or val not in ("0","1")): raise Exception, ('Unknown key or value -> ' + key + ":" + val) else: gconf.client_get_default().set_string(gconf_keys[key], val) def get_gconf_key (self, key): if (key not in (toolbar_button_key, context_menu_key)): raise Exception, ('Unknown key -> ' + key) else: return (gconf.client_get_default().get_string(gconf_keys[key])) def hide_if_active (self, toggle_widget, ui_element): "Hides ui_element if toggle_widget is active." if (toggle_widget.get_active()): ui_element.hide() else: ui_element.show()