[rhythmbox/gobject-introspection: 18/34] port lyrics plugin to gi



commit 5388a52acea700f60290888be440590c438bf3ba
Author: Jonathan Matthew <jonathan d14n org>
Date:   Tue Jul 13 13:46:22 2010 +1000

    port lyrics plugin to gi

 plugins/lyrics/lyrics/LyricsConfigureDialog.py |   33 ++++++------
 plugins/lyrics/lyrics/LyricsParse.py           |   10 ++--
 plugins/lyrics/lyrics/__init__.py              |   65 ++++++++++++------------
 3 files changed, 54 insertions(+), 54 deletions(-)
---
diff --git a/plugins/lyrics/lyrics/LyricsConfigureDialog.py b/plugins/lyrics/lyrics/LyricsConfigureDialog.py
index 1a5877d..284d429 100644
--- a/plugins/lyrics/lyrics/LyricsConfigureDialog.py
+++ b/plugins/lyrics/lyrics/LyricsConfigureDialog.py
@@ -27,16 +27,18 @@
 
 from LyricsSites import lyrics_sites
 
-import gobject, gtk
-import gconf
+import gobject
+import gi
+
 from os import system, path
+from gi.repository import Gtk, GConf
 
 class LyricsConfigureDialog (object):
 	def __init__(self, builder_file, gconf_keys):
-		self.gconf = gconf.client_get_default()
+		self.gconf = GConf.Client.get_default()
 		self.gconf_keys = gconf_keys
 
-		builder = gtk.Builder()
+		builder = Gtk.Builder()
 		builder.add_from_file(builder_file)
 			
 		self.dialog = builder.get_object("preferences_dialog")
@@ -58,7 +60,7 @@ class LyricsConfigureDialog (object):
 		self.site_checks = {}
 		for s in lyrics_sites:
 			site_id = s['id']
-			checkbutton = gtk.CheckButton(label = s['name'])
+			checkbutton = Gtk.CheckButton(label = s['name'])
 			checkbutton.set_active(s['id'] in engines)
 			self.site_checks[site_id] = checkbutton
 			site_box.pack_start(checkbutton)
@@ -66,10 +68,10 @@ class LyricsConfigureDialog (object):
 		site_box.show_all()
 
 	def dialog_response(self, dialog, response):
-		if response == gtk.RESPONSE_OK:
+		if response == Gtk.ResponseType.OK:
 			self.set_values()
 			self.dialog.hide()
-		elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
+		elif response == Gtk.ResponseType.CANCEL or response == Gtk.ResponseType.DELETE_EVENT:
 			self.dialog.hide()
 		else:
 			print "unexpected response type"
@@ -88,23 +90,23 @@ class LyricsConfigureDialog (object):
 		if len(self.path_display.get_text()) is not 0:
 			self.folder = self.path_display.get_text()
 
-		self.gconf.set_list(self.gconf_keys['engines'], gconf.VALUE_STRING, engines)
+		self.gconf.set_list(self.gconf_keys['engines'], GConf.ValueType.STRING, engines)
 		self.gconf.set_string(self.gconf_keys['folder'], self.folder)
 
 	def choose_callback(self, widget):
 		def response_handler(widget, response):
-			if response == gtk.RESPONSE_OK:
+			if response == Gtk.ResponseType.OK:
 				path = self.chooser.get_filename()
 				self.chooser.destroy()
 				self.path_display.set_text(path)
 			else:
 				self.chooser.destroy()
 
-		buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE,
-				gtk.STOCK_OK, gtk.RESPONSE_OK)
-		self.chooser = gtk.FileChooserDialog(title=_("Choose lyrics folder..."),
+		buttons = (Gtk.STOCK_CLOSE, Gtk.ResponseTypeCLOSE,
+				Gtk.STOCK_OK, Gtk.ResponseType.OK)
+		self.chooser = Gtk.FileChooserDialog(title=_("Choose lyrics folder..."),
 					parent=None,
-					action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+					action=Gtk.FileChooserAction.SELECT_FOLDER,
 					buttons=buttons)
 		self.chooser.connect("response", response_handler)
 		self.chooser.set_modal(True)
@@ -116,15 +118,14 @@ class LyricsConfigureDialog (object):
 	
 	def get_prefs (self):
 		try:
-			engines = gconf.client_get_default().get_list(self.gconf_keys['engines'], gconf.VALUE_STRING)
+			engines = GConf.Client.get_default().get_list(self.gconf_keys['engines'], GConf.ValueType.STRING)
 			if engines is None:
 				engines = []
 		except gobject.GError, e:
 			print e
 			engines = []
-		folder = gconf.client_get_default().get_string(self.gconf_keys['folder'])
+		folder = GConf.Client.get_default().get_string(self.gconf_keys['folder'])
 
 		print "lyric engines: " + str (engines)
 		print "lyric folder: " + folder
 		return (engines, folder)
-
diff --git a/plugins/lyrics/lyrics/LyricsParse.py b/plugins/lyrics/lyrics/LyricsParse.py
index 1636b72..610791a 100644
--- a/plugins/lyrics/lyrics/LyricsParse.py
+++ b/plugins/lyrics/lyrics/LyricsParse.py
@@ -24,13 +24,14 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
 
-
 import urllib
 import re
 import gobject
-import gconf
 import rb
 
+import gi
+from gi.repository import GConf
+
 from LyricsSites import lyrics_sites
 
 class Parser (object):
@@ -39,7 +40,8 @@ class Parser (object):
 		self.artist = artist
 
 		try:
-			self.engines = gconf.client_get_default().get_list(gconf_keys['engines'], gconf.VALUE_STRING)
+			gconf = GConf.Client.get_default()
+			self.engines = gconf.get_list(gconf_keys['engines'], gconf.VALUE_STRING)
 			if self.engines is None:
 				self.engines = []
 		except gobject.GError, e:
@@ -68,5 +70,3 @@ class Parser (object):
 
 	def get_lyrics(self, callback, *data):
 		rb.Coroutine (self.searcher, callback, *data).begin ()
-
-
diff --git a/plugins/lyrics/lyrics/__init__.py b/plugins/lyrics/lyrics/__init__.py
index 49f4372..beba592 100644
--- a/plugins/lyrics/lyrics/__init__.py
+++ b/plugins/lyrics/lyrics/__init__.py
@@ -25,14 +25,13 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
-#
-# TODO:
-# - check that the lyrics returned even remotely match the request?
 
 import os, re
-import gtk
-import gconf
-import rhythmdb, rb
+import gi
+
+import rb
+from gi.repository import Gtk, GConf
+from gi.repository import RB, RhythmDB
 
 import LyricsParse
 from LyricsConfigureDialog import LyricsConfigureDialog
@@ -58,18 +57,18 @@ gconf_keys = {	'engines' : '/apps/rhythmbox/plugins/lyrics/engines',
 
 
 def create_lyrics_view():
-	tview = gtk.TextView()
-	tview.set_wrap_mode(gtk.WRAP_WORD)
+	tview = Gtk.TextView()
+	tview.set_wrap_mode(Gtk.WrapMode.WORD)
 	tview.set_editable(False)
 	tview.set_left_margin(6)
 
 	tview.set_size_request (0, 0)
-	sw = gtk.ScrolledWindow()
+	sw = Gtk.ScrolledWindow()
 	sw.add(tview)
-	sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-	sw.set_shadow_type(gtk.SHADOW_IN)
+	sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
+	sw.set_shadow_type(Gtk.ShadowType.IN)
 
-	vbox = gtk.VBox(spacing=12)
+	vbox = Gtk.VBox(spacing=12)
 	vbox.pack_start(sw, expand=True)
 	
 	return (vbox, tview.get_buffer(), tview)
@@ -108,8 +107,8 @@ def get_artist_and_title(db, entry):
 	if stream_song_title is not None:
 		(artist, title) = extract_artist_and_title(stream_song_title)
 	else:
-		artist = db.entry_get(entry, rhythmdb.PROP_ARTIST)
-		title = db.entry_get(entry, rhythmdb.PROP_TITLE)
+		artist = db.entry_get(entry, RhythmDB.PropType.ARTIST)
+		title = db.entry_get(entry, RhythmDB.PropType.TITLE)
 	return (artist, title)
 
 def extract_artist_and_title(stream_song_title):
@@ -128,9 +127,9 @@ def extract_artist_and_title(stream_song_title):
 	return (artist, title)
 	
 def build_cache_path(artist, title):
-	folder = gconf.client_get_default().get_string(gconf_keys['folder'])
+	folder = GConf.Client.get_default().get_string(gconf_keys['folder'])
 	if folder is None or folder == "":
-		folder = os.path.join(rb.user_cache_dir(), "lyrics")
+		folder = os.path.join(RB.user_cache_dir(), "lyrics")
 
 	lyrics_folder = os.path.expanduser (folder)
 	if not os.path.exists (lyrics_folder):
@@ -226,15 +225,15 @@ class LyricPane(object):
 			self.get_lyrics()
 	   
 
-		self.edit = gtk.ToggleButton(_("_Edit"))
+		self.edit = Gtk.ToggleButton(label=_("_Edit"))
 		self.edit.connect('toggled', edit_callback)
-		self.discard = gtk.Button(_("_Search again"))
+		self.discard = Gtk.Button(label=_("_Search again"))
 		self.discard.connect('clicked', discard_callback)
-		self.clear = gtk.Button(stock=gtk.STOCK_CLEAR)
+		self.clear = Gtk.Button(stock=Gtk.STOCK_CLEAR)
 		self.clear.connect('clicked', clear_callback)
-		self.hbox = gtk.HButtonBox()
+		self.hbox = Gtk.HButtonBox()
 		self.hbox.set_spacing (6)
-		self.hbox.set_layout(gtk.BUTTONBOX_END)
+		self.hbox.set_layout(Gtk.ButtonBoxStyle.END)
 		self.hbox.add(self.edit)
 		self.hbox.add(self.clear)
 		self.hbox.add(self.discard)
@@ -291,20 +290,20 @@ class LyricPane(object):
 		lyrics_grabber.search_lyrics(self.__got_lyrics)
 
 
-class LyricWindow (gtk.Window):
+class LyricWindow (Gtk.Window):
 
 	def __init__(self, shell):
-		gtk.Window.__init__(self)
+		Gtk.Window.__init__(self)
 		self.shell = shell
 		self.set_border_width(12)
 
-		close = gtk.Button(stock=gtk.STOCK_CLOSE)
+		close = Gtk.Button(stock=Gtk.STOCK_CLOSE)
 		close.connect('clicked', lambda w: self.destroy())
 	
 		(lyrics_view, buffer, tview) = create_lyrics_view()
 		self.buffer = buffer
-		bbox = gtk.HButtonBox()
-		bbox.set_layout(gtk.BUTTONBOX_END)
+		bbox = Gtk.HButtonBox()
+		bbox.set_layout(Gtk.ButtonBoxStyle.END)
 		bbox.pack_start(close)
 		lyrics_view.pack_start(bbox, expand=False)
 
@@ -318,7 +317,7 @@ class LyricWindow (gtk.Window):
 	def destroy(self):
 		sp = self.shell.get_player ()
 		sp.disconnect (self.ppc_id)
-		gtk.Window.destroy(self)
+		Gtk.Window.destroy(self)
 
 	def playing_property_changed(self, player, uri, prop, old_val, new_val):
 		if (prop == STREAM_SONG_TITLE):
@@ -336,20 +335,20 @@ class LyricWindow (gtk.Window):
 		lyrics_grabber.search_lyrics(self.__got_lyrics)
 
 
-class LyricsDisplayPlugin(rb.Plugin):
+class LyricsDisplayPlugin(RB.Plugin):
 
 	def __init__ (self):
-		rb.Plugin.__init__ (self)
+		RB.Plugin.__init__ (self)
 		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')
+		self.action = Gtk.Action (name='ViewSongLyrics', label=_('Song L_yrics'),
+					  tooltip=_('Display lyrics for the playing song'),
+					  stock='rb-song-lyrics')
 		self.activate_id = self.action.connect ('activate', self.show_song_lyrics, shell)
 		
-		self.action_group = gtk.ActionGroup ('SongLyricsPluginActions')
+		self.action_group = Gtk.ActionGroup (name='SongLyricsPluginActions')
 		self.action_group.add_action_with_accel (self.action, "<control>L")
 		
 		uim = shell.get_ui_manager ()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]