Hi, Thanks to Luis Medinas, we've been notified that the Subtitle Downloader plugin in Totem was failing to open, and coupled with some bugs I spotted in the Jamendo plugin, the OpenSubtitles and Jamendo plugins in Totem are currently fairly broken. Can we get a code freeze break for the five patches in the following two bugs please? https://bugzilla.gnome.org/show_bug.cgi?id=646231 https://bugzilla.gnome.org/show_bug.cgi?id=646245 I've tested them, and they work fine; they're mostly trivial find-and-replace cleanups to fix changes in GTK+'s GIR since I last looked at the plugins. Patches attached for convenience. (Sorry for all the late breakage in Totem; it's mostly my fault for not keeping up with all the changes in g-i.) Thanks, Philip
From 2d12d7256124e87670047d67b3c43133052f05f7 Mon Sep 17 00:00:00 2001 From: Philip Withnall <philip tecnocode co uk> Date: Wed, 30 Mar 2011 15:49:43 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Bug=20646231=20=E2=80=94=20Subtitle=20downloader=20plugin=20broken=20on=202.91.93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix another API break in pygobject/GTK+'s GIR. This allows the Subtitle Downloader dialogue to actually open successfully. Closes: bgo#646231 --- src/plugins/opensubtitles/opensubtitles.py | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py index 791cc67..a5b5c50 100644 --- a/src/plugins/opensubtitles/opensubtitles.py +++ b/src/plugins/opensubtitles/opensubtitles.py @@ -364,8 +364,9 @@ class OpenSubtitles(gobject.GObject, Peas.Activatable): for lang in LANGUAGES_STR: it = languages.append(lang) if LANGUAGES[lang[1]] == self.model.lang: - parentit = sorted_languages.convert_child_iter_to_iter (it) - combobox.set_active_iter(parentit) + (success, parentit) = sorted_languages.convert_child_iter_to_iter (it) + if success: + combobox.set_active_iter (parentit) # Set up the results treeview renderer = Gtk.CellRendererText() -- 1.7.4.2
From 7b079b7a732dcfaeef4cf1c2fd351b6a0696cb92 Mon Sep 17 00:00:00 2001 From: Philip Withnall <philip tecnocode co uk> Date: Wed, 30 Mar 2011 17:15:16 +0100 Subject: [PATCH 1/2] jamendo: Fix encoding problems with non-ASCII track names Ensure that track names are uniformly decoded as UTF-8, and never re-encoded as ASCII. Attempting to re-encode them as ASCII was causing non-ASCII track names to (obviously) blow things up. Helps: bgo#646245 --- src/plugins/jamendo/jamendo.py | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/jamendo/jamendo.py b/src/plugins/jamendo/jamendo.py index 5619cf3..6b7082f 100644 --- a/src/plugins/jamendo/jamendo.py +++ b/src/plugins/jamendo/jamendo.py @@ -287,7 +287,7 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): # track title # Translators: this is the title of a track in Python format # (first argument is the track number, second is the track title) - tt = ('<small>%s</small>' % _(u'%02d. %s')) % \ + tt = (u'<small>%s</small>' % _(u'%02d. %s')) % \ (i+1, self._format_str(track['name'])) # track duration td = self._format_duration(track['duration']) @@ -603,7 +603,7 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): if not st: return '' try: - return escape(st.encode('utf8')) + return escape (unicode (st)) except: return st -- 1.7.4.2
From 9efd7d0a0686eb38413d3e0f3fde916eed370a5f Mon Sep 17 00:00:00 2001 From: Philip Withnall <philip tecnocode co uk> Date: Wed, 30 Mar 2011 17:16:27 +0100 Subject: [PATCH 2/2] jamendo: Fix various tree model/view problems due to changes in GTK+'s GIR This fixes clicking, double-clicking and right-clicking on albums and tracks, meaning the plugin is actually useful. Closes: bgo#646245 --- src/plugins/jamendo/jamendo.py | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/plugins/jamendo/jamendo.py b/src/plugins/jamendo/jamendo.py index 6b7082f..76e28a1 100644 --- a/src/plugins/jamendo/jamendo.py +++ b/src/plugins/jamendo/jamendo.py @@ -462,7 +462,8 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): item = self._get_selection()[0] # first item selected except: return - if len(path) == 1: + + if path.get_depth () == 1: self.add_album_to_playlist('replace', item) else: self.add_track_to_playlist('replace', item) @@ -472,19 +473,19 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): Called when the user clicked on a treeview element. """ try: - if evt.button.button == 3: + if evt.button == 3: (path, _, _, _) = tv.get_path_at_pos(int(evt.x), int(evt.y)) sel = tv.get_selection() - (rows, _) = sel.get_selected_rows() + (_, rows) = sel.get_selected_rows() if path not in rows: sel.unselect_all() sel.select_path(path) tv.grab_focus() - self.popup.popup_for_device(None, None, None, None, None, evt.button.button, evt.time) + self.popup.popup_for_device(None, None, None, None, None, evt.button, evt.time) return True - (_, event_x, event_y) = evt.get_coords() - path, c, x, y = tv.get_path_at_pos(int(event_x), int(event_y)) + (event_x, event_y) = evt.get_coords() + (path, c, x, y) = tv.get_path_at_pos(int(event_x), int(event_y)) if (path.get_depth() == 1): if tv.row_expanded(path): tv.collapse_row(path) @@ -494,7 +495,7 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): pass def on_treeview_selection_changed (self, selection): - (rows, _) = selection.get_selected_rows () + (_, rows) = selection.get_selected_rows () self.album_button.set_sensitive (len (rows) > 0) def on_previous_button_clicked(self, *args): @@ -565,7 +566,7 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): """ ret = [] sel = self.current_treeview.get_selection() - (rows, model) = sel.get_selected_rows() + (model, rows) = sel.get_selected_rows() for row in rows: it = model.get_iter(row) @@ -585,7 +586,7 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasGtk.Configurable): Update the state of the previous and next buttons. """ sel = self.current_treeview.get_selection() - (rows, model) = sel.get_selected_rows() + (model, rows) = sel.get_selected_rows() try: it = model.get_iter(rows[0]) except: -- 1.7.4.2
From a15871a06bc5cadbd9db929f8612611245ef21cc Mon Sep 17 00:00:00 2001 From: Philip Withnall <philip tecnocode co uk> Date: Wed, 30 Mar 2011 16:08:20 +0100 Subject: [PATCH 2/3] opensubtitles: Fix the GDK key constants used Guess what? Another bug caused by GIR changes for GDK! --- src/plugins/opensubtitles/opensubtitles.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py index a5b5c50..3b419ca 100644 --- a/src/plugins/opensubtitles/opensubtitles.py +++ b/src/plugins/opensubtitles/opensubtitles.py @@ -604,7 +604,7 @@ class OpenSubtitles(gobject.GObject, Peas.Activatable): # Callbacks def on_window__key_press_event(self, widget, event): - if event.keyval == Gdk.Escape: + if event.keyval == Gdk.KEY_Escape: self.dialog.destroy() self.dialog = None return True -- 1.7.4.2
From 642cc4229832e5c24d1a262eab3a36734eaffecf Mon Sep 17 00:00:00 2001 From: Philip Withnall <philip tecnocode co uk> Date: Wed, 30 Mar 2011 16:09:21 +0100 Subject: [PATCH 3/3] opensubtitles: Parse the subtitle file as a URI rather than a path This means the subtitle file can actually be saved, allowing subtitles to be downloaded and loaded correctly. --- src/plugins/opensubtitles/opensubtitles.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py index 3b419ca..1c4edb8 100644 --- a/src/plugins/opensubtitles/opensubtitles.py +++ b/src/plugins/opensubtitles/opensubtitles.py @@ -560,7 +560,7 @@ class OpenSubtitles(gobject.GObject, Peas.Activatable): if fp.query_exists(None): fp.delete(None) - fp = Gio.file_new_for_path(filename) + fp = Gio.file_new_for_uri (filename) suburi = fp.get_uri () subFile = fp.replace('', False) -- 1.7.4.2
Attachment:
signature.asc
Description: This is a digitally signed message part