def do_activate(self):
        # initialise the utils module
        LastFMExtensionUtils.init(rb.find_plugin_file(self, LASTFM_ICON))

        # create the settings for the plugin
        settings = LastFMExtensionUtils.Settings(self)

        # get the settings section for the connection
        self.settings = settings.get_section(Keys.CONNECTION_SECTION)

        # connect a signal to the connected property
        self.settings.connect(Keys.CONNECTED, self.conection_changed)

        # asign variables and initialise the network and extensions
        self.conection_changed(self.connected)

        # initialise the extensions bag
        self.shell = self.object
        self.uim = self.object.props.ui_manager
        LastFMExtensionBag.initialise_instance(self, settings)
    def do_activate(self):
        #obtenemos el shell y el player
        shell = self.object
        player = shell.props.shell_player

        #inicializamos el modulo de notificacion
        LastFMExtensionUtils.init( rb.find_plugin_file( self, LASTFM_ICON ) )

        #obtenemos el ui manager
        manager = shell.props.ui_manager

        #creamos el action group
        self.action_group = Gtk.ActionGroup( 'LastFMExtensionActions' )

        #creamos el action love
        action_love = Gtk.Action( 'LoveTrack', _('_Love Track'),
                                _("Love this track."),
                                None )

        #creamos y asignamos el icono al action love
        icon = Gio.FileIcon.new( Gio.File.new_for_path( 
                                      rb.find_plugin_file( self, LOVE_ICON ) ) )
        action_love.set_gicon( icon )

        #conectamos la señal al método love_track
        self.love_id = action_love.connect( 'activate', self.love_track )

        #agregamos el action al action group
        self.action_group.add_action( action_love )

        #creamos el action ban
        action_ban = Gtk.Action('BanTrack', _('_Ban Track'),
                                _("Ban this track."),
                                None)

        #creamos y asignamos el icono al action love
        icon = Gio.FileIcon.new( Gio.File.new_for_path( 
                                       rb.find_plugin_file( self, BAN_ICON ) ) )
        action_ban.set_gicon( icon )

        #conectamos la señal al método love_track
        self.ban_id = action_ban.connect( 'activate', self.ban_track)

        #agregamos el action al action group
        self.action_group.add_action( action_ban )

        #insertamos el action group y guardamos el ui_id
        manager.insert_action_group( self.action_group, -1 )
        self.ui_id = manager.add_ui_from_string( ui_str )

        #disableamos los botones
        self.enable_buttons( False )

        #updateamos la ui
        manager.ensure_update()        
        
        #guardamos la db como atributo
        self.db = shell.get_property('db')

        #guardamos el player en una variable para tenerla mas a mano
        self.player = player
        
        #conectamos la señal playing_changed para activar o desactivar
        #los botones de love/ban
        self.benable_id = player.connect( 'playing-changed', lambda sp, playing: 
              self.enable_buttons( playing and self.settings[Keys.CONNECTED] ) )
              
        #conectamos la señal para conectar o desconectar
        self.settings.connect( 'changed::connected', self.conection_changed )      
        
        #conectamos una señal con la setting de play count para
        #activar/desactivar la funcionalidad cuando sea necesario
        self.playcount_id = None
        self.settings.connect( 'changed::%s' % Keys.PLAY_COUNT,
                                self.connect_playcount )
                                              
        #conectamos una señal con la setting de loved para activar/desactivar
        #la funcionalidad cuando sea necesario
        self.loved_id = None
        self.settings.connect( 'changed::%s' % Keys.LOVED, self.connect_loved )        
        
        #inicializamos la network si estan los datos disponibles
        self.conection_changed( self.settings, Keys.CONNECTED )