Newspaper progresssing.

This commit is contained in:
gyboth 2008-12-15 18:26:56 +00:00
parent 56b752abf5
commit 4481e16c83
8 changed files with 129 additions and 35 deletions

View File

@ -71,14 +71,17 @@ news_generate_match(const LiveGame *live_game)
{
new_article.week_number = week;
new_article.week_round_number = week_round;
fixture_result_to_buf(live_game->fix, buf, FALSE);
sprintf(title_small, "%s %s %s",
live_game->fix->teams[0]->name, buf, live_game->fix->teams[1]->name);
new_article.title_small = g_strdup(title_small);
new_article.title = g_strdup(title);
new_article.subtitle = g_strdup(subtitle);
new_article.title_id = title_id;
new_article.subtitle_id = subtitle_id;
new_article.user_idx = fixture_user_team_involved(live_game->fix);
/* printf("%s / %s -- %d %d\n", title, subtitle, title_id, subtitle_id); */
g_array_append_val(newspaper.articles, new_article);
@ -310,7 +313,8 @@ news_set_streak_tokens(const Fixture *fix)
#endif
gint i, j, k,
streak_won, streak_lost;
streak_won, streak_lost, streak_unbeaten;
gboolean draw;
gint res[2];
gchar buf[SMALL], buf2[SMALL];
GPtrArray *latest_fixtures;
@ -319,16 +323,29 @@ news_set_streak_tokens(const Fixture *fix)
{
for(k = 0; k < 2; k++)
{
latest_fixtures = fixture_get_latest(fix->teams[0], (k == 0));
streak_won = streak_lost = 0;
latest_fixtures = fixture_get_latest(fix->teams[i], (k == 0));
streak_won = streak_lost = streak_unbeaten = 0;
draw = FALSE;
for(j=latest_fixtures->len - 1;j>=0;j--)
{
{
res[0] = math_sum_int_array(((Fixture*)g_ptr_array_index(latest_fixtures, j))->result[0], 3);
res[1] = math_sum_int_array(((Fixture*)g_ptr_array_index(latest_fixtures, j))->result[1], 3);
/* printf("%s %s %d %d str %d %d %d\n", ((Fixture*)g_ptr_array_index(latest_fixtures, j))->teams[0]->name, */
/* ((Fixture*)g_ptr_array_index(latest_fixtures, j))->teams[1]->name, res[0], res[1], */
/* streak_won, streak_lost, streak_unbeaten); */
if(res[0] == res[1])
break;
{
if(streak_lost == 0)
{
draw = TRUE;
streak_unbeaten++;
}
else
break;
}
else if(res[(((Fixture*)g_ptr_array_index(latest_fixtures, j))->teams[0] == fix->teams[i])] >
res[(((Fixture*)g_ptr_array_index(latest_fixtures, j))->teams[0] != fix->teams[i])])
{
@ -340,7 +357,12 @@ news_set_streak_tokens(const Fixture *fix)
else
{
if(streak_lost == 0)
streak_won++;
{
streak_unbeaten++;
if(!draw)
streak_won++;
}
else
break;
}
@ -359,7 +381,10 @@ news_set_streak_tokens(const Fixture *fix)
misc_token_add(token_rep_news,
option_int(buf, &tokens),
misc_int_to_char(streak_lost));
sprintf(buf, "string_token_streak_%sunbeaten%d", buf2, i);
misc_token_add(token_rep_news,
option_int(buf, &tokens),
misc_int_to_char(streak_unbeaten));
g_ptr_array_free(latest_fixtures, TRUE);
}

View File

@ -597,7 +597,7 @@ treeview2_create_news(GtkListStore *ls)
sprintf(buf, "\n<span %s>%s</span>",
const_app("string_news_window_title_attribute"),
_("No news available."));
gtk_list_store_set(ls, &iter, 0, buf, -1);
gtk_list_store_set(ls, &iter, 0, buf, 1, NULL, -1);
return;
}
@ -611,35 +611,22 @@ treeview2_create_news(GtkListStore *ls)
g_array_index(newspaper.articles, NewsPaperArticle, i + 1).week_round_number)))
{
gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter, 0, "", -1);
gtk_list_store_set(ls, &iter, 0, "", 1, NULL, -1);
gtk_list_store_append(ls, &iter);
sprintf(buf2, _("Week %d, Week round %d"),
sprintf(buf2, _("Week %d Round %d"),
g_array_index(newspaper.articles, NewsPaperArticle, i).week_number,
g_array_index(newspaper.articles, NewsPaperArticle, i).week_round_number);
sprintf(buf, "<span %s>%s</span>",
sprintf(buf, "<span %s>%s</span>\n\n",
const_app("string_news_window_week_number_attribute"),
buf2);
gtk_list_store_set(ls, &iter, 0, buf, -1);
gtk_list_store_set(ls, &iter, 0, buf, 1, &g_array_index(newspaper.articles, NewsPaperArticle, i), -1);
}
gtk_list_store_append(ls, &iter);
sprintf(buf, "<span %s>%s</span>",
const_app("string_news_window_title_small_attribute"),
g_array_index(newspaper.articles, NewsPaperArticle, i).title_small);
gtk_list_store_set(ls, &iter, 0, buf, -1);
gtk_list_store_append(ls, &iter);
sprintf(buf, "<span %s>%s</span>",
const_app("string_news_window_title_attribute"),
g_array_index(newspaper.articles, NewsPaperArticle, i).title);
gtk_list_store_set(ls, &iter, 0, buf, -1);
gtk_list_store_append(ls, &iter);
sprintf(buf, "<span %s>%s</span>\n",
const_app("string_news_window_subtitle_attribute"),
g_array_index(newspaper.articles, NewsPaperArticle, i).subtitle);
gtk_list_store_set(ls, &iter, 0, buf, -1);
else
{
gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter, 0, "", 1, &g_array_index(newspaper.articles, NewsPaperArticle, i), -1);
}
}
}
@ -656,14 +643,21 @@ treeview2_set_up_news(GtkTreeView *treeview)
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
GTK_SELECTION_NONE);
gtk_tree_view_set_headers_visible(treeview, FALSE);
gtk_tree_view_set_rules_hint(treeview, TRUE);
gtk_tree_view_set_rules_hint(treeview, FALSE);
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer,
"markup", 0);
"markup", 0);
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(col, renderer,
treeview_helper_news,
NULL, NULL);
}
/** Show the news in the news treeview. */
@ -677,7 +671,7 @@ treeview2_show_news(void)
GtkTreeView *treeview =
GTK_TREE_VIEW(lookup_widget(window.news, "treeview_news"));
GtkListStore *model =
gtk_list_store_new(1, G_TYPE_STRING);
gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
treeview_helper_clear(treeview);

View File

@ -1838,6 +1838,62 @@ treeview_helper_search_equal(GtkTreeModel *model,
return return_value;
}
void
treeview_helper_news(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data)
{
const NewsPaperArticle *article = NULL;
const gchar *colour_fg;
const gchar *colour_bg;
gchar buf[SMALL];
GString *news_string;
gtk_tree_model_get(model, iter, 1, &article, -1);
colour_fg = const_app("string_treeview_helper_color_default_foreground");
colour_bg = const_app("string_treeview_helper_color_default_background");
if(article == NULL)
{
g_object_set(renderer, "markup", "",
"background", colour_bg, "foreground", colour_fg, NULL);
return;
}
if(article->user_idx == cur_user)
{
colour_fg = const_app("string_treeview_current_user_fg");
colour_bg = const_app("string_treeview_current_user_bg");
}
else if(article->user_idx != -1)
{
colour_fg = const_app("string_treeview_user_fg");
colour_bg = const_app("string_treeview_user_bg");
}
sprintf(buf, "<span %s>%s</span>",
const_app("string_news_window_title_small_attribute"),
article->title_small);
news_string = g_string_new(buf);
g_string_append_printf(news_string, "\n<span %s>%s</span>",
const_app("string_news_window_title_attribute"),
article->title);
g_string_append_printf(news_string, "\n<span %s>%s</span>",
const_app("string_news_window_subtitle_attribute"),
article->subtitle);
g_object_set(renderer, "markup", news_string->str,
"background", colour_bg, "foreground", colour_fg, NULL);
g_string_free(news_string, TRUE);
}
void
treeview_helper_job_exchange(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,

View File

@ -229,4 +229,11 @@ treeview_helper_job_exchange(GtkTreeViewColumn *col,
gpointer user_data);
void
treeview_helper_news(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data);
#endif

View File

@ -42,6 +42,7 @@ enum
TAG_NEWS_PAPER_ARTICLE_TITLE_SMALL,
TAG_NEWS_PAPER_ARTICLE_TITLE,
TAG_NEWS_PAPER_ARTICLE_SUBTITLE,
TAG_NEWS_PAPER_ARTICLE_USER_IDX,
TAG_END
};
@ -101,6 +102,7 @@ xml_loadsave_newspaper_end_element (GMarkupParseContext *context,
tag == TAG_NEWS_PAPER_ARTICLE_TITLE ||
tag == TAG_NEWS_PAPER_ARTICLE_TITLE_ID ||
tag == TAG_NEWS_PAPER_ARTICLE_SUBTITLE ||
tag == TAG_NEWS_PAPER_ARTICLE_USER_IDX ||
tag == TAG_NEWS_PAPER_ARTICLE_SUBTITLE_ID)
{
state = TAG_NEWS_PAPER_ARTICLE;
@ -143,6 +145,8 @@ xml_loadsave_newspaper_text (GMarkupParseContext *context,
new_article.title_id = int_value;
else if(state == TAG_NEWS_PAPER_ARTICLE_SUBTITLE_ID)
new_article.subtitle_id = int_value;
else if(state == TAG_NEWS_PAPER_ARTICLE_USER_IDX)
new_article.user_idx = int_value;
}
void
@ -222,6 +226,8 @@ xml_loadsave_newspaper_write(const gchar *prefix)
TAG_NEWS_PAPER_ARTICLE_TITLE_ID, I1);
xml_write_int(fil, g_array_index(newspaper.articles, NewsPaperArticle, i).subtitle_id,
TAG_NEWS_PAPER_ARTICLE_SUBTITLE_ID, I1);
xml_write_int(fil, g_array_index(newspaper.articles, NewsPaperArticle, i).user_idx,
TAG_NEWS_PAPER_ARTICLE_USER_IDX, I1);
fprintf(fil, "%s</_%d>\n", I0, TAG_NEWS_PAPER_ARTICLE);
}

View File

@ -235,8 +235,9 @@ string_treeview_helper_color_user_bet_bg lightblue
string_treeview_helper_color_job_international_fg black
string_treeview_helper_color_job_international_bg lightblue
# font attributes for the news window
string_news_window_week_number_attribute weight='bold' size='x-large'
# attributes for the news window
string_news_window_week_number_attribute style='oblique'
string_news_window_title_small_attribute size='small'
string_news_window_title_attribute weight='bold' size='large'
string_news_window_subtitle_attribute style='oblique'
string_news_window_alternate_background lightgrey

View File

@ -107,3 +107,7 @@ string_token_streak_league_won0 _LEAGUEWON0_
string_token_streak_league_lost0 _LEAGUELOST0_
string_token_streak_league_won1 _LEAGUEWON1_
string_token_streak_league_lost1 _LEAGUELOST1_
string_token_streak_unbeaten0 _UNBEATEN0_
string_token_streak_unbeaten1 _UNBEATEN1_
string_token_streak_league_unbeaten0 _LEAGUEUNBEATEN0_
string_token_streak_league_unbeaten1 _LEAGUEUNBEATEN1_

View File

@ -8,6 +8,7 @@
<title>_TL_ loses again!</title>
<title>_TL_ in a world of misery!</title>
<title>_LEAGUECUPNAME_: _TL_ loses to _TW_!</title>
<subtitle priority="20" condition= "_UNBEATEN_TWN__ > 2">_TW_ unbeaten since _UNBEATEN_TWN__ matches.</subtitle>
<subtitle>Result: _RE_</subtitle>
<subtitle>_TL_ doesn't stand a chance against a _GOALS_TWN__ goal barrage.</subtitle>
<subtitle>_RE_ is flattering for _TL_.</subtitle>