Save and load grid state functionality implemented
[wordblah.git] / wordblox_player.c
index d1f0929..9560ac8 100644 (file)
@@ -535,15 +535,64 @@ void on_menu_reveal_solution_activate (GtkMenuItem *item, GtkDrawingArea *area)
 }
 
 /* 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 */