--- same-gnome.c-orig Thu Jun 20 16:43:16 2002 +++ same-gnome.c Thu Jun 20 16:44:28 2002 @@ -56,6 +56,8 @@ static int nstones; static int ncolors; static int sync_stones = 0; +static int seed; +char game_label[32] ; /* This is used only while parsing arguments. */ static gchar *fname; @@ -374,6 +376,20 @@ static void new_game (void) { + char title_bar[32] ; + + if ( ! seed ) { + seed = time(NULL) ; + } + + sprintf( game_label, "Current Game Seed is %d", seed) ; + sprintf( title_bar, "Same Gnome #%d", seed) ; + + gnome_appbar_set_status(GNOME_APPBAR (appbar), _(game_label)); + gtk_window_set_title (GTK_WINDOW (app), title_bar); + + srand ( seed ); + fill_board (); set_score (0); gtk_widget_draw (draw_area, NULL); @@ -490,12 +506,63 @@ } static void +callback_seed_input (GtkWidget *widget, gpointer data) +{ + seed = atoi (gtk_entry_get_text (GTK_ENTRY (data))); + new_game () ; +} + +static void +callback_cancel (GtkWidget *widget, gpointer data) +{ + gtk_widget_destroy (GTK_WIDGET(data)); +} + +static void game_new_callback (GtkWidget *widget, void *data) { + seed = time(NULL) ; new_game (); } static void +new_game_with_seed_callback (void) +{ + GtkWidget *dialog, *entry, *label; + char buffer[32] ; + + + dialog = gnome_dialog_new (_("Seed"), + GNOME_STOCK_BUTTON_OK, + GNOME_STOCK_BUTTON_CANCEL, NULL); + + gnome_dialog_set_parent (GNOME_DIALOG (dialog), GTK_WINDOW (app)); + + label = gtk_label_new (_("Seed value:")); + gtk_box_pack_start_defaults (GTK_BOX(GNOME_DIALOG(dialog)->vbox), label); + gtk_widget_show (label); + + entry = gtk_entry_new (); + + sprintf (buffer, "%d", seed) ; + + gtk_entry_set_text(entry, buffer); + + gtk_box_pack_start_defaults (GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry); + gtk_widget_show (entry); + + gnome_dialog_button_connect (GNOME_DIALOG(dialog), 0, + GTK_SIGNAL_FUNC (callback_seed_input), entry); + gnome_dialog_button_connect (GNOME_DIALOG(dialog), 0, + GTK_SIGNAL_FUNC (callback_cancel), dialog); + gnome_dialog_button_connect (GNOME_DIALOG(dialog), 1, + GTK_SIGNAL_FUNC (callback_cancel), dialog); + gtk_widget_show (dialog); + +} + + +static void free_str (GtkWidget *widget, void *data) { free (data); @@ -679,6 +746,12 @@ GNOMEUIINFO_SEPARATOR, + GNOMEUIINFO_ITEM_STOCK(N_("New game with seed..."), + N_("Start a new game with a different seed"), + new_game_with_seed_callback, GNOME_STOCK_MENU_OPEN), + + GNOMEUIINFO_SEPARATOR, + GNOMEUIINFO_MENU_SCORES_ITEM(game_top_ten_callback, NULL), GNOMEUIINFO_SEPARATOR, @@ -831,8 +904,6 @@ gnome_config_pop_prefix (); } - - srand (time (NULL)); app = gnome_app_new("same-gnome", _("Same Gnome"));