Пример #1
0
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);
}
Пример #2
0
/* 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);
}