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",
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;
{ "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 "<Shift>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) },
<menu name=\"FileMenu\" action=\"FileMenuAction\"> \
<menuitem name=\"Open\" action=\"OpenFile\" /> \
<menuitem name=\"Save\" action=\"SaveFile\" /> \
+ <menuitem name=\"Save as\" action=\"SaveFileAs\" /> \
<menuitem name=\"Print\" action=\"Print\" /> \
<separator name=\"Separator1\"/> \
<menuitem name=\"Preferences\" action=\"Preferences\" /> \
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;
}