X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=gtk-gui.c;fp=gtk-gui.c;h=bef03a04b0898818c69844660f0d66a9c8aa72a1;hb=549708c6eaab2d0592c3e520e0debd82d64619b4;hp=a76b0024a1c431dfdfdf12c51a31cfd7b3ac6146;hpb=d8c8ada6c7f3952394989b6a705624d94e956d7a;p=ext%2Fsubsurface.git diff --git a/gtk-gui.c b/gtk-gui.c index a76b002..bef03a0 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -170,7 +170,7 @@ static void file_open(GtkWidget *w, gpointer data) gtk_widget_destroy(dialog); } -static void file_save(GtkWidget *w, gpointer data) +static void file_save_as(GtkWidget *w, gpointer data) { GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new("Save File", @@ -189,12 +189,21 @@ static void file_save(GtkWidget *w, gpointer data) char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); save_dives(filename); + set_filename(filename); g_free(filename); mark_divelist_changed(FALSE); } gtk_widget_destroy(dialog); } +static void file_save(GtkWidget *w, gpointer data) +{ + if (!existing_filename) + return file_save_as(w, data); + + save_dives(existing_filename); +} + static void ask_save_changes() { GtkWidget *dialog, *label, *content; @@ -626,6 +635,7 @@ static GtkActionEntry menu_items[] = { { "HelpMenuAction", NULL, "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) }, + { "SaveFileAs", GTK_STOCK_SAVE_AS, NULL, 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", GTK_STOCK_ADD, "Add Dive", NULL, NULL, G_CALLBACK(add_dive_cb) }, @@ -647,6 +657,7 @@ static const gchar* ui_string = " \ \ \ \ + \ \ \ \ @@ -1187,7 +1198,9 @@ void update_progressbar_text(progressbar_t *progress, const char *text) void set_filename(const char *filename) { - if (!existing_filename && filename) + if (existing_filename) + free(existing_filename); + existing_filename = NULL; + if (filename) existing_filename = strdup(filename); - return; }