44 |
|
|
45 |
extern GladeXML *xml; |
extern GladeXML *xml; |
46 |
|
|
47 |
static struct file_handle *save_handle = 0; |
static struct file_handle *psppire_handle = 0; |
48 |
|
|
49 |
|
static const gchar handle_name[] = "psppire_handle"; |
50 |
|
|
51 |
|
static const gchar untitled[] = _("Untitled"); |
52 |
|
|
53 |
|
static const gchar window_title[]=_("PSPP Data Editor"); |
54 |
|
|
55 |
|
|
56 |
|
static void |
57 |
|
psppire_set_window_title(const gchar *text) |
58 |
|
{ |
59 |
|
GtkWidget *window1 = glade_xml_get_widget(xml, "window1"); |
60 |
|
|
61 |
|
gchar *title = g_strdup_printf("%s --- %s", text, window_title); |
62 |
|
|
63 |
|
gtk_window_set_title(GTK_WINDOW(window1), title); |
64 |
|
|
65 |
|
g_free(title); |
66 |
|
} |
67 |
|
|
68 |
|
|
69 |
|
gboolean |
70 |
|
callbacks_on_init(gpointer data) |
71 |
|
{ |
72 |
|
psppire_set_window_title(untitled); |
73 |
|
|
74 |
|
return FALSE; |
75 |
|
} |
76 |
|
|
77 |
void |
void |
78 |
on_new1_activate (GtkMenuItem *menuitem, |
on_new1_activate (GtkMenuItem *menuitem, |
88 |
psppire_var_sheet_clear(GTK_SHEET(var_sheet)); |
psppire_var_sheet_clear(GTK_SHEET(var_sheet)); |
89 |
psppire_data_sheet_clear(GTK_SHEET(data_sheet)); |
psppire_data_sheet_clear(GTK_SHEET(data_sheet)); |
90 |
|
|
91 |
if (save_handle) |
psppire_set_window_title(untitled); |
92 |
destroy_file_handle(save_handle, 0); |
|
93 |
save_handle = 0 ; |
if (psppire_handle) |
94 |
|
destroy_file_handle(psppire_handle, 0); |
95 |
|
psppire_handle = 0 ; |
96 |
} |
} |
97 |
|
|
98 |
|
|
99 |
|
|
100 |
|
|
101 |
void |
void |
102 |
on_open1_activate (GtkMenuItem *menuitem, |
on_open1_activate (GtkMenuItem *menuitem, |
103 |
gpointer user_data) |
gpointer user_data) |
115 |
|
|
116 |
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) |
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) |
117 |
{ |
{ |
|
struct file_handle *read_handle = 0; |
|
|
|
|
118 |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
119 |
g_assert(data_sheet); |
g_assert(data_sheet); |
120 |
|
|
124 |
char *filename = gtk_file_chooser_get_filename |
char *filename = gtk_file_chooser_get_filename |
125 |
(GTK_FILE_CHOOSER (dialog)); |
(GTK_FILE_CHOOSER (dialog)); |
126 |
|
|
127 |
read_handle = |
if ( psppire_handle ) |
128 |
create_file_handle_with_defaults ("__read_handle", filename); |
destroy_file_handle(psppire_handle, 0); |
129 |
g_free (filename); |
|
130 |
|
psppire_handle = |
131 |
|
create_file_handle_with_defaults (handle_name, filename); |
132 |
|
|
133 |
if ( !read_handle ) |
if ( !psppire_handle ) |
134 |
{ |
{ |
135 |
g_warning("Cannot read handle for reading system file \"%s\"\n", |
g_warning("Cannot read handle for reading system file \"%s\"\n", |
136 |
filename); |
filename); |
148 |
struct sfm_read_info ri; |
struct sfm_read_info ri; |
149 |
struct sfm_reader *reader ; |
struct sfm_reader *reader ; |
150 |
|
|
151 |
reader = sfm_open_reader (read_handle, &new_dict, &ri); |
reader = sfm_open_reader (psppire_handle, &new_dict, &ri); |
152 |
g_assert(reader); |
g_assert(reader); |
153 |
|
|
154 |
dict = pspp_dict_new_from_dict(new_dict); |
dict = pspp_dict_new_from_dict(new_dict); |
156 |
psppire_var_sheet_set_dictionary(GTK_SHEET(var_sheet), dict); |
psppire_var_sheet_set_dictionary(GTK_SHEET(var_sheet), dict); |
157 |
psppire_data_sheet_set_dictionary(GTK_SHEET(data_sheet), dict); |
psppire_data_sheet_set_dictionary(GTK_SHEET(data_sheet), dict); |
158 |
|
|
159 |
|
psppire_set_window_title(basename(filename)); |
160 |
|
|
161 |
|
g_free (filename); |
162 |
|
|
163 |
const int ni = dict_get_next_value_idx(dict->dict); |
const int ni = dict_get_next_value_idx(dict->dict); |
164 |
if ( ni == 0 ) |
if ( ni == 0 ) |
165 |
return; |
return; |
220 |
|
|
221 |
sfm_close_reader(reader); |
sfm_close_reader(reader); |
222 |
|
|
|
destroy_file_handle(read_handle, 0); |
|
|
|
|
|
if (save_handle) |
|
|
destroy_file_handle(save_handle, 0); |
|
|
save_handle = 0; |
|
223 |
} |
} |
224 |
|
|
225 |
gtk_widget_destroy (dialog); |
gtk_widget_destroy (dialog); |
248 |
|
|
249 |
if ( *handle ) |
if ( *handle ) |
250 |
destroy_file_handle(*handle, 0); |
destroy_file_handle(*handle, 0); |
251 |
*handle = create_file_handle_with_defaults ("__psppire_save_handle", |
*handle = create_file_handle_with_defaults (handle_name, |
252 |
filename); |
filename); |
253 |
|
|
254 |
|
psppire_set_window_title(basename(filename)); |
255 |
|
|
256 |
g_free (filename); |
g_free (filename); |
257 |
} |
} |
258 |
|
|
263 |
on_save1_activate (GtkMenuItem *menuitem, |
on_save1_activate (GtkMenuItem *menuitem, |
264 |
gpointer user_data) |
gpointer user_data) |
265 |
{ |
{ |
266 |
if ( ! save_handle ) |
if ( ! psppire_handle ) |
267 |
recreate_save_handle(&save_handle); |
recreate_save_handle(&psppire_handle); |
268 |
|
|
269 |
|
|
270 |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
272 |
|
|
273 |
PSPP_Dict *dict = psppire_var_sheet_get_dictionary(var_sheet); |
PSPP_Dict *dict = psppire_var_sheet_get_dictionary(var_sheet); |
274 |
|
|
275 |
if ( save_handle ) |
if ( psppire_handle ) |
276 |
psppire_create_system_file(data_sheet, dict, save_handle); |
psppire_create_system_file(data_sheet, dict, psppire_handle); |
277 |
} |
} |
278 |
|
|
279 |
|
|
281 |
on_save_as1_activate (GtkMenuItem *menuitem, |
on_save_as1_activate (GtkMenuItem *menuitem, |
282 |
gpointer user_data) |
gpointer user_data) |
283 |
{ |
{ |
284 |
recreate_save_handle(&save_handle); |
recreate_save_handle(&psppire_handle); |
285 |
if ( ! save_handle ) |
if ( ! psppire_handle ) |
286 |
return ; |
return ; |
287 |
|
|
288 |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
GtkWidget *data_sheet = glade_xml_get_widget(xml, "data_sheet"); |
290 |
|
|
291 |
PSPP_Dict *dict = psppire_var_sheet_get_dictionary(var_sheet); |
PSPP_Dict *dict = psppire_var_sheet_get_dictionary(var_sheet); |
292 |
|
|
293 |
if ( save_handle ) |
if ( psppire_handle ) |
294 |
psppire_create_system_file(data_sheet, dict, save_handle); |
psppire_create_system_file(data_sheet, dict, psppire_handle); |
295 |
} |
} |
296 |
|
|
297 |
|
|
370 |
on_about1_activate(GtkMenuItem *menuitem, |
on_about1_activate(GtkMenuItem *menuitem, |
371 |
gpointer user_data) |
gpointer user_data) |
372 |
{ |
{ |
373 |
|
GtkWidget *about = glade_xml_get_widget(xml, "aboutdialog1"); |
374 |
|
|
375 |
|
gtk_widget_show(about); |
376 |
|
|
377 |
|
gtk_window_set_transient_for(GTK_WINDOW(about), |
378 |
|
GTK_WINDOW(glade_xml_get_widget(xml, "window1"))); |
379 |
} |
} |
380 |
|
|
381 |
|
|