return psppire_data_window_type;
}
+static GObjectClass *parent_class ;
static void
psppire_data_window_finalize (GObject *object)
{
PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (object);
- GObjectClass *class = G_OBJECT_GET_CLASS (object);
-
- GObjectClass *parent_class = g_type_class_peek_parent (class);
-
g_object_unref (de->xml);
-
if (G_OBJECT_CLASS (parent_class)->finalize)
(*G_OBJECT_CLASS (parent_class)->finalize) (object);
}
static void
psppire_data_window_class_init (PsppireDataWindowClass *class)
{
+ parent_class = g_type_class_peek_parent (class);
}
#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 (de->file_name);
de->file_name = NULL;
- // default_window_name (de);
+ psppire_window_set_filename (PSPPIRE_WINDOW (de), NULL);
}
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));
}