[totem] Fix the configuration dialogue in the jamendo plugin
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [totem] Fix the configuration dialogue in the jamendo plugin
- Date: Sun, 11 Jul 2010 00:09:07 +0000 (UTC)
commit da410ba883ec34ae6b559c7250fb68517c75617f
Author: Philip Withnall <philip tecnocode co uk>
Date: Sun Jul 11 01:07:38 2010 +0100
Fix the configuration dialogue in the jamendo plugin
src/plugins/jamendo/jamendo.py | 116 ++++++++++--------
src/plugins/jamendo/jamendo.ui | 258 +++++++++++++++-------------------------
2 files changed, 158 insertions(+), 216 deletions(-)
---
diff --git a/src/plugins/jamendo/jamendo.py b/src/plugins/jamendo/jamendo.py
index b147584..33e9f54 100644
--- a/src/plugins/jamendo/jamendo.py
+++ b/src/plugins/jamendo/jamendo.py
@@ -88,40 +88,37 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasUI.Configurable):
Plugin activation.
"""
# Initialise the interface
- self.builder = Totem.plugin_load_interface ("jamendo", "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')
+ builder = Totem.plugin_load_interface ("jamendo", "jamendo.ui", True, totem_object.get_main_window (), self)
+ self.popup = builder.get_object('popup_menu')
+ container = builder.get_object('container')
+ self.notebook = builder.get_object('notebook')
+ self.search_entry = builder.get_object('search_entry')
+ self.search_combo = builder.get_object('search_combo')
self.search_combo.set_active(0)
- 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.album_button = builder.get_object('album_button')
+ self.previous_button = builder.get_object('previous_button')
+ self.next_button = builder.get_object('next_button')
self.progressbars = [
- self.builder.get_object('results_progressbar'),
- self.builder.get_object('popular_progressbar'),
- self.builder.get_object('latest_progressbar'),
+ builder.get_object('results_progressbar'),
+ builder.get_object('popular_progressbar'),
+ builder.get_object('latest_progressbar'),
]
self.treeviews = [
- self.builder.get_object('results_treeview'),
- self.builder.get_object('popular_treeview'),
- self.builder.get_object('latest_treeview'),
+ builder.get_object('results_treeview'),
+ builder.get_object('popular_treeview'),
+ builder.get_object('latest_treeview'),
]
self.setup_treeviews()
# Set up signals
- self.builder.get_object('search_button').connect('clicked', self.on_search_button_clicked)
+ 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)
+ builder.get_object('add_to_playlist').connect('activate', self.on_add_to_playlist_activate)
+ builder.get_object('jamendo_album_page').connect('activate', self.on_open_jamendo_album_page_activate)
self.totem = totem_object
self.reset()
@@ -134,18 +131,56 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasUI.Configurable):
"""
totem_object.remove_sidebar_page("jamendo")
- def do_create_configure_dialog(self):
+ def do_create_configure_widget(self):
"""
- Plugin config dialog.
+ Plugin config widget.
+ This code must be independent from the rest of the plugin. FIXME: bgo#624073
"""
- format = self.gconf.get_string('%s/format' % gconf_key)
- num_per_page = self.gconf.get_int('%s/num_per_page' % gconf_key)
- combo = self.builder.get_object('preferred_format_combo')
+ builder = Totem.plugin_load_interface ('jamendo', 'jamendo.ui', True, None, self)
+ print builder
+ gconf = GConf.Client.get_default()
+ config_widget = builder.get_object ('config_widget')
+ config_widget.connect ('destroy', self.on_config_widget_destroy)
+ print config_widget
+ format = gconf.get_string('%s/format' % gconf_key)
+ num_per_page = gconf.get_int('%s/num_per_page' % gconf_key)
+
+ combo = builder.get_object('preferred_format_combo')
combo.set_active(self.AUDIO_FORMATS.index(format))
- spinbutton = self.builder.get_object('album_num_spinbutton')
+ combo.connect ('changed', self.on_preferred_format_combo_changed)
+
+ spinbutton = builder.get_object('album_num_spinbutton')
spinbutton.set_value(num_per_page)
- self.config_dialog.set_default_response(Gtk.ResponseType.OK)
- return self.config_dialog
+ spinbutton.connect ('value-changed', self.on_album_num_spinbutton_value_changed)
+
+ return config_widget
+
+ def on_preferred_format_combo_changed (self, combo):
+ """
+ Called when the preferred audio format combo box is changed in the configuration dialogue
+ """
+ gconf = GConf.Client.get_default()
+ format = self.AUDIO_FORMATS[combo.get_active()]
+ gconf.set_string('%s/format' % gconf_key, format)
+
+ def on_album_num_spinbutton_value_changed (self, spinbutton):
+ """
+ Called when the number-of-albums spinbutton is changed in the configuration dialogue
+ """
+ gconf = GConf.Client.get_default()
+ num_per_page = int(spinbutton.get_value())
+ gconf.set_int('%s/num_per_page' % gconf_key, num_per_page)
+
+ def on_config_widget_destroy (self, widget):
+ """
+ FIXME: The GConf stuff should be refactored so that it listens to notifications and doesn't update manually.
+ This function is hacky and should go away.
+ """
+ self.init_settings()
+ try:
+ self.reset()
+ except:
+ pass
def reset(self):
"""
@@ -524,29 +559,6 @@ class JamendoPlugin(gobject.GObject, Peas.Activatable, PeasUI.Configurable):
except:
pass
- def on_cancel_button_clicked(self, *args):
- """
- Called when the user clicked cancel in the config dialog.
- """
- self.config_dialog.hide()
-
- def on_ok_button_clicked(self, *args):
- """
- Called when the user clicked ok in the config dialog.
- """
- 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())
- self.gconf.set_int('%s/num_per_page' % gconf_key, num_per_page)
- self.init_settings()
- self.config_dialog.hide()
- try:
- self.reset()
- except:
- pass
-
def on_add_to_playlist_activate(self, *args):
"""
Called when the user clicked on the add to playlist button of the
diff --git a/src/plugins/jamendo/jamendo.ui b/src/plugins/jamendo/jamendo.ui
index 39953e1..20d0d6a 100644
--- a/src/plugins/jamendo/jamendo.ui
+++ b/src/plugins/jamendo/jamendo.ui
@@ -502,176 +502,106 @@
</packing>
</child>
</object>
- <object class="GtkDialog" id="config_dialog">
+ <object class="GtkTable" id="config_widget">
+ <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">6</property>
+ <property name="column_spacing">6</property>
<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">
+ <child>
+ <object class="GtkLabel" id="album_num_label">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</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>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">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>
+ <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="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">6</property>
- <property name="column_spacing">6</property>
- <property name="border_width">5</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>
+ <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>
- <action-widgets>
- <action-widget response="-6">cancel_button</action-widget><!-- GTK_RESPONSE_CANCEL -->
- <action-widget response="-5">ok_button</action-widget><!-- GTK_RESPONSE_OK -->
- </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]