17
#include "treeview_helper.h"
21
Creates the model for the treeview in the team selection window.
22
The model contains a list of all the teams from the leagues in
23
the country::leagues array; if show_cup_teams is TRUE, the
24
teams from international cups are shown, too.
25
@param show_cup_teams Whether or not teams from international
27
@param show_user_teams Whether or not user teams are shown.
28
@return The model containing the team names.
31
treeview_create_team_selection_list(gboolean show_cup_teams, gboolean show_user_teams)
37
ls = gtk_list_store_new(5,
44
for(i=0;i<ligs->len;i++)
46
for(j=0;j<lig(i).teams->len;j++)
48
if(team_is_user(&g_array_index(lig(i).teams, Team, j)) == -1)
50
gtk_list_store_append(ls, &iter);
51
treeview_helper_insert_icon(ls, &iter, 1, lig(i).symbol->str);
52
gtk_list_store_set(ls, &iter,
54
2, (gpointer)&g_array_index(lig(i).teams, Team, j),
56
4, (gpointer)&g_array_index(lig(i).teams, Team, j),
63
return GTK_TREE_MODEL(ls);
65
for(i=0;i<cps->len;i++)
66
if(cp(i).teams->len > 0)
67
for(j=0;j<cp(i).teams->len;j++)
69
gtk_list_store_append(ls, &iter);
70
treeview_helper_insert_icon(ls, &iter, 1,
71
((Team*)g_ptr_array_index(cp(i).teams, j))->symbol->str);
72
gtk_list_store_set(ls, &iter,
74
2, g_ptr_array_index(cp(i).teams, j),
76
4, g_ptr_array_index(cp(i).teams, j),
80
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), 4,
81
treeview_helper_team_compare, GINT_TO_POINTER(TEAM_COMPARE_AV_SKILL), NULL);
83
return GTK_TREE_MODEL(ls);
87
Sets up the treeview for the team selection window.
88
Columns and cell renderers are added etc.
89
@param treeview The treeview that gets configured.
92
treeview_set_up_team_selection_treeview(GtkTreeView *treeview)
94
GtkTreeViewColumn *col;
95
GtkCellRenderer *renderer;
97
gtk_tree_selection_set_mode(
98
gtk_tree_view_get_selection(treeview),
99
GTK_SELECTION_BROWSE);
100
gtk_tree_view_set_headers_visible(treeview, TRUE);
101
gtk_tree_view_set_rules_hint(treeview, TRUE);
103
/* Numbering the teams */
104
col = gtk_tree_view_column_new();
105
gtk_tree_view_append_column(treeview, col);
106
renderer = treeview_helper_cell_renderer_text_new();
107
gtk_tree_view_column_pack_start(col, renderer, TRUE);
108
gtk_tree_view_column_add_attribute(col, renderer,
112
col = gtk_tree_view_column_new();
113
gtk_tree_view_append_column(treeview, col);
114
renderer = gtk_cell_renderer_pixbuf_new();
115
gtk_tree_view_column_pack_start(col, renderer, TRUE);
116
gtk_tree_view_column_add_attribute(col, renderer,
120
col = gtk_tree_view_column_new();
121
gtk_tree_view_column_set_title(col, _("Team"));
122
gtk_tree_view_append_column(treeview, col);
123
renderer = treeview_helper_cell_renderer_text_new();
124
gtk_tree_view_column_pack_start(col, renderer, TRUE);
125
gtk_tree_view_column_set_cell_data_func(col, renderer,
126
treeview_helper_team_selection,
129
col = gtk_tree_view_column_new();
130
gtk_tree_view_column_set_title(col, _("League"));
131
gtk_tree_view_append_column(treeview, col);
132
renderer = treeview_helper_cell_renderer_text_new();
133
gtk_tree_view_column_pack_start(col, renderer, TRUE);
134
gtk_tree_view_column_add_attribute(col, renderer,
138
col = gtk_tree_view_column_new();
139
gtk_tree_view_column_set_title(col, _("Av.Sk."));
140
gtk_tree_view_column_set_sort_column_id(col, 4);
141
gtk_tree_view_append_column(treeview, col);
142
renderer = treeview_helper_cell_renderer_text_new();
143
gtk_tree_view_column_pack_start(col, renderer, TRUE);
144
gtk_tree_view_column_set_cell_data_func(col, renderer,
145
treeview_helper_team_selection,
150
/** Shows the list of teams in the game.
151
If show_cup_teams is TRUE, the teams from
152
international cups are shown, too.
153
@param treeview The treeview we show the list in.
154
@param show_cup_teams Whether or not teams from international
156
@param show_user_teams Whether or not user teams are shown.
159
treeview_show_team_list(GtkTreeView *treeview, gboolean show_cup_teams,
160
gboolean show_user_teams)
162
GtkTreeModel *team_list =
163
treeview_create_team_selection_list(show_cup_teams, show_user_teams);
164
GtkTreeSelection *selection;
166
treeview_helper_clear(treeview);
168
treeview_set_up_team_selection_treeview(treeview);
170
gtk_tree_view_set_model(treeview, team_list);
172
selection = gtk_tree_view_get_selection(treeview);
173
gtk_tree_selection_select_path(selection,
174
gtk_tree_path_new_from_string("0"));
175
g_object_unref(team_list);
178
/** Create the list store for a player list.
179
@param players The array containing the players.
180
@param attributes An array containing the attributes we show.
181
@param max The size of the attribute array.
182
@param separator Whether we draw a blank line after the 11th player. */
184
treeview_create_player_list(GPtrArray *players, gint *attributes, gint max,
185
gboolean show_separator, gboolean sortable)
190
GType types[max + 1];
192
types[0] = G_TYPE_INT;
194
types[i + 1] = G_TYPE_POINTER;
196
ls = gtk_list_store_newv(max + 1, types);
198
for(i=0;i<players->len;i++)
200
gtk_list_store_append(ls, &iter);
201
if(show_separator && i == 11)
203
gtk_list_store_set(ls, &iter, 0, const_int("int_treeview_helper_int_empty"), -1);
205
gtk_list_store_set(ls, &iter, j + 1, NULL, -1);
207
gtk_list_store_append(ls, &iter);
208
gtk_list_store_set(ls, &iter, 0, i + 1, -1);
211
gtk_list_store_set(ls, &iter, 0, i + 1, -1);
214
gtk_list_store_set(ls, &iter, j + 1, g_ptr_array_index(players, i), -1);
220
if(attributes[i] == PLAYER_LIST_ATTRIBUTE_POS ||
221
attributes[i] == PLAYER_LIST_ATTRIBUTE_SKILL ||
222
attributes[i] == PLAYER_LIST_ATTRIBUTE_GOALS ||
223
attributes[i] == PLAYER_LIST_ATTRIBUTE_SHOTS ||
224
attributes[i] == PLAYER_LIST_ATTRIBUTE_GAMES ||
225
attributes[i] == PLAYER_LIST_ATTRIBUTE_AGE ||
226
attributes[i] == PLAYER_LIST_ATTRIBUTE_ETAL ||
227
attributes[i] == PLAYER_LIST_ATTRIBUTE_VALUE ||
228
attributes[i] == PLAYER_LIST_ATTRIBUTE_WAGE)
229
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), i + 1,
230
treeview_helper_player_compare, GINT_TO_POINTER(attributes[i]), NULL);
233
return (GtkTreeModel*)ls;
236
/** Set up the tree view for a player list */
238
treeview_set_up_player_list(GtkTreeView *treeview, gint *attributes, gint max,
239
gboolean show_separator, gboolean sortable)
242
GtkTreeViewColumn *col;
243
GtkCellRenderer *renderer;
244
gchar *titles[PLAYER_LIST_ATTRIBUTE_END] =
264
gtk_tree_selection_set_mode(
265
gtk_tree_view_get_selection(treeview),
266
GTK_SELECTION_SINGLE);
267
gtk_tree_view_set_rules_hint(treeview, FALSE);
268
gtk_tree_view_set_headers_visible(treeview, TRUE);
270
/* number the players */
271
col = gtk_tree_view_column_new();
272
gtk_tree_view_append_column(treeview, col);
273
renderer = treeview_helper_cell_renderer_text_new();
274
gtk_tree_view_column_pack_start(col, renderer, TRUE);
275
gtk_tree_view_column_set_cell_data_func(col, renderer,
276
treeview_helper_int_to_cell,
280
col = gtk_tree_view_column_new();
281
gtk_tree_view_column_set_title(col, titles[attributes[i]]);
282
gtk_tree_view_append_column(treeview, col);
283
renderer = treeview_helper_cell_renderer_text_new();
284
gtk_tree_view_column_pack_start(col, renderer, TRUE);
285
gtk_tree_view_column_set_cell_data_func(col, renderer,
286
treeview_helper_player_to_cell,
287
GINT_TO_POINTER(attributes[i]),
290
if(attributes[i] != PLAYER_LIST_ATTRIBUTE_NAME &&
291
attributes[i] != PLAYER_LIST_ATTRIBUTE_TEAM &&
292
attributes[i] != PLAYER_LIST_ATTRIBUTE_LEAGUE_CUP)
294
gtk_tree_view_column_set_alignment(col, 0.5);
295
g_object_set(renderer, "xalign", 0.5,
300
(attributes[i] == PLAYER_LIST_ATTRIBUTE_POS ||
301
attributes[i] == PLAYER_LIST_ATTRIBUTE_SKILL ||
302
attributes[i] == PLAYER_LIST_ATTRIBUTE_GOALS ||
303
attributes[i] == PLAYER_LIST_ATTRIBUTE_SHOTS ||
304
attributes[i] == PLAYER_LIST_ATTRIBUTE_GAMES ||
305
attributes[i] == PLAYER_LIST_ATTRIBUTE_AGE ||
306
attributes[i] == PLAYER_LIST_ATTRIBUTE_ETAL ||
307
attributes[i] == PLAYER_LIST_ATTRIBUTE_VALUE ||
308
attributes[i] == PLAYER_LIST_ATTRIBUTE_WAGE))
309
gtk_tree_view_column_set_sort_column_id(col, i + 1);
314
/** Fill a treeview with the players from the pointer array. Show
315
player attributes according to 'attrib'.
316
@param treeview The treeview we fill.
317
@param players The pointer array with the players. We free it afterwards.
318
@param attrib The #PlayerListAttribute that determines which attributes to show.
319
@param show_separator Whether we draw a blank line after the 11th player. */
321
treeview_show_player_list(GtkTreeView *treeview, GPtrArray *players, PlayerListAttribute attribute,
322
gboolean show_separator)
325
gint columns = math_sum_int_array(attribute.on_off, PLAYER_LIST_ATTRIBUTE_END);
326
gint attributes[columns];
327
GtkTreeModel *model = NULL;
328
gboolean sortable = (treeview != GTK_TREE_VIEW(lookup_widget(window.main, "player_list1")));
330
treeview_helper_clear(treeview);
332
for(i=0;i<PLAYER_LIST_ATTRIBUTE_END;i++)
333
if(attribute.on_off[i])
334
attributes[cnt++] = i;
336
treeview_set_up_player_list(treeview, attributes, columns, show_separator, sortable);
338
model = treeview_create_player_list(players, attributes, columns, show_separator, sortable);
340
gtk_tree_view_set_model(treeview, model);
341
g_object_unref(model);
343
g_ptr_array_free(players, TRUE);
346
/** Show the list of the current user's players in the left view. */
348
treeview_show_user_player_list(void)
351
GPtrArray *players = NULL;
352
PlayerListAttribute attribute;
353
GtkWidget *treeview[2] =
354
{lookup_widget(window.main, "player_list1"),
355
lookup_widget(window.main, "player_list2")};
359
players = team_get_player_pointers(current_user.tm);
360
user_set_player_list_attributes(¤t_user, &attribute, i + 1);
361
treeview_show_player_list(GTK_TREE_VIEW(treeview[i]), players, attribute, TRUE);
365
/** Show the player list of a foreign team depending on the
368
treeview_show_player_list_team(GtkTreeView *treeview, const Team *tm, gint scout)
370
GPtrArray *players = team_get_player_pointers(tm);
372
treeview_show_player_list(treeview, players,
373
treeview_helper_get_attributes_from_scout(scout), TRUE);
376
/** Show the commentary and the minute belonging to the unit.
377
@param unit The #LiveGameUnit we show. */
379
treeview_live_game_show_commentary(const LiveGameUnit *unit)
381
GtkAdjustment *adjustment =
382
gtk_scrolled_window_get_vadjustment(
383
GTK_SCROLLED_WINDOW(lookup_widget(window.live,
384
"scrolledwindow9")));
387
gtk_tree_view_get_model(GTK_TREE_VIEW(lookup_widget(window.live, "treeview_commentary"))));
389
gchar buf[SMALL], buf2[SMALL];
391
sprintf(buf, "%3d.", live_game_unit_get_minute(unit));
392
if(unit->possession == 1)
393
sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>",
394
const_app("string_treeview_live_game_commentary_away_bg"),
395
const_app("string_treeview_live_game_commentary_away_fg"),
396
unit->event.commentary->str);
398
sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>",
399
const_app("string_treeview_helper_color_default_background"),
400
const_app("string_treeview_helper_color_default_foreground"),
401
unit->event.commentary->str);
403
gtk_list_store_prepend(ls, &iter);
404
treeview_helper_insert_icon(ls, &iter, 1, treeview_helper_live_game_icon(unit->event.type));
405
gtk_list_store_set(ls, &iter, 0, buf, 2, buf2, -1);
407
adjustment->value = adjustment->lower - adjustment->page_size;
408
gtk_adjustment_value_changed(adjustment);
411
/** Create the list store for the live game
413
@param unit The unit we show.
416
treeview_live_game_create_init_commentary(const LiveGameUnit *unit)
422
ls = gtk_list_store_new(3,
427
sprintf(buf, "%3d.", unit->minute);
429
gtk_list_store_append(ls, &iter);
430
treeview_helper_insert_icon(ls, &iter, 1, treeview_helper_live_game_icon(unit->event.type));
431
gtk_list_store_set(ls, &iter, 0, buf, 2, unit->event.commentary->str, -1);
433
return GTK_TREE_MODEL(ls);
436
/** Set up the commentary treeview for the live game. */
438
treeview_live_game_set_up_commentary(void)
440
GtkTreeView *treeview =
441
GTK_TREE_VIEW(lookup_widget(window.live, "treeview_commentary"));
442
GtkTreeViewColumn *col;
443
GtkCellRenderer *renderer;
445
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
447
gtk_tree_view_set_headers_visible(treeview, FALSE);
449
col = gtk_tree_view_column_new();
450
gtk_tree_view_append_column(treeview, col);
451
renderer = treeview_helper_cell_renderer_text_new();
452
gtk_tree_view_column_pack_start(col, renderer, TRUE);
453
gtk_tree_view_column_add_attribute(col, renderer,
456
col = gtk_tree_view_column_new();
457
gtk_tree_view_append_column(treeview, col);
458
renderer = gtk_cell_renderer_pixbuf_new();
459
gtk_tree_view_column_pack_start(col, renderer, TRUE);
460
gtk_tree_view_column_add_attribute(col, renderer,
463
col = gtk_tree_view_column_new();
464
gtk_tree_view_append_column(treeview, col);
465
renderer = treeview_helper_cell_renderer_text_new();
466
gtk_tree_view_column_pack_start(col, renderer, TRUE);
467
gtk_tree_view_column_add_attribute(col, renderer,
471
/** Show the first commentary of the live game
472
@param unit The #LiveGameUnit we show. */
474
treeview_live_game_show_initial_commentary(const LiveGameUnit *unit)
476
GtkTreeView *treeview =
477
GTK_TREE_VIEW(lookup_widget(window.live, "treeview_commentary"));
478
GtkTreeModel *model = NULL;
480
treeview_helper_clear(treeview);
482
treeview_live_game_set_up_commentary();
484
model = treeview_live_game_create_init_commentary(unit);
486
gtk_tree_view_set_model(treeview, model);
487
g_object_unref(model);
490
/** Fill the ls for the live game result treeview.
491
@param unit The current live game unit.
492
@return The ls we created. */
494
treeview_live_game_create_result(const LiveGameUnit *unit)
499
ls = gtk_list_store_new(3,
504
gtk_list_store_append(ls, &iter);
505
gtk_list_store_set(ls, &iter, 0, (gpointer)usr(stat2).live_game.fix,
506
1, (gpointer)unit, 2, (gpointer)usr(stat2).live_game.fix, -1);
508
return GTK_TREE_MODEL(ls);
511
/** Set up the treeview columns for the result. */
513
treeview_live_game_set_up_result(void)
516
GtkTreeView *treeview =
517
GTK_TREE_VIEW(lookup_widget(window.live, "treeview_result"));
518
GtkTreeViewColumn *col;
519
GtkCellRenderer *renderer;
521
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
523
gtk_tree_view_set_headers_visible(treeview, FALSE);
527
col = gtk_tree_view_column_new();
528
gtk_tree_view_append_column(treeview, col);
529
renderer = treeview_helper_cell_renderer_text_new();
530
gtk_tree_view_column_pack_start(col, renderer, TRUE);
531
gtk_tree_view_column_set_cell_data_func(col, renderer,
532
treeview_helper_live_game_result,
537
/** Write the current result of the live game into
538
the corresponding treeview.
539
@param unit The current live game unit. */
541
treeview_live_game_show_result(const LiveGameUnit *unit)
543
GtkTreeView *treeview =
544
GTK_TREE_VIEW(lookup_widget(window.live, "treeview_result"));
545
GtkTreeModel *model = NULL;
547
treeview_helper_clear(treeview);
549
treeview_live_game_set_up_result();
551
model = treeview_live_game_create_result(unit);
553
gtk_tree_view_set_model(treeview, model);
554
g_object_unref(model);
557
/** Fill a tree model with the users. */
559
treeview_create_users(void)
565
ls = gtk_list_store_new(4,
570
for(i=0;i<users->len;i++)
572
gtk_list_store_append(ls, &iter);
573
gtk_list_store_set(ls, &iter, 0, i + 1,
575
2, usr(i).tm->name->str,
578
if(stat0 == STATUS_TEAM_SELECTION)
580
if(usr(i).scout == -1)
581
gtk_list_store_set(ls, &iter, 3,
582
league_from_clid(usr(i).tm->clid)->name->str, -1);
584
gtk_list_store_set(ls, &iter, 3,
585
lig(usr(i).scout).name->str, -1);
588
gtk_list_store_set(ls, &iter, 3,
589
league_from_clid(usr(i).tm->clid)->name->str, -1);
592
return GTK_TREE_MODEL(ls);
595
/** Set up the users treeview.
596
@param treeview The treeview we use. */
598
treeview_set_up_users(GtkTreeView *treeview)
601
GtkTreeViewColumn *col;
602
GtkCellRenderer *renderer;
609
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
610
GTK_SELECTION_SINGLE);
611
gtk_tree_view_set_rules_hint(treeview, FALSE);
612
gtk_tree_view_set_headers_visible(treeview, TRUE);
616
col = gtk_tree_view_column_new();
617
gtk_tree_view_column_set_title(col, titles[i]);
618
gtk_tree_view_append_column(treeview, col);
619
renderer = treeview_helper_cell_renderer_text_new();
620
gtk_tree_view_column_pack_start(col, renderer, (i != 3));
621
gtk_tree_view_column_add_attribute(col, renderer,
626
/** Show the list of users at startup.
627
@param treeview The treeview we use. */
629
treeview_show_users(GtkTreeView *treeview)
631
GtkTreeModel *model = NULL;
633
treeview_helper_clear(treeview);
635
treeview_set_up_users(treeview);
636
model = treeview_create_users();
637
gtk_tree_view_set_model(treeview, model);
638
g_object_unref(model);
641
/** Fill a model with live game stats.
642
@param live_game The live game. */
644
treeview_create_game_stats(LiveGame *live_game)
647
LiveGameStats *stats = &live_game->stats;
652
gchar *categories[LIVE_GAME_STAT_VALUE_END] =
653
{_("Goals (regular)"),
663
ls = gtk_list_store_new(3,
668
fixture_result_to_buf(live_game->fix, buf[0]);
669
gtk_list_store_append(ls, &iter);
670
gtk_list_store_set(ls, &iter, 0, live_game->fix->teams[0]->name->str,
672
2, live_game->fix->teams[1]->name->str,
675
for(k=0;k<LIVE_GAME_STAT_ARRAY_END;k++)
677
if(k == LIVE_GAME_STAT_ARRAY_SCORERS)
684
strcpy(buf[1], " </span>");
685
if(k == LIVE_GAME_STAT_ARRAY_INJURED)
686
sprintf(buf[0], "<span background='%s'> ",
687
const_app("string_treeview_helper_color_player_injury"));
688
else if(k == LIVE_GAME_STAT_ARRAY_REDS)
689
sprintf(buf[0], "<span background='%s'> ",
690
const_app("string_treeview_helper_color_player_banned"));
691
else if(k == LIVE_GAME_STAT_ARRAY_YELLOWS)
692
sprintf(buf[0], "<span background='%s'> ",
693
const_app("string_treeview_helper_color_player_yellow_danger"));
696
for(i=0;i<MAX(stats->players[0][k]->len,
697
stats->players[1][k]->len);i++)
699
gtk_list_store_append(ls, &iter);
700
gtk_list_store_set(ls, &iter, 1, "", -1);
703
if(i < stats->players[j][k]->len)
705
sprintf(buf3, "%s%s%s", buf[0],
706
((GString*)g_ptr_array_index(stats->players[j][k], i))->str,
708
gtk_list_store_set(ls, &iter, j * 2, buf3, -1);
714
misc_print_grouped_int(live_game->fix->attendance, buf[0], FALSE);
715
sprintf(buf[1], _("Attendance\n%s"), buf[0]);
716
gtk_list_store_append(ls, &iter);
717
gtk_list_store_set(ls, &iter, 0, buf[1], 1, "", 2, "", -1);
719
if(live_game->stadium_event != -1)
721
gtk_list_store_append(ls, &iter);
722
if(live_game->stadium_event == LIVE_GAME_EVENT_STADIUM_BREAKDOWN)
723
sprintf(buf[0], _("<span background='%s'>There were technical problems\nin the stadium.</span>"),
724
const_app("string_treeview_stadium_event_bg"));
725
else if(live_game->stadium_event == LIVE_GAME_EVENT_STADIUM_RIOTS)
726
sprintf(buf[0], _("<span background='%s'>There were riots\nin the stadium.</span>"),
727
const_app("string_treeview_stadium_event_bg"));
729
sprintf(buf[0], _("<span background='%s'>There was a fire\nin the stadium.</span>"),
730
const_app("string_treeview_stadium_event_bg"));
732
gtk_list_store_set(ls, &iter, 0, buf[0], 1, "", 2, "", -1);
735
gtk_list_store_append(ls, &iter);
736
gtk_list_store_set(ls, &iter, 0, "", 1, "", 2, "", -1);
738
for(i=0;i<LIVE_GAME_STAT_VALUE_END;i++)
740
if(i != LIVE_GAME_STAT_VALUE_POSSESSION)
742
sprintf(buf[j], "%d", stats->values[j][i]);
745
sprintf(buf[j], "%d", (gint)rint(100 * ((gfloat)stats->values[j][i] /
746
((gfloat)stats->values[0][i] +
747
(gfloat)stats->values[1][i]))));
749
gtk_list_store_append(ls, &iter);
750
gtk_list_store_set(ls, &iter, 0, buf[0],
755
return GTK_TREE_MODEL(ls);
758
/** Configure a treeview to show game stats.
759
@param treeview The treeview. */
761
treeview_set_up_game_stats(GtkTreeView *treeview)
764
GtkTreeViewColumn *col;
765
GtkCellRenderer *renderer;
767
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
769
gtk_tree_view_set_rules_hint(treeview, FALSE);
770
gtk_tree_view_set_headers_visible(treeview, FALSE);
774
col = gtk_tree_view_column_new();
775
gtk_tree_view_append_column(treeview, col);
776
renderer = treeview_helper_cell_renderer_text_new();
777
gtk_tree_view_column_pack_start(col, renderer, TRUE);
778
gtk_tree_view_column_add_attribute(col, renderer,
781
g_object_set(renderer, "xalign", 0 + (2 - i) * 0.5,
786
/** Show the stats of the live game in a treeview.
787
@param live_game The live game. */
789
treeview_show_game_stats(GtkTreeView *treeview, LiveGame *live_game)
791
GtkTreeModel *model = NULL;
793
treeview_helper_clear(treeview);
795
treeview_set_up_game_stats(treeview);
796
model = treeview_create_game_stats(live_game);
797
gtk_tree_view_set_model(treeview, model);
798
g_object_unref(model);
801
/** Write some general information like cup/league name,
803
@param fix A 'sample' fixture.
804
@param ls The ls we edit.
805
@param blank_line Whether to draw a blank line after the header. */
807
treeview_create_fixtures_header(const Fixture *fix, GtkListStore *ls, gboolean blank_line)
810
gchar buf[SMALL], buf2[SMALL], buf3[SMALL],
813
gchar *symbol = NULL;
815
sprintf(buf3, _("Week %d Round %d"), fix->week_number, fix->week_round_number);
817
if(fix->clid < ID_CUP_START)
819
name = league_from_clid(fix->clid)->name->str;
820
strcpy(round_name, "");
821
symbol = league_from_clid(fix->clid)->symbol->str;
825
name = cup_from_clid(fix->clid)->name->str;
826
cup_round_name(fix, buf);
827
sprintf(round_name, "\n%s", buf);
829
symbol = cup_from_clid(fix->clid)->symbol->str;
832
sprintf(buf, "<span background='%s' foreground='%s'>%s%s</span>",
833
const_app("string_treeview_fixture_header_bg"),
834
const_app("string_treeview_fixture_header_fg"),
836
sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>",
837
const_app("string_treeview_fixture_header_bg"),
838
const_app("string_treeview_fixture_header_fg"), buf3);
840
gtk_list_store_append(ls, &iter);
841
treeview_helper_insert_icon(ls, &iter, 0, symbol);
842
treeview_helper_insert_icon(ls, &iter, 4, symbol);
843
gtk_list_store_set(ls, &iter, 1, buf, 2, "", 3, buf2, -1);
847
gtk_list_store_append(ls, &iter);
848
gtk_list_store_set(ls, &iter, 0, NULL, 1, "", 2, "", 3, "", 4, NULL, -1);
852
/** Display a fixture in a ls. */
854
treeview_create_fixture(const Fixture *fix, GtkListStore *ls)
858
gchar *symbol[2] = {NULL, NULL};
859
gchar buf_result[SMALL], buf[3][SMALL];
860
gchar *colour_fg = NULL, *colour_bg = NULL;
862
if(fix->clid >= ID_CUP_START &&
863
query_cup_is_international(fix->clid))
865
symbol[i] = fix->teams[i]->symbol->str;
867
if(fixture_user_team_involved(fix) != -1)
868
treeview_helper_set_user_colours(usr(fixture_user_team_involved(fix)).tm,
869
&colour_bg, &colour_fg);
872
colour_fg = const_app("string_treeview_helper_color_default_foreground");
873
colour_bg = const_app("string_treeview_helper_color_default_background");
876
fixture_result_to_buf(fix, buf_result);
879
if(query_fixture_has_tables(fix))
881
if(fix->clid < ID_CUP_START)
882
rank = team_get_league_rank(fix->teams[i]);
884
rank = team_get_cup_rank(fix->teams[i], cup_get_last_tables_round(fix->clid));
886
sprintf(buf[i], "<span background='%s' foreground='%s'>%s [%d]</span>",
887
colour_bg, colour_fg, fix->teams[i]->name->str, rank);
889
else if(fix->clid >= ID_CUP_START &&
890
query_cup_is_national(fix->clid))
891
sprintf(buf[i], "<span background='%s' foreground='%s'>%s (%d)</span>",
892
colour_bg, colour_fg, fix->teams[i]->name->str,
893
league_from_clid(fix->teams[i]->clid)->layer);
895
sprintf(buf[i], "<span background='%s' foreground='%s'>%s</span>",
896
colour_bg, colour_fg, fix->teams[i]->name->str);
898
sprintf(buf[2], "<span background='%s' foreground='%s'>%s</span>",
899
colour_bg, colour_fg, buf_result);
901
gtk_list_store_append(ls, &iter);
902
treeview_helper_insert_icon(ls, &iter, 0, symbol[0]);
903
treeview_helper_insert_icon(ls, &iter, 4, symbol[1]);
904
gtk_list_store_set(ls, &iter,
905
1, buf[0], 2, buf[2], 3, buf[1], -1);
909
treeview_create_fixtures(gint clid, gint week_number, gint week_round_number)
913
GPtrArray *fixtures = fixture_get_week_list_clid(clid, week_number, week_round_number);
915
if(fixtures->len == 0)
917
free_g_ptr_array(&fixtures);
921
ls = gtk_list_store_new(5,
928
treeview_create_fixtures_header((Fixture*)g_ptr_array_index(fixtures, 0),
931
for(i=0;i<fixtures->len;i++)
932
treeview_create_fixture((Fixture*)g_ptr_array_index(fixtures, i), ls);
934
g_ptr_array_free(fixtures, TRUE);
936
return GTK_TREE_MODEL(ls);
940
treeview_set_up_fixtures(GtkTreeView *treeview)
943
GtkTreeViewColumn *col;
944
GtkCellRenderer *renderer;
946
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
948
gtk_tree_view_set_rules_hint(treeview, FALSE);
949
gtk_tree_view_set_headers_visible(treeview, FALSE);
951
col = gtk_tree_view_column_new();
952
gtk_tree_view_append_column(treeview, col);
953
renderer = gtk_cell_renderer_pixbuf_new();
954
g_object_set(renderer, "cell-background",
955
const_app("string_treeview_symbol_bg"), NULL);
956
gtk_tree_view_column_pack_start(col, renderer, TRUE);
957
gtk_tree_view_column_add_attribute(col, renderer,
962
col = gtk_tree_view_column_new();
963
gtk_tree_view_append_column(treeview, col);
964
renderer = treeview_helper_cell_renderer_text_new();
965
gtk_tree_view_column_pack_start(col, renderer, TRUE);
966
gtk_tree_view_column_add_attribute(col, renderer,
969
g_object_set(renderer, "xalign", 0 + (2 - i) * 0.5,
973
col = gtk_tree_view_column_new();
974
gtk_tree_view_append_column(treeview, col);
975
renderer = gtk_cell_renderer_pixbuf_new();
976
g_object_set(renderer, "cell-background",
977
const_app("string_treeview_symbol_bg"), NULL);
978
gtk_tree_view_column_pack_start(col, renderer, FALSE);
979
gtk_tree_view_column_add_attribute(col, renderer,
983
/** Show some fixtures in a treeview.
984
@param treeview The treeview we use.
985
@param clid The cup / league id.
986
@param week_number The week number of the fixtures.
987
@param week_round_number The week round. */
989
treeview_show_fixtures(GtkTreeView *treeview, gint clid,
990
gint week_number, gint week_round_number)
992
GtkTreeModel *model = NULL;
994
treeview_helper_clear(treeview);
996
treeview_set_up_fixtures(treeview);
997
model = treeview_create_fixtures(clid, week_number, week_round_number);
998
gtk_tree_view_set_model(treeview, model);
999
g_object_unref(model);
1002
/** Write the header for a table into the ls
1003
@param clid The cup or league id.
1004
@param number The number of the table if we display more than one. */
1006
treeview_table_write_header(GtkListStore *ls, const Table *table, gint number)
1010
gchar *symbol = NULL;
1013
if(table->clid < ID_CUP_START)
1015
symbol = league_from_clid(table->clid)->symbol->str;
1016
strcpy(buf, league_from_clid(table->clid)->name->str);
1020
symbol = cup_from_clid(table->clid)->symbol->str;
1021
if(g_array_index(cup_from_clid(table->clid)->rounds, CupRound,
1022
table->round).tables->len > 1)
1023
sprintf(buf, _("%s Group %d"), cup_from_clid(table->clid)->name->str, number);
1025
sprintf(buf, "%s", cup_from_clid(table->clid)->name->str);
1028
gtk_list_store_append(ls, &iter);
1029
treeview_helper_insert_icon(ls, &iter, 0, symbol);
1030
gtk_list_store_set(ls, &iter, 1, "", 2, NULL, 3, buf, -1);
1033
gtk_list_store_set(ls, &iter, i, "", -1);
1036
/** Display a table in the ls.
1037
@param number The number of the table if we display more than one
1038
(cups, round robin); or -1 for leagues. */
1040
treeview_create_single_table(GtkListStore *ls, const Table *table, gint number)
1044
TableElement *elem = NULL;
1045
gchar buf[10][SMALL];
1046
gchar *colour_bg = NULL, *colour_fg = NULL;
1048
treeview_table_write_header(ls, table, number);
1050
for(i=0;i<table->elements->len;i++)
1052
gtk_list_store_append(ls, &iter);
1054
elem = &g_array_index(table->elements, TableElement, i);
1056
if(table->clid >= ID_CUP_START)
1057
treeview_helper_insert_icon(ls, &iter, 0, elem->team->symbol->str);
1059
if(elem->old_rank > i)
1060
treeview_helper_insert_icon(ls, &iter, 2,
1061
const_app("string_treeview_table_up_icon"));
1062
else if(elem->old_rank < i)
1063
treeview_helper_insert_icon(ls, &iter, 2,
1064
const_app("string_treeview_table_down_icon"));
1066
treeview_helper_insert_icon(ls, &iter, 2,
1067
const_app("string_treeview_table_stay_icon"));
1069
treeview_helper_get_table_element_colours(table, i, &colour_fg, &colour_bg, FALSE);
1070
sprintf(buf[0], "<span background='%s' foreground='%s'>%d</span>",
1071
colour_bg, colour_fg, i + 1);
1073
treeview_helper_get_table_element_colours(table, i, &colour_fg, &colour_bg, TRUE);
1074
sprintf(buf[1], "<span background='%s' foreground='%s'>%s</span>",
1075
colour_bg, colour_fg, elem->team->name->str);
1077
gtk_list_store_set(ls, &iter, 1, buf[0], 3, buf[1], -1);
1080
if(j - 2 != TABLE_GD)
1081
sprintf(buf[j], "%d", elem->values[j - 2]);
1083
sprintf(buf[j], "%+d", elem->values[j - 2]);
1086
gtk_list_store_set(ls, &iter, j + 2, buf[j], -1);
1089
gtk_list_store_append(ls, &iter);
1090
gtk_list_store_set(ls, &iter, 0, NULL, 1, "", 2, NULL, -1);
1092
gtk_list_store_set(ls, &iter, j, "", -1);
1095
/** Create a league table or one or more cup tables. */
1097
treeview_create_table(gint clid)
1101
gtk_list_store_new(12,
1115
if(clid < ID_CUP_START)
1116
treeview_create_single_table(ls,
1117
&league_from_clid(clid)->table, -1);
1120
for(i=0;i<cup_get_last_tables(clid)->len;i++)
1121
treeview_create_single_table(ls,
1122
&g_array_index(cup_get_last_tables(clid), Table, i), i + 1);
1125
return GTK_TREE_MODEL(ls);
1129
treeview_set_up_table(GtkTreeView *treeview)
1132
GtkTreeViewColumn *col;
1133
GtkCellRenderer *renderer;
1145
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1146
GTK_SELECTION_NONE);
1147
gtk_tree_view_set_rules_hint(treeview, FALSE);
1148
gtk_tree_view_set_headers_visible(treeview, TRUE);
1150
col = gtk_tree_view_column_new();
1151
gtk_tree_view_append_column(treeview, col);
1152
renderer = gtk_cell_renderer_pixbuf_new();
1153
g_object_set(renderer, "cell-background",
1154
const_app("string_treeview_symbol_bg"), NULL);
1155
gtk_tree_view_column_pack_start(col, renderer, TRUE);
1156
gtk_tree_view_column_add_attribute(col, renderer,
1159
col = gtk_tree_view_column_new();
1160
gtk_tree_view_column_set_title(col, "");
1161
gtk_tree_view_append_column(treeview, col);
1162
renderer = treeview_helper_cell_renderer_text_new();
1163
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1164
gtk_tree_view_column_add_attribute(col, renderer,
1166
g_object_set(renderer, "xalign", 0.5, NULL);
1168
col = gtk_tree_view_column_new();
1169
gtk_tree_view_append_column(treeview, col);
1170
renderer = gtk_cell_renderer_pixbuf_new();
1171
gtk_tree_view_column_pack_start(col, renderer, TRUE);
1172
gtk_tree_view_column_add_attribute(col, renderer,
1177
col = gtk_tree_view_column_new();
1178
gtk_tree_view_column_set_title(col, titles[i]);
1179
gtk_tree_view_append_column(treeview, col);
1180
renderer = treeview_helper_cell_renderer_text_new();
1181
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1182
gtk_tree_view_column_add_attribute(col, renderer,
1184
g_object_set(renderer, "xalign", 0.5 - (0.5 * (i == 0)), NULL);
1188
/** Show the table going with a league or cup. */
1190
treeview_show_table(GtkTreeView *treeview, gint clid)
1192
GtkTreeModel *model = NULL;
1194
treeview_helper_clear(treeview);
1196
treeview_set_up_table(treeview);
1197
model = treeview_create_table(clid);
1198
gtk_tree_view_set_model(treeview, model);
1199
g_object_unref(model);
1202
/** Print some quick info about the stadium in the finances view. */
1204
treeview_create_stadium_summary(GtkListStore *ls)
1209
gtk_list_store_append(ls, &iter);
1210
misc_print_grouped_int(current_user.tm->stadium.capacity, buf, FALSE);
1211
gtk_list_store_set(ls, &iter, 0, _("Stadium capacity"), 1, buf, 2, "", -1);
1213
gtk_list_store_append(ls, &iter);
1214
sprintf(buf, "%.0f%%", current_user.tm->stadium.safety * 100);
1215
gtk_list_store_set(ls, &iter, 0, _("Stadium safety"), 1, buf, 2, "", -1);
1217
if(current_user.counters[COUNT_USER_STADIUM_CAPACITY] +
1218
current_user.counters[COUNT_USER_STADIUM_SAFETY] != 0)
1220
gtk_list_store_append(ls, &iter);
1221
sprintf(buf, _("Improvement in progress.\n%d seats and %d%% safety still to be done.\nExpected finish: %d weeks."),
1222
current_user.counters[COUNT_USER_STADIUM_CAPACITY],
1223
current_user.counters[COUNT_USER_STADIUM_SAFETY],
1224
MAX(finance_get_stadium_improvement_duration(
1225
(gfloat)current_user.counters[COUNT_USER_STADIUM_CAPACITY], TRUE),
1226
finance_get_stadium_improvement_duration(
1227
(gfloat)current_user.counters[COUNT_USER_STADIUM_SAFETY] / 100, FALSE)));
1229
gtk_list_store_set(ls, &iter, 0, _("Stadium status"), 1, buf, 2, "", -1);
1234
treeview_create_finances(const User* user)
1236
gint i, balance = 0;
1237
gchar buf[SMALL], buf2[SMALL], buf3[SMALL];
1238
gint *in = user->money_in[0],
1239
*out = user->money_out[0];
1240
gchar *in_titles[MON_IN_TRANSFERS] =
1242
_("Ticket income")};
1243
gchar *out_titles[MON_OUT_TRANSFERS] =
1248
_("Stadium improvements"),
1250
_("Compensations")};
1253
gtk_list_store_new(3,
1258
gtk_list_store_append(ls, &iter);
1259
gtk_list_store_set(ls, &iter, 0, _("Bi-weekly balance"), 1, "", 2, "", -1);
1261
for(i=0;i<MON_IN_TRANSFERS;i++)
1264
misc_print_grouped_int(in[i], buf, FALSE);
1265
gtk_list_store_append(ls, &iter);
1266
gtk_list_store_set(ls, &iter, 0, in_titles[i], 1, buf, 2, "", -1);
1270
if(in[MON_IN_TRANSFERS] != 0 || out[MON_OUT_TRANSFERS] != 0)
1272
misc_print_grouped_int(in[MON_IN_TRANSFERS], buf, FALSE);
1273
misc_print_grouped_int(out[MON_OUT_TRANSFERS], buf3, FALSE);
1274
sprintf(buf2, "<span foreground='%s'>%s</span>",
1275
const_app("string_treeview_finances_expenses_fg"), buf3);
1276
gtk_list_store_append(ls, &iter);
1277
gtk_list_store_set(ls, &iter, 0, _("Transfers"), 1, buf, 2, buf2, -1);
1278
balance += (in[MON_IN_TRANSFERS] + out[MON_OUT_TRANSFERS]);
1281
for(i=0;i<MON_OUT_TRANSFERS;i++)
1284
misc_print_grouped_int(out[i], buf3, FALSE);
1285
sprintf(buf, "<span foreground='%s'>%s</span>",
1286
const_app("string_treeview_finances_expenses_fg"), buf3);
1287
gtk_list_store_append(ls, &iter);
1288
gtk_list_store_set(ls, &iter, 0, out_titles[i], 1, "", 2, buf, -1);
1292
misc_print_grouped_int(balance, buf, FALSE);
1293
gtk_list_store_append(ls, &iter);
1294
gtk_list_store_set(ls, &iter, 0, _("Balance"), 1, "", 2, "", -1);
1298
sprintf(buf2, "<span foreground='%s'>%s</span>",
1299
const_app("string_treeview_finances_expenses_fg"), buf);
1300
gtk_list_store_set(ls, &iter, 1 + (balance < 0), buf2, -1);
1302
gtk_list_store_append(ls, &iter);
1303
gtk_list_store_set(ls, &iter, 0, "", 1, "", 2, "", -1);
1305
misc_print_grouped_int(user->money, buf, FALSE);
1306
gtk_list_store_append(ls, &iter);
1307
if(user->money >= 0)
1310
sprintf(buf2, "<span foreground='%s'>%s</span>",
1311
const_app("string_treeview_finances_expenses_fg"), buf);
1312
gtk_list_store_set(ls, &iter, 0, _("Money"), 1, buf2, 2, "", -1);
1314
misc_print_grouped_int(finance_team_drawing_credit_loan(user->tm, FALSE), buf, FALSE);
1315
gtk_list_store_append(ls, &iter);
1316
gtk_list_store_set(ls, &iter, 0, _("Drawing credit"), 1, buf, 2, "", -1);
1320
misc_print_grouped_int(user->debt, buf, FALSE);
1321
sprintf(buf2, "<span foreground='%s'>%s</span>",
1322
const_app("string_treeview_finances_expenses_fg"), buf);
1323
sprintf(buf, _("Debt (repay in %d weeks)"), user->counters[COUNT_USER_LOAN]);
1324
gtk_list_store_append(ls, &iter);
1325
gtk_list_store_set(ls, &iter, 0, buf, 1, "", 2, buf2, -1);
1328
gtk_list_store_append(ls, &iter);
1329
gtk_list_store_set(ls, &iter, 0, "", 1, "", 2, "", -1);
1331
treeview_create_stadium_summary(ls);
1333
return GTK_TREE_MODEL(ls);
1337
treeview_set_up_finances(GtkTreeView *treeview)
1340
GtkTreeViewColumn *col;
1341
GtkCellRenderer *renderer;
1347
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1348
GTK_SELECTION_NONE);
1349
gtk_tree_view_set_rules_hint(treeview, FALSE);
1350
gtk_tree_view_set_headers_visible(treeview, TRUE);
1354
col = gtk_tree_view_column_new();
1355
gtk_tree_view_column_set_title(col, titles[i]);
1356
gtk_tree_view_append_column(treeview, col);
1357
renderer = treeview_helper_cell_renderer_text_new();
1358
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1359
gtk_tree_view_column_add_attribute(col, renderer,
1363
g_object_set(renderer, "xalign", 1.0, NULL);
1367
/** Show the finance overview of the user. */
1369
treeview_show_finances(GtkTreeView *treeview, const User* user)
1371
GtkTreeModel *model = NULL;
1373
treeview_helper_clear(treeview);
1375
treeview_set_up_finances(treeview);
1376
model = treeview_create_finances(user);
1377
gtk_tree_view_set_model(treeview, model);
1378
g_object_unref(model);
1381
/** Show the transfer list. */
1383
treeview_show_transfer_list(GtkTreeView *treeview)
1386
GPtrArray *players = g_ptr_array_new();
1388
for(i=0;i<transfer_list->len;i++)
1389
g_ptr_array_add(players, player_of_id_team(trans(i).tm, trans(i).id));
1391
treeview_show_player_list(treeview, players,
1392
treeview_helper_get_attributes_from_scout(current_user.scout), FALSE);
1395
/** Create attack, midfield and defend bars. */
1397
treeview_create_next_opponent_values(GtkListStore *ls, const Fixture *fix)
1400
gchar buf[SMALL], buf2[SMALL];
1401
gfloat max_values[3],
1402
team_values[2][GAME_TEAM_VALUE_END];
1409
game_get_values(fix, team_values, 0);
1410
game_get_max_values(max_values);
1415
for(j=0;j<(gint)rint((gfloat)const_int("int_treeview_max_pipes") *
1416
(team_values[fix->teams[0] == current_user.tm][i] / max_values[i]));j++)
1419
sprintf(buf, "%s\n<span foreground='%s'>", buf2,
1420
const_app("string_treeview_opponent_value_colour_fg"));
1421
for(j=0;j<(gint)rint((gfloat)const_int("int_treeview_max_pipes") *
1422
(team_values[fix->teams[0] != current_user.tm][i] / max_values[i]));j++)
1424
strcat(buf, "</span>");
1426
gtk_list_store_append(ls, &iter);
1427
gtk_list_store_set(ls, &iter, 0, titles[i], 1, buf, -1);
1432
treeview_create_next_opponent(void)
1434
gchar buf[SMALL], buf2[SMALL];
1435
const Fixture *fix = team_get_fixture(current_user.tm, FALSE);
1436
const Team *opp = (fix == NULL) ? NULL :
1437
fix->teams[fix->teams[0] == current_user.tm];
1438
GtkListStore *ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
1444
if(fix->clid < ID_CUP_START)
1445
strcpy(buf, league_cup_get_name_string(fix->clid));
1448
cup_round_name(fix, buf2);
1449
sprintf(buf, "%s (%s)", league_cup_get_name_string(fix->clid), buf2);
1452
gtk_list_store_append(ls, &iter);
1453
gtk_list_store_set(ls, &iter, 0, _("Your next opponent"), 1, buf, -1);
1455
gtk_list_store_append(ls, &iter);
1457
if(fix->week_number == week &&
1458
fix->week_round_number == week_round)
1459
sprintf(buf, _("<span foreground='%s' background='%s'>Week %d Round %d</span>"),
1460
const_app("string_treeview_helper_color_default_foreground"),
1461
const_app("string_treeview_helper_color_default_background"),
1462
fix->week_number, fix->week_round_number);
1464
sprintf(buf, _("<span foreground='%s' background='%s'>Week %d Round %d</span>"),
1465
const_app("string_treeview_opponent_match_later_fg"),
1466
const_app("string_treeview_opponent_match_later_bg"),
1467
fix->week_number, fix->week_round_number);
1469
if(!fix->home_advantage)
1470
strcpy(buf2, _("Neutral ground"));
1471
else if(fix->teams[0] == current_user.tm)
1472
strcpy(buf2, _("Home"));
1474
strcpy(buf2, _("Away"));
1475
gtk_list_store_set(ls, &iter, 0, buf, 1, buf2, -1);
1477
gtk_list_store_append(ls, &iter);
1478
gtk_list_store_set(ls, &iter, 0, "", 1, "", -1);
1480
gtk_list_store_append(ls, &iter);
1481
gtk_list_store_set(ls, &iter, 0, _("Team"), 1, opp->name->str, -1);
1483
if(opp->clid < ID_CUP_START)
1485
sprintf(buf, "%d (%s)", team_get_league_rank(opp), league_cup_get_name_string(opp->clid));
1486
gtk_list_store_append(ls, &iter);
1487
gtk_list_store_set(ls, &iter, 0, _("Rank"), 1, buf, -1);
1490
sprintf(buf, "%.1f", team_get_average_skill(opp, TRUE));
1491
if(team_get_average_skill(opp, TRUE) >
1492
team_get_average_skill(current_user.tm, TRUE))
1493
sprintf(buf2, " (<span foreground='%s'>%+.1f</span>)",
1494
const_app("string_treeview_opponent_skill_positive_fg"),
1495
team_get_average_skill(opp, TRUE) -
1496
team_get_average_skill(current_user.tm, TRUE));
1498
sprintf(buf2, " (<span foreground='%s'>%+.1f</span>)",
1499
const_app("string_treeview_opponent_skill_negative_fg"),
1500
team_get_average_skill(opp, TRUE) -
1501
team_get_average_skill(current_user.tm, TRUE));
1504
gtk_list_store_append(ls, &iter);
1505
gtk_list_store_set(ls, &iter, 0, _("Average skill"), 1, buf, -1);
1507
gtk_list_store_append(ls, &iter);
1508
gtk_list_store_set(ls, &iter, 0, _("Playing style"), 1,
1509
team_attribute_to_char(TEAM_ATTRIBUTE_STYLE, opp->style), -1);
1511
sprintf(buf, "%d", opp->structure);
1512
gtk_list_store_append(ls, &iter);
1513
gtk_list_store_set(ls, &iter, 0, _("Team structure"), 1, buf, -1);
1515
treeview_create_next_opponent_values(ls, fix);
1517
team_write_results(opp, buf, buf2);
1518
gtk_list_store_append(ls, &iter);
1519
gtk_list_store_set(ls, &iter, 0, _("Latest results"), 1, buf, -1);
1520
gtk_list_store_append(ls, &iter);
1521
gtk_list_store_set(ls, &iter, 0, _("Goals"), 1, buf2, -1);
1523
team_write_own_results(opp, buf, FALSE);
1524
gtk_list_store_append(ls, &iter);
1525
gtk_list_store_set(ls, &iter, 0, _("Your results"), 1, buf, -1);
1527
return GTK_TREE_MODEL(ls);
1531
treeview_set_up_next_opponent(GtkTreeView *treeview)
1534
GtkTreeViewColumn *col;
1535
GtkCellRenderer *renderer;
1537
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1538
GTK_SELECTION_SINGLE);
1539
gtk_tree_view_set_rules_hint(treeview, FALSE);
1540
gtk_tree_view_set_headers_visible(treeview, FALSE);
1544
col = gtk_tree_view_column_new();
1545
gtk_tree_view_append_column(treeview, col);
1546
renderer = treeview_helper_cell_renderer_text_new();
1547
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1548
gtk_tree_view_column_add_attribute(col, renderer,
1553
/** Show some information about the next opponent. */
1555
treeview_show_next_opponent(void)
1557
GtkTreeView *treeview =
1558
GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
1559
GtkTreeModel *model = NULL;
1561
treeview_helper_clear(treeview);
1563
treeview_set_up_next_opponent(treeview);
1564
model = treeview_create_next_opponent();
1565
gtk_tree_view_set_model(treeview, model);
1567
treeview_helper_unref(G_OBJECT(model));
1571
treeview_create_league_results(void)
1574
gchar name[SMALL], results[SMALL];
1575
GArray *table_elements =
1576
league_from_clid(current_user.tm->clid)->table.elements;
1578
gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING,
1582
for(i=0;i<table_elements->len;i++)
1583
if(g_array_index(table_elements, TableElement, i).team != current_user.tm)
1585
if(team_is_user(g_array_index(table_elements, TableElement, i).team) != -1)
1586
sprintf(name, "<span background='%s'>%s</span>",
1587
const_app("string_treeview_user_bg"),
1588
g_array_index(table_elements, TableElement, i).team->name->str);
1590
strcpy(name, g_array_index(table_elements, TableElement, i).team->name->str);
1592
team_write_own_results(g_array_index(table_elements, TableElement, i).team,
1595
gtk_list_store_append(ls, &iter);
1596
gtk_list_store_set(ls, &iter, 0, name,
1600
return GTK_TREE_MODEL(ls);
1604
treeview_set_up_league_results(GtkTreeView *treeview)
1610
GtkTreeViewColumn *col;
1611
GtkCellRenderer *renderer;
1613
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1614
GTK_SELECTION_NONE);
1615
gtk_tree_view_set_rules_hint(treeview, TRUE);
1616
gtk_tree_view_set_headers_visible(treeview, TRUE);
1620
col = gtk_tree_view_column_new();
1621
gtk_tree_view_column_set_title(col, titles[i]);
1622
gtk_tree_view_append_column(treeview, col);
1623
renderer = treeview_helper_cell_renderer_text_new();
1624
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1625
gtk_tree_view_column_add_attribute(col, renderer,
1630
/** Show the results of the current user against fellow
1633
treeview_show_league_results(GtkTreeView *treeview)
1635
GtkTreeModel *model = NULL;
1637
treeview_helper_clear(treeview);
1639
treeview_set_up_league_results(treeview);
1640
model = treeview_create_league_results();
1641
gtk_tree_view_set_model(treeview, model);
1642
g_object_unref(model);
1645
/** Show a list of all players in the teams of the cup or league. */
1647
treeview_show_all_players(gint clid)
1650
GPtrArray *players = g_ptr_array_new();
1651
const GArray *teams = NULL;
1652
const GPtrArray *teamsp = NULL;
1654
if(clid < ID_CUP_START)
1656
teams = (GArray*)league_cup_get_teams(clid);
1657
for(i=0;i<teams->len;i++)
1658
if(&g_array_index(teams, Team, i) != current_user.tm)
1659
for(j=0;j<g_array_index(teams, Team, i).players->len;j++)
1660
g_ptr_array_add(players, &g_array_index(g_array_index(teams, Team, i).players,
1665
teamsp = (GPtrArray*)league_cup_get_teams(clid);
1666
for(i=0;i<teamsp->len;i++)
1667
if((Team*)g_ptr_array_index(teamsp, i) != current_user.tm)
1668
for(j=0;j<((Team*)g_ptr_array_index(teamsp, i))->players->len;j++)
1669
g_ptr_array_add(players, &g_array_index(((Team*)g_ptr_array_index(teamsp, i))->players,
1673
treeview_show_player_list(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")),
1675
treeview_helper_get_attributes_from_scout(current_user.scout), FALSE);
1679
treeview_create_preview(void)
1683
GPtrArray *fixtures = fixture_get_coming(current_user.tm);
1684
gint max = MIN(const_int("int_treeview_coming_matches"), fixtures->len);
1687
if(fixtures->len == 0)
1689
free_g_ptr_array(&fixtures);
1693
ls = gtk_list_store_new(5,
1702
treeview_create_fixtures_header((Fixture*)g_ptr_array_index(fixtures, i),
1704
treeview_create_fixture((Fixture*)g_ptr_array_index(fixtures, i), ls);
1706
gtk_list_store_append(ls, &iter);
1707
gtk_list_store_set(ls, &iter, 0, NULL, 1, "", 2, "", 3, "", 4, NULL, -1);
1710
g_ptr_array_free(fixtures, TRUE);
1712
return GTK_TREE_MODEL(ls);
1715
/** Show a preview of the current user's next games. */
1717
treeview_show_preview(void)
1719
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
1720
GtkTreeModel *model = NULL;
1722
treeview_helper_clear(treeview);
1724
treeview_set_up_fixtures(treeview);
1725
model = treeview_create_preview();
1726
gtk_tree_view_set_model(treeview, model);
1727
g_object_unref(model);
1731
treeview_create_player_info(const Player *pl)
1734
GtkListStore *ls = gtk_list_store_new(2,
1738
gchar *titles[PLAYER_INFO_ATTRIBUTE_END] =
1741
_("Current position"),
1745
_("Estimated talent"),
1752
_("Yellow cards (limit)\n"),
1755
_("New contract\noffers")};
1757
for(i=0;i<PLAYER_INFO_ATTRIBUTE_END;i++)
1759
gtk_list_store_append(ls, &iter);
1760
gtk_list_store_set(ls, &iter, 0, titles[i], 1, pl, -1);
1763
return GTK_TREE_MODEL(ls);
1767
treeview_set_up_player_info(GtkTreeView *treeview)
1769
GtkTreeViewColumn *col;
1770
GtkCellRenderer *renderer;
1772
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1773
GTK_SELECTION_NONE);
1774
gtk_tree_view_set_rules_hint(treeview, FALSE);
1775
gtk_tree_view_set_headers_visible(treeview, FALSE);
1777
col = gtk_tree_view_column_new();
1778
gtk_tree_view_append_column(treeview, col);
1779
renderer = treeview_helper_cell_renderer_text_new();
1780
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1781
gtk_tree_view_column_add_attribute(col, renderer,
1784
col = gtk_tree_view_column_new();
1785
gtk_tree_view_append_column(treeview, col);
1786
renderer = treeview_helper_cell_renderer_text_new();
1787
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1788
gtk_tree_view_column_set_cell_data_func(col, renderer,
1789
treeview_helper_player_ext_info_to_cell,
1793
/** Show extended information about the player in the right treeview. */
1795
treeview_show_player_info(const Player *pl)
1797
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
1798
GtkTreeModel *model = NULL;
1800
treeview_helper_clear(treeview);
1802
treeview_set_up_player_info(treeview);
1803
model = treeview_create_player_info(pl);
1804
gtk_tree_view_set_model(treeview, model);
1805
g_object_unref(model);
1810
treeview_create_fixtures_week(gint week_number, gint week_round_number)
1813
GPtrArray *fixtures = fixture_get_week_list(week_number, week_round_number);
1814
GtkListStore *ls = gtk_list_store_new(5,
1822
for(i=0;i<fixtures->len;i++)
1824
if(((Fixture*)g_ptr_array_index(fixtures, i))->clid >= ID_CUP_START ||
1825
((Fixture*)g_ptr_array_index(fixtures, i))->clid == current_user.tm->clid ||
1826
opt_user_int("int_opt_user_show_all_leagues"))
1829
((Fixture*)g_ptr_array_index(fixtures, i))->clid !=
1830
((Fixture*)g_ptr_array_index(fixtures, i - 1))->clid)
1832
gtk_list_store_append(ls, &iter);
1833
gtk_list_store_set(ls, &iter, 0, NULL, -1);
1834
treeview_create_fixtures_header((Fixture*)g_ptr_array_index(fixtures, i),
1838
treeview_create_fixture((Fixture*)g_ptr_array_index(fixtures, i), ls);
1842
g_ptr_array_free(fixtures, TRUE);
1844
return GTK_TREE_MODEL(ls);
1847
/** Show a fixture list of all matches in the given week and round. */
1849
treeview_show_fixtures_week(gint week_number, gint week_round_number)
1851
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
1852
GtkTreeModel *model = NULL;
1854
treeview_helper_clear(treeview);
1856
treeview_set_up_fixtures(treeview);
1857
model = treeview_create_fixtures_week(week_number, week_round_number);
1858
gtk_tree_view_set_model(treeview, model);
1859
g_object_unref(model);
1863
treeview_create_user_history(void)
1868
gtk_list_store_new(5, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING);
1871
for(i=0;i<current_user.history->len;i++)
1873
user_history_to_string(&g_array_index(current_user.history, UserHistory, i), buf);
1875
gtk_list_store_append(ls, &iter);
1876
treeview_helper_insert_icon(ls, &iter, 3,
1877
treeview_helper_get_user_history_icon(
1878
g_array_index(current_user.history, UserHistory, i).type));
1879
gtk_list_store_set(ls, &iter,
1880
0, g_array_index(current_user.history, UserHistory, i).season,
1881
1, g_array_index(current_user.history, UserHistory, i).week,
1882
2, team_of_id(g_array_index(current_user.history, UserHistory, i).team_id)->name->str,
1887
return GTK_TREE_MODEL(ls);
1891
treeview_set_up_user_history(GtkTreeView *treeview)
1894
GtkTreeViewColumn *col;
1895
GtkCellRenderer *renderer;
1896
gchar *titles[3] ={_("Sea"), _("Week"), _("Team")};
1898
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
1899
GTK_SELECTION_NONE);
1900
gtk_tree_view_set_rules_hint(treeview, TRUE);
1901
gtk_tree_view_set_headers_visible(treeview, TRUE);
1905
col = gtk_tree_view_column_new();
1906
gtk_tree_view_column_set_title(col, titles[i]);
1907
gtk_tree_view_append_column(treeview, col);
1908
renderer = treeview_helper_cell_renderer_text_new();
1909
gtk_tree_view_column_pack_start(col, renderer, TRUE);
1910
gtk_tree_view_column_add_attribute(col, renderer,
1912
g_object_set(renderer, "xalign", 0.5, NULL);
1915
col = gtk_tree_view_column_new();
1916
gtk_tree_view_append_column(treeview, col);
1917
renderer = gtk_cell_renderer_pixbuf_new();
1918
gtk_tree_view_column_pack_start(col, renderer, TRUE);
1919
gtk_tree_view_column_add_attribute(col, renderer,
1921
g_object_set(renderer, "xalign", 0.5, NULL);
1923
col = gtk_tree_view_column_new();
1924
gtk_tree_view_column_set_title(col, _("Event"));
1925
gtk_tree_view_append_column(treeview, col);
1926
renderer = treeview_helper_cell_renderer_text_new();
1927
gtk_tree_view_column_pack_start(col, renderer, FALSE);
1928
gtk_tree_view_column_add_attribute(col, renderer,
1932
/** Show the history array of the current user in the
1935
treeview_show_user_history(void)
1937
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
1938
GtkTreeModel *model = NULL;
1940
treeview_helper_clear(treeview);
1942
treeview_set_up_user_history(treeview);
1943
model = treeview_create_user_history();
1944
gtk_tree_view_set_model(treeview, model);
1945
g_object_unref(model);
1949
treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
1952
gchar buf[SMALL], buf2[SMALL], buf3[SMALL], buf4[SMALL];
1954
GArray *teams[2] = {league_stat->teams_off, league_stat->teams_def};
1955
GArray *players[2] = {league_stat->player_scorers, league_stat->player_goalies};
1956
gchar *team_titles[2] = {_("Best offensive teams"),
1957
_("Best defensive teams")};
1958
gchar *team_icons[2] = {const_app("string_treeview_league_stats_off_teams_icon"),
1959
const_app("string_treeview_league_stats_def_teams_icon")};
1960
gchar *player_titles[2][2] = {{_("Best goal scorers"), _("Shot %")},
1961
{_("Best goalkeepers"), _("Save %")}};
1962
gchar *player_icons[2] = {const_app("string_treeview_league_stats_scorers_icon"),
1963
const_app("string_treeview_league_stats_goalies_icon")};
1964
gchar *colour_fg = NULL, *colour_bg = NULL;
1966
gtk_list_store_append(ls, &iter);
1967
treeview_helper_insert_icon(ls, &iter, 0, league_from_clid(league_stat->clid)->symbol->str);
1968
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
1969
2, league_from_clid(league_stat->clid)->name->str, 3, "", 4, "", 5, "", -1);
1973
gtk_list_store_append(ls, &iter);
1974
gtk_list_store_set(ls, &iter, 0, NULL,
1975
1, const_int("int_treeview_helper_int_empty"),
1976
2, "", 3, "", 4, "", 5, "", -1);
1978
gtk_list_store_append(ls, &iter);
1979
treeview_helper_insert_icon(ls, &iter, 0, team_icons[i]);
1980
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
1981
2, team_titles[i], 4, _("Goals"), -1);
1983
for(j=0;j<teams[i]->len;j++)
1985
sprintf(buf, "%d : %d",
1986
g_array_index(teams[i], Stat, j).value1,
1987
g_array_index(teams[i], Stat, j).value2);
1989
treeview_helper_set_user_colours(team_of_id(g_array_index(teams[i], Stat, j).team_id),
1990
&colour_bg, &colour_fg);
1992
sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>",
1993
colour_bg, colour_fg, team_of_id(g_array_index(teams[i], Stat, j).team_id)->name->str);
1995
gtk_list_store_append(ls, &iter);
1996
gtk_list_store_set(ls, &iter, 0, NULL, 1, j + 1,
2004
gtk_list_store_append(ls, &iter);
2005
gtk_list_store_set(ls, &iter, 0, NULL,
2006
1, const_int("int_treeview_helper_int_empty"),
2007
2, "", 3, "", 4, "", 5, "", -1);
2009
gtk_list_store_append(ls, &iter);
2010
treeview_helper_insert_icon(ls, &iter, 0, player_icons[i]);
2011
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
2012
2, player_titles[i][0], 3, _("Go"),
2013
4, _("Go/Ga"), 5, player_titles[i][1], -1);
2015
for(j=0;j<players[i]->len;j++)
2017
sprintf(buf, "%.1f",
2018
(gfloat)g_array_index(players[i], Stat, j).value1 /
2019
(gfloat)g_array_index(players[i], Stat, j).value2);
2021
sprintf(buf2, "%.1f %%", (g_array_index(players[i], Stat, j).value3 > 0) ?
2022
100 * ((gfloat)g_array_index(players[i], Stat, j).value1 /
2023
(gfloat)g_array_index(players[i], Stat, j).value3) : 0);
2025
sprintf(buf2, "%.1f %%", (g_array_index(players[i], Stat, j).value3 > 0) ?
2026
100 * (1 - (gfloat)g_array_index(players[i], Stat, j).value1 /
2027
(gfloat)g_array_index(players[i], Stat, j).value3) : 0);
2029
treeview_helper_set_user_colours(team_of_id(g_array_index(players[i], Stat, j).team_id),
2030
&colour_bg, &colour_fg);
2031
sprintf(buf3, "<span background='%s' foreground='%s'>%s (%s)</span>",
2032
colour_bg, colour_fg,
2033
g_array_index(players[i], Stat, j).value_string->str,
2034
team_of_id(g_array_index(players[i], Stat, j).team_id)->name->str);
2035
sprintf(buf4, "%d", g_array_index(players[i], Stat, j).value1);
2037
gtk_list_store_append(ls, &iter);
2038
gtk_list_store_set(ls, &iter, 0, NULL, 1, j + 1,
2039
2, buf3, 3, buf4, 4, buf, 5, buf2, -1);
2045
treeview_set_up_league_stats(GtkTreeView *treeview)
2048
GtkTreeViewColumn *col;
2049
GtkCellRenderer *renderer;
2051
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
2052
GTK_SELECTION_NONE);
2053
gtk_tree_view_set_rules_hint(treeview, FALSE);
2054
gtk_tree_view_set_headers_visible(treeview, FALSE);
2056
col = gtk_tree_view_column_new();
2057
gtk_tree_view_append_column(treeview, col);
2058
renderer = gtk_cell_renderer_pixbuf_new();
2059
gtk_tree_view_column_pack_start(col, renderer, TRUE);
2060
gtk_tree_view_column_add_attribute(col, renderer,
2062
g_object_set(renderer, "xalign", 0.5, NULL);
2064
col = gtk_tree_view_column_new();
2065
gtk_tree_view_append_column(treeview, col);
2066
renderer = treeview_helper_cell_renderer_text_new();
2067
gtk_tree_view_column_pack_start(col, renderer, TRUE);
2068
gtk_tree_view_column_set_cell_data_func(col, renderer,
2069
treeview_helper_int_to_cell,
2073
col = gtk_tree_view_column_new();
2074
gtk_tree_view_append_column(treeview, col);
2075
renderer = treeview_helper_cell_renderer_text_new();
2076
gtk_tree_view_column_pack_start(col, renderer, TRUE);
2077
gtk_tree_view_column_add_attribute(col, renderer,
2080
g_object_set(renderer, "xalign", 0.5, NULL);
2084
/** Show the stats of the league with specified id. */
2086
treeview_show_league_stats(gint clid)
2088
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
2089
GtkListStore *model =
2090
gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING,
2091
G_TYPE_STRING, G_TYPE_STRING);
2093
treeview_helper_clear(treeview);
2095
treeview_set_up_league_stats(treeview);
2096
treeview_create_league_stats(model, &league_from_clid(clid)->stats);
2097
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
2098
g_object_unref(model);
2102
treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_champs,
2103
const GArray *cup_champs)
2107
const GArray *champs[2] = {league_champs, cup_champs};
2108
gchar *titles[2] = {_("League champions"),
2109
_("Cup champions")};
2110
gchar *icons[2] = {const_app("string_treeview_season_hist_league_champions_icon"),
2111
const_app("string_treeview_season_hist_cup_champions_icon")};
2115
gtk_list_store_append(ls, &iter);
2116
treeview_helper_insert_icon(ls, &iter, 0, icons[i]);
2117
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
2118
2, titles[i], 3, "", 4, "", 5, "", -1);
2120
for(j=0;j<champs[i]->len;j++)
2122
gtk_list_store_append(ls, &iter);
2123
gtk_list_store_set(ls, &iter, 0, NULL, 1, const_int("int_treeview_helper_int_empty"),
2124
2, g_array_index(champs[i], ChampStat, j).cl_name->str,
2125
3, g_array_index(champs[i], ChampStat, j).team_name->str,
2129
gtk_list_store_append(ls, &iter);
2130
gtk_list_store_set(ls, &iter, 0, NULL,
2131
1, const_int("int_treeview_helper_int_empty"),
2132
2, "", 3, "", 4, "", 5, "", -1);
2136
/** Show the season history of the specified season
2137
and the specified page. Page is either a page of league stats
2138
(if != -1) or -1 which means we show the champions. */
2140
treeview_show_season_history(gint page, gint season_number)
2143
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
2144
GtkListStore *model =
2145
gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING,
2146
G_TYPE_STRING, G_TYPE_STRING);
2148
SeasonStat *stat = &g_array_index(season_stats, SeasonStat, season_number);
2150
treeview_helper_clear(treeview);
2152
treeview_set_up_league_stats(treeview);
2154
sprintf(buf, _("Season %d"), season_number + 1);
2155
gtk_list_store_append(model, &iter);
2156
gtk_list_store_set(model, &iter, 0, NULL,
2157
1, const_int("int_treeview_helper_int_empty"),
2161
treeview_create_league_stats(model,
2162
&g_array_index(stat->league_stats, LeagueStat, page));
2164
treeview_create_season_history_champions(model, stat->league_champs,
2167
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
2168
g_object_unref(model);
2171
/** Create the model for the startup country files combo.
2172
@param country_list The list of country files found. */
2174
treeview_create_country_list(const GPtrArray *country_list)
2177
GtkListStore *ls = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
2179
gchar buf[SMALL], buf2[SMALL], trash[SMALL];
2181
for(i=0;i<country_list->len;i++)
2183
sscanf(((GString*)g_ptr_array_index(country_list, i))->str, "country_%[^.]%[.xml]",
2185
sprintf(buf, "flag_%s.png", buf2);
2187
gtk_list_store_append(ls, &iter);
2188
treeview_helper_insert_icon(ls, &iter, 0, buf);
2189
gtk_list_store_set(ls, &iter, 1,
2190
((GString*)g_ptr_array_index(country_list, i))->str, -1);
2193
return GTK_TREE_MODEL(ls);
2196
/** Show the list of contributors in the help window.*/
2198
treeview_show_contributors(const OptionList *help_list)
2200
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.help, "treeview_contributors"));
2201
GtkListStore *ls = gtk_list_store_new(1, G_TYPE_STRING);
2203
GtkTreeViewColumn *col;
2204
GtkCellRenderer *renderer;
2208
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
2209
GTK_SELECTION_NONE);
2210
gtk_tree_view_set_rules_hint(treeview, FALSE);
2211
gtk_tree_view_set_headers_visible(treeview, FALSE);
2213
col = gtk_tree_view_column_new();
2214
gtk_tree_view_append_column(treeview, col);
2215
renderer = treeview_helper_cell_renderer_text_new();
2216
gtk_tree_view_column_pack_start(col, renderer, TRUE);
2217
gtk_tree_view_column_add_attribute(col, renderer,
2220
for(i=0;i<help_list->list->len;i++)
2222
gtk_list_store_append(ls, &iter);
2224
if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str,
2225
"string_contrib_title"))
2227
sprintf(buf, "\n<span %s>%s</span>",
2228
const_app("string_help_window_title_attribute"),
2229
g_array_index(help_list->list, Option, i).string_value->str);
2230
gtk_list_store_set(ls, &iter, 0, buf, -1);
2232
else if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str,
2235
strcpy(buf, g_array_index(help_list->list, Option, i).string_value->str);
2236
gtk_list_store_set(ls, &iter, 0, buf, -1);
2241
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(ls));
2246
treeview_create_league_list(void)
2249
GtkListStore *ls = gtk_list_store_new(1, G_TYPE_STRING);
2252
gtk_list_store_append(ls, &iter);
2253
gtk_list_store_set(ls, &iter, 0, _("Current league"), -1);
2255
for(i=0;i<ligs->len;i++)
2257
gtk_list_store_append(ls, &iter);
2258
gtk_list_store_set(ls, &iter, 0, lig(i).name->str, -1);
2261
return GTK_TREE_MODEL(ls);
2264
/** Show the league list in the combo box
2265
in the startup window. */
2267
treeview_show_leagues_combo(void)
2269
GtkTreeModel *model = treeview_create_league_list();
2270
GtkComboBox *combo_leagues =
2271
GTK_COMBO_BOX(lookup_widget(window.startup, "comboboxentry_start_league"));
2272
GtkCellRenderer *renderer = NULL;
2274
gtk_combo_box_set_model(combo_leagues, model);
2275
g_object_unref(model);
2277
if(gtk_combo_box_entry_get_text_column(GTK_COMBO_BOX_ENTRY(combo_leagues)) == -1)
2278
gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo_leagues), 0);
2280
gtk_cell_layout_clear(GTK_CELL_LAYOUT(combo_leagues));
2282
renderer = treeview_helper_cell_renderer_text_new();
2283
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_leagues), renderer, FALSE);
2284
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_leagues), renderer, "text", 0, NULL);
2286
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_leagues), 0);
2290
treeview_create_language_list(void)
2293
GtkListStore *ls = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
2296
misc_separate_strings(const_str("string_language_names"));
2297
GPtrArray *symbols =
2298
misc_separate_strings(const_str("string_language_symbols"));
2300
gtk_list_store_append(ls, &iter);
2301
gtk_list_store_set(ls, &iter, 0, NULL, 1, _("System"), -1);
2303
for(i=0;i<names->len;i++)
2305
gtk_list_store_append(ls, &iter);
2306
treeview_helper_insert_icon(ls, &iter, 0, ((GString*)g_ptr_array_index(symbols, i))->str);
2307
gtk_list_store_set(ls, &iter, 1,
2308
((GString*)g_ptr_array_index(names, i))->str, -1);
2311
free_g_string_array(&names);
2312
free_g_string_array(&symbols);
2314
return GTK_TREE_MODEL(ls);
2317
/** Show the list of available languages. */
2319
treeview_show_language_combo(void)
2321
GtkTreeModel *model = treeview_create_language_list();
2322
GtkComboBox *combo_languages =
2323
GTK_COMBO_BOX(lookup_widget(window.options, "comboboxentry_languages"));
2324
GtkCellRenderer *renderer = NULL;
2325
gint idx = language_get_current_index();
2327
gtk_combo_box_set_model(combo_languages, model);
2328
g_object_unref(model);
2330
gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo_languages), 1);
2332
gtk_cell_layout_clear(GTK_CELL_LAYOUT(combo_languages));
2334
renderer = gtk_cell_renderer_pixbuf_new();
2335
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_languages), renderer, FALSE);
2336
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_languages), renderer, "pixbuf", 0, NULL);
2338
renderer = treeview_helper_cell_renderer_text_new();
2339
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_languages), renderer, FALSE);
2340
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_languages), renderer, "text", 1, NULL);
2342
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_languages), idx + 1);