FTP and News in default applications



Hi

I am looking at the control-center patches in SuSE package, and here's
one I am not sure whether I should just commit or not.

It adds FTP and News to the default applications capplet.

What do you think?
-- 
Rodrigo Moya <rodrigo gnome-db org>
--- capplets/default-applications/gnome-da-capplet.c
+++ capplets/default-applications/gnome-da-capplet.c
@@ -63,9 +63,15 @@
     if (widget == capplet->web_browser_command_entry) {
 	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, text, &error);
     }
+    else if (widget == capplet->ftp_client_command_entry) {
+	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_FTP_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->news_reader_command_entry) {
+	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_NEWS_EXEC, text, &error);
+    }
     else if (widget == capplet->terminal_command_entry) {
 	gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, text, &error);
     }
@@ -93,9 +99,15 @@
     if (GTK_WIDGET (togglebutton) == capplet->web_browser_terminal_checkbutton) {
 	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, is_active, &error);
     }
+    else if (GTK_WIDGET (togglebutton) == capplet->ftp_client_terminal_checkbutton) {
+	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_FTP_NEEDS_TERM, is_active, &error);
+    }
     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->news_reader_terminal_checkbutton) {
+	gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_NEWS_NEEDS_TERM, is_active, &error);
+    }
 
     if (error != NULL) {
 	g_warning (_("Error saving configuration: %s"), error->message);
@@ -217,6 +229,79 @@
 }
 	
 static void
+ftp_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
+{
+    GtkTreeIter iter;
+    GtkTreePath *path;
+    guint current_index;
+    gboolean is_custom_active;
+    GnomeDAFtpItem *item;
+    GConfChangeSet *cs;
+    GError *error = NULL;
+    char *ftp_cmd;
+    gboolean ftp_term;
+
+    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 == 0) {
+	is_custom_active = FALSE;
+	cs = gconf_change_set_new ();
+	ftp_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL);
+	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_FTP_EXEC, ftp_cmd);
+	g_free (ftp_cmd);
+	ftp_term = gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, NULL);
+	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_FTP_NEEDS_TERM, ftp_term);
+
+	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;
+	}
+    }
+    else {
+	current_index--;
+	if (current_index < g_list_length (capplet->ftp_clients)) {
+	    item = (GnomeDAFtpItem*) g_list_nth_data (capplet->ftp_clients, current_index);
+	    is_custom_active = FALSE;
+
+	    cs = gconf_change_set_new ();
+
+	    gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_FTP_EXEC, item->generic.command);
+	    gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_FTP_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;
+	}
+
+    }
+
+    ftp_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_FTP_EXEC, NULL);
+    gtk_entry_set_text (GTK_ENTRY (capplet->ftp_client_command_entry), ftp_cmd);
+    g_free (ftp_cmd);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->ftp_client_terminal_checkbutton),
+				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_FTP_NEEDS_TERM, NULL));
+
+    gtk_editable_set_editable (GTK_EDITABLE (capplet->ftp_client_command_entry), is_custom_active);
+    gtk_widget_set_sensitive (capplet->ftp_client_command_label, is_custom_active);
+    gtk_widget_set_sensitive (capplet->ftp_client_terminal_checkbutton, is_custom_active);
+}
+
+static void
 mail_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
     GtkTreeIter iter;
@@ -268,6 +353,57 @@
 }
 
 static void
+news_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
+{
+    GtkTreeIter iter;
+    GtkTreePath *path;
+    guint current_index;
+    gboolean is_custom_active;
+    GnomeDANewsItem *item;
+    GConfChangeSet *cs;
+    GError *error = NULL;
+    char *news_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->news_readers)) {
+	item = (GnomeDANewsItem*) g_list_nth_data (capplet->news_readers, current_index);
+	is_custom_active = FALSE;
+
+	cs = gconf_change_set_new ();
+
+	gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_NEWS_EXEC, item->generic.command);
+	gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_NEWS_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;
+    }
+
+    news_cmd = gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_NEWS_EXEC, NULL);
+    gtk_entry_set_text (GTK_ENTRY (capplet->news_reader_command_entry), news_cmd);
+    g_free (news_cmd);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->news_reader_terminal_checkbutton),
+				  gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_NEWS_NEEDS_TERM, NULL));
+
+    gtk_editable_set_editable (GTK_EDITABLE (capplet->news_reader_command_entry), is_custom_active);
+    gtk_widget_set_sensitive (capplet->news_reader_command_label, is_custom_active);
+    gtk_widget_set_sensitive (capplet->news_reader_terminal_checkbutton, is_custom_active);
+}
+
+static void
 terminal_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
 {
     GtkTreeIter iter;
@@ -351,7 +487,9 @@
     const gchar *icon;
 } icons[] = {
     { "web_browser_image", "web-browser"      },
+    { "ftp_client_image",  "folder-remote"    },
     { "mail_reader_image", "stock_mail-open"  },
+    { "news_reader_image", "stock_news"       },
 /*    { "messenger_image",   "im"               },
  *    { "image_image",       "image-viewer"     },
  *    { "sound_image",       "gnome-audio"      },
@@ -372,7 +510,9 @@
     }
 
     refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers);
+    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->ftp_combo_box), capplet->ftp_clients);
     refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers);
+    refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->news_combo_box), capplet->news_readers);
     refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals);
 }
 
@@ -496,6 +636,42 @@
 }
 
 static void
+ftp_client_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
+{
+    GList *entry;
+    gint index;
+    gboolean is_custom_active;
+
+    if (!strcmp (command, gtk_entry_get_text (GTK_ENTRY (capplet->web_browser_command_entry)))) {
+	is_custom_active = FALSE;
+	index = 0;
+    }
+    else {
+
+	entry = g_list_find_custom (capplet->ftp_clients, command, (GCompareFunc) generic_item_comp);
+
+	if (entry) {
+	    index = g_list_position (capplet->ftp_clients, entry) + 1;
+	    is_custom_active = FALSE;
+	}
+	else {
+	    /* index of 'Custom' combo box entry */
+	    index = g_list_length (capplet->ftp_clients) + 2;
+	    is_custom_active = TRUE;
+	}
+    }
+
+    gtk_entry_set_text (GTK_ENTRY (capplet->ftp_client_command_entry), command);
+
+    gtk_editable_set_editable (GTK_EDITABLE (capplet->ftp_client_command_entry), is_custom_active);
+    gtk_widget_set_sensitive (capplet->ftp_client_command_label, is_custom_active);
+    gtk_widget_set_sensitive (capplet->ftp_client_terminal_checkbutton, is_custom_active);
+
+    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->ftp_combo_box)) != index)
+	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->ftp_combo_box), index);
+}
+
+static void
 mail_reader_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
 {
     GList *entry;
@@ -525,6 +701,35 @@
 }
 
 static void
+news_reader_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
+{
+    GList *entry;
+    gint index;
+    gboolean is_custom_active;
+
+    entry = g_list_find_custom (capplet->news_readers, command, (GCompareFunc) generic_item_comp);
+
+    if (entry) {
+	index = g_list_position (capplet->news_readers, entry);
+	is_custom_active = FALSE;
+    }
+    else {
+	/* index of 'Custom' combo box entry */
+	index = g_list_length (capplet->news_readers) + 1;
+	is_custom_active = TRUE;
+    }
+
+    gtk_entry_set_text (GTK_ENTRY (capplet->news_reader_command_entry), command);
+
+    gtk_editable_set_editable (GTK_EDITABLE (capplet->news_reader_command_entry), is_custom_active);
+    gtk_widget_set_sensitive (capplet->news_reader_command_label, is_custom_active);
+    gtk_widget_set_sensitive (capplet->news_reader_terminal_checkbutton, is_custom_active);
+
+    if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->news_combo_box)) != index)
+	gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->news_combo_box), index);
+}
+
+static void
 terminal_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
 {
     GList *entry;
@@ -562,11 +767,20 @@
     GError *error = NULL;
     GList *list_entry;
 
+    GtkTreeIter iter;
+    GtkTreePath *path;
+    guint current_index;
+
     g_return_if_fail (gconf_entry_get_key (entry) != NULL);
 
     if (!(value = gconf_entry_get_value (entry)))
 	return;
 
+    gtk_combo_box_get_active_iter (GTK_COMBO_BOX (capplet->ftp_combo_box), &iter);
+    path = gtk_tree_model_get_path (gtk_combo_box_get_model (GTK_COMBO_BOX (capplet->ftp_combo_box)), &iter);
+    current_index = gtk_tree_path_get_indices (path)[0];
+    gtk_tree_path_free (path);
+
     if (strcmp (entry->key, DEFAULT_APPS_KEY_HTTP_EXEC) == 0) {
 	gchar *short_browser, *pos;
 	const gchar *value_str = gconf_value_get_string (value);
@@ -579,6 +793,9 @@
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_EXEC, value);
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_EXEC, value);
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_EXEC, value);
+	if (current_index == 0) {
+	    gconf_change_set_set (cs, DEFAULT_APPS_KEY_FTP_EXEC, value);
+	}
 	pos = strstr (value_str, " ");
 	if (pos == NULL)
 	    short_browser = g_strdup (value_str);
@@ -618,6 +835,9 @@
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_NEEDS_TERM, value);
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_NEEDS_TERM, value);
 	gconf_change_set_set (cs, DEFAULT_APPS_KEY_BROWSER_NEEDS_TERM, value);
+	if (current_index == 0) {
+	    gconf_change_set_set (cs, DEFAULT_APPS_KEY_FTP_NEEDS_TERM, value);
+	}
 
 	gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error);
 
@@ -632,6 +852,26 @@
 }
 
 static void
+ftp_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_FTP_EXEC) == 0) {
+	ftp_client_update_combo_box (capplet, gconf_value_get_string (value));
+    }
+    /* TODO: Remove when GConfPropertyEditor will be used */
+    else if (strcmp (entry->key, DEFAULT_APPS_KEY_FTP_NEEDS_TERM) == 0) {
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->ftp_client_terminal_checkbutton),
+				      gconf_value_get_bool (value));
+    }
+}
+
+static void
 mail_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
 {
     GConfValue *value;
@@ -652,6 +892,26 @@
 }
 
 static void
+news_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_NEWS_EXEC) == 0) {
+	news_reader_update_combo_box (capplet, gconf_value_get_string (value));
+    }
+    /* TODO: Remove when GConfPropertyEditor will be used */
+    else if (strcmp (entry->key, DEFAULT_APPS_KEY_NEWS_NEEDS_TERM) == 0) {
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->news_reader_terminal_checkbutton),
+				      gconf_value_get_bool (value));
+    }
+}
+
+static void
 term_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
 {
     GConfValue *value;
@@ -685,7 +945,7 @@
 }
 
 static void
-fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list)
+fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list, gboolean ftp)
 {
     GList *entry;
     GtkTreeModel *model;
@@ -697,8 +957,13 @@
 	theme = gtk_icon_theme_get_default ();
     }
 
-    gtk_combo_box_set_row_separator_func (combo_box, is_separator,
-					  GINT_TO_POINTER (g_list_length (app_list)), NULL);
+    if (ftp)
+	/* FIXME: Add one another separator between Default web browser and list. */
+	gtk_combo_box_set_row_separator_func (combo_box, is_separator,
+					      GINT_TO_POINTER (g_list_length (app_list)+1), NULL);
+    else
+	gtk_combo_box_set_row_separator_func (combo_box, is_separator,
+					      GINT_TO_POINTER (g_list_length (app_list)), NULL);
 
     model = GTK_TREE_MODEL (gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING));
     gtk_combo_box_set_model (combo_box, model);
@@ -718,6 +983,17 @@
 				    "text", TEXT_COL,
 				    NULL);
 
+    if (ftp) {
+	pixbuf = gtk_icon_theme_load_icon (theme, "web-browser", 22, 0, NULL);
+	gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+	gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+			    PIXBUF_COL, pixbuf,
+			    TEXT_COL, _("Use default web browser"),
+			    -1);
+	if (pixbuf)
+	    g_object_unref (pixbuf);
+    }
+
     for (entry = app_list; entry != NULL; entry = g_list_next (entry)) {
 	GnomeDAItem *item;
 	item = (GnomeDAItem *) entry->data;
@@ -781,25 +1057,37 @@
     capplet->new_win_radiobutton = glade_xml_get_widget (capplet->xml, "web_browser_new_win_radiobutton");
     capplet->new_tab_radiobutton = glade_xml_get_widget (capplet->xml, "web_browser_new_tab_radiobutton");
 
+    capplet->ftp_client_command_entry = glade_xml_get_widget (capplet->xml, "ftp_client_command_entry");
+    capplet->ftp_client_command_label = glade_xml_get_widget (capplet->xml, "ftp_client_command_label");
+    capplet->ftp_client_terminal_checkbutton = glade_xml_get_widget (capplet->xml, "ftp_client_terminal_checkbutton");
+
     capplet->mail_reader_command_entry = glade_xml_get_widget (capplet->xml, "mail_reader_command_entry");
     capplet->mail_reader_command_label = glade_xml_get_widget (capplet->xml, "mail_reader_command_label");
     capplet->mail_reader_terminal_checkbutton = glade_xml_get_widget (capplet->xml, "mail_reader_terminal_checkbutton");
 
+    capplet->news_reader_command_entry = glade_xml_get_widget (capplet->xml, "news_reader_command_entry");
+    capplet->news_reader_command_label = glade_xml_get_widget (capplet->xml, "news_reader_command_label");
+    capplet->news_reader_terminal_checkbutton = glade_xml_get_widget (capplet->xml, "news_reader_terminal_checkbutton");
+
     capplet->terminal_command_entry = glade_xml_get_widget (capplet->xml, "terminal_command_entry");
     capplet->terminal_command_label = glade_xml_get_widget (capplet->xml, "terminal_command_label");
     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->web_combo_box = glade_xml_get_widget (capplet->xml, "web_browser_combobox");
+    capplet->ftp_combo_box = glade_xml_get_widget (capplet->xml, "ftp_client_combobox");
     capplet->mail_combo_box = glade_xml_get_widget (capplet->xml, "mail_reader_combobox");
+    capplet->news_combo_box = glade_xml_get_widget (capplet->xml, "news_reader_combobox");
     capplet->term_combo_box = glade_xml_get_widget (capplet->xml, "terminal_combobox");
 
     g_signal_connect (capplet->window, "screen-changed", G_CALLBACK (screen_changed_cb), capplet);
     screen_changed_cb (capplet->window, gdk_screen_get_default (), 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->web_combo_box), capplet->web_browsers, FALSE);
+    fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->ftp_combo_box), capplet->ftp_clients, TRUE);
+    fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers, FALSE);
+    fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->news_combo_box), capplet->news_readers, FALSE);
+    fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals, FALSE);
 
     /* update ui to gconf content */
     value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL);
@@ -818,6 +1106,21 @@
 	gconf_value_free (value);
     }
 
+    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_FTP_EXEC, NULL);
+    if (value)
+    {
+	ftp_client_update_combo_box (capplet, gconf_value_get_string (value));
+	gconf_value_free (value);
+    }
+
+    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_FTP_NEEDS_TERM, NULL);
+    if (value)
+    {
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->ftp_client_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)
     {
@@ -833,6 +1136,21 @@
 	gconf_value_free (value);
     }
 
+    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_NEWS_EXEC, NULL);
+    if (value)
+    {
+	news_reader_update_combo_box (capplet, gconf_value_get_string (value));
+	gconf_value_free (value);
+    }
+
+    value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_NEWS_NEEDS_TERM, NULL);
+    if (value)
+    {
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->news_reader_terminal_checkbutton),
+				      gconf_value_get_bool (value));
+	gconf_value_free (value);
+    }
+
     if (value)
     {
 	value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_TERMINAL_EXEC, NULL);
@@ -849,18 +1167,26 @@
     }
 
     g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet);
+    g_signal_connect (capplet->ftp_combo_box, "changed", G_CALLBACK (ftp_combo_changed_cb), capplet);
     g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet);
+    g_signal_connect (capplet->news_combo_box, "changed", G_CALLBACK (news_combo_changed_cb), capplet);
     g_signal_connect (capplet->term_combo_box, "changed", G_CALLBACK (terminal_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->ftp_client_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->news_reader_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->ftp_client_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->news_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);
 
@@ -903,9 +1229,15 @@
     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_FTP_PATH,
+			     (GConfClientNotifyFunc) ftp_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_NEWS_PATH,
+			     (GConfClientNotifyFunc) news_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);
--- capplets/default-applications/gnome-da-capplet.h
+++ capplets/default-applications/gnome-da-capplet.h
@@ -45,10 +45,18 @@
 #define DEFAULT_APPS_KEY_ABOUT_NEEDS_TERM DEFAULT_APPS_KEY_ABOUT_PATH"/needs_terminal"
 #define DEFAULT_APPS_KEY_ABOUT_EXEC       DEFAULT_APPS_KEY_ABOUT_PATH"/command"
 
+#define DEFAULT_APPS_KEY_FTP_PATH          "/desktop/gnome/url-handlers/ftp"
+#define DEFAULT_APPS_KEY_FTP_NEEDS_TERM    DEFAULT_APPS_KEY_FTP_PATH"/needs_terminal"
+#define DEFAULT_APPS_KEY_FTP_EXEC          DEFAULT_APPS_KEY_FTP_PATH"/command"
+
 #define DEFAULT_APPS_KEY_MAILER_PATH       "/desktop/gnome/url-handlers/mailto"
 #define DEFAULT_APPS_KEY_MAILER_NEEDS_TERM DEFAULT_APPS_KEY_MAILER_PATH"/needs_terminal"
 #define DEFAULT_APPS_KEY_MAILER_EXEC       DEFAULT_APPS_KEY_MAILER_PATH"/command"
 
+#define DEFAULT_APPS_KEY_NEWS_PATH         "/desktop/gnome/url-handlers/news"
+#define DEFAULT_APPS_KEY_NEWS_NEEDS_TERM   DEFAULT_APPS_KEY_NEWS_PATH"/needs_terminal"
+#define DEFAULT_APPS_KEY_NEWS_EXEC         DEFAULT_APPS_KEY_NEWS_PATH"/command"
+
 #define DEFAULT_APPS_KEY_BROWSER_PATH       "/desktop/gnome/applications/browser"
 #define DEFAULT_APPS_KEY_BROWSER_EXEC       DEFAULT_APPS_KEY_BROWSER_PATH"/exec"
 #define DEFAULT_APPS_KEY_BROWSER_NEEDS_TERM DEFAULT_APPS_KEY_BROWSER_PATH"/needs_term"
@@ -68,7 +76,9 @@
     GtkWidget *window;
 
     GtkWidget *web_combo_box;
+    GtkWidget *ftp_combo_box;
     GtkWidget *mail_combo_box;
+    GtkWidget *news_combo_box;
     GtkWidget *term_combo_box;
 
     GtkWidget *web_browser_command_entry;
@@ -78,10 +88,18 @@
     GtkWidget *new_win_radiobutton;
     GtkWidget *new_tab_radiobutton;
 
+    GtkWidget *ftp_client_command_entry;
+    GtkWidget *ftp_client_command_label;
+    GtkWidget *ftp_client_terminal_checkbutton;
+
     GtkWidget *mail_reader_command_entry;
     GtkWidget *mail_reader_command_label;
     GtkWidget *mail_reader_terminal_checkbutton;
 
+    GtkWidget *news_reader_command_entry;
+    GtkWidget *news_reader_command_label;
+    GtkWidget *news_reader_terminal_checkbutton;
+
     GtkWidget *terminal_command_entry;
     GtkWidget *terminal_command_label;
     GtkWidget *terminal_exec_flag_entry;
@@ -90,7 +108,9 @@
     GConfClient *gconf;
 
     GList *web_browsers;
+    GList *ftp_clients;
     GList *mail_readers;
+    GList *news_readers;
     GList *terminals;
 };
 
--- capplets/default-applications/gnome-da-item.c
+++ capplets/default-applications/gnome-da-item.c
@@ -31,6 +31,16 @@
     return item;
 }
 
+GnomeDAFtpItem*
+gnome_da_ftp_item_new (void)
+{
+    GnomeDAFtpItem *item = NULL;
+
+    item = g_new0 (GnomeDAFtpItem, 1);
+
+    return item;
+}
+
 GnomeDAMailItem*
 gnome_da_mail_item_new (void)
 {
@@ -41,6 +51,16 @@
     return item;
 }
 
+GnomeDANewsItem*
+gnome_da_news_item_new (void)
+{
+    GnomeDANewsItem *item = NULL;
+
+    item = g_new0 (GnomeDANewsItem, 1);
+
+    return item;
+}
+
 GnomeDATermItem*
 gnome_da_term_item_new (void)
 {
@@ -69,6 +89,20 @@
 }
 
 void
+gnome_da_ftp_item_free (GnomeDAFtpItem *item)
+{
+    g_return_if_fail (item != NULL);
+
+    g_free (item->generic.name);
+    g_free (item->generic.executable);
+    g_free (item->generic.command);
+    g_free (item->generic.icon_name);
+    g_free (item->generic.icon_path);
+
+    g_free (item);
+}
+
+void
 gnome_da_mail_item_free (GnomeDAMailItem *item)
 {
     g_return_if_fail (item != NULL);
@@ -83,6 +117,20 @@
 }
 
 void
+gnome_da_news_item_free (GnomeDANewsItem *item)
+{
+    g_return_if_fail (item != NULL);
+
+    g_free (item->generic.name);
+    g_free (item->generic.executable);
+    g_free (item->generic.command);
+    g_free (item->generic.icon_name);
+    g_free (item->generic.icon_path);
+
+    g_free (item);
+}
+
+void
 gnome_da_term_item_free (GnomeDATermItem *item)
 {
     g_return_if_fail (item != NULL);
--- capplets/default-applications/gnome-da-item.h
+++ capplets/default-applications/gnome-da-item.h
@@ -26,7 +26,9 @@
 typedef struct _GnomeDAItem GnomeDAItem;
 
 typedef struct _GnomeDAWebItem GnomeDAWebItem;
+typedef struct _GnomeDAFtpItem GnomeDAFtpItem;
 typedef struct _GnomeDAMailItem GnomeDAMailItem;
+typedef struct _GnomeDANewsItem GnomeDANewsItem;
 typedef struct _GnomeDATermItem GnomeDATermItem;
 
 struct _GnomeDAItem {
@@ -45,21 +47,35 @@
     gchar *win_command;
 };
 
+struct _GnomeDAFtpItem {
+    GnomeDAItem generic;
+    gboolean run_in_terminal;
+};
+
 struct _GnomeDAMailItem {
     GnomeDAItem generic;
     gboolean run_in_terminal;
 };
 
+struct _GnomeDANewsItem {
+    GnomeDAItem generic;
+    gboolean run_in_terminal;
+};
+
 struct _GnomeDATermItem {
     GnomeDAItem generic;
     gchar *exec_flag;
 };
 
 GnomeDAWebItem* gnome_da_web_item_new (void);
+GnomeDAFtpItem* gnome_da_ftp_item_new (void);
 GnomeDAMailItem* gnome_da_mail_item_new (void);
+GnomeDANewsItem* gnome_da_news_item_new (void);
 GnomeDATermItem* gnome_da_term_item_new (void);
 void gnome_da_web_item_free (GnomeDAWebItem *item);
+void gnome_da_ftp_item_free (GnomeDAFtpItem *item);
 void gnome_da_mail_item_free (GnomeDAMailItem *item);
+void gnome_da_news_item_free (GnomeDANewsItem *item);
 void gnome_da_term_item_free (GnomeDATermItem *item);
 
 #endif
--- capplets/default-applications/gnome-da-xml.c
+++ capplets/default-applications/gnome-da-xml.c
@@ -130,7 +130,9 @@
     xmlNode *root, *section, *element;
     gchar *executable;
     GnomeDAWebItem *web_item;
+    GnomeDAFtpItem *ftp_item;
     GnomeDAMailItem *mail_item;
+    GnomeDANewsItem *news_item;
     GnomeDATermItem *term_item;
 
     xml_doc = xmlParseFile (filename);
@@ -167,6 +169,27 @@
 		}
 	    }
 	}
+	else if (!xmlStrncmp (section->name, "ftp-clients", 12)) {
+	    for (element = section->children; element != NULL; element = element->next) {
+		if (!xmlStrncmp (element->name, "ftp-client", 11)) {
+		    executable = gnome_da_xml_get_string (element, "executable");
+		    if (is_executable_valid (executable)) {
+			ftp_item = gnome_da_ftp_item_new ();
+
+			ftp_item->generic.name = gnome_da_xml_get_string (element, "name");
+			ftp_item->generic.executable = executable;
+			ftp_item->generic.command = gnome_da_xml_get_string (element, "command");
+			ftp_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+
+			ftp_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal");
+
+			capplet->ftp_clients = g_list_append (capplet->ftp_clients, ftp_item);
+		    }
+		    else
+			g_free (executable);
+		}
+	    }
+	}
 	else if (!xmlStrncmp (section->name, "mail-readers", 12)) {
 	    for (element = section->children; element != NULL; element = element->next) {
 		if (!xmlStrncmp (element->name, "mail-reader", 11)) {
@@ -188,6 +211,27 @@
 		}
 	    }
 	}
+	else if (!xmlStrncmp (section->name, "news-readers", 12)) {
+	    for (element = section->children; element != NULL; element = element->next) {
+		if (!xmlStrncmp (element->name, "news-reader", 11)) {
+		    executable = gnome_da_xml_get_string (element, "executable");
+		    if (is_executable_valid (executable)) {
+			news_item = gnome_da_news_item_new ();
+
+			news_item->generic.name = gnome_da_xml_get_string (element, "name");
+			news_item->generic.executable = executable;
+			news_item->generic.command = gnome_da_xml_get_string (element, "command");
+			news_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
+
+			news_item->run_in_terminal = gnome_da_xml_get_bool (element, "run-in-terminal");
+
+			capplet->news_readers = g_list_append (capplet->news_readers, news_item);
+		    }
+		    else
+			g_free (executable);
+		}
+	    }
+	}
 	else if (!xmlStrncmp (section->name, "terminals", 9)) {
 	    for (element = section->children; element != NULL; element = element->next) {
 		if (!xmlStrncmp (element->name, "terminal", 8)) {
@@ -236,10 +280,14 @@
 gnome_da_xml_free (GnomeDACapplet *capplet)
 {
     g_list_foreach (capplet->web_browsers, (GFunc) gnome_da_web_item_free, NULL);
+    g_list_foreach (capplet->ftp_clients, (GFunc) gnome_da_ftp_item_free, NULL);
     g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_mail_item_free, NULL);
+    g_list_foreach (capplet->news_readers, (GFunc) gnome_da_news_item_free, NULL);
     g_list_foreach (capplet->terminals, (GFunc) gnome_da_term_item_free, NULL);
     g_list_free (capplet->web_browsers);
+    g_list_free (capplet->ftp_clients);
     g_list_free (capplet->mail_readers);
+    g_list_free (capplet->news_readers);
     g_list_free (capplet->terminals);
 
     g_object_unref (capplet->xml);
--- capplets/default-applications/gnome-default-applications-properties.glade
+++ capplets/default-applications/gnome-default-applications-properties.glade
@@ -339,6 +339,189 @@
 	      </child>
 
 	      <child>
+		<widget class="GtkVBox" id="ftp_client_vbox">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="ftp_client_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;b&gt;FTP Client&lt;/b&gt;</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">True</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>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="ftp_client_hbox">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">12</property>
+
+		      <child>
+			<widget class="GtkImage" id="ftp_client_image">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkVBox" id="ftp_client_options_vbox">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
+
+			  <child>
+			    <widget class="GtkComboBox" id="ftp_client_combobox">
+			      <property name="visible">True</property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkTable" id="ftp_client_options_table">
+			      <property name="visible">True</property>
+			      <property name="n_rows">1</property>
+			      <property name="n_columns">3</property>
+			      <property name="homogeneous">False</property>
+			      <property name="row_spacing">6</property>
+			      <property name="column_spacing">12</property>
+
+			      <child>
+				<widget class="GtkLabel" id="ftp_client_command_label">
+				  <property name="visible">True</property>
+				  <property name="sensitive">False</property>
+				  <property name="label" translatable="yes">Co_mmand:</property>
+				  <property name="use_underline">True</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="mnemonic_widget">ftp_client_command_entry</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>
+				</widget>
+				<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>
+				  <property name="x_options">fill</property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkEntry" id="ftp_client_command_entry">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">All %s occurrences will be replaced with actual link</property>
+				  <property name="can_focus">True</property>
+				  <property name="editable">False</property>
+				  <property name="visibility">True</property>
+				  <property name="max_length">0</property>
+				  <property name="text" translatable="yes"></property>
+				  <property name="has_frame">True</property>
+				  <property name="invisible_char">*</property>
+				  <property name="activates_default">False</property>
+				</widget>
+				<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"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkCheckButton" id="ftp_client_terminal_checkbutton">
+				  <property name="visible">True</property>
+				  <property name="sensitive">False</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Run in t_erminal</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">2</property>
+				  <property name="right_attach">3</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				  <property name="x_options">fill</property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
 		<widget class="GtkVBox" id="mail_reader_vbox">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
@@ -702,6 +885,190 @@
 		  <property name="fill">True</property>
 		</packing>
 	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="news_reader_vbox">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="news_reader_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;b&gt;News Reader&lt;/b&gt;</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">True</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>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="news_reader_hbox">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">12</property>
+
+		      <child>
+			<widget class="GtkImage" id="news_reader_image">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkVBox" id="news_reader_options_vbox">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
+
+			  <child>
+			    <widget class="GtkComboBox" id="news_reader_combobox">
+			      <property name="visible">True</property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkTable" id="news_reader_options_table">
+			      <property name="visible">True</property>
+			      <property name="n_rows">1</property>
+			      <property name="n_columns">3</property>
+			      <property name="homogeneous">False</property>
+			      <property name="row_spacing">6</property>
+			      <property name="column_spacing">12</property>
+
+			      <child>
+				<widget class="GtkLabel" id="news_reader_command_label">
+				  <property name="visible">True</property>
+				  <property name="sensitive">False</property>
+				  <property name="label" translatable="yes">Co_mmand:</property>
+				  <property name="use_underline">True</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="mnemonic_widget">news_reader_command_entry</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>
+				</widget>
+				<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>
+				  <property name="x_options">fill</property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkEntry" id="news_reader_command_entry">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">All %s occurrences will be replaced with actual link</property>
+				  <property name="can_focus">True</property>
+				  <property name="editable">False</property>
+				  <property name="visibility">True</property>
+				  <property name="max_length">0</property>
+				  <property name="text" translatable="yes"></property>
+				  <property name="has_frame">True</property>
+				  <property name="invisible_char">*</property>
+				  <property name="activates_default">False</property>
+				</widget>
+				<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"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkCheckButton" id="news_reader_terminal_checkbutton">
+				  <property name="visible">True</property>
+				  <property name="sensitive">False</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Run in t_erminal</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">2</property>
+				  <property name="right_attach">3</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				  <property name="x_options">fill</property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
 	    </widget>
 	    <packing>
 	      <property name="tab_expand">False</property>
--- capplets/default-applications/gnome-default-applications.xml.in
+++ capplets/default-applications/gnome-default-applications.xml.in
@@ -145,6 +145,25 @@
     </web-browser>
   </web-browsers>
 
+  <ftp-clients>
+    <ftp-client>
+      <_name>Nautilus</_name>
+      <executable>nautilus</executable>
+      <command>nautilus %s</command>
+      <icon-name>file-manager</icon-name>
+      <run-in-terminal>false</run-in-terminal>
+      <netscape-remote>false</netscape-remote>
+    </ftp-client>
+    <ftp-client>
+      <_name>gFTP</_name>
+      <executable>gftp</executable>
+      <command>gftp %s</command>
+      <icon-name>gftp</icon-name>
+      <run-in-terminal>false</run-in-terminal>
+      <netscape-remote>false</netscape-remote>
+    </ftp-client>
+  </ftp-clients>
+
   <mail-readers>
     <mail-reader>
       <_name>Evolution Mail Reader 2.4</_name>
@@ -267,6 +286,52 @@
     </mail-reader>
   </mail-readers>
 
+  <news-readers>
+    <news-reader>
+      <_name>Debian Sensible Browser</_name>
+      <executable>sensible-browser</executable>
+      <command>sensible-browser %s</command>
+      <icon-name></icon-name>
+      <run-in-terminal>false</run-in-terminal>
+      <netscape-remote>false</netscape-remote>
+    </news-reader>
+    <news-reader>
+      <_name>Thunderbird</_name>
+      <executable>thunderbird</executable>
+      <command>thunderbird %s</command>
+      <icon-name>thunderbird</icon-name>
+      <run-in-terminal>false</run-in-terminal>
+    </news-reader>
+    <news-reader>
+      <_name>Mozilla News 1.6</_name>
+      <executable>mozilla-1.6</executable>
+      <command>mozilla-1.6 -news %s</command>
+      <icon-name>mozilla-icon</icon-name>
+      <run-in-terminal>false</run-in-terminal>
+      <netscape-remote>true</netscape-remote>
+      <tab-command>mozilla-1.6 -news -remote "openurl(%s,new-tab)"</tab-command>
+      <win-command>mozilla-1.6 -news -remote "openurl(%s,new-window)"</win-command>
+    </news-reader>
+    <news-reader>
+      <_name>Mozilla News</_name>
+      <executable>mozilla</executable>
+      <command>mozilla -news %s</command>
+      <icon-name>mozilla-icon</icon-name>
+      <run-in-terminal>false</run-in-terminal>
+      <netscape-remote>true</netscape-remote>
+      <tab-command>mozilla -news -remote "openurl(%s,new-tab)"</tab-command>
+      <win-command>mozilla -news -remote "openurl(%s,new-window)"</win-command>
+    </news-reader>
+    <news-reader>
+      <_name>TIN News Reader</_name>
+      <executable>tin</executable>
+      <command>tin %s</command>
+      <icon-name>gnome-mime-application-x-executable</icon-name>
+      <run-in-terminal>true</run-in-terminal>
+      <netscape-remote>false</netscape-remote>
+    </news-reader>
+  </news-readers>
+
   <terminals>
     <terminal>
       <_name>Debian Terminal Emulator</_name>


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