}
/* slot for load grid state menu */
-void on_menu_load_grid_state_activate (GtkMenuItem *item, gpointer *data)
+void on_menu_load_grid_state_activate (GtkMenuItem *item, GtkDrawingArea *area)
{
- /* TODO */
+ GtkWidget *dialog;
+ GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
+ gint res;
+ dialog = gtk_file_chooser_dialog_new (OPEN_FILE, GTK_WINDOW (main_window),
+ action,
+ "_Cancel",
+ GTK_RESPONSE_CANCEL,
+ "_Open",
+ GTK_RESPONSE_ACCEPT,
+ NULL
+ );
+
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (res == GTK_RESPONSE_ACCEPT)
+ {
+ char *filename;
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ load_user_data (&app_data, filename);
+ g_free (filename);
+ }
+
+ gtk_widget_destroy (dialog);
+
+ gtk_widget_queue_draw_area (GTK_WIDGET(area), 0, 0,
+ app_data.puzzle.grid_size*GRID_PIXELS+10,
+ app_data.puzzle.grid_size*GRID_PIXELS+10);
+
+ update_clue_items ();
}
/* slot for save grid state menu */
void on_menu_save_grid_state_activate (GtkMenuItem *item, gpointer *data)
{
- /* TODO */
+ if (app_data.is_loaded == false)
+ return;
+
+ GtkWidget *dialog;
+ GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
+ gint res;
+ dialog = gtk_file_chooser_dialog_new (SAVE_FILE, GTK_WINDOW(main_window),
+ action,
+ "_Cancel",
+ GTK_RESPONSE_CANCEL,
+ "_Save",
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (res == GTK_RESPONSE_ACCEPT)
+ {
+ char *filename;
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ save_user_data (&app_data, filename);
+ g_free (filename);
+ }
+
+ gtk_widget_destroy (dialog);
}
/* slot for exit menu */