static void destroy(GtkWidget *widget, gpointer data)
{
+ frontend *fe = (frontend *)data;
+ deactivate_timer(fe);
gtk_main_quit();
}
gtk_window_set_default(GTK_WINDOW(window), ok);
gtk_signal_connect(GTK_OBJECT(ok), "clicked",
GTK_SIGNAL_FUNC(errmsg_button_clicked), window);
+ gtk_signal_connect(GTK_OBJECT(window), "destroy",
+ GTK_SIGNAL_FUNC(window_destroy), NULL);
gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
GTK_SIGNAL_FUNC(win_key_press), ok);
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
gtk_widget_show(menuitem);
}
-static frontend *new_window(void)
+static frontend *new_window(char *game_id, char **error)
{
frontend *fe;
GtkBox *vbox;
time(&t);
fe->me = midend_new(fe, &t, sizeof(t));
+ if (game_id) {
+ *error = midend_game_id(fe->me, game_id, FALSE);
+ if (*error) {
+ midend_free(fe->me);
+ sfree(fe);
+ return NULL;
+ }
+ }
midend_new_game(fe->me);
fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
int main(int argc, char **argv)
{
+ char *pname = argv[0];
+ char *error;
+
gtk_init(&argc, &argv);
- (void) new_window();
+
+ if (!new_window(argc > 1 ? argv[1] : NULL, &error)) {
+ fprintf(stderr, "%s: %s\n", pname, error);
+ return 1;
+ }
+
gtk_main();
return 0;