this small patch makes the plugin search for new lyrics on song change. I simply copied the code from the coverart plugin. Also, since I don't know a thing about python or it's syntax, there's a posibility that i've introduced a bug or two. Seems to work here though. -- ÐÐÐÑÐÑ ÐÐÐÑÑÐÑÐÐ /Viktor Kojouharov/ <vkojouharov gmail org>
Index: plugins/lyrics/lyrics.py =================================================================== RCS file: /cvs/gnome/rhythmbox/plugins/lyrics/lyrics.py,v retrieving revision 1.2 diff -u -r1.2 lyrics.py --- plugins/lyrics/lyrics.py 19 May 2006 08:46:26 -0000 1.2 +++ plugins/lyrics/lyrics.py 20 May 2006 21:17:35 -0000 @@ -212,6 +212,7 @@ self.window = None def activate (self, shell): + self.shell = shell self.action = gtk.Action ('ViewSongLyrics', _('Song L_yrics'), _('Display lyrics for the playing song'), 'rb-song-lyrics') @@ -227,11 +228,14 @@ sp = shell.get_player () self.pec_id = sp.connect('playing-song-changed', self.playing_entry_changed) + self.pc_id = sp.connect ('playing-changed', self.playing_changed) self.playing_entry_changed (sp, sp.get_playing_entry ()) self.csi_id = shell.connect('create_song_info', self.create_song_info) + self.current_entry = None def deactivate (self, shell): + self.shell = None uim = shell.get_ui_manager() uim.remove_ui (self.ui_id) @@ -242,16 +246,36 @@ sp = shell.get_player () sp.disconnect (self.pec_id) + sp.disconnect (self.pc_id) + sp.disconnect (self.csi_id) if self.window is not None: self.window.destroy () def playing_entry_changed (self, sp, entry): - if entry is not None: - self.action.set_sensitive (True) - else: - self.action.set_sensitive (False) + self.set_entry (entry) + + def playing_changed (self, sp, playing): + self.set_entry(sp.get_playing_entry ()) + + def set_entry (self, entry): + if entry is None: + return + + if entry == self.current_entry: + return + + if self.window is None: + return + + self.current_entry = entry + db = self.shell.get_property ("db") + sp = self.shell.get_player () + + self.window.buffer.set_text("Searching for lyrics...") + lyrics_grabber = LyricGrabber() + lyrics_grabber.get_lyrics(db, entry, self.window.buffer.set_text) def show_song_lyrics (self, action, shell): @@ -261,13 +285,8 @@ db = shell.get_property ("db") sp = shell.get_player () entry = sp.get_playing_entry () - - if entry is None: - return - self.window = LyricWindow(db, entry) - lyrics_grabber = LyricGrabber() - lyrics_grabber.get_lyrics(db, entry, self.window.buffer.set_text) + self.set_entry (entry) def create_song_info (self, shell, song_info, is_multiple):
Attachment:
signature.asc
Description: =?iso-8859-5?Q?=C2=DE=D2=D0?= =?iso-8859-5?Q?_=D5?= =?iso-8859-5?Q?_=E6=D8=E4=E0=DE=D2=DE?= =?iso-8859-5?Q?_=DF=DE=D4=DF=D8=E1=D0=DD=D0?= =?iso-8859-5?Q?_=E7=D0=E1=E2?= =?iso-8859-5?Q?_=DE=E2?= =?iso-8859-5?Q?_=DF=D8=E1=DC=DE=E2=DE?=