def __init__(self, totem):
        self._totem = totem

        self._dialog = DialogBox(self._totem, self)

        # Add sidebar GUI
        builder = Totem.plugin_load_interface ("lyrics-downloader",   #
                                               "ui/sidebar.ui", 
                                               True,
                                               self._totem.get_main_window (),
                                               self)
        # GUI objects
        self._container = builder.get_object ('lyrics_vbox')
        self._lyrics_buffer = builder.get_object('lyrics_text_buffer')
        self._get_button = builder.get_object('get_button')

        # Add sidebar to totem
        self._totem.add_sidebar_page ("lyrics-view", ("Lyrics view"), 
                                      self._container)
        self._container.show_all()

        # Controlling supported files
        self._totem.connect ('file-opened', self.__on_totem__file_opened)
        self._totem.connect ('file-closed', self.__on_totem__file_closed)

        # Setup signals
        self._get_button.set_sensitive(self._totem.is_playing () and
                                    self._check_is_mp3())
        self._get_button.connect('clicked', self._dialog.show_dialog)
class LyricsSidebar(object):
    
    def __init__(self, totem):
        self._totem = totem

        self._dialog = DialogBox(self._totem, self)

        # Add sidebar GUI
        builder = Totem.plugin_load_interface ("lyrics-downloader",   #
                                               "ui/sidebar.ui", 
                                               True,
                                               self._totem.get_main_window (),
                                               self)
        # GUI objects
        self._container = builder.get_object ('lyrics_vbox')
        self._lyrics_buffer = builder.get_object('lyrics_text_buffer')
        self._get_button = builder.get_object('get_button')

        # Add sidebar to totem
        self._totem.add_sidebar_page ("lyrics-view", ("Lyrics view"), 
                                      self._container)
        self._container.show_all()

        # Controlling supported files
        self._totem.connect ('file-opened', self.__on_totem__file_opened)
        self._totem.connect ('file-closed', self.__on_totem__file_closed)

        # Setup signals
        self._get_button.set_sensitive(self._totem.is_playing () and
                                    self._check_is_mp3())
        self._get_button.connect('clicked', self._dialog.show_dialog)

    def set_lyrics(self, lyrics):
        """
        
        Arguments:
        - `lyrics`:
        """
        start, end = self._lyrics_buffer.get_bounds() 
        self._lyrics_buffer.delete(start, end)
        begining = self._lyrics_buffer.get_start_iter()
        self._lyrics_buffer.insert(begining, lyrics)
        

    def destroy(self):
        if self._dialog:
            self._dialog.destroy()
        self._totem.remove_sidebar_page("lyrics-view")

    def _check_is_mp3 (self):
        """
        This check if the file playing is mp3

        """
        filename = self._totem.get_current_mrl ()
        if Gio.content_type_guess (filename, '')[0] == 'audio/mpeg':
            return True
        return False

    def __on_totem__file_opened(self, _totem, new_mrl):
        """
        This method will be called when a file is opened
        
        Arguments:
        - `_totem`: A TotemObject
        - `new_mrl`: the MRL opened
        """
        if self._check_is_mp3 ():
            self._get_button.set_sensitive(True)
        else:
            self._get_button.set_sensitive(False)

    def __on_totem__file_closed(self, _totem):
        """
        This method is called when the file is closed
    
        Arguments:
        - `_totem`: A TotemObject
        """

        self._get_button.set_sensitive(False)