From fe4665e55f914ec38fb28dbe99d28993e05b4000 Mon Sep 17 00:00:00 2001 From: Priit Laes Date: Tue, 20 Mar 2007 18:53:59 +0000 Subject: [PATCH] Glue code to tie everything together. Added widgets and defines for 2007-03-20 Priit Laes * gnome-da-capplet.c: Glue code to tie everything together. * gnome-da-capplet.h: Added widgets and defines for default mediaplayer. * gnome-da-xml.c: (gnome_da_xml_load_xml), (gnome_da_xml_free): Added mediaplayer data parser. * gnome-da-item.c: Changed occurrences of MailItem to SimpleItem, so we can also use it for mediaplayers. * gnome-da-item.h: Ditto. * gnome-default-applications-properties.glade: Make Multimedia tab visible and change the UI to include our favorite mediaplayer selector. * gnome-default-applications.xml.in: Add some media players to the list. Introduces preferred media application support. Bug #362578. svn path=/trunk/; revision=7403 --- capplets/default-applications/ChangeLog | 15 ++ .../default-applications/gnome-da-capplet.c | 147 +++++++++++++++++- .../default-applications/gnome-da-capplet.h | 10 ++ capplets/default-applications/gnome-da-item.c | 10 +- capplets/default-applications/gnome-da-item.h | 8 +- capplets/default-applications/gnome-da-xml.c | 30 +++- ...nome-default-applications-properties.glade | 35 +++-- .../gnome-default-applications.xml.in | 31 ++++ 8 files changed, 255 insertions(+), 31 deletions(-) diff --git a/capplets/default-applications/ChangeLog b/capplets/default-applications/ChangeLog index a5579711b..cf203ecae 100644 --- a/capplets/default-applications/ChangeLog +++ b/capplets/default-applications/ChangeLog @@ -1,3 +1,18 @@ +2007-03-20 Priit Laes + + * gnome-da-capplet.c: Glue code to tie everything together. + * gnome-da-capplet.h: Added widgets and defines for default mediaplayer. + * gnome-da-xml.c: (gnome_da_xml_load_xml), (gnome_da_xml_free): Added + mediaplayer data parser. + * gnome-da-item.c: Changed occurrences of MailItem to SimpleItem, so we + can also use it for mediaplayers. + * gnome-da-item.h: Ditto. + * gnome-default-applications-properties.glade: Make Multimedia tab visible + and change the UI to include our favorite mediaplayer selector. + * gnome-default-applications.xml.in: Add some media players to the list. + + Introduces preferred media application support. Bug #362578. + 2007-02-13 Jens Granseuer * gnome-da-capplet.c: (web_gconf_changed_cb): don't try to read into diff --git a/capplets/default-applications/gnome-da-capplet.c b/capplets/default-applications/gnome-da-capplet.c index 1eed0cc12..154d32c0a 100644 --- a/capplets/default-applications/gnome-da-capplet.c +++ b/capplets/default-applications/gnome-da-capplet.c @@ -72,6 +72,9 @@ entry_focus_out_event_cb (GtkWidget *widget, GdkEventFocus *event, GnomeDACapple else if (widget == capplet->terminal_exec_flag_entry) { gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, text, &error); } + else if (widget == capplet->media_player_command_entry) { + gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_EXEC, text, &error); + } if (error != NULL) { g_warning (_("Error saving configuration: %s"), error->message); @@ -96,6 +99,9 @@ terminal_checkbutton_toggled_cb (GtkToggleButton *togglebutton, GnomeDACapplet * else if (GTK_WIDGET (togglebutton) == capplet->mail_reader_terminal_checkbutton) { gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, is_active, &error); } + else if (GTK_WIDGET (togglebutton) == capplet->media_player_terminal_checkbutton) { + gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM, is_active, &error); + } if (error != NULL) { g_warning (_("Error saving configuration: %s"), error->message); @@ -216,6 +222,7 @@ web_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) gtk_widget_set_sensitive (capplet->web_browser_terminal_checkbutton, is_custom_active); } +/* FIXME: Refactor these two functions below into one... */ static void mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) { @@ -223,7 +230,7 @@ mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) GtkTreePath *path; guint current_index; gboolean is_custom_active; - GnomeDAMailItem *item; + GnomeDASimpleItem *item; GConfChangeSet *cs; GError *error = NULL; char *mailer_cmd; @@ -234,7 +241,7 @@ mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) gtk_tree_path_free (path); if (current_index < g_list_length (capplet->mail_readers)) { - item = (GnomeDAMailItem*) g_list_nth_data (capplet->mail_readers, current_index); + item = (GnomeDASimpleItem*) g_list_nth_data (capplet->mail_readers, current_index); is_custom_active = FALSE; cs = gconf_change_set_new (); @@ -267,6 +274,57 @@ mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) gtk_widget_set_sensitive (capplet->mail_reader_terminal_checkbutton, is_custom_active); } +static void +media_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) +{ + GtkTreeIter iter; + GtkTreePath *path; + guint current_index; + gboolean is_custom_active; + GnomeDASimpleItem *item; + GConfChangeSet *cs; + GError *error = NULL; + char *media_cmd; + + gtk_combo_box_get_active_iter (combo, &iter); + path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo), &iter); + current_index = gtk_tree_path_get_indices (path)[0]; + gtk_tree_path_free (path); + + if (current_index < g_list_length (capplet->media_players)) { + item = (GnomeDASimpleItem*) g_list_nth_data (capplet->media_players, current_index); + is_custom_active = FALSE; + + cs = gconf_change_set_new (); + + gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_MEDIA_EXEC, item->generic.command); + gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM, item->run_in_terminal); + + gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error); + + if (error != NULL) { + g_warning (_("Error saving configuration: %s"), error->message); + g_error_free (error); + error = NULL; + } + + gconf_change_set_unref (cs); + } + else { + is_custom_active = TRUE; + } + + media_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_EXEC, NULL); + gtk_entry_set_text (GTK_ENTRY (capplet->media_player_command_entry), media_cmd); + g_free (media_cmd); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->media_player_terminal_checkbutton), + gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM, NULL)); + + gtk_editable_set_editable (GTK_EDITABLE (capplet->media_player_command_entry), is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_terminal_checkbutton, is_custom_active); +} + static void terminal_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet) { @@ -352,9 +410,9 @@ static struct { } icons[] = { { "web_browser_image", "web-browser" }, { "mail_reader_image", "stock_mail-open" }, + { "media_player_image", "gnome-audio" }, /* { "messenger_image", "im" }, * { "image_image", "image-viewer" }, - * { "sound_image", "gnome-audio" }, * { "video_image", "gnome-multimedia" }, * { "text_image", "text-editor" }, */ { "terminal_image", "gnome-terminal" } @@ -373,6 +431,7 @@ theme_changed_cb (GtkIconTheme *theme, GnomeDACapplet *capplet) refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers); refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players); refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals); } @@ -495,6 +554,7 @@ web_browser_update_radio_buttons (GnomeDACapplet *capplet, const gchar *command) gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote); } +/* FIXME: Refactor these two functions below into single one... */ static void mail_reader_update_combo_box (GnomeDACapplet *capplet, const gchar *command) { @@ -524,6 +584,35 @@ mail_reader_update_combo_box (GnomeDACapplet *capplet, const gchar *command) gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->mail_combo_box), index); } +static void +media_player_update_combo_box (GnomeDACapplet *capplet, const gchar *command) +{ + GList *entry; + gint index; + gboolean is_custom_active; + + entry = g_list_find_custom (capplet->media_players, command, (GCompareFunc) generic_item_comp); + + if (entry) { + index = g_list_position (capplet->media_players, entry); + is_custom_active = FALSE; + } + else { + /* index of 'Custom' combo box entry */ + index = g_list_length (capplet->media_players) + 1; + is_custom_active = TRUE; + } + + gtk_entry_set_text (GTK_ENTRY (capplet->media_player_command_entry), command); + + gtk_editable_set_editable (GTK_EDITABLE (capplet->media_player_command_entry), is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_terminal_checkbutton, is_custom_active); + + if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->media_combo_box)) != index) + gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->media_combo_box), index); +} + static void terminal_update_combo_box (GnomeDACapplet *capplet, const gchar *command) { @@ -631,6 +720,7 @@ web_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDAC } } +/* FIXME: Refactor these two functions below into single one... */ static void mail_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet) { @@ -651,6 +741,26 @@ mail_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDA } } +static void +media_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet) +{ + GConfValue *value; + + g_return_if_fail (gconf_entry_get_key (entry) != NULL); + + if (!(value = gconf_entry_get_value (entry))) + return; + + if (strcmp (entry->key, DEFAULT_APPS_KEY_MEDIA_EXEC) == 0) { + media_player_update_combo_box (capplet, gconf_value_get_string (value)); + } + /* TODO: Remove when GConfPropertyEditor will be used */ + else if (strcmp (entry->key, DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM) == 0) { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->media_player_terminal_checkbutton), + gconf_value_get_bool (value)); + } +} + static void term_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet) { @@ -790,9 +900,14 @@ show_dialog (GnomeDACapplet *capplet) capplet->terminal_exec_flag_entry = glade_xml_get_widget (capplet->xml, "terminal_exec_flag_entry"); capplet->terminal_exec_flag_label = glade_xml_get_widget (capplet->xml, "terminal_exec_flag_label"); + capplet->media_player_command_entry = glade_xml_get_widget (capplet->xml, "media_player_command_entry"); + capplet->media_player_command_label = glade_xml_get_widget (capplet->xml, "media_player_command_label"); + capplet->media_player_terminal_checkbutton = glade_xml_get_widget (capplet->xml, "media_player_terminal_checkbutton"); + capplet->web_combo_box = glade_xml_get_widget (capplet->xml, "web_browser_combobox"); capplet->mail_combo_box = glade_xml_get_widget (capplet->xml, "mail_reader_combobox"); capplet->term_combo_box = glade_xml_get_widget (capplet->xml, "terminal_combobox"); + capplet->media_combo_box = glade_xml_get_widget (capplet->xml, "media_player_combobox"); g_signal_connect (capplet->window, "screen-changed", G_CALLBACK (screen_changed_cb), capplet); screen_changed_cb (capplet->window, gdk_screen_get_default (), capplet); @@ -800,6 +915,7 @@ show_dialog (GnomeDACapplet *capplet) fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers); fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers); fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players); /* update ui to gconf content */ value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL); @@ -833,9 +949,9 @@ show_dialog (GnomeDACapplet *capplet) gconf_value_free (value); } + value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, NULL); if (value) { - value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, NULL); terminal_update_combo_box (capplet, gconf_value_get_string (value)); gconf_value_free (value); } @@ -848,21 +964,40 @@ show_dialog (GnomeDACapplet *capplet) gconf_value_free (value); } + value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_EXEC, NULL); + if (value) + { + media_player_update_combo_box (capplet, gconf_value_get_string (value)); + gconf_value_free (value); + } + + value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM, NULL); + if (value) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->media_player_terminal_checkbutton), + gconf_value_get_bool (value)); + gconf_value_free (value); + } + g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet); g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet); g_signal_connect (capplet->term_combo_box, "changed", G_CALLBACK (terminal_combo_changed_cb), capplet); + g_signal_connect (capplet->media_combo_box, "changed", G_CALLBACK (media_combo_changed_cb), capplet); /* TODO: Remove when GConfPropertyEditor will be used */ g_signal_connect (capplet->web_browser_terminal_checkbutton, "toggled", G_CALLBACK (terminal_checkbutton_toggled_cb), capplet); g_signal_connect (capplet->mail_reader_terminal_checkbutton, "toggled", G_CALLBACK (terminal_checkbutton_toggled_cb), capplet); + g_signal_connect (capplet->media_player_terminal_checkbutton, "toggled", + G_CALLBACK (terminal_checkbutton_toggled_cb), capplet); /* TODO: Remove when GConfPropertyEditor will be used */ g_signal_connect (capplet->web_browser_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet); g_signal_connect (capplet->mail_reader_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet); g_signal_connect (capplet->terminal_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet); g_signal_connect (capplet->terminal_exec_flag_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet); + g_signal_connect (capplet->media_player_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet); g_signal_connect (capplet->default_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); g_signal_connect (capplet->new_win_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); @@ -898,6 +1033,7 @@ main (int argc, char **argv) gconf_client_add_dir (capplet->gconf, "/desktop/gnome/applications/browser", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); gconf_client_add_dir (capplet->gconf, "/desktop/gnome/applications/terminal", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + gconf_client_add_dir (capplet->gconf, "/desktop/gnome/applications/media", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); gconf_client_add_dir (capplet->gconf, "/desktop/gnome/url-handlers", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_HTTP_PATH, @@ -909,6 +1045,9 @@ main (int argc, char **argv) gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_PATH, (GConfClientNotifyFunc) term_gconf_changed_cb, capplet, NULL, NULL); + gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_PATH, + (GConfClientNotifyFunc) media_gconf_changed_cb, + capplet, NULL, NULL); gnome_da_xml_load_list (capplet); diff --git a/capplets/default-applications/gnome-da-capplet.h b/capplets/default-applications/gnome-da-capplet.h index bd9041b32..6a7718821 100644 --- a/capplets/default-applications/gnome-da-capplet.h +++ b/capplets/default-applications/gnome-da-capplet.h @@ -58,6 +58,10 @@ #define DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG DEFAULT_APPS_KEY_TERMINAL_PATH"/exec_arg" #define DEFAULT_APPS_KEY_TERMINAL_EXEC DEFAULT_APPS_KEY_TERMINAL_PATH"/exec" +#define DEFAULT_APPS_KEY_MEDIA_PATH "/desktop/gnome/applications/media" +#define DEFAULT_APPS_KEY_MEDIA_EXEC DEFAULT_APPS_KEY_MEDIA_PATH"/exec" +#define DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM DEFAULT_APPS_KEY_MEDIA_PATH"/needs_term" + typedef struct _GnomeDACapplet GnomeDACapplet; struct _GnomeDACapplet { @@ -70,6 +74,7 @@ struct _GnomeDACapplet { GtkWidget *web_combo_box; GtkWidget *mail_combo_box; GtkWidget *term_combo_box; + GtkWidget *media_combo_box; GtkWidget *web_browser_command_entry; GtkWidget *web_browser_command_label; @@ -87,11 +92,16 @@ struct _GnomeDACapplet { GtkWidget *terminal_exec_flag_entry; GtkWidget *terminal_exec_flag_label; + GtkWidget *media_player_command_entry; + GtkWidget *media_player_command_label; + GtkWidget *media_player_terminal_checkbutton; + GConfClient *gconf; GList *web_browsers; GList *mail_readers; GList *terminals; + GList *media_players; }; #endif diff --git a/capplets/default-applications/gnome-da-item.c b/capplets/default-applications/gnome-da-item.c index 047232d51..d94bb13a2 100644 --- a/capplets/default-applications/gnome-da-item.c +++ b/capplets/default-applications/gnome-da-item.c @@ -31,12 +31,12 @@ gnome_da_web_item_new (void) return item; } -GnomeDAMailItem* -gnome_da_mail_item_new (void) +GnomeDASimpleItem* +gnome_da_simple_item_new (void) { - GnomeDAMailItem *item = NULL; + GnomeDASimpleItem *item = NULL; - item = g_new0 (GnomeDAMailItem, 1); + item = g_new0 (GnomeDASimpleItem, 1); return item; } @@ -69,7 +69,7 @@ gnome_da_web_item_free (GnomeDAWebItem *item) } void -gnome_da_mail_item_free (GnomeDAMailItem *item) +gnome_da_simple_item_free (GnomeDASimpleItem *item) { g_return_if_fail (item != NULL); diff --git a/capplets/default-applications/gnome-da-item.h b/capplets/default-applications/gnome-da-item.h index 2b68da131..fe2f4b9af 100644 --- a/capplets/default-applications/gnome-da-item.h +++ b/capplets/default-applications/gnome-da-item.h @@ -26,8 +26,8 @@ typedef struct _GnomeDAItem GnomeDAItem; typedef struct _GnomeDAWebItem GnomeDAWebItem; -typedef struct _GnomeDAMailItem GnomeDAMailItem; typedef struct _GnomeDATermItem GnomeDATermItem; +typedef struct _GnomeDASimpleItem GnomeDASimpleItem; struct _GnomeDAItem { gchar *name; @@ -45,7 +45,7 @@ struct _GnomeDAWebItem { gchar *win_command; }; -struct _GnomeDAMailItem { +struct _GnomeDASimpleItem { GnomeDAItem generic; gboolean run_in_terminal; }; @@ -56,10 +56,10 @@ struct _GnomeDATermItem { }; GnomeDAWebItem* gnome_da_web_item_new (void); -GnomeDAMailItem* gnome_da_mail_item_new (void); GnomeDATermItem* gnome_da_term_item_new (void); +GnomeDASimpleItem* gnome_da_simple_item_new (void); void gnome_da_web_item_free (GnomeDAWebItem *item); -void gnome_da_mail_item_free (GnomeDAMailItem *item); void gnome_da_term_item_free (GnomeDATermItem *item); +void gnome_da_simple_item_free (GnomeDASimpleItem *item); #endif diff --git a/capplets/default-applications/gnome-da-xml.c b/capplets/default-applications/gnome-da-xml.c index 5713d1a9b..f1a58552c 100644 --- a/capplets/default-applications/gnome-da-xml.c +++ b/capplets/default-applications/gnome-da-xml.c @@ -130,7 +130,8 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) xmlNode *root, *section, *element; gchar *executable; GnomeDAWebItem *web_item; - GnomeDAMailItem *mail_item; + GnomeDASimpleItem *mail_item; + GnomeDASimpleItem *media_item; GnomeDATermItem *term_item; xml_doc = xmlParseFile (filename); @@ -172,7 +173,7 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) if (!xmlStrncmp (element->name, "mail-reader", 11)) { executable = gnome_da_xml_get_string (element, "executable"); if (is_executable_valid (executable)) { - mail_item = gnome_da_mail_item_new (); + mail_item = gnome_da_simple_item_new (); mail_item->generic.name = gnome_da_xml_get_string (element, "name"); mail_item->generic.executable = executable; @@ -209,6 +210,27 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename) } } } + else if (!xmlStrncmp (section->name, "media-players", 13)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "media-player", 12)) { + executable = gnome_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + media_item = gnome_da_simple_item_new (); + + media_item->generic.name = gnome_da_xml_get_string (element, "name"); + media_item->generic.executable = executable; + media_item->generic.command = gnome_da_xml_get_string (element, "command"); + media_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name"); + + media_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal"); + + capplet->media_players = g_list_append (capplet->media_players, media_item); + } + else + g_free (executable); + } + } + } } xmlFreeDoc (xml_doc); @@ -236,11 +258,13 @@ void gnome_da_xml_free (GnomeDACapplet *capplet) { g_list_foreach (capplet->web_browsers, (GFunc) gnome_da_web_item_free, NULL); - g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_mail_item_free, NULL); + g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_simple_item_free, NULL); g_list_foreach (capplet->terminals, (GFunc) gnome_da_term_item_free, NULL); + g_list_foreach (capplet->media_players, (GFunc) gnome_da_simple_item_free, NULL); g_list_free (capplet->web_browsers); g_list_free (capplet->mail_readers); g_list_free (capplet->terminals); + g_list_free (capplet->media_players); g_object_unref (capplet->xml); g_free (capplet); diff --git a/capplets/default-applications/gnome-default-applications-properties.glade b/capplets/default-applications/gnome-default-applications-properties.glade index 7cb5291a2..1cf3b8cb6 100644 --- a/capplets/default-applications/gnome-default-applications-properties.glade +++ b/capplets/default-applications/gnome-default-applications-properties.glade @@ -293,7 +293,7 @@ 0.5 0 0 - mail_reader_command_entry + web_browser_command_entry PANGO_ELLIPSIZE_NONE -1 False @@ -521,6 +521,8 @@ + + False False 6 @@ -731,13 +733,15 @@ + True 12 False 18 - True + + False False 6 @@ -918,15 +922,15 @@ - + True False 6 - + True - <b>Audio Player</b> + <b>Multimedia Player</b> False True GTK_JUSTIFY_LEFT @@ -949,13 +953,13 @@ - + True False 12 - + True 0.5 0 @@ -970,13 +974,13 @@ - + True False 6 - + True False True @@ -989,7 +993,7 @@ - + True 1 3 @@ -998,7 +1002,7 @@ 12 - + True False Co_mmand: @@ -1011,7 +1015,7 @@ 0.5 0 0 - sound_command_entry + media_player_command_entry PANGO_ELLIPSIZE_NONE -1 False @@ -1028,7 +1032,7 @@ - + True All %s occurrences will be replaced with actual link True @@ -1049,7 +1053,7 @@ - + True False True @@ -1101,7 +1105,8 @@ - True + + False False 6 diff --git a/capplets/default-applications/gnome-default-applications.xml.in b/capplets/default-applications/gnome-default-applications.xml.in index 60b0cac3e..59d630d21 100644 --- a/capplets/default-applications/gnome-default-applications.xml.in +++ b/capplets/default-applications/gnome-default-applications.xml.in @@ -319,4 +319,35 @@ + + + <_name>Banshee Music Player + banshee + banshee + music-player-banshee + false + + + <_name>Muine Music Player + muine + muine + muine + false + + + <_name>Rhythmbox Music Player + rhythmbox + rhythmbox + rhythmbox + false + + + <_name>Totem Movie Player + totem + totem + totem + false + + +