void board_window_apply_style (window_board_t *win) { /* check if the svg file is there */ if (win->svg) { struct stat buf; if (stat (win->svg, &buf) == -1) { g_free (win->svg); win->svg = NULL; } } /* otherwise set a default */ if (! win->svg) { int i; for (i = 0; svg_files[i] != NULL; i++) { struct stat buf; if (stat (svg_files[i], &buf) != -1) { win->svg = strdup (svg_files[i]); break; } } } if (! win->svg && win->hand_display_style == HAND_DISPLAY_STYLE_CARDS) /* still nothing... */ win->hand_display_style = HAND_DISPLAY_STYLE_TEXT; int h; for (h = 0; h < 4; h++) { hand_display_set_style(win->handdisp[h], win->hand_display_style); } hand_display_set_style(win->table, win->hand_display_style); window_card_set_style (win->hand_display_style); if (win->hand_display_style == HAND_DISPLAY_STYLE_CARDS && win->svg) { hand_display_set_svg (win->svg, win->card_width); } if (win->n_boards) show_board(CUR_BOARD, REDRAW_HANDS); }
/* set program data from options window */ static void apply_options (GtkWidget *window_options) { /* Card display */ GtkWidget *w = get_widget ("show_played_cards"); win->show_played_cards = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)); w = get_widget ("show_as_cards"); int style = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)) ? HAND_DISPLAY_STYLE_CARDS : HAND_DISPLAY_STYLE_TEXT; window_card_set_style (style); w = get_widget ("svg_file"); gchar *fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (w)); if (fname && strcmp (win->svg, fname)) { /* svg file changed */ if (win->svg) g_free (win->svg); win->svg = fname; } w = get_widget ("spinbutton_card_width"); int card_width = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (w)); board_window_set_style (win, style, card_width); board_window_apply_style (win); /* Hands */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (get_widget ("show_dd_all")))) { win->show_dd_scores = seat_all; } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (get_widget ("show_dd_ns")))) { win->show_dd_scores = north_south; } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (get_widget ("show_dd_ew")))) { win->show_dd_scores = east_west; } else { win->show_dd_scores = seat_none; } if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (get_widget ("show_hand_all")))) { win->show_hands = seat_all; } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (get_widget ("show_hand_ns")))) { win->show_hands = north_south; } else { win->show_hands = east_west; } /* Current board */ board *b = CUR_BOARD; w = get_widget ("entry_title"); g_string_printf (b->name, "%s", gtk_entry_get_text (GTK_ENTRY (w))); int i; for (i = 0; i < 4; i++) { w = get_widget (entry_name[i]); g_string_printf (b->hand_name[i], "%s", gtk_entry_get_text (GTK_ENTRY (w))); } /* Board list */ board **new_boards = malloc (win->n_boards_alloc * sizeof (board *)); //int new_cur = 0; i = 0; GtkTreeIter iter; gtk_tree_model_get_iter_first (GTK_TREE_MODEL (board_store), &iter); do { GValue val = { 0 }; gtk_tree_model_get_value (GTK_TREE_MODEL (board_store), &iter, 0, &val); int n = g_value_get_int (&val) - 1; assert (0 <= n && n < win->n_boards); new_boards[i] = win->boards[n]; /*if (n == win->cur) new_cur = i;*/ i++; } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (board_store), &iter)); free (win->boards); win->boards = new_boards; show_board(CUR_BOARD, REDRAW_HANDS | REDRAW_NAMES | REDRAW_CONTRACT | REDRAW_BOARD_LIST); }