#endif
}
-static void
-open_data_file (const gchar *file_name, PsppireDataWindow *de)
+void
+psppire_data_window_load_file (PsppireDataWindow *de,
+ const gchar *file_name)
{
struct getl_interface *sss;
struct string filename;
psppire_window_set_filename (PSPPIRE_WINDOW (de), file_name);
add_most_recent (file_name);
}
+
+ psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE);
+ free (de->file_name);
+ de->file_name = g_strdup (file_name);
}
de->file_name =
gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
- open_data_file (de->file_name, de);
+ psppire_data_window_load_file (de, de->file_name);
}
break;
default:
ds_destroy (&file_name);
execute_syntax (sss);
+
+ psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE);
}
static void
data_save (GtkAction *action, PsppireDataWindow *de)
{
- if ( de->file_name)
+ if (de->file_name)
save_file (de);
else
data_save_as_dialog (action, de);
g_free (uri);
- open_data_file (file, de);
+ psppire_data_window_load_file (de, file);
g_free (file);
}
}
-
+static void
+set_unsaved (gpointer w)
+{
+ psppire_window_set_unsaved (PSPPIRE_WINDOW (w), TRUE);
+}
static void
psppire_data_window_init (PsppireDataWindow *de)
de->data_editor =
PSPPIRE_DATA_EDITOR (psppire_data_editor_new (the_var_store, the_data_store));
+ g_signal_connect_swapped (the_data_store, "case-changed",
+ G_CALLBACK (set_unsaved), de);
+
+ g_signal_connect_swapped (the_data_store, "case-inserted",
+ G_CALLBACK (set_unsaved), de);
+
+ g_signal_connect_swapped (the_data_store, "cases-deleted",
+ G_CALLBACK (set_unsaved), de);
+
+ dataset_set_callback (the_dataset, set_unsaved, de);
+
connect_help (de->xml);
g_object_ref (menubar);
psppire_data_window_new (void)
{
return GTK_WIDGET (g_object_new (psppire_data_window_get_type (),
- "usage", PSPPIRE_WINDOW_USAGE_DATA,
+ "description", _("Data Editor"),
NULL));
}