totem r5891 - in trunk: . po src/plugins/jamendo



Author: pwithnall
Date: Sat Jan  3 18:49:04 2009
New Revision: 5891
URL: http://svn.gnome.org/viewvc/totem?rev=5891&view=rev

Log:
2009-01-03  Philip Withnall  <philip tecnocode co uk>

	* src/plugins/jamendo/Makefile.am:
	* src/plugins/jamendo/jamendo.glade:
	* src/plugins/jamendo/jamendo.py: Convert the Jamendo plugin to
	GtkBuilder and fix some translation and UI issues. With 
contributions
	from izi <izimobil gmail com>. (Closes: #566123)
	* po/POTFILES.in: Ensure Jamendo plugin's files are translated.
	(Closes: #566123)



Added:
   trunk/src/plugins/jamendo/jamendo.ui
Removed:
   trunk/src/plugins/jamendo/jamendo.glade
Modified:
   trunk/ChangeLog
   trunk/po/ChangeLog
   trunk/po/POTFILES.in
   trunk/src/plugins/jamendo/Makefile.am
   trunk/src/plugins/jamendo/jamendo.py

Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in	(original)
+++ trunk/po/POTFILES.in	Sat Jan  3 18:49:04 2009
@@ -43,7 +43,8 @@
 src/plugins/galago/totem-galago.c
 [type: gettext/ini]src/plugins/gromit/gromit.totem-plugin.in
 src/plugins/gromit/totem-gromit.c
-src/plugins/jamendo/jamendo.glade
+[type: gettext/glade]src/plugins/jamendo/jamendo.ui
+[type: gettext/ini]src/plugins/jamendo/jamendo.totem-plugin.in
 src/plugins/jamendo/jamendo.py
 [type: gettext/ini]src/plugins/lirc/lirc.totem-plugin.in
 src/plugins/lirc/totem-lirc.c

Modified: trunk/src/plugins/jamendo/Makefile.am
==============================================================================
--- trunk/src/plugins/jamendo/Makefile.am	(original)
+++ trunk/src/plugins/jamendo/Makefile.am	Sat Jan  3 18:49:04 2009
@@ -6,7 +6,7 @@
 %.totem-plugin: %.totem-plugin.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
 
 plugin_DATA = $(plugin_in_files:.totem-plugin.in=.totem-plugin)
-ui_DATA = jamendo.glade
+ui_DATA = jamendo.ui
 
 EXTRA_DIST = $(plugin_in_files) $(ui_DATA) jamendo.py
 

Modified: trunk/src/plugins/jamendo/jamendo.py
==============================================================================
--- trunk/src/plugins/jamendo/jamendo.py	(original)
+++ trunk/src/plugins/jamendo/jamendo.py	Sat Jan  3 18:49:04 2009
@@ -36,7 +36,6 @@
 import gconf
 import gobject
 import gtk
-import gtk.glade
 import pango
 import socket
 import threading
@@ -54,7 +53,7 @@
             type=gtk.MESSAGE_ERROR,
             buttons=gtk.BUTTONS_OK
         )
-        dlg.set_markup(_('You need to install the python simplejson module'))
+        dlg.set_markup(_('You need to install the Python simplejson module.'))
         dlg.run()
         dlg.destroy()
         raise
@@ -83,60 +82,51 @@
         self.gconf = gconf.client_get_default()
         self.init_settings()
 
-        # init glade interface
-        f = os.path.join(os.path.dirname(__file__), 'jamendo.glade')
-        self.glade = gtk.glade.XML(f)
-        self.config_dialog = self.glade.get_widget('config_dialog')
-        self.popup = self.glade.get_widget('popup_menu')
-        self.window = self.glade.get_widget('mainwindow')
-        self.container = self.glade.get_widget('mainwindow_container')
-        self.notebook = self.glade.get_widget('notebook')
-        self.search_entry = self.glade.get_widget('search_entry')
-        self.search_combo = self.glade.get_widget('search_combo')
-        # XXX active property set in glade file does not work
+    def activate(self, totem_object):
+        """
+        Plugin activation.
+        """
+        # Initialise the interface
+        self.builder = self.load_interface("jamendo.ui", True,
+            totem_object.get_main_window(), self)
+        self.config_dialog = self.builder.get_object('config_dialog')
+        self.popup = self.builder.get_object('popup_menu')
+        container = self.builder.get_object('container')
+        self.notebook = self.builder.get_object('notebook')
+        self.search_entry = self.builder.get_object('search_entry')
+        self.search_combo = self.builder.get_object('search_combo')
         self.search_combo.set_active(0)
-        self.album_button = self.glade.get_widget('album_button')
-        self.previous_button = self.glade.get_widget('previous_button')
-        self.next_button = self.glade.get_widget('next_button')
+        self.album_button = self.builder.get_object('album_button')
+        self.previous_button = self.builder.get_object('previous_button')
+        self.next_button = self.builder.get_object('next_button')
         self.progressbars = [
-            self.glade.get_widget('results_progressbar'),
-            self.glade.get_widget('popular_progressbar'),
-            self.glade.get_widget('latest_progressbar'),
+            self.builder.get_object('results_progressbar'),
+            self.builder.get_object('popular_progressbar'),
+            self.builder.get_object('latest_progressbar'),
         ]
         self.treeviews = [
-            self.glade.get_widget('results_treeview'),
-            self.glade.get_widget('popular_treeview'),
-            self.glade.get_widget('latest_treeview'),
+            self.builder.get_object('results_treeview'),
+            self.builder.get_object('popular_treeview'),
+            self.builder.get_object('latest_treeview'),
         ]
         self.setup_treeviews()
 
-        # connect signals to slots
-        self.glade.signal_autoconnect({
-            'on_search_button_clicked': self.on_search_button_clicked,
-            'on_search_entry_activate': self.on_search_entry_activate,
-            'on_notebook_switch_page': self.on_notebook_switch_page,
-            'on_treeview_row_activated': self.on_treeview_row_activated,
-            'on_treeview_row_clicked': self.on_treeview_row_clicked,
-            'on_previous_button_clicked': self.on_previous_button_clicked,
-            'on_next_button_clicked': self.on_next_button_clicked,
-            'on_album_button_clicked': self.on_album_button_clicked,
-            'on_cancel_button_clicked': self.on_cancel_button_clicked,
-            'on_ok_button_clicked': self.on_ok_button_clicked,
-            'on_add_to_playlist_activate': self.on_add_to_playlist_activate,
-            'on_open_jamendo_album_page_activate':
-                self.on_open_jamendo_album_page_activate,
-        })
+        # Set up signals
+        self.builder.get_object('search_button').connect('clicked', self.on_search_button_clicked)
+        self.search_entry.connect('activate', self.on_search_entry_activate)
+        self.notebook.connect('switch-page', self.on_notebook_switch_page)
+        self.previous_button.connect('clicked', self.on_previous_button_clicked)
+        self.next_button.connect('clicked', self.on_next_button_clicked)
+        self.album_button.connect('clicked', self.on_album_button_clicked)
+        self.builder.get_object('cancel_button').connect('clicked', self.on_cancel_button_clicked)
+        self.builder.get_object('ok_button').connect('clicked', self.on_ok_button_clicked)
+        self.builder.get_object('add_to_playlist').connect('activate', self.on_add_to_playlist_activate)
+        self.builder.get_object('jamendo_album_page').connect('activate', self.on_open_jamendo_album_page_activate)
 
-        self.reset()
-
-    def activate(self, totem_object):
-        """
-        Plugin activation.
-        """
         self.totem = totem_object
-        # unparent the container to embed it into totem sidebar
-        self.container.unparent()
-        self.totem.add_sidebar_page("jamendo", _("Jamendo"), self.container)
+        self.reset()
+        container.show_all()
+        self.totem.add_sidebar_page("jamendo", _("Jamendo"), container)
 
     def deactivate(self, totem_object):
         """
@@ -150,9 +140,9 @@
         """
         format = self.gconf.get_string('%s/format' % gconf_key)
         num_per_page = self.gconf.get_int('%s/num_per_page' % gconf_key)
-        combo = self.glade.get_widget('preferred_format_combo')
+        combo = self.builder.get_object('preferred_format_combo')
         combo.set_active(self.AUDIO_FORMATS.index(format))
-        spinbutton = self.glade.get_widget('album_num_spinbutton')
+        spinbutton = self.builder.get_object('album_num_spinbutton')
         spinbutton.set_value(num_per_page)
         return self.config_dialog
 
@@ -202,16 +192,6 @@
         self.current_treeview = self.treeviews[0]
         for w in self.treeviews:
             w.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
-            #w.set_rubber_banding(True)
-            # build a treestore
-            model = gtk.TreeStore(
-                gobject.TYPE_PYOBJECT, # album or track dict
-                gtk.gdk.Pixbuf,        # album cover or track icon
-                str,                   # album or track description
-                str,                   # album or track duration
-                str,                   # album or track tooltip
-            )
-            w.set_model(model)
 
             # build pixbuf column
             cell = gtk.CellRendererPixbuf()
@@ -229,12 +209,7 @@
             col.set_attributes(cell, markup=2)
             col.set_expand(True)
             w.append_column(col)
-            w.connect_after(
-                'size-allocate',
-                self.on_treeview_size_allocate,
-                col,
-                cell
-            )
+            w.connect_after('size-allocate', self.on_treeview_size_allocate, col, cell)
 
             # duration column
             cell = gtk.CellRendererText()
@@ -250,6 +225,11 @@
             w.set_show_expanders(False) # we manage internally expand/collapse
             w.set_tooltip_column(4)     # set the tooltip column
 
+            # Connect signals
+            w.connect("button-press-event", self.on_treeview_row_clicked)
+            w.connect("row-activated", self.on_treeview_row_activated)
+
+
     def add_treeview_item(self, treeview, album):
         if not isinstance(album['image'], gtk.gdk.Pixbuf):
             # album image pixbuf is not yet built
@@ -268,8 +248,10 @@
         dur = self._format_duration(album['duration'])
         # format tooltip
         try:
-            release = time.strptime(album['dates']['release'][0:10], '%Y-%m-%d')
-            release = time.strftime('%x', release)
+            # Translators: this is the release date of an album in Python strptime format
+            release = time.strptime(album['dates']['release'][0:10], _('%Y-%m-%d'))
+            # Translators: this is the release time of an album in Python strftime format
+            release = time.strftime(_('%x'), release)
         except:
             release = ''
         tip = '\n'.join([
@@ -287,7 +269,9 @@
         icon = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 1, 1)
         for i, track in enumerate(album['tracks']):
             # track title
-            tt = '<small>%02d. %s</small>' % \
+            # 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>' % _('%02d. %s')) % \
                 (i+1, self._format_str(track['name']))
             # track duration
             td = self._format_duration(track['duration'])
@@ -402,7 +386,7 @@
             buttons=gtk.BUTTONS_OK
         )
         dlg.set_markup(
-            '<b>%s</b>' % _('An error occured while fetching albums.')
+            '<b>%s</b>' % _('An error occurred while fetching albums.')
         )
         # managing exceptions with urllib is a real PITA... :(
         if hasattr(exc, 'reason'):
@@ -414,9 +398,9 @@
                 except:
                     reason = str(exc)
             reason = reason.capitalize()
-            msg = _('Failed to connect to jamendo server.\n%s.') % reason
+            msg = _('Failed to connect to Jamendo server.\n%s.') % reason
         elif hasattr(exc, 'code'):
-            msg = _('The jamendo server returned code %s') % exc.code
+            msg = _('The Jamendo server returned code %s.') % exc.code
         else:
             msg = str(exc)
         dlg.format_secondary_text(msg)
@@ -561,8 +545,8 @@
         """
         Called when the user clicked ok in the config dialog.
         """
-        combo = self.glade.get_widget('preferred_format_combo')
-        spinbutton = self.glade.get_widget('album_num_spinbutton')
+        combo = self.builder.get_object('preferred_format_combo')
+        spinbutton = self.builder.get_object('album_num_spinbutton')
         format = self.AUDIO_FORMATS[combo.get_active()]
         self.gconf.set_string('%s/format' % gconf_key, format)
         num_per_page = int(spinbutton.get_value())
@@ -646,8 +630,12 @@
         try:
             secs = int(secs)
             if secs >= 3600:
-                return time.strftime('%H:%M:%S', time.gmtime(secs))
-            return time.strftime('%M:%S', time.gmtime(secs))
+                # Translators: time formatting (in Python strftime format) for the Jamendo plugin
+                # for times longer than an hour
+                return time.strftime(_('%H:%M:%S'), time.gmtime(secs))
+            # Translators: time formatting (in Python strftime format) for the Jamendo plugin
+            # for times shorter than an hour
+            return time.strftime(_('%M:%S'), time.gmtime(secs))
         except:
             return ''
 

Added: trunk/src/plugins/jamendo/jamendo.ui
==============================================================================
--- (empty file)
+++ trunk/src/plugins/jamendo/jamendo.ui	Sat Jan  3 18:49:04 2009
@@ -0,0 +1,771 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+	<object class="GtkAdjustment" id="adjustment1">
+		<property name="upper">100</property>
+		<property name="lower">1</property>
+		<property name="page_increment">0</property>
+		<property name="step_increment">1</property>
+		<property name="page_size">0</property>
+		<property name="value">10</property>
+	</object>
+	<object class="GtkListStore" id="search_combo_model">
+		<columns>
+			<column type="gchararray"/>
+		</columns>
+		<data>
+			<row>
+				<col id="0" translatable="yes">By artist</col>
+			</row>
+			<row>
+				<col id="0" translatable="yes">By tag</col>
+			</row>
+		</data>
+	</object>
+	<object class="GtkListStore" id="preferred_format_combo_model">
+		<columns>
+			<column type="gchararray"/>
+		</columns>
+		<data>
+			<row>
+				<col id="0">Ogg</col>
+			</row>
+			<row>
+				<col id="0">MP3</col>
+			</row>
+		</data>
+	</object>
+	<object class="GtkTreeStore" id="results_treeview_model">
+		<columns>
+			<column type="PyObject"/>
+			<column type="GdkPixbuf"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+		</columns>
+	</object>
+	<object class="GtkTreeStore" id="popular_treeview_model">
+		<columns>
+			<column type="PyObject"/>
+			<column type="GdkPixbuf"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+		</columns>
+	</object>
+	<object class="GtkTreeStore" id="latest_treeview_model">
+		<columns>
+			<column type="PyObject"/>
+			<column type="GdkPixbuf"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+			<column type="gchararray"/>
+		</columns>
+	</object>
+	<object class="GtkUIManager" id="uimanager1">
+		<child>
+			<object class="GtkActionGroup" id="actiongroup1">
+				<child>
+					<object class="GtkAction" id="add_to_playlist">
+						<property name="stock_id">gtk-add</property>
+						<property name="name">add_to_playlist</property>
+						<property name="label" translatable="yes">_Add to Playlist</property>
+					</object>
+				</child>
+				<child>
+					<object class="GtkAction" id="jamendo_album_page">
+						<property name="stock_id">gtk-jump-to</property>
+						<property name="name">jamendo_album_page</property>
+						<property name="label" translatable="yes">_Open Jamendo Album Page in Browser</property>
+					</object>
+				</child>
+			</object>
+		</child>
+		<ui>
+			<popup name="popup_menu">
+				<menuitem action="add_to_playlist"/>
+				<menuitem action="jamendo_album_page"/>
+			</popup>
+		</ui>
+	</object>
+	<object class="GtkVBox" id="container">
+		<property name="visible">True</property>
+		<property name="homogeneous">False</property>
+		<property name="spacing">5</property>
+		<child>
+			<object class="GtkVBox" id="vbox1">
+				<property name="visible">True</property>
+				<property name="homogeneous">False</property>
+				<property name="spacing">0</property>
+				<child>
+					<object class="GtkHBox" id="search_hbox">
+						<property name="visible">True</property>
+						<property name="homogeneous">False</property>
+						<property name="spacing">0</property>
+						<child>
+							<object class="GtkEntry" id="search_entry">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="editable">True</property>
+								<property name="visibility">True</property>
+								<property name="max_length">0</property>
+								<property name="text" translatable="yes"/>
+								<property name="has_frame">True</property>
+								<property name="invisible_char">&#x25CF;</property>
+								<property name="activates_default">False</property>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">True</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkComboBox" id="search_combo">
+								<property name="model">search_combo_model</property>
+								<property name="visible">True</property>
+								<property name="add_tearoffs">False</property>
+								<property name="focus_on_click">True</property>
+								<child>
+									<object class="GtkCellRendererText" id="renderer1"/>
+									<attributes>
+										<attribute name="text">0</attribute>
+									</attributes>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkButton" id="search_button">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="relief">GTK_RELIEF_NORMAL</property>
+								<property name="focus_on_click">True</property>
+								<child>
+									<object class="GtkImage" id="track_icon">
+										<property name="visible">True</property>
+										<property name="stock">gtk-find</property>
+										<property name="icon_size">4</property>
+										<property name="xalign">0.5</property>
+										<property name="yalign">0.5</property>
+										<property name="xpad">0</property>
+										<property name="ypad">0</property>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="padding">0</property>
+						<property name="expand">False</property>
+						<property name="fill">True</property>
+					</packing>
+				</child>
+			</object>
+			<packing>
+				<property name="padding">0</property>
+				<property name="expand">False</property>
+				<property name="fill">True</property>
+			</packing>
+		</child>
+		<child>
+			<object class="GtkNotebook" id="notebook">
+				<property name="visible">True</property>
+				<property name="can_focus">True</property>
+				<property name="show_tabs">True</property>
+				<property name="show_border">True</property>
+				<property name="tab_pos">GTK_POS_TOP</property>
+				<property name="scrollable">False</property>
+				<property name="enable_popup">False</property>
+				<child>
+					<object class="GtkVBox" id="vbox1">
+						<property name="visible">True</property>
+						<property name="homogeneous">False</property>
+						<property name="spacing">0</property>
+						<child>
+							<object class="GtkScrolledWindow" id="results_scrolledwindow">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="shadow_type">GTK_SHADOW_NONE</property>
+								<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+								<child>
+									<object class="GtkViewport" id="viewport1">
+										<property name="visible">True</property>
+										<property name="shadow_type">GTK_SHADOW_IN</property>
+										<child>
+											<object class="GtkVBox" id="results_vbox">
+												<property name="visible">True</property>
+												<property name="homogeneous">False</property>
+												<property name="spacing">0</property>
+												<child>
+													<object class="GtkTreeView" id="results_treeview">
+								                        <property name="model">results_treeview_model</property>
+														<property name="visible">True</property>
+														<property name="can_focus">True</property>
+														<property name="headers_visible">False</property>
+														<property name="rules_hint">False</property>
+														<property name="reorderable">False</property>
+														<property name="enable_search">True</property>
+														<property name="fixed_height_mode">False</property>
+														<property name="hover_selection">False</property>
+														<property name="hover_expand">False</property>
+													</object>
+													<packing>
+														<property name="padding">0</property>
+														<property name="expand">True</property>
+														<property name="fill">True</property>
+													</packing>
+												</child>
+											</object>
+										</child>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">True</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkProgressBar" id="results_progressbar">
+								<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+								<property name="fraction">0</property>
+								<property name="pulse_step">0.10000000149</property>
+								<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">False</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="tab_expand">False</property>
+						<property name="tab_fill">True</property>
+					</packing>
+				</child>
+				<child type="tab">
+					<object class="GtkLabel" id="results_tab_label">
+						<property name="visible">True</property>
+						<property name="label" translatable="yes">Search Results</property>
+						<property name="use_underline">False</property>
+						<property name="use_markup">False</property>
+						<property name="justify">GTK_JUSTIFY_LEFT</property>
+						<property name="wrap">True</property>
+						<property name="selectable">False</property>
+						<property name="xalign">0.5</property>
+						<property name="yalign">0.5</property>
+						<property name="xpad">0</property>
+						<property name="ypad">0</property>
+						<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+						<property name="width_chars">-1</property>
+						<property name="single_line_mode">False</property>
+						<property name="angle">0</property>
+					</object>
+				</child>
+				<child>
+					<object class="GtkVBox" id="vbox2">
+						<property name="visible">True</property>
+						<property name="homogeneous">False</property>
+						<property name="spacing">0</property>
+						<child>
+							<object class="GtkScrolledWindow" id="popular_scrolledwindow">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="shadow_type">GTK_SHADOW_NONE</property>
+								<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+								<child>
+									<object class="GtkViewport" id="viewport2">
+										<property name="visible">True</property>
+										<property name="shadow_type">GTK_SHADOW_IN</property>
+										<child>
+											<object class="GtkVBox" id="popular_vbox">
+												<property name="visible">True</property>
+												<property name="homogeneous">False</property>
+												<property name="spacing">0</property>
+												<child>
+													<object class="GtkTreeView" id="popular_treeview">
+								                        <property name="model">popular_treeview_model</property>
+														<property name="visible">True</property>
+														<property name="can_focus">True</property>
+														<property name="headers_visible">False</property>
+														<property name="rules_hint">False</property>
+														<property name="reorderable">False</property>
+														<property name="enable_search">True</property>
+														<property name="fixed_height_mode">False</property>
+														<property name="hover_selection">False</property>
+														<property name="hover_expand">False</property>
+													</object>
+													<packing>
+														<property name="padding">0</property>
+														<property name="expand">True</property>
+														<property name="fill">True</property>
+													</packing>
+												</child>
+											</object>
+										</child>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">True</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkProgressBar" id="popular_progressbar">
+								<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+								<property name="fraction">0</property>
+								<property name="pulse_step">0.10000000149</property>
+								<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">False</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="tab_expand">False</property>
+						<property name="tab_fill">True</property>
+					</packing>
+				</child>
+				<child type="tab">
+					<object class="GtkLabel" id="popular_tab_label">
+						<property name="visible">True</property>
+						<property name="label" translatable="yes">Popular</property>
+						<property name="use_underline">False</property>
+						<property name="use_markup">False</property>
+						<property name="justify">GTK_JUSTIFY_LEFT</property>
+						<property name="wrap">True</property>
+						<property name="selectable">False</property>
+						<property name="xalign">0.5</property>
+						<property name="yalign">0.5</property>
+						<property name="xpad">0</property>
+						<property name="ypad">0</property>
+						<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+						<property name="width_chars">-1</property>
+						<property name="single_line_mode">False</property>
+						<property name="angle">0</property>
+					</object>
+				</child>
+				<child>
+					<object class="GtkVBox" id="vbox3">
+						<property name="visible">True</property>
+						<property name="homogeneous">False</property>
+						<property name="spacing">0</property>
+						<child>
+							<object class="GtkScrolledWindow" id="latest_scrolledwindow">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+								<property name="shadow_type">GTK_SHADOW_NONE</property>
+								<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+								<child>
+									<object class="GtkViewport" id="viewport3">
+										<property name="visible">True</property>
+										<property name="shadow_type">GTK_SHADOW_IN</property>
+										<child>
+											<object class="GtkVBox" id="latest_vbox">
+												<property name="visible">True</property>
+												<property name="homogeneous">False</property>
+												<property name="spacing">0</property>
+												<child>
+													<object class="GtkTreeView" id="latest_treeview">
+								                        <property name="model">latest_treeview_model</property>
+														<property name="visible">True</property>
+														<property name="can_focus">True</property>
+														<property name="headers_visible">False</property>
+														<property name="rules_hint">False</property>
+														<property name="reorderable">False</property>
+														<property name="enable_search">True</property>
+														<property name="fixed_height_mode">False</property>
+														<property name="hover_selection">False</property>
+														<property name="hover_expand">False</property>
+													</object>
+													<packing>
+														<property name="padding">0</property>
+														<property name="expand">True</property>
+														<property name="fill">True</property>
+													</packing>
+												</child>
+											</object>
+										</child>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">True</property>
+								<property name="fill">True</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkProgressBar" id="latest_progressbar">
+								<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+								<property name="fraction">0</property>
+								<property name="pulse_step">0.10000000149</property>
+								<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">False</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="tab_expand">False</property>
+						<property name="tab_fill">True</property>
+					</packing>
+				</child>
+				<child type="tab">
+					<object class="GtkLabel" id="latest_tab_label">
+						<property name="visible">True</property>
+						<property name="label" translatable="yes">Latest Releases</property>
+						<property name="use_underline">False</property>
+						<property name="use_markup">False</property>
+						<property name="justify">GTK_JUSTIFY_LEFT</property>
+						<property name="wrap">True</property>
+						<property name="selectable">False</property>
+						<property name="xalign">0.5</property>
+						<property name="yalign">0.5</property>
+						<property name="xpad">0</property>
+						<property name="ypad">0</property>
+						<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+						<property name="width_chars">-1</property>
+						<property name="single_line_mode">False</property>
+						<property name="angle">0</property>
+					</object>
+				</child>
+			</object>
+			<packing>
+				<property name="padding">0</property>
+				<property name="expand">True</property>
+				<property name="fill">True</property>
+			</packing>
+		</child>
+		<child>
+			<object class="GtkHBox" id="hbox1">
+				<property name="visible">True</property>
+				<property name="homogeneous">False</property>
+				<property name="spacing">0</property>
+				<child>
+					<object class="GtkButton" id="album_button">
+						<property name="visible">True</property>
+						<property name="sensitive">False</property>
+						<property name="can_focus">True</property>
+						<property name="relief">GTK_RELIEF_NORMAL</property>
+						<property name="focus_on_click">True</property>
+						<child>
+							<object class="GtkHBox" id="album_button_hbox">
+								<property name="visible">True</property>
+								<property name="homogeneous">False</property>
+								<property name="spacing">0</property>
+								<child>
+									<object class="GtkImage" id="album_button_image">
+										<property name="visible">True</property>
+										<property name="stock">gtk-jump-to</property>
+										<property name="icon_size">4</property>
+										<property name="xalign">0.5</property>
+										<property name="yalign">0.5</property>
+										<property name="xpad">0</property>
+										<property name="ypad">0</property>
+									</object>
+									<packing>
+										<property name="padding">0</property>
+										<property name="expand">True</property>
+										<property name="fill">True</property>
+									</packing>
+								</child>
+								<child>
+									<object class="GtkLabel" id="download_button_label">
+										<property name="visible">True</property>
+										<property name="label" translatable="yes">Jamendo Album Page</property>
+										<property name="use_underline">False</property>
+										<property name="use_markup">False</property>
+										<property name="justify">GTK_JUSTIFY_LEFT</property>
+										<property name="wrap">False</property>
+										<property name="selectable">False</property>
+										<property name="xalign">0.5</property>
+										<property name="yalign">0.5</property>
+										<property name="xpad">0</property>
+										<property name="ypad">0</property>
+										<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+										<property name="width_chars">-1</property>
+										<property name="single_line_mode">False</property>
+										<property name="angle">0</property>
+									</object>
+									<packing>
+										<property name="padding">0</property>
+										<property name="expand">True</property>
+										<property name="fill">True</property>
+									</packing>
+								</child>
+							</object>
+						</child>
+					</object>
+					<packing>
+						<property name="padding">0</property>
+						<property name="expand">False</property>
+						<property name="fill">False</property>
+					</packing>
+				</child>
+				<child>
+					<object class="GtkHBox" id="hbox2">
+						<property name="visible">True</property>
+						<property name="homogeneous">False</property>
+						<property name="spacing">0</property>
+						<child>
+							<object class="GtkButton" id="previous_button">
+								<property name="visible">True</property>
+								<property name="sensitive">False</property>
+								<property name="can_focus">True</property>
+								<property name="relief">GTK_RELIEF_NORMAL</property>
+								<property name="focus_on_click">True</property>
+								<child>
+									<object class="GtkImage" id="previous_button_image">
+										<property name="visible">True</property>
+										<property name="stock">gtk-go-back</property>
+										<property name="icon_size">4</property>
+										<property name="xalign">0.5</property>
+										<property name="yalign">0.5</property>
+										<property name="xpad">0</property>
+										<property name="ypad">0</property>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">False</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkButton" id="next_button">
+								<property name="visible">True</property>
+								<property name="sensitive">False</property>
+								<property name="can_focus">True</property>
+								<property name="relief">GTK_RELIEF_NORMAL</property>
+								<property name="focus_on_click">True</property>
+								<child>
+									<object class="GtkImage" id="next_button_image">
+										<property name="visible">True</property>
+										<property name="stock">gtk-go-forward</property>
+										<property name="icon_size">4</property>
+										<property name="xalign">0.5</property>
+										<property name="yalign">0.5</property>
+										<property name="xpad">0</property>
+										<property name="ypad">0</property>
+									</object>
+								</child>
+							</object>
+							<packing>
+								<property name="padding">0</property>
+								<property name="expand">False</property>
+								<property name="fill">False</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="padding">0</property>
+						<property name="expand">False</property>
+						<property name="fill">True</property>
+						<property name="pack_type">GTK_PACK_END</property>
+					</packing>
+				</child>
+			</object>
+			<packing>
+				<property name="padding">0</property>
+				<property name="expand">False</property>
+				<property name="fill">False</property>
+			</packing>
+		</child>
+	</object>
+	<object class="GtkDialog" id="config_dialog">
+		<property name="border_width">5</property>
+		<property name="title" translatable="yes">Jamendo Plugin Configuration</property>
+		<property name="type">GTK_WINDOW_TOPLEVEL</property>
+		<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+		<property name="modal">True</property>
+		<property name="resizable">True</property>
+		<property name="destroy_with_parent">False</property>
+		<property name="decorated">True</property>
+		<property name="skip_taskbar_hint">False</property>
+		<property name="skip_pager_hint">False</property>
+		<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+		<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+		<property name="focus_on_map">True</property>
+		<property name="urgency_hint">False</property>
+		<property name="has_separator">False</property>
+		<child internal-child="vbox">
+			<object class="GtkVBox" id="config_dialog_container">
+				<property name="visible">True</property>
+				<property name="homogeneous">False</property>
+				<property name="spacing">2</property>
+				<child internal-child="action_area">
+					<object class="GtkHButtonBox" id="buttons">
+						<property name="visible">True</property>
+						<property name="layout_style">GTK_BUTTONBOX_END</property>
+						<child>
+							<object class="GtkButton" id="cancel_button">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="label">gtk-cancel</property>
+								<property name="use_stock">True</property>
+								<property name="relief">GTK_RELIEF_NORMAL</property>
+								<property name="focus_on_click">True</property>
+							</object>
+						</child>
+						<child>
+							<object class="GtkButton" id="ok_button">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="label">gtk-ok</property>
+								<property name="use_stock">True</property>
+								<property name="relief">GTK_RELIEF_NORMAL</property>
+								<property name="focus_on_click">True</property>
+							</object>
+						</child>
+					</object>
+					<packing>
+						<property name="padding">0</property>
+						<property name="expand">False</property>
+						<property name="fill">True</property>
+						<property name="pack_type">GTK_PACK_END</property>
+					</packing>
+				</child>
+				<child>
+					<object class="GtkTable" id="table">
+						<property name="visible">True</property>
+						<property name="n_rows">2</property>
+						<property name="n_columns">2</property>
+						<property name="homogeneous">False</property>
+						<property name="row_spacing">0</property>
+						<property name="column_spacing">2</property>
+						<child>
+							<object class="GtkLabel" id="album_num_label">
+								<property name="visible">True</property>
+								<property name="label" translatable="yes">Number of albums to _retrieve</property>
+								<property name="use_underline">True</property>
+								<property name="mnemonic-widget">album_num_spinbutton</property>
+								<property name="use_markup">False</property>
+								<property name="justify">GTK_JUSTIFY_LEFT</property>
+								<property name="wrap">False</property>
+								<property name="selectable">False</property>
+								<property name="xalign">0</property>
+								<property name="yalign">0.5</property>
+								<property name="xpad">0</property>
+								<property name="ypad">0</property>
+								<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+								<property name="width_chars">-1</property>
+								<property name="single_line_mode">False</property>
+								<property name="angle">0</property>
+							</object>
+							<packing>
+								<property name="left_attach">0</property>
+								<property name="right_attach">1</property>
+								<property name="top_attach">1</property>
+								<property name="bottom_attach">2</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkSpinButton" id="album_num_spinbutton">
+								<property name="visible">True</property>
+								<property name="can_focus">True</property>
+								<property name="climb_rate">1</property>
+								<property name="digits">0</property>
+								<property name="numeric">False</property>
+								<property name="update_policy">GTK_UPDATE_ALWAYS</property>
+								<property name="snap_to_ticks">False</property>
+								<property name="wrap">False</property>
+								<property name="adjustment">adjustment1</property>
+							</object>
+							<packing>
+								<property name="left_attach">1</property>
+								<property name="right_attach">2</property>
+								<property name="top_attach">1</property>
+								<property name="bottom_attach">2</property>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkComboBox" id="preferred_format_combo">
+								<property name="model">preferred_format_combo_model</property>
+								<property name="visible">True</property>
+								<property name="add_tearoffs">False</property>
+								<property name="focus_on_click">True</property>
+								<child>
+									<object class="GtkCellRendererText" id="renderer2"/>
+									<attributes>
+										<attribute name="text">0</attribute>
+									</attributes>
+								</child>
+							</object>
+							<packing>
+								<property name="left_attach">1</property>
+								<property name="right_attach">2</property>
+								<property name="top_attach">0</property>
+								<property name="bottom_attach">1</property>
+								<property name="y_options"/>
+							</packing>
+						</child>
+						<child>
+							<object class="GtkLabel" id="preferred_format_label">
+								<property name="visible">True</property>
+								<property name="label" translatable="yes">Preferred audio _format</property>
+								<property name="use_underline">True</property>
+								<property name="mnemonic-widget">preferred_format_combo</property>
+								<property name="use_markup">False</property>
+								<property name="justify">GTK_JUSTIFY_LEFT</property>
+								<property name="wrap">False</property>
+								<property name="selectable">False</property>
+								<property name="xalign">0</property>
+								<property name="yalign">0.5</property>
+								<property name="xpad">0</property>
+								<property name="ypad">0</property>
+								<property name="ellipsize">PANGO_ELLIPSIZE_END</property>
+								<property name="width_chars">-1</property>
+								<property name="single_line_mode">False</property>
+								<property name="angle">0</property>
+							</object>
+							<packing>
+								<property name="left_attach">0</property>
+								<property name="right_attach">1</property>
+								<property name="top_attach">0</property>
+								<property name="bottom_attach">1</property>
+							</packing>
+						</child>
+					</object>
+					<packing>
+						<property name="padding">0</property>
+						<property name="expand">False</property>
+						<property name="fill">True</property>
+					</packing>
+				</child>
+			</object>
+		</child>
+		<action-widgets>
+			<action-widget response="0">cancel_button</action-widget>
+			<action-widget response="0">ok_button</action-widget>
+		</action-widgets>
+	</object>
+	<object class="GtkMenu" constructor="uimanager1" id="popup_menu"/>
+</interface>



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