コード例 #1
0
ファイル: xqf-ui.c プロジェクト: IR4T4/xqf
GtkWidget *create_server_type_menu (int active_type,
		gboolean (*filterfunc)(enum server_type),
		GtkSignalFunc callback) {
	GtkWidget *option_menu = NULL;
	GtkWidget *menu = NULL;
	GtkWidget *menu_item = NULL;
	GtkWidget *first_menu_item = NULL;
	int i;
	int j = 0;
	int menu_type = 0;

	option_menu = gtk_option_menu_new ();

	menu = gtk_menu_new ();

	for (i = 0; i < GAMES_TOTAL; ++i) {
		if (filterfunc && !filterfunc (i))
			continue;

		menu_item = gtk_menu_item_new ();

		if (i == active_type) {
			first_menu_item = menu_item;
			menu_type = j;
		}
		else if (!first_menu_item)
			first_menu_item = menu_item;

		gtk_menu_append (GTK_MENU (menu), menu_item);

		gtk_container_add (GTK_CONTAINER (menu_item), game_pixmap_with_label (i));

		if (callback)
			gtk_signal_connect (GTK_OBJECT (menu_item), "activate", GTK_SIGNAL_FUNC (callback), GINT_TO_POINTER (i));

		gtk_widget_show (menu_item);

		++j; // must be here in case the continue was used
	}

	gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu);

	// initiates callback to set servertype to first configured game
	if (active_type != -1 && first_menu_item) {
		gtk_menu_item_activate (GTK_MENU_ITEM (first_menu_item));
		gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), menu_type);
	}

	return option_menu;
}
コード例 #2
0
ファイル: statistics.c プロジェクト: aufau/xqf
static GtkWidget *server_stats_page (void) {
	GtkWidget *page_vbox;
	GtkWidget *alignment;
	GtkWidget *table;
	GtkWidget *game_label;
	GtkWidget *scrollwin;
	int i;
	int row = 0;

	page_vbox = gtk_vbox_new (FALSE, 4);
	gtk_container_set_border_width (GTK_CONTAINER (page_vbox), 8);

	scrollwin = gtk_scrolled_window_new (NULL, NULL);
	gtk_box_pack_start (GTK_BOX (page_vbox), scrollwin, TRUE, TRUE, 0);

	alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin), alignment);

	table = gtk_table_new (GAMES_TOTAL + 2, 7, FALSE);
	gtk_container_add (GTK_CONTAINER (alignment), table);
	gtk_container_set_border_width (GTK_CONTAINER (table), 6);

	gtk_table_set_row_spacings (GTK_TABLE (table), 4);
	gtk_table_set_col_spacings (GTK_TABLE (table), 8);

	gtk_table_set_col_spacing (GTK_TABLE (table), 0, 20);
	gtk_table_set_col_spacing (GTK_TABLE (table), 1, 20);
	gtk_table_set_col_spacing (GTK_TABLE (table), 5, 20);
	gtk_table_set_row_spacing (GTK_TABLE (table), 0, 12);
	gtk_table_set_row_spacing (GTK_TABLE (table), GAMES_TOTAL, 12);

	for (i = 0; i < 6; i++)
		put_label_to_table (table, _(srv_headers[i]), 1.0, i + 1, 0);

	for (i = 0, row = 1; i < GAMES_TOTAL; i++) {

		// Skip a game if it's not configured and show only configured is enabled
		if (!games[i].cmd && default_show_only_configured_games)
			continue;

		game_label = game_pixmap_with_label (i);
		gtk_table_attach_defaults (GTK_TABLE (table), 
				game_label, 
				0, 1, row, row+1);

		put_server_stats (table, i, row);

		{
			srv_stats[GAMES_TOTAL].servers += srv_stats[i].servers;
			srv_stats[GAMES_TOTAL].ok      += srv_stats[i].ok;
			srv_stats[GAMES_TOTAL].timeout += srv_stats[i].timeout;
			srv_stats[GAMES_TOTAL].down    += srv_stats[i].down;
			srv_stats[GAMES_TOTAL].na      += srv_stats[i].na;
			srv_stats[GAMES_TOTAL].players += srv_stats[i].players;
		}

		row++;
	}

	put_label_to_table (table, _("Total"), 0.0, 0, row + 1);

	put_server_stats (table, GAMES_TOTAL, row + 1);

	gtk_widget_show (table);
	gtk_widget_show (scrollwin);

	gtk_widget_show (alignment);
	gtk_widget_show (page_vbox);

	return page_vbox;
}