Index: app/dialogs/preferences-dialog.c
===================================================================
RCS file: /cvs/gnome/gimp/app/dialogs/preferences-dialog.c,v
retrieving revision 1.374
diff -u -p -r1.374 preferences-dialog.c
--- app/dialogs/preferences-dialog.c	12 Apr 2006 12:49:18 -0000	1.374
+++ app/dialogs/preferences-dialog.c	10 May 2006 21:13:51 -0000
@@ -59,6 +59,13 @@
 
 #include "gimp-intl.h"
 
+enum {
+  KBS_IGNORE,
+  KBS_SAVE,
+  KBS_RESET,
+  KBS_CLEAR
+};
+
 
 /*  preferences local functions  */
 
@@ -87,10 +94,6 @@ static void   prefs_input_devices_dialog
 static void   prefs_input_dialog_able_callback    (GtkWidget  *widget,
                                                    GdkDevice  *device,
                                                    gpointer    data);
-static void   prefs_menus_save_callback           (GtkWidget  *widget,
-                                                   Gimp       *gimp);
-static void   prefs_menus_clear_callback          (GtkWidget  *widget,
-                                                   Gimp       *gimp);
 static void   prefs_session_save_callback         (GtkWidget  *widget,
                                                    Gimp       *gimp);
 static void   prefs_session_clear_callback        (GtkWidget  *widget,
@@ -99,10 +102,18 @@ static void   prefs_devices_save_callbac
                                                    Gimp       *gimp);
 static void   prefs_devices_clear_callback        (GtkWidget  *widget,
                                                    Gimp       *gimp);
+static void   prefs_menus_save_callback           (GtkWidget  *widget,
+                                                   Gimp       *gimp);
+static void   prefs_menus_clear_callback          (GtkWidget  *widget,
+                                                   Gimp       *gimp);
+static void   prefs_menus_remove_callback         (GtkWidget  *widget,
+                                                   Gimp       *gimp);
 static void   prefs_tool_options_save_callback    (GtkWidget  *widget,
                                                    Gimp       *gimp);
 static void   prefs_tool_options_clear_callback   (GtkWidget  *widget,
                                                    Gimp       *gimp);
+static void   prefs_add_tooltip                   (GtkWidget  *widget,
+                                                   gchar      *tip);
 
 
 /*  private variables  */
@@ -157,6 +168,16 @@ preferences_dialog_create (Gimp *gimp)
 /*  private functions  */
 
 static void
+prefs_add_tooltip (GtkWidget *widget,
+                   gchar     *tip)
+{
+  GtkTooltips *tooltip;
+
+  tooltip = gtk_tooltips_new ();
+  gtk_tooltips_set_tip (tooltip, widget, tip, NULL);
+}
+
+static void
 prefs_config_notify (GObject    *config,
                      GParamSpec *param_spec,
                      GObject    *config_copy)
@@ -487,6 +508,9 @@ prefs_menus_save_callback (GtkWidget *wi
 
   if (clear_button)
     gtk_widget_set_sensitive (clear_button, TRUE);
+
+  g_message (_("Your keyboard shortcuts have been saved so you can "
+               "use them the next time you start the GIMP."));
 }
 
 static void
@@ -505,11 +529,22 @@ prefs_menus_clear_callback (GtkWidget *w
       gtk_widget_set_sensitive (widget, FALSE);
 
       g_message (_("Your keyboard shortcuts will be reset to default values "
-                   "the next time you start GIMP."));
+                   "the next time you start the GIMP."));
     }
 }
 
 static void
+prefs_menus_remove_callback (GtkWidget *widget,
+                             Gimp      *gimp)
+{
+  /* Iterate over the list of actions, then save */
+  menus_remove (gimp);
+  menus_save (gimp, TRUE);
+  g_message (_("Your keyboard shortcuts will be cleared "
+               "the next time you start the GIMP."));
+}
+
+static void
 prefs_session_save_callback (GtkWidget *widget,
                              Gimp      *gimp)
 {
@@ -1434,22 +1469,42 @@ prefs_dialog_new (Gimp       *gimp,
                           _("_Save keyboard shortcuts on exit"),
                           GTK_BOX (vbox2));
 
+  hbox = gtk_hbox_new (FALSE, 6);
+  gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
+  gtk_widget_show (hbox);
+
   button = prefs_button_add (GTK_STOCK_SAVE,
-                             _("Save Keyboard Shortcuts _Now"),
-                             GTK_BOX (vbox2));
+                             _("Save _Now"),
+                             GTK_BOX (hbox));
+  prefs_add_tooltip (button, 
+      _("Saves the current Keyboard Shortcuts so you can access "
+        "them the next time you start the GIMP."));
   g_signal_connect (button, "clicked",
                     G_CALLBACK (prefs_menus_save_callback),
                     gimp);
 
   button2 = prefs_button_add (GIMP_STOCK_RESET,
-                              _("_Reset Saved Keyboard Shortcuts to "
-                                "Default Values"),
-                              GTK_BOX (vbox2));
+                              _("_Reset to Default Values"),
+                              GTK_BOX (hbox));
+  prefs_add_tooltip (button2, 
+      _("Resets all Keyboard Shortcuts to their default values "
+        "but these settings won't be available till the next time "
+        "you start the GIMP"));
   g_signal_connect (button2, "clicked",
                     G_CALLBACK (prefs_menus_clear_callback),
                     gimp);
 
   g_object_set_data (G_OBJECT (button), "clear-button", button2);
+
+  button = prefs_button_add (GIMP_STOCK_CLOSE,
+                              _("Remove _All"),
+                              GTK_BOX (hbox));
+  prefs_add_tooltip (button, 
+      _("Remove all Keyboard Shortcuts immediately and "
+        "saves the configuration."));
+  g_signal_connect (button, "clicked",
+                    G_CALLBACK (prefs_menus_remove_callback),
+                    gimp);
 
 
   /***********/
Index: app/menus/menus.c
===================================================================
RCS file: /cvs/gnome/gimp/app/menus/menus.c,v
retrieving revision 1.385
diff -u -p -r1.385 menus.c
--- app/menus/menus.c	27 Apr 2006 09:23:14 -0000	1.385
+++ app/menus/menus.c	10 May 2006 21:13:51 -0000
@@ -55,6 +55,11 @@
 /*  local function prototypes  */
 
 static void   menus_can_change_accels (GimpGuiConfig *config);
+static void   menus_remove_actions (gpointer        data,
+                                    const gchar    *accel_path,
+                                    guint           accel_key,
+                                    GdkModifierType accel_mods,
+                                    gboolean        changed);
 
 
 /*  global variables  */
@@ -424,6 +429,12 @@ menus_clear (Gimp    *gimp,
   return success;
 }
 
+void
+menus_remove (Gimp *gimp)
+{
+  gtk_accel_map_foreach(0,menus_remove_actions);
+}
+
 
 /*  private functions  */
 
@@ -433,4 +444,14 @@ menus_can_change_accels (GimpGuiConfig *
   g_object_set (gtk_settings_get_for_screen (gdk_screen_get_default ()),
                 "gtk-can-change-accels", config->can_change_accels,
                 NULL);
+}
+
+static void
+menus_remove_actions (gpointer        data,
+                      const gchar    *accel_path,
+                      guint           accel_key,
+                      GdkModifierType accel_mods,
+                      gboolean        changed)
+{
+  gtk_accel_map_change_entry (accel_path, 0, 0, TRUE);
 }
Index: app/menus/menus.h
===================================================================
RCS file: /cvs/gnome/gimp/app/menus/menus.h,v
retrieving revision 1.34
diff -u -p -r1.34 menus.h
--- app/menus/menus.h	20 Sep 2004 14:41:54 -0000	1.34
+++ app/menus/menus.h	10 May 2006 21:13:51 -0000
@@ -33,6 +33,7 @@ void       menus_save    (Gimp          
 
 gboolean   menus_clear   (Gimp               *gimp,
                           GError            **error);
+void       menus_remove  (Gimp               *gimp);
 
 
 #endif /* __MENUS_H__ */
