Fixed error handling for loading puzzle or grid state
[wordblah.git] / wordblah_player.c
index 08db02e..2107a11 100644 (file)
@@ -554,7 +554,30 @@ void on_menu_load_grid_state_activate (GtkMenuItem *item, GtkDrawingArea *area)
        {
                char *filename;
                filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-               load_user_data (&app_data, filename);
+               MainPlayerData temp;
+               load_user_data (&temp, filename);
+               /* if the puzzle file is invalid or the grid is frozen */
+               if (temp.puzzle.grid_size == 0 || 
+                                               temp.puzzle.grid_frozen == false)
+               {
+                       GtkWidget *errordlg;
+                       char message[256];
+                       if (temp.puzzle.grid_size == 0)
+                               strcpy (message, INVALID_PUZZLE);
+                       else
+                               strcpy (message, UNFROZEN_GRID_PLAYER);
+                               
+                       errordlg = gtk_message_dialog_new (GTK_WINDOW(main_window), 
+                                                                                               GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                                                               GTK_MESSAGE_ERROR,
+                                                                                               GTK_BUTTONS_CLOSE,
+                                                                                               "%s",message);
+                       gtk_dialog_run (GTK_DIALOG(errordlg));
+                       gtk_widget_destroy (errordlg);          
+               
+               }
+               else
+                       app_data = temp;
                g_free (filename);
        }