~ubuntu-branches/ubuntu/hardy/bygfoot/hardy

« back to all changes in this revision

Viewing changes to src/treeview2.c

  • Committer: Bazaar Package Importer
  • Author(s): Isaac Clerencia
  • Date: 2006-06-04 17:51:19 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060604175119-0pbfuhr617031qa9
Tags: 2.0.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
   treeview2.c
 
3
 
 
4
   Bygfoot Football Manager -- a small and simple GTK2-based
 
5
   football management game.
 
6
 
 
7
   http://bygfoot.sourceforge.net
 
8
 
 
9
   Copyright (C) 2005  Gyözö Both (gyboth@bygfoot.com)
 
10
 
 
11
   This program is free software; you can redistribute it and/or
 
12
   modify it under the terms of the GNU General Public License
 
13
   as published by the Free Software Foundation; either version 2
 
14
   of the License, or (at your option) any later version.
 
15
 
 
16
   This program is distributed in the hope that it will be useful,
 
17
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
19
   GNU General Public License for more details.
 
20
 
 
21
   You should have received a copy of the GNU General Public License
 
22
   along with this program; if not, write to the Free Software
 
23
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
24
*/
 
25
 
 
26
#include "bet.h"
1
27
#include "fixture.h"
 
28
#include "job.h"
2
29
#include "league.h"
3
30
#include "live_game.h"
 
31
#include "misc.h"
4
32
#include "option.h"
5
33
#include "support.h"
 
34
#include "team.h"
6
35
#include "treeview2.h"
7
36
#include "treeview_helper.h"
8
37
#include "user.h"
220
249
    gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
221
250
    g_object_unref(model);    
222
251
}
 
252
 
 
253
void
 
254
treeview2_create_bets(GtkListStore *ls)
 
255
{
 
256
    gint i, j, k, rank;
 
257
    GtkTreeIter iter;
 
258
    gchar buf[SMALL], buf2[SMALL],
 
259
        team_names[2][SMALL];
 
260
    const BetMatch *bet = NULL;
 
261
    const BetUser *bet_user = NULL;
 
262
    const Fixture *fix = NULL;
 
263
    
 
264
    for(k=1;k>=0;k--)
 
265
    {
 
266
        if(bets[k]->len > 0)
 
267
        {
 
268
            gtk_list_store_append(ls, &iter);
 
269
            gtk_list_store_set(ls, &iter, 
 
270
                               0, (k == 1) ?
 
271
                               /* Copy the <span...> stuff, translate in between. */
 
272
                               _("<span background='lightgrey' size='large' weight='bold'>Current bets</span>") :
 
273
                               /* Copy the <span...> stuff, translate in between. */
 
274
                               _("<span background='lightgrey' size='large' weight='bold'>Recent bets</span>"),
 
275
                               1, NULL, 2, NULL, 3, NULL, 4, "", 5, "", -1);
 
276
        }
 
277
 
 
278
        for(i=0;i<bets[k]->len;i++)
 
279
        {
 
280
            fix = fixture_from_id(g_array_index(bets[k], BetMatch, i).fix_id, TRUE);
 
281
            if(fix->clid == current_user.tm->clid ||
 
282
               (fix->clid >= ID_CUP_START &&
 
283
                opt_user_int("int_opt_user_bet_show_cups")) ||
 
284
               (fix->clid < ID_CUP_START &&
 
285
                opt_user_int("int_opt_user_bet_show_all_leagues")))
 
286
            {
 
287
                bet = &g_array_index(bets[k], BetMatch, i);
 
288
                bet_user = bet_is_user(bet);
 
289
                strcpy(buf, "");
 
290
 
 
291
                if(k == 1 || (k == 0 && 
 
292
                   (bet_user != NULL ||
 
293
                    !opt_user_int("int_opt_user_bet_show_my_recent"))))
 
294
                {
 
295
                    if(i == 0 || fix->clid != 
 
296
                       fixture_from_id(
 
297
                           g_array_index(bets[k], BetMatch, i - 1).fix_id, TRUE)->clid)
 
298
                    {
 
299
                        if(i > 0)
 
300
                        {
 
301
                            gtk_list_store_append(ls, &iter);
 
302
                            gtk_list_store_set(ls, &iter, 0, "", 
 
303
                                               1, NULL, 2, NULL, 3, NULL, 4, "", 5, "", -1);
 
304
                        }
 
305
            
 
306
                        gtk_list_store_append(ls, &iter);
 
307
                        gtk_list_store_set(ls, &iter, 
 
308
                                           0, league_cup_get_name_string(fix->clid),
 
309
                                           1, NULL, 2, NULL, 3, NULL, 4, "", 5, "", -1);
 
310
                    }
 
311
        
 
312
                    if(bet_user != NULL)
 
313
                    {
 
314
                        misc_print_grouped_int(bet_user->wager, buf2);
 
315
            
 
316
                        if(bet_user->wager > 0)
 
317
                            strcpy(buf, buf2);
 
318
                        else
 
319
                            sprintf(buf, "<span foreground='%s'>%s</span>",
 
320
                                    const_app("string_treeview_finances_expenses_fg"), buf2);
 
321
                    }
 
322
 
 
323
                    for(j=0;j<2;j++)
 
324
                        if(query_fixture_has_tables(fix))
 
325
                        {
 
326
                            if(fix->clid < ID_CUP_START)
 
327
                                rank = team_get_league_rank(fix->teams[j]);
 
328
                            else
 
329
                                rank = team_get_cup_rank(fix->teams[j], 
 
330
                                                         cup_get_last_tables_round(fix->clid), TRUE);
 
331
 
 
332
                            sprintf(team_names[j], "%s [%d]",
 
333
                                    fix->teams[j]->name, rank);
 
334
                        }
 
335
                        else if(fix->clid >= ID_CUP_START &&
 
336
                                query_cup_is_national(fix->clid))
 
337
                            sprintf(team_names[j], "%s (%d)",
 
338
                                    fix->teams[j]->name,
 
339
                                    league_from_clid(fix->teams[j]->clid)->layer);
 
340
                        else
 
341
                            strcpy(team_names[j], fix->teams[j]->name);
 
342
 
 
343
                    gtk_list_store_append(ls, &iter);
 
344
                    gtk_list_store_set(ls, &iter, 0, team_names[0],
 
345
                                       1, bet, 2, bet, 3, bet,
 
346
                                       4, team_names[1],
 
347
                                       5, buf, -1);
 
348
                }
 
349
            }
 
350
        }
 
351
    }
 
352
}
 
353
 
 
354
void
 
355
treeview2_set_up_bets(GtkTreeView *treeview)
 
356
{
 
357
    gint i;
 
358
    GtkTreeViewColumn   *col;
 
359
    GtkCellRenderer     *renderer;
 
360
    gchar *titles[6] =
 
361
        {_("Team1"),
 
362
         /* Team 1 wins (betting window). */
 
363
         _("Win1"),
 
364
         _("Draw"),
 
365
         /* Team 2 wins (betting window). */
 
366
         _("Win2"),
 
367
         _("Team2"),
 
368
         /* How much the user wagers; how much he won or lost. */
 
369
         _("Wager/\nWin/Loss")};
 
370
 
 
371
    gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
 
372
                                GTK_SELECTION_SINGLE);
 
373
    gtk_tree_view_set_headers_visible(treeview, TRUE);
 
374
 
 
375
    col = gtk_tree_view_column_new();
 
376
    gtk_tree_view_column_set_title(col, titles[0]);
 
377
    gtk_tree_view_append_column(treeview, col);
 
378
    renderer = treeview_helper_cell_renderer_text_new();
 
379
    gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
380
    gtk_tree_view_column_add_attribute(col, renderer,
 
381
                                       "markup", 0);
 
382
 
 
383
    gtk_tree_view_column_set_alignment(col, 1.0);
 
384
    g_object_set(renderer, "xalign", 1.0, NULL);
 
385
 
 
386
    for(i=1;i<4;i++)
 
387
    {
 
388
        col = gtk_tree_view_column_new();
 
389
        gtk_tree_view_column_set_title(col, titles[i]);
 
390
        gtk_tree_view_append_column(treeview, col);
 
391
        renderer = treeview_helper_cell_renderer_text_new();
 
392
        gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
393
        gtk_tree_view_column_set_cell_data_func(col, renderer,
 
394
                                                treeview_helper_bet_odds,
 
395
                                                NULL, NULL);
 
396
    }
 
397
 
 
398
    col = gtk_tree_view_column_new();
 
399
    gtk_tree_view_column_set_title(col, titles[4]);
 
400
    gtk_tree_view_append_column(treeview, col);
 
401
    renderer = treeview_helper_cell_renderer_text_new();
 
402
    gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
403
    gtk_tree_view_column_add_attribute(col, renderer,
 
404
                                       "text", 4);
 
405
 
 
406
    col = gtk_tree_view_column_new();
 
407
    gtk_tree_view_column_set_title(col, titles[5]);
 
408
    gtk_tree_view_append_column(treeview, col);
 
409
    renderer = treeview_helper_cell_renderer_text_new();
 
410
    gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
411
    gtk_tree_view_column_add_attribute(col, renderer,
 
412
                                       "markup", 5);
 
413
    gtk_tree_view_column_set_alignment(col, 0.5);
 
414
    g_object_set(renderer, "xalign", 0.5, NULL);
 
415
}
 
416
 
 
417
/** Show the current and recent bets in the betting window. */
 
418
void
 
419
treeview2_show_bets(void)
 
420
{
 
421
    GtkTreeView *treeview = 
 
422
        GTK_TREE_VIEW(lookup_widget(window.bets, "treeview_bets"));
 
423
    GtkListStore *model = 
 
424
        gtk_list_store_new(6, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER, 
 
425
                           G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING);
 
426
    
 
427
    treeview_helper_clear(treeview);
 
428
    
 
429
    treeview2_set_up_bets(treeview);
 
430
 
 
431
    treeview2_create_bets(model);
 
432
    gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
 
433
    g_object_unref(model);
 
434
}
 
435
 
 
436
void
 
437
treeview2_create_job_exchange(GtkListStore *ls)
 
438
{
 
439
    gint i;
 
440
    GtkTreeIter iter;
 
441
    gchar buf[SMALL];
 
442
    const Team *tm = NULL;
 
443
 
 
444
    for(i=0;i<jobs->len;i++)
 
445
    {
 
446
        tm = job_get_team(&g_array_index(jobs, Job, i));
 
447
        sprintf(buf, "%s (%d)", g_array_index(jobs, Job, i).league_name,
 
448
                g_array_index(jobs, Job, i).league_layer);
 
449
 
 
450
        gtk_list_store_append(ls, &iter);
 
451
        gtk_list_store_set(ls, &iter, 0, i + 1,
 
452
                           1, tm->name, 
 
453
                           2, buf,
 
454
                           3, &g_array_index(jobs, Job, i),
 
455
                           4, &g_array_index(jobs, Job, i),
 
456
                           5, &g_array_index(jobs, Job, i),
 
457
                           -1);
 
458
    }
 
459
}
 
460
 
 
461
void
 
462
treeview2_set_up_job_exchange(GtkTreeView *treeview)
 
463
{
 
464
    gint i;
 
465
    GtkTreeViewColumn   *col;
 
466
    GtkCellRenderer     *renderer;
 
467
    gchar *titles[6] =
 
468
        {"",
 
469
         _("Team"),
 
470
         _("League"),
 
471
         _("Country"),
 
472
         _("Av.skill"),
 
473
         _("Talent %")};
 
474
 
 
475
    gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
 
476
                                GTK_SELECTION_SINGLE);
 
477
    gtk_tree_view_set_headers_visible(treeview, TRUE);
 
478
 
 
479
    col = gtk_tree_view_column_new();
 
480
    gtk_tree_view_column_set_title(col, titles[0]);
 
481
    gtk_tree_view_append_column(treeview, col);
 
482
    renderer = treeview_helper_cell_renderer_text_new();
 
483
    gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
484
    gtk_tree_view_column_add_attribute(col, renderer,
 
485
                                       "text", 0);
 
486
 
 
487
    for(i=1;i<3;i++)
 
488
    {
 
489
        col = gtk_tree_view_column_new();
 
490
        gtk_tree_view_column_set_title(col, titles[i]);
 
491
        gtk_tree_view_append_column(treeview, col);
 
492
        renderer = treeview_helper_cell_renderer_text_new();
 
493
        gtk_tree_view_column_pack_start(col, renderer, TRUE);
 
494
        gtk_tree_view_column_add_attribute(col, renderer,
 
495
                                           "text", i);
 
496
    }
 
497
 
 
498
    for(i=3;i<6;i++)
 
499
    {
 
500
        col = gtk_tree_view_column_new();
 
501
        gtk_tree_view_column_set_title(col, titles[i]);
 
502
        gtk_tree_view_append_column(treeview, col);
 
503
        renderer = treeview_helper_cell_renderer_text_new();
 
504
        gtk_tree_view_column_pack_start(col, renderer, TRUE);   
 
505
        gtk_tree_view_column_set_cell_data_func(col, renderer,
 
506
                                                treeview_helper_job_exchange,
 
507
                                                NULL, NULL);    
 
508
        if(i > 3)
 
509
        {
 
510
            gtk_tree_view_column_set_alignment(col, 0.5);
 
511
            g_object_set(renderer, "xalign", 0.5, NULL);            
 
512
        }
 
513
    }
 
514
}
 
515
 
 
516
/** Show the teams that offer a job. */
 
517
void
 
518
treeview2_show_job_exchange(void)
 
519
{
 
520
    GtkTreeView *treeview = 
 
521
        GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
 
522
    GtkListStore *model = 
 
523
        gtk_list_store_new(6, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, 
 
524
                           G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
 
525
    
 
526
    treeview_helper_clear(treeview);
 
527
    
 
528
    treeview2_set_up_job_exchange(treeview);
 
529
 
 
530
    treeview2_create_job_exchange(model);
 
531
    gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
 
532
    g_object_unref(model);    
 
533
}