X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/9b4b03d31e30089e9f45f6ea166561c4c0c25a9c..4b24f58222c549b383d23ed86a958c9656218c48:/gtk.c diff --git a/gtk.c b/gtk.c index 8c6a634..d721320 100644 --- a/gtk.c +++ b/gtk.c @@ -913,6 +913,17 @@ static void menu_copy_event(GtkMenuItem *menuitem, gpointer data) } } +static void menu_solve_event(GtkMenuItem *menuitem, gpointer data) +{ + frontend *fe = (frontend *)data; + char *msg; + + msg = midend_solve(fe->me); + + if (msg) + error_box(fe->window, msg); +} + static void menu_config_event(GtkMenuItem *menuitem, gpointer data) { frontend *fe = (frontend *)data; @@ -1050,6 +1061,14 @@ static frontend *new_window(char *game_id, char **error) GTK_SIGNAL_FUNC(menu_copy_event), fe); gtk_widget_show(menuitem); } + if (thegame.can_solve) { + add_menu_separator(GTK_CONTAINER(menu)); + menuitem = gtk_menu_item_new_with_label("Solve"); + gtk_container_add(GTK_CONTAINER(menu), menuitem); + gtk_signal_connect(GTK_OBJECT(menuitem), "activate", + GTK_SIGNAL_FUNC(menu_solve_event), fe); + gtk_widget_show(menuitem); + } add_menu_separator(GTK_CONTAINER(menu)); add_menu_item_with_key(fe, GTK_CONTAINER(menu), "Exit", 'q'); @@ -1203,9 +1222,12 @@ int main(int argc, char **argv) parstr = thegame.encode_params(par); while (n-- > 0) { - char *seed = thegame.new_seed(par, rs); + game_aux_info *aux = NULL; + char *seed = thegame.new_seed(par, rs, &aux); printf("%s:%s\n", parstr, seed); sfree(seed); + if (aux) + thegame.free_aux_info(aux); } return 0;