# __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()