diff options
author | Damon Chaplin <damon@ximian.com> | 2002-06-14 21:28:59 +0000 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2002-06-14 21:28:59 +0000 |
commit | 5947b57b430e38997972331c7bce924dc56f9f66 (patch) | |
tree | a9fcc1711cb872de064b6db0133748f8e9d3e95e /src | |
parent | 1ae94a4976abd0ad42ec7f3c21e8071e6222de46 (diff) | |
download | nautilus-5947b57b430e38997972331c7bce924dc56f9f66.tar.gz |
new function to show the help file. (dialog_button_response_callback):
2002-06-14 Damon Chaplin <damon@ximian.com>
* src/nautilus-preferences-dialog.c (preferences_show_help): new
function to show the help file.
(dialog_button_response_callback): handle the Help button and show
the appropriate help file.
(preferences_dialog_create): add a Help button.
Based on patch from Satyajit Kanungo <satyajit.kanungo@wipro.com>.
Fixes bug #83511.
Diffstat (limited to 'src')
-rw-r--r-- | src/nautilus-preferences-dialog.c | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/src/nautilus-preferences-dialog.c b/src/nautilus-preferences-dialog.c index 229a676bb..35c323755 100644 --- a/src/nautilus-preferences-dialog.c +++ b/src/nautilus-preferences-dialog.c @@ -33,8 +33,12 @@ #include <eel/eel-preferences-box.h> #include <gtk/gtkdialog.h> #include <gtk/gtksignal.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkstock.h> #include <libgnome/gnome-i18n.h> #include <libgnome/gnome-util.h> +#include <libgnome/gnome-help.h> +#include <eel/eel-string.h> /* * This file contains the description of the preferences dialog in @@ -341,11 +345,74 @@ dialog_delete_event_callback (GtkWidget *widget, } static void +preferences_show_help (GtkWindow *parent, + char const *helpfile, + char const *sect_id) +{ + GError *error = NULL; + GtkWidget *dialog; + + g_return_if_fail (helpfile != NULL); + g_return_if_fail (sect_id != NULL); + + gnome_help_display_desktop (NULL, + "user-guide", + helpfile, sect_id, &error); + + if (error) { + dialog = gtk_message_dialog_new (GTK_WINDOW (parent), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("There was an error displaying help: %s"), + error->message); + + g_signal_connect (G_OBJECT (dialog), + "response", G_CALLBACK (gtk_widget_destroy), + NULL); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_widget_show (dialog); + g_error_free (error); + } +} + + + +static void dialog_button_response_callback (GtkDialog *dialog, int response_id, gpointer callback_data) { - gtk_widget_hide (GTK_WIDGET (dialog)); + EelPreferencesBox *preferences_box; + char *active_pane; + + if (response_id == GTK_RESPONSE_HELP) { + preferences_box = eel_preferences_dialog_get_box (GTK_WINDOW (dialog)); + active_pane = eel_preferences_box_get_active_pane (preferences_box); + + if (eel_str_is_equal (active_pane, "View Defaults")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-438"); + else if (eel_str_is_equal (active_pane, "Appearance")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-54"); + else if (eel_str_is_equal (active_pane, "Windows")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-55"); + else if (eel_str_is_equal (active_pane, "Desktop & Trash")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-448"); + else if (eel_str_is_equal (active_pane, "Icon & List Views")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-56"); + else if (eel_str_is_equal (active_pane, "Icon Captions")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-439"); + else if (eel_str_is_equal (active_pane, "Sidebar Panels")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-57"); + else if (eel_str_is_equal (active_pane,"Navigation")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-59"); + else if (eel_str_is_equal (active_pane, "Speed Tradeoffs")) + preferences_show_help (GTK_WINDOW (dialog), "wgosnautilus.xml", "gosnautilus-60"); + + g_free (active_pane); + } else { + gtk_widget_hide (GTK_WIDGET (dialog)); + } } static GtkWidget * @@ -358,6 +425,9 @@ preferences_dialog_create (void) gtk_window_set_wmclass (GTK_WINDOW (dialog), "nautilus_preferences", "Nautilus"); + gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_HELP, + GTK_RESPONSE_HELP); + g_signal_connect (dialog, "delete_event", G_CALLBACK (dialog_delete_event_callback), dialog); g_signal_connect (dialog, "response", |