]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Add a 'Save As' entry in the menu.
authorPierre-Yves Chibon <pingou@pingoured.fr>
Tue, 17 Jul 2012 14:49:27 +0000 (16:49 +0200)
committerPierre-Yves Chibon <pingou@pingoured.fr>
Fri, 17 Aug 2012 14:39:28 +0000 (16:39 +0200)
Add a "Save As" entry in the "File" menu allowing the user to specify the file in which to save
the data. This is useful as we no longer offer this option through the "Save" entry while the data
had been opened from an existing file.

Signed-off-by: Pierre-Yves Chibon
display-gtk.h
gtk-gui.c

index 059c6aa23be39d104a2bb50d36781fb753822736..1f143077e9e477b639311cfe8483c033235496dd 100644 (file)
@@ -31,9 +31,11 @@ typedef enum {
 
 #if defined __APPLE__
 #define CTRLCHAR "<Meta>"
+#define SHIFTCHAR "<Shift>"
 #define PREFERENCE_ACCEL "<Meta>comma"
 #else
 #define CTRLCHAR "<Control>"
+#define SHIFTCHAR "<Shift>"
 #define PREFERENCE_ACCEL NULL
 #endif
 
index a969e9552f7b13a23121796f3eb7734c42f500f5..02463d91e24c475c3a60f2a377db71577a3e3b68 100644 (file)
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -197,6 +197,30 @@ static void file_save(GtkWidget *w, gpointer data)
        }
 }
 
+static void file_save_as(GtkWidget *w, gpointer data)
+{
+       GtkWidget *dialog;
+       char *filename;
+       dialog = gtk_file_chooser_dialog_new("Save File As",
+       GTK_WINDOW(main_window),
+       GTK_FILE_CHOOSER_ACTION_SAVE,
+       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+       GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+       NULL);
+       gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+
+       gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), existing_filename);
+       if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+               filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+       }
+       gtk_widget_destroy(dialog);
+
+       if (filename){
+               save_dives(filename);
+               mark_divelist_changed(FALSE);
+       }
+}
+
 static gboolean ask_save_changes()
 {
        GtkWidget *dialog, *label, *content;
@@ -666,6 +690,7 @@ static GtkActionEntry menu_items[] = {
        { "HelpMenuAction", GTK_STOCK_HELP, "Help", NULL, NULL, NULL},
        { "OpenFile",       GTK_STOCK_OPEN, NULL,   CTRLCHAR "O", NULL, G_CALLBACK(file_open) },
        { "SaveFile",       GTK_STOCK_SAVE, NULL,   CTRLCHAR "S", NULL, G_CALLBACK(file_save) },
+       { "SaveAsFile",     GTK_STOCK_SAVE_AS, NULL,   SHIFTCHAR CTRLCHAR "S", NULL, G_CALLBACK(file_save_as) },
        { "Print",          GTK_STOCK_PRINT, NULL,  CTRLCHAR "P", NULL, G_CALLBACK(do_print) },
        { "Import",         NULL, "Import", NULL, NULL, G_CALLBACK(import_dialog) },
        { "AddDive",        NULL, "Add Dive", NULL, NULL, G_CALLBACK(add_dive_cb) },
@@ -687,6 +712,7 @@ static const gchar* ui_string = " \
                        <menu name=\"FileMenu\" action=\"FileMenuAction\"> \
                                <menuitem name=\"Open\" action=\"OpenFile\" /> \
                                <menuitem name=\"Save\" action=\"SaveFile\" /> \
+                               <menuitem name=\"Save As\" action=\"SaveAsFile\" /> \
                                <menuitem name=\"Print\" action=\"Print\" /> \
                                <separator name=\"Separator1\"/> \
                                <menuitem name=\"Preferences\" action=\"Preferences\" /> \