gnome-control-center r8719 - trunk/capplets/default-applications



Author: thos
Date: Sun May 18 21:34:17 2008
New Revision: 8719
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8719&view=rev

Log:
2008-05-18  Thomas Wood  <thos gnome org>

	* gnome-da-capplet.c: Convert to use GConfPropertyEditor and remove
	a lot of duplicated code in the process.


Modified:
   trunk/capplets/default-applications/ChangeLog
   trunk/capplets/default-applications/gnome-da-capplet.c

Modified: trunk/capplets/default-applications/gnome-da-capplet.c
==============================================================================
--- trunk/capplets/default-applications/gnome-da-capplet.c	(original)
+++ trunk/capplets/default-applications/gnome-da-capplet.c	Sun May 18 21:34:17 2008
@@ -2,6 +2,7 @@
  *  Authors: Luca Cavalli <loopback slackit org>
  *
  *  Copyright 2005-2006 Luca Cavalli
+ *  Copyright 2008 Thomas Wood <thos gnome org>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of version 2 of the GNU General Public License
@@ -26,13 +27,12 @@
 #include <gnome.h>
 #include <glib/gi18n.h>
 
+#include "gconf-property-editor.h"
 #include "gnome-da-capplet.h"
 #include "gnome-da-xml.h"
 #include "gnome-da-item.h"
 #include "capplet-util.h"
 
-/* TODO: it doesn't use GConfPropertyEditor, use it when/if moved to control-center */
-
 enum
 {
     PIXBUF_COL,
@@ -52,89 +52,6 @@
     }
 }
 
-static gboolean
-entry_focus_out_event_cb (GtkWidget *widget, GdkEventFocus *event, GnomeDACapplet *capplet)
-{
-    const gchar *text;
-    GError *error = NULL;
-
-    text = gtk_entry_get_text (GTK_ENTRY (widget));
-
-    if (widget == capplet->web_browser_command_entry) {
-	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, text, &error);
-    }
-    else if (widget == capplet->mail_reader_command_entry) {
-	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_MAILER_EXEC, text, &error);
-    }
-    else if (widget == capplet->terminal_command_entry) {
-	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, text, &error);
-    }
-    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);
-	g_error_free (error);
-    }
-    else if (widget == capplet->visual_command_entry) {
-	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, text, NULL);
-    }
-    else if (widget == capplet->mobility_command_entry) {
-	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, text, NULL);
-    }
-
-    return FALSE;
-}
-
-static void
-terminal_checkbutton_toggled_cb (GtkWidget *togglebutton, GnomeDACapplet *capplet)
-{
-    gboolean is_active;
-    GError *error = NULL;
-
-    is_active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton));
-
-    if (togglebutton == capplet->web_browser_terminal_checkbutton) {
-	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, is_active, &error);
-    }
-    else if (togglebutton == capplet->mail_reader_terminal_checkbutton) {
-	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, is_active, &error);
-    }
-    else if (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);
-	g_error_free (error);
-    }
-}
-
-static void
-a11y_checkbutton_toggled_cb (GtkWidget *togglebutton, GnomeDACapplet *capplet)
-{
-    gboolean is_active;
-    GError *error = NULL;
-
-    is_active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton));
-
-    if (togglebutton == capplet->visual_startup_checkbutton) {
-	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, is_active, &error);
-    }
-    else if (togglebutton == capplet->mobility_startup_checkbutton) {
-	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, is_active, &error);
-    }
-
-    if (error != NULL) {
-	g_warning (_("Error saving configuration: %s"), error->message);
-	g_error_free (error);
-    }
-}
-
 static void
 set_icon (GtkImage *image, GtkIconTheme *theme, const char *name)
 {
@@ -182,61 +99,24 @@
 static void
 web_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
-    GtkTreeIter iter;
-    GtkTreePath *path;
     guint current_index;
     gboolean is_custom_active;
     gboolean has_net_remote;
     GnomeDAWebItem *item;
-    GConfChangeSet *cs;
-    GError *error = NULL;
-    char *http_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);
+    current_index = gtk_combo_box_get_active (combo);
 
     if (current_index < g_list_length (capplet->web_browsers)) {
-	gchar *command;
 
 	item = (GnomeDAWebItem*) g_list_nth_data (capplet->web_browsers, current_index);
 	has_net_remote = item->netscape_remote;
 	is_custom_active = FALSE;
 
-	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton)) && has_net_remote == TRUE)
-	    command = item->win_command;
-	else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton)) && has_net_remote == TRUE)
-	    command = item->tab_command;
-	else
-	    command = item->generic.command;
-
-	cs = gconf_change_set_new ();
-
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_HTTP_EXEC, command);
-	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_HTTP_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);
-	}
-
-	gconf_change_set_unref (cs);
     }
     else {
-	has_net_remote = FALSE;
-	is_custom_active = TRUE;
+        has_net_remote = FALSE;
+        is_custom_active = TRUE;
     }
-
-    http_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL);
-    gtk_entry_set_text (GTK_ENTRY (capplet->web_browser_command_entry),
-			http_cmd ? http_cmd : "");
-    g_free (http_cmd);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->web_browser_terminal_checkbutton),
-				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, NULL));
-
     gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote);
     gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote);
     gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote);
@@ -250,48 +130,11 @@
 static void
 mail_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 *mailer_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->mail_readers)) {
-	item = (GnomeDASimpleItem*) g_list_nth_data (capplet->mail_readers, current_index);
-	is_custom_active = FALSE;
-
-	cs = gconf_change_set_new ();
-
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_MAILER_EXEC, item->generic.command);
-	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_MAILER_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);
-	}
-
-	gconf_change_set_unref (cs);
-    }
-    else {
-	is_custom_active = TRUE;
-    }
 
-    mailer_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_MAILER_EXEC, NULL);
-    gtk_entry_set_text (GTK_ENTRY (capplet->mail_reader_command_entry),
-			mailer_cmd ? mailer_cmd : "");
-    g_free (mailer_cmd);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mail_reader_terminal_checkbutton),
-				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, NULL));
+    current_index = gtk_combo_box_get_active (combo);
+    is_custom_active = (current_index >= g_list_length (capplet->mail_readers));
 
     gtk_widget_set_sensitive (capplet->mail_reader_command_entry, is_custom_active);
     gtk_widget_set_sensitive (capplet->mail_reader_command_label, is_custom_active);
@@ -301,48 +144,11 @@
 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);
-	}
-
-	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 ? 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));
+    current_index = gtk_combo_box_get_active (combo);
+    is_custom_active = (current_index >= g_list_length (capplet->media_players));
 
     gtk_widget_set_sensitive (capplet->media_player_command_entry, is_custom_active);
     gtk_widget_set_sensitive (capplet->media_player_command_label, is_custom_active);
@@ -352,49 +158,11 @@
 static void
 terminal_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
-    GtkTreeIter iter;
-    GtkTreePath *path;
     guint current_index;
     gboolean is_custom_active;
-    GnomeDATermItem *item;
-    GConfChangeSet *cs;
-    GError *error = NULL;
-    char *terminal_cmd, *terminal_cmd_arg;
-
-    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->terminals)) {
-	item = (GnomeDATermItem*) g_list_nth_data (capplet->terminals, current_index);
-	is_custom_active = FALSE;
-
-	cs = gconf_change_set_new ();
-
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_TERMINAL_EXEC, item->generic.command);
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, item->exec_flag);
-
-	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);
-	}
 
-	gconf_change_set_unref (cs);
-    }
-    else {
-	is_custom_active = TRUE;
-    }
-    terminal_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, NULL);
-    terminal_cmd_arg = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, NULL);
-    gtk_entry_set_text (GTK_ENTRY (capplet->terminal_command_entry),
-			terminal_cmd ? terminal_cmd : "");
-    gtk_entry_set_text (GTK_ENTRY (capplet->terminal_exec_flag_entry),
-			terminal_cmd_arg ? terminal_cmd_arg : "");
-    g_free (terminal_cmd);
-    g_free (terminal_cmd_arg);
+    current_index = gtk_combo_box_get_active (combo);
+    is_custom_active = (current_index >= g_list_length (capplet->terminals));
 
     gtk_widget_set_sensitive (capplet->terminal_command_entry, is_custom_active);
     gtk_widget_set_sensitive (capplet->terminal_command_label, is_custom_active);
@@ -405,97 +173,24 @@
 static void
 visual_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
-    GtkTreeIter iter;
-    GtkTreePath *path;
     guint current_index;
     gboolean is_custom_active;
-    GnomeDAVisualItem *item;
-    GConfChangeSet *cs;
-    GError *error = NULL;
-    gchar *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->visual_ats)) {
-	item = (GnomeDAVisualItem *) g_list_nth_data (capplet->visual_ats, current_index);
-	is_custom_active = FALSE;
-
-	cs = gconf_change_set_new ();
-
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_VISUAL_EXEC, item->generic.command);
-	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_VISUAL_STARTUP, item->run_at_startup);
 
-	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);
-	}
-
-	gconf_change_set_unref (cs);
-    }
-    else {
-	is_custom_active = TRUE;
-    }
-
-    cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, NULL);
-    gtk_entry_set_text (GTK_ENTRY (capplet->visual_command_entry), cmd ? cmd : "");
-    g_free (cmd);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
-				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, NULL));
+    current_index = gtk_combo_box_get_active (combo);
+    is_custom_active = (current_index >= g_list_length (capplet->visual_ats));
 
     gtk_widget_set_sensitive (capplet->visual_command_entry, is_custom_active);
     gtk_widget_set_sensitive (capplet->visual_command_label, is_custom_active);
-
 }
 
 static void
 mobility_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
-    GtkTreeIter iter;
-    GtkTreePath *path;
     guint current_index;
     gboolean is_custom_active;
-    GnomeDAMobilityItem *item;
-    GConfChangeSet *cs;
-    GError *error = NULL;
-    gchar *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->mobility_ats)) {
-	item = (GnomeDAMobilityItem *) g_list_nth_data (capplet->mobility_ats, current_index);
-	is_custom_active = FALSE;
-
-	cs = gconf_change_set_new ();
 
-	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_MOBILITY_EXEC, item->generic.command);
-	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_MOBILITY_STARTUP, item->run_at_startup);
-
-	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);
-	}
-
-	gconf_change_set_unref (cs);
-    }
-    else {
-	is_custom_active = TRUE;
-    }
-
-    cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, NULL);
-    gtk_entry_set_text (GTK_ENTRY (capplet->mobility_command_entry), cmd ? cmd : "");
-    g_free (cmd);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mobility_startup_checkbutton),
-				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, NULL));
+    current_index = gtk_combo_box_get_active (combo);
+    is_custom_active = (current_index >= g_list_length (capplet->mobility_ats));
 
     gtk_widget_set_sensitive (capplet->mobility_command_entry, is_custom_active);
     gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active);
@@ -607,247 +302,20 @@
 }
 
 static void
-web_browser_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
-{
-    GList *entry;
-    gint index;
-    gboolean is_custom_active;
-
-    entry = g_list_find_custom (capplet->web_browsers, command, (GCompareFunc) web_item_comp);
-
-    if (entry) {
-	index = g_list_position (capplet->web_browsers, entry);
-	is_custom_active = FALSE;
-    }
-    else {
-	/* index of 'Custom' combo box entry */
-	index = g_list_length (capplet->web_browsers) + 1;
-	is_custom_active = TRUE;
-    }
-
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    gtk_entry_set_text (GTK_ENTRY (capplet->web_browser_command_entry), command);
-
-    gtk_widget_set_sensitive (capplet->web_browser_command_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->web_browser_command_label, is_custom_active);
-    gtk_widget_set_sensitive (capplet->web_browser_terminal_checkbutton, is_custom_active);
-
-    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->web_combo_box)) != index)
-	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->web_combo_box), index);
-}
-
-static void
-web_browser_update_radio_buttons (GnomeDACapplet *capplet, const gchar *command)
-{
-    GList *entry;
-    gboolean has_net_remote;
-
-    entry = g_list_find_custom (capplet->web_browsers, command, (GCompareFunc) web_item_comp);
-
-    if (entry) {
-	GnomeDAWebItem *item = (GnomeDAWebItem *) entry->data;
-
-	has_net_remote = item->netscape_remote;
-
-	if (has_net_remote) {
-	    /* disable "toggle" signal emitting, thus preventing calling this function twice */
-	    g_signal_handlers_block_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
-					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-	    g_signal_handlers_block_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
-					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-	    g_signal_handlers_block_matched (capplet->new_win_radiobutton,G_SIGNAL_MATCH_FUNC, 0,
-					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-
-	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->default_radiobutton),
-					  strcmp (item->generic.command, command) == 0);
-	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton),
-					  strcmp (item->tab_command, command) == 0);
-	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton),
-					  strcmp (item->win_command, command) == 0);
-
-	    g_signal_handlers_unblock_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
-					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-	    g_signal_handlers_unblock_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
-					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-	    g_signal_handlers_unblock_matched (capplet->new_win_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
-					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
-	}
-    }
-    else {
-	has_net_remote = FALSE;
-    }
-
-    gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote);
-    gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote);
-    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)
-{
-    GList *entry;
-    gint index;
-    gboolean is_custom_active;
-
-    entry = g_list_find_custom (capplet->mail_readers, command, (GCompareFunc) generic_item_comp);
-
-    if (entry) {
-	index = g_list_position (capplet->mail_readers, entry);
-	is_custom_active = FALSE;
-    }
-    else {
-	/* index of 'Custom' combo box entry */
-	index = g_list_length (capplet->mail_readers) + 1;
-	is_custom_active = TRUE;
-    }
-
-    gtk_entry_set_text (GTK_ENTRY (capplet->mail_reader_command_entry), command);
-
-    gtk_widget_set_sensitive (capplet->mail_reader_command_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->mail_reader_command_label, is_custom_active);
-    gtk_widget_set_sensitive (capplet->mail_reader_terminal_checkbutton, is_custom_active);
-
-    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->mail_combo_box)) != index)
-	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_widget_set_sensitive (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)
-{
-    GList *entry;
-    gint index;
-    gboolean is_custom_active;
-
-    entry = g_list_find_custom (capplet->terminals, command, (GCompareFunc) generic_item_comp);
-
-    if (entry) {
-	index = g_list_position (capplet->terminals, entry);
-	is_custom_active = FALSE;
-    }
-    else {
-	/* index of 'Custom' combo box entry */
-	index = g_list_length (capplet->terminals) + 1;
-	is_custom_active = TRUE;
-    }
-
-    gtk_entry_set_text (GTK_ENTRY (capplet->terminal_command_entry), command);
-
-    gtk_widget_set_sensitive (capplet->terminal_command_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->terminal_command_label, is_custom_active);
-    gtk_widget_set_sensitive (capplet->terminal_exec_flag_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->terminal_exec_flag_label, is_custom_active);
-
-    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->term_combo_box)) != index)
-	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->term_combo_box), index);
-}
-
-static void
-visual_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
-{
-    GList *entry;
-    gint index;
-    gboolean is_custom_active;
-
-    entry = g_list_find_custom (capplet->visual_ats, command, (GCompareFunc) generic_item_comp);
-
-    if (entry) {
-	index = g_list_position (capplet->visual_ats, entry);
-	is_custom_active = FALSE;
-    }
-    else {
-	/* index of 'Custom' combo box entry */
-	index = g_list_length (capplet->visual_ats) + 1;
-	is_custom_active = TRUE;
-    }
-
-    gtk_entry_set_text (GTK_ENTRY (capplet->visual_command_entry), command);
-
-    gtk_widget_set_sensitive (capplet->visual_command_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->visual_command_label, is_custom_active);
-
-    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->visual_combo_box)) != index)
-	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->visual_combo_box), index);
-}
-
-
-static void
-mobility_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
-{
-    GList *entry;
-    gint index;
-    gboolean is_custom_active;
-
-    entry = g_list_find_custom (capplet->mobility_ats, command, (GCompareFunc) generic_item_comp);
-
-    if (entry) {
-	index = g_list_position (capplet->mobility_ats, entry);
-	is_custom_active = FALSE;
-    }
-    else {
-	/* index of 'Custom' combo box entry */
-	index = g_list_length (capplet->mobility_ats) + 1;
-	is_custom_active = TRUE;
-    }
-
-    gtk_entry_set_text (GTK_ENTRY (capplet->mobility_command_entry), command);
-
-    gtk_widget_set_sensitive (capplet->mobility_command_entry, is_custom_active);
-    gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active);
-
-    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->mobility_combo_box)) != index)
-	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->mobility_combo_box), index);
-}
-
-static void
-web_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+web_gconf_changed_cb (GConfPropertyEditor *peditor, gchar *key, GConfValue *value, GnomeDACapplet *capplet)
 {
-    GConfValue *value;
     GConfChangeSet *cs;
     GError *error = NULL;
     GList *list_entry;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
-
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    /* This function is used to update HTTPS,ABOUT and UNKNOWN handlers, which
+     * should also use the same value as HTTP
+     */
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_HTTP_EXEC) == 0) {
+    if (strcmp (key, DEFAULT_APPS_KEY_HTTP_EXEC) == 0) {
 	gchar *short_browser, *pos;
 	const gchar *value_str = gconf_value_get_string (value);
 
-	web_browser_update_combo_box (capplet, value_str);
-	web_browser_update_radio_buttons (capplet, value_str);
-
 	cs = gconf_change_set_new ();
 
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_EXEC, value);
@@ -881,8 +349,7 @@
 
 	gconf_change_set_unref (cs);
     }
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    else if (strcmp (entry->key, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM) == 0) {
+    else if (strcmp (key, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM) == 0) {
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->web_browser_terminal_checkbutton),
 				      gconf_value_get_bool (value));
 
@@ -905,105 +372,188 @@
     }
 }
 
-/* FIXME: Refactor these two functions below into single one... */
 static void
-mail_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+web_browser_update_radio_buttons (GnomeDACapplet *capplet, const gchar *command)
 {
-    GConfValue *value;
+    GList *entry;
+    gboolean has_net_remote;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
+    entry = g_list_find_custom (capplet->web_browsers, command, (GCompareFunc) web_item_comp);
 
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    if (entry) {
+	GnomeDAWebItem *item = (GnomeDAWebItem *) entry->data;
+
+	has_net_remote = item->netscape_remote;
+
+	if (has_net_remote) {
+	    /* disable "toggle" signal emitting, thus preventing calling this function twice */
+	    g_signal_handlers_block_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
+					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
+	    g_signal_handlers_block_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
+					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
+	    g_signal_handlers_block_matched (capplet->new_win_radiobutton,G_SIGNAL_MATCH_FUNC, 0,
+					     0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_MAILER_EXEC) == 0) {
-	mail_reader_update_combo_box (capplet, gconf_value_get_string (value));
+	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->default_radiobutton),
+					  strcmp (item->generic.command, command) == 0);
+	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton),
+					  strcmp (item->tab_command, command) == 0);
+	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton),
+					  strcmp (item->win_command, command) == 0);
+
+	    g_signal_handlers_unblock_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
+					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
+	    g_signal_handlers_unblock_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
+					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
+	    g_signal_handlers_unblock_matched (capplet->new_win_radiobutton, G_SIGNAL_MATCH_FUNC, 0,
+					       0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL);
+	}
     }
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    else if (strcmp (entry->key, DEFAULT_APPS_KEY_MAILER_NEEDS_TERM) == 0) {
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mail_reader_terminal_checkbutton),
-				      gconf_value_get_bool (value));
+    else {
+	has_net_remote = FALSE;
     }
+
+    gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote);
+    gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote);
+    gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote);
 }
 
-static void
-media_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+static GConfValue*
+web_combo_conv_to_widget (GConfPropertyEditor *peditor, const GConfValue *value)
 {
-    GConfValue *value;
+    GConfValue *ret;
+    GList *entry, *handlers;
+    const gchar *command;
+    gint index;
+    GnomeDACapplet *capplet;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
+    g_object_get (G_OBJECT (peditor), "data", &capplet, NULL);
 
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    command = gconf_value_get_string (value);
+    handlers = capplet->web_browsers;
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_MEDIA_EXEC) == 0) {
-	media_player_update_combo_box (capplet, gconf_value_get_string (value));
+    if (handlers)
+    {
+      entry = g_list_find_custom (handlers, command, (GCompareFunc) web_item_comp);
+      if (entry)
+          index = g_list_position (handlers, entry);
+      else
+          index = g_list_length (handlers) + 1;
     }
-    /* 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));
+    else
+    {
+      /* if the item has no handlers lsit then select the Custom item */
+      index = 1;
     }
+
+    web_browser_update_radio_buttons (capplet, command);
+
+    ret = gconf_value_new (GCONF_VALUE_INT);
+    gconf_value_set_int (ret, index);
+    return ret;
 }
 
-static void
-term_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+static GConfValue*
+web_combo_conv_from_widget (GConfPropertyEditor *peditor, const GConfValue *value)
 {
-    GConfValue *value;
+    GConfValue *ret;
+    GList *handlers;
+    gint index;
+    GnomeDAWebItem *item;
+    const gchar *command;
+    GnomeDACapplet *capplet;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
+    g_object_get (G_OBJECT (peditor), "data", &capplet, NULL);
 
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    index = gconf_value_get_int (value);
+    handlers = capplet->web_browsers;
+
+    item = g_list_nth_data (handlers, index);
+
+    ret = gconf_value_new (GCONF_VALUE_STRING);
+    if (!item)
+    {
+        /* if item was not found, this is probably the "Custom" item */
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_TERMINAL_EXEC) == 0) {
-	terminal_update_combo_box (capplet, gconf_value_get_string (value));
+        /* XXX: returning "" as the value here is not ideal, but required to
+         * prevent the combo box from jumping back to the previous value if the
+         * user has selected Custom */
+        gconf_value_set_string (ret, "");
+        return ret;
     }
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    else if (strcmp (entry->key, DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG) == 0) {
-	gtk_entry_set_text (GTK_ENTRY (capplet->terminal_exec_flag_entry),
-			    gconf_value_get_string (value));
+    else
+    {
+        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton)) && item->netscape_remote == TRUE)
+            command = item->win_command;
+        else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton)) && item->netscape_remote == TRUE)
+            command = item->tab_command;
+        else
+            command = item->generic.command;
+
+        gconf_value_set_string (ret, command);
+        return ret;
     }
 }
 
-
-static void
-visual_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+static GConfValue*
+combo_conv_to_widget (GConfPropertyEditor *peditor, const GConfValue *value)
 {
-    GConfValue *value;
+    GConfValue *ret;
+    GList *entry, *handlers;
+    const gchar *command;
+    gint index;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
+    g_object_get (G_OBJECT (peditor), "data", &handlers, NULL);
 
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    command = gconf_value_get_string (value);
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_VISUAL_EXEC) == 0) {
-	visual_update_combo_box (capplet, gconf_value_get_string (value));
+    if (handlers)
+    {
+        entry = g_list_find_custom (handlers, command, (GCompareFunc) generic_item_comp);
+        if (entry)
+            index = g_list_position (handlers, entry);
+        else
+            index = g_list_length (handlers) + 1;
     }
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    else if (strcmp (entry->key, DEFAULT_APPS_KEY_VISUAL_STARTUP) == 0) {
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
-				      gconf_value_get_bool (value));
+    else
+    {
+        /* if the item has no handlers lsit then select the Custom item */
+        index = 1;
     }
+
+    ret = gconf_value_new (GCONF_VALUE_INT);
+    gconf_value_set_int (ret, index);
+    return ret;
 }
 
-static void
-mobility_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
+static GConfValue*
+combo_conv_from_widget (GConfPropertyEditor *peditor, const GConfValue *value)
 {
-    GConfValue *value;
+    GConfValue *ret;
+    GList *handlers;
+    gint index;
+    GnomeDAItem *item;
 
-    g_return_if_fail (gconf_entry_get_key (entry) != NULL);
+    g_object_get (G_OBJECT (peditor), "data", &handlers, NULL);
+    index = gconf_value_get_int (value);
 
-    if (!(value = gconf_entry_get_value (entry)))
-	return;
+    item = g_list_nth_data (handlers, index);
+    ret = gconf_value_new (GCONF_VALUE_STRING);
 
-    if (strcmp (entry->key, DEFAULT_APPS_KEY_MOBILITY_EXEC) == 0) {
-	mobility_update_combo_box (capplet, gconf_value_get_string (value));
+    if (!item)
+    {
+        /* if item was not found, this is probably the "Custom" item */
+
+        /* XXX: returning "" as the value here is not ideal, but required to
+         * prevent the combo box from jumping back to the previous value if the
+         * user has selected Custom */
+        gconf_value_set_string (ret, "");
+        return NULL;
     }
-    /* TODO: Remove when GConfPropertyEditor will be used */
-    else if (strcmp (entry->key, DEFAULT_APPS_KEY_MOBILITY_STARTUP) == 0) {
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mobility_startup_checkbutton),
-				      gconf_value_get_bool (value));
+    else
+    {
+        gconf_value_set_string (ret, item->command);
+        return ret;
     }
 }
 
@@ -1084,7 +634,7 @@
 static void
 show_dialog (GnomeDACapplet *capplet, const gchar *start_page)
 {
-    GConfValue *value;
+    GObject *obj;
 
     if (g_file_test (GNOMECC_GLADE_DIR "/gnome-default-applications-properties.glade", G_FILE_TEST_EXISTS) != FALSE) {
 	capplet->xml = glade_xml_new (GNOMECC_GLADE_DIR "/gnome-default-applications-properties.glade", NULL, NULL);
@@ -1155,104 +705,6 @@
     fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats);
     fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats);
 
-    /* update ui to gconf content */
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL);
-    if (value)
-    {
-	web_browser_update_combo_box (capplet, gconf_value_get_string (value));
-	web_browser_update_radio_buttons (capplet, gconf_value_get_string (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, NULL);
-    if (value)
-    {
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->web_browser_terminal_checkbutton),
-				      gconf_value_get_bool (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MAILER_EXEC, NULL);
-    if (value)
-    {
-	mail_reader_update_combo_box (capplet, gconf_value_get_string (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, NULL);
-    if (value)
-    {
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mail_reader_terminal_checkbutton),
-				      gconf_value_get_bool (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, NULL);
-    if (value)
-    {
-	terminal_update_combo_box (capplet, gconf_value_get_string (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, NULL);
-    if (value)
-    {
-	gtk_entry_set_text (GTK_ENTRY (capplet->terminal_exec_flag_entry),
-			    gconf_value_get_string (value));
-	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);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, NULL);
-
-    if (value)
-    {
-        visual_update_combo_box (capplet, gconf_value_get_string (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, NULL);
-
-    if (value)
-    {
-        gtk_toggle_button_set_active (
-            GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
-            gconf_value_get_bool (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, NULL);
-
-    if (value)
-    {
-        mobility_update_combo_box (capplet, gconf_value_get_string (value));
-	gconf_value_free (value);
-    }
-
-    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, NULL);
-
-    if (value)
-    {
-        gtk_toggle_button_set_active (
-            GTK_TOGGLE_BUTTON (capplet->mobility_startup_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);
@@ -1260,31 +712,130 @@
     g_signal_connect (capplet->visual_combo_box, "changed", G_CALLBACK (visual_combo_changed_cb), capplet);
     g_signal_connect (capplet->mobility_combo_box, "changed", G_CALLBACK (mobility_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);
-    g_signal_connect (capplet->visual_startup_checkbutton, "toggled",
-                    G_CALLBACK (a11y_checkbutton_toggled_cb), capplet);
-    g_signal_connect (capplet->mobility_startup_checkbutton, "toggled",
-                    G_CALLBACK (a11y_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->visual_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
-    g_signal_connect (capplet->mobility_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);
     g_signal_connect (capplet->new_tab_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet);
 
+    /* Setup GConfPropertyEditors */
+
+    /* Web Browser */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_HTTP_EXEC,
+        capplet->web_combo_box,
+        "conv-from-widget-cb", web_combo_conv_from_widget,
+        "conv-to-widget-cb", web_combo_conv_to_widget,
+        "data", capplet,
+        NULL);
+
+    obj = gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_HTTP_EXEC,
+        capplet->web_browser_command_entry,
+        NULL);
+    g_signal_connect (obj, "value-changed", G_CALLBACK (web_gconf_changed_cb), capplet);
+
+    obj = gconf_peditor_new_boolean (NULL,
+        DEFAULT_APPS_KEY_HTTP_NEEDS_TERM,
+        capplet->web_browser_terminal_checkbutton,
+        NULL);
+    g_signal_connect (obj, "value-changed", G_CALLBACK (web_gconf_changed_cb), capplet);
+
+    /* Mailer */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_MAILER_EXEC,
+        capplet->mail_combo_box,
+        "conv-from-widget-cb", combo_conv_from_widget,
+        "conv-to-widget-cb", combo_conv_to_widget,
+        "data", capplet->mail_readers,
+        NULL);
+
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_MAILER_EXEC,
+        capplet->mail_reader_command_entry,
+        NULL);
+
+    gconf_peditor_new_boolean (NULL,
+        DEFAULT_APPS_KEY_MAILER_NEEDS_TERM,
+        capplet->mail_reader_terminal_checkbutton,
+        NULL);
+
+    /* Media player */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_MEDIA_EXEC,
+        capplet->media_combo_box,
+        "conv-from-widget-cb", combo_conv_from_widget,
+        "conv-to-widget-cb", combo_conv_to_widget,
+        "data", capplet->media_players,
+        NULL);
+
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_MEDIA_EXEC,
+        capplet->media_player_command_entry,
+        NULL);
+
+    gconf_peditor_new_boolean (NULL,
+        DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM,
+        capplet->media_player_terminal_checkbutton,
+        NULL);
+
+    /* Terminal */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_TERMINAL_EXEC,
+        capplet->term_combo_box,
+        "conv-from-widget-cb", combo_conv_from_widget,
+        "conv-to-widget-cb", combo_conv_to_widget,
+        "data", capplet->terminals,
+        NULL);
+
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_TERMINAL_EXEC,
+        capplet->terminal_command_entry,
+        NULL);
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG,
+        capplet->terminal_exec_flag_entry,
+        NULL);
+
+
+    /* Visual */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_VISUAL_EXEC,
+        capplet->visual_combo_box,
+        "conv-from-widget-cb", combo_conv_from_widget,
+        "conv-to-widget-cb", combo_conv_to_widget,
+        "data", capplet->visual_ats,
+        NULL);
+
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_VISUAL_EXEC,
+        capplet->visual_command_entry,
+        NULL);
+
+    gconf_peditor_new_boolean (NULL,
+        DEFAULT_APPS_KEY_VISUAL_STARTUP,
+        capplet->visual_startup_checkbutton,
+        NULL);
+
+
+    /* Mobility */
+    gconf_peditor_new_combo_box (NULL,
+        DEFAULT_APPS_KEY_MOBILITY_EXEC,
+        capplet->mobility_combo_box,
+        "conv-from-widget-cb", combo_conv_from_widget,
+        "conv-to-widget-cb", combo_conv_to_widget,
+        "data", capplet->mobility_ats,
+        NULL);
+
+    gconf_peditor_new_string (NULL,
+        DEFAULT_APPS_KEY_MOBILITY_EXEC,
+        capplet->mobility_command_entry,
+        NULL);
+
+    gconf_peditor_new_boolean (NULL,
+        DEFAULT_APPS_KEY_MOBILITY_STARTUP,
+        capplet->mobility_startup_checkbutton,
+        NULL);
+
     gtk_window_set_icon_name (GTK_WINDOW (capplet->window),
 			      "gnome-settings-default-applications");
 
@@ -1348,32 +899,6 @@
 
     capplet = g_new0 (GnomeDACapplet, 1);
     capplet->gconf = gconf_client_get_default ();
-
-    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_add_dir (capplet->gconf, "/desktop/gnome/accessibility/at", GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
-
-    gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_HTTP_PATH,
-			     (GConfClientNotifyFunc) web_gconf_changed_cb,
-			     capplet, NULL, NULL);
-    gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_MAILER_PATH,
-			     (GConfClientNotifyFunc) mail_gconf_changed_cb,
-			     capplet, NULL, NULL);
-    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);
-    gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_PATH,
-			     (GConfClientNotifyFunc) visual_gconf_changed_cb,
-			     capplet, NULL, NULL);
-    gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_PATH,
-			     (GConfClientNotifyFunc) mobility_gconf_changed_cb,
-			     capplet, NULL, NULL);
-
     gnome_da_xml_load_list (capplet);
 
     show_dialog (capplet, start_page);



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