German news.

This commit is contained in:
gyboth 2008-12-19 17:28:51 +00:00
parent 1d10d37bae
commit bbce9e1f0a
15 changed files with 420 additions and 302 deletions

View File

@ -1626,7 +1626,7 @@
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
<property name="modal">False</property>
<property name="default_width">560</property>
<property name="default_width">700</property>
<property name="default_height">600</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>

View File

@ -770,11 +770,7 @@ free_newspaper(gboolean reset)
gint i;
for(i = 0; i < newspaper.articles->len; i++)
{
g_free(g_array_index(newspaper.articles, NewsPaperArticle, i).title_small);
g_free(g_array_index(newspaper.articles, NewsPaperArticle, i).title);
g_free(g_array_index(newspaper.articles, NewsPaperArticle, i).subtitle);
}
free_newspaper_article(&g_array_index(newspaper.articles, NewsPaperArticle, i));
g_array_free(newspaper.articles, TRUE);
@ -782,6 +778,14 @@ free_newspaper(gboolean reset)
newspaper.articles = g_array_new(FALSE, FALSE, sizeof(NewsPaperArticle));
}
void
free_newspaper_article(NewsPaperArticle *article)
{
g_free(article->title_small);
g_free(article->title);
g_free(article->subtitle);
}
/**
Free a GPtrArray containing strings.
@param array The array to be freed.

View File

@ -32,6 +32,7 @@
#include "league_struct.h"
#include "live_game_struct.h"
#include "name_struct.h"
#include "news_struct.h"
#include "player_struct.h"
#include "team_struct.h"
#include "user_struct.h"
@ -152,6 +153,9 @@ free_news(gboolean reset);
void
free_newspaper(gboolean reset);
void
free_newspaper_article(NewsPaperArticle *article);
void
free_cup_round(CupRound *cup_round);

View File

@ -789,7 +789,7 @@ create_window_news (void)
window_news = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window_news), _("Bygfoot News"));
gtk_window_set_position (GTK_WINDOW (window_news), GTK_WIN_POS_CENTER);
gtk_window_set_default_size (GTK_WINDOW (window_news), 560, 600);
gtk_window_set_default_size (GTK_WINDOW (window_news), 700, 600);
vbox6 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox6);

View File

@ -83,6 +83,7 @@ news_generate_match(const LiveGame *live_game)
new_article.title_id = title_id;
new_article.subtitle_id = subtitle_id;
new_article.user_idx = fixture_user_team_involved(live_game->fix);
new_article.clid = live_game->fix->clid;
if(counters[COUNT_NEW_NEWS] == 0)
counters[COUNT_NEW_NEWS] = 2;

View File

@ -78,6 +78,7 @@ typedef struct
{
gint week_number, week_round_number;
gint title_id, subtitle_id;
gint clid;
gchar *title_small, *title, *subtitle;
gint id;
gint user_idx;

View File

@ -539,6 +539,13 @@ end_week_round_generate_news(void)
for(i = 0; i < live_games->len; i++)
if(news_check_match_relevant(&g_array_index(live_games, LiveGame, i)))
news_generate_match(&g_array_index(live_games, LiveGame, i));
/* Get rid of older news. */
while(newspaper.articles->len > const_int("int_news_history_length"))
{
free_newspaper_article(&g_array_index(newspaper.articles, NewsPaperArticle, 0));
g_array_remove_index(newspaper.articles, 0);
}
}
/** Start a new week round. */

View File

@ -590,6 +590,7 @@ treeview2_create_news(GtkListStore *ls)
gint i;
GtkTreeIter iter;
gchar buf[SMALL], buf2[SMALL];
gboolean second_column;
if(newspaper.articles->len == 0)
{
@ -603,6 +604,11 @@ treeview2_create_news(GtkListStore *ls)
for(i = newspaper.articles->len - 1; i >= 0; i--)
{
second_column = (i == newspaper.articles->len - 1 ||
(i < newspaper.articles->len - 1 &&
g_array_index(newspaper.articles, NewsPaperArticle, i).clid !=
g_array_index(newspaper.articles, NewsPaperArticle, i + 1).clid));
if(!opt_int("int_opt_news_show_recent") ||
g_array_index(newspaper.articles, NewsPaperArticle, i).week_number == week - 1)
{
@ -614,7 +620,7 @@ 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, NULL, -1);
gtk_list_store_set(ls, &iter, 0, "", 1, NULL, 2, NULL, -1);
gtk_list_store_append(ls, &iter);
sprintf(buf2, _("Week %d Round %d"),
@ -623,13 +629,25 @@ treeview2_create_news(GtkListStore *ls)
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, &g_array_index(newspaper.articles, NewsPaperArticle, i), -1);
second_column = TRUE;
}
else
{
gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter, 0, "", 1, &g_array_index(newspaper.articles, NewsPaperArticle, i), -1);
strcpy(buf, "");
}
if(second_column)
gtk_list_store_set(ls, &iter,
0, buf,
1, &g_array_index(newspaper.articles, NewsPaperArticle, i),
2, &g_array_index(newspaper.articles, NewsPaperArticle, i), -1);
else
gtk_list_store_set(ls, &iter,
0, buf,
1, &g_array_index(newspaper.articles, NewsPaperArticle, i),
2, NULL, -1);
}
}
}
@ -664,6 +682,15 @@ treeview2_set_up_news(GtkTreeView *treeview)
gtk_tree_view_column_set_cell_data_func(col, renderer,
treeview_helper_news,
NULL, NULL);
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
g_object_set(renderer, "wrap-mode", PANGO_WRAP_WORD, NULL);
g_object_set(renderer, "wrap-width", 400, NULL);
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(col, renderer,
treeview_helper_news_additional,
NULL, NULL);
}
/** Show the news in the news treeview. */
@ -677,7 +704,7 @@ treeview2_show_news(void)
GtkTreeView *treeview =
GTK_TREE_VIEW(lookup_widget(window.news, "treeview_news"));
GtkListStore *model =
gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER);
treeview_helper_clear(treeview);

View File

@ -1838,6 +1838,38 @@ treeview_helper_search_equal(GtkTreeModel *model,
return return_value;
}
void
treeview_helper_news_additional(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];
gtk_tree_model_get(model, iter, 2, &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;
}
sprintf(buf, "<span %s>%s</span>",
const_app("string_news_window_league_cup_attribute"),
league_cup_get_name_string(article->clid));
g_object_set(renderer, "markup", buf,
"background", colour_bg, "foreground", colour_fg, NULL);
}
void
treeview_helper_news(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,

View File

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

View File

@ -44,6 +44,7 @@ enum
TAG_NEWS_PAPER_ARTICLE_TITLE,
TAG_NEWS_PAPER_ARTICLE_SUBTITLE,
TAG_NEWS_PAPER_ARTICLE_USER_IDX,
TAG_NEWS_PAPER_ARTICLE_CLID,
TAG_END
};
@ -105,6 +106,7 @@ xml_loadsave_newspaper_end_element (GMarkupParseContext *context,
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_CLID ||
tag == TAG_NEWS_PAPER_ARTICLE_SUBTITLE_ID)
{
state = TAG_NEWS_PAPER_ARTICLE;
@ -151,6 +153,8 @@ xml_loadsave_newspaper_text (GMarkupParseContext *context,
new_article.subtitle_id = int_value;
else if(state == TAG_NEWS_PAPER_ARTICLE_USER_IDX)
new_article.user_idx = int_value;
else if(state == TAG_NEWS_PAPER_ARTICLE_CLID)
new_article.clid = int_value;
}
void
@ -234,6 +238,8 @@ xml_loadsave_newspaper_write(const gchar *prefix)
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);
xml_write_int(fil, g_array_index(newspaper.articles, NewsPaperArticle, i).clid,
TAG_NEWS_PAPER_ARTICLE_CLID, I1);
fprintf(fil, "%s</_%d>\n", I0, TAG_NEWS_PAPER_ARTICLE);
}

View File

@ -240,4 +240,4 @@ 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
string_news_window_league_cup_attribute weight='bold'

View File

@ -1002,3 +1002,6 @@ int_training_camps_week 2
# to avoid news repetitions
int_news_repetition_min_check_number 3
int_news_repetition_max_check_number 10
# how many news articles to keep in memory
int_news_history_length 50

View File

@ -35,7 +35,7 @@ string_token_team_losingn _TLN_ # also for news
string_token_team _TT_
string_token_team_layer0 _TLAYER0_ # also for news
string_token_team_layer1 _TLAYER1_ # also for news
string_token_team_layerdiff _LAYERDIFF_ # also for news
string_token_team_layerdiff _TLAYERDIFF_ # also for news
string_token_team_avskill0 _TAVSKILL0_ # also for news
string_token_team_avskill1 _TAVSKILL1_ # also for news
string_token_team_avskilldiff _TAVSKILLDIFF_ # also for news

View File

@ -134,13 +134,15 @@
<subtitle>Faire Punkteteilung nach ausgeglichenem Spiel.</subtitle>
<subtitle>Das Remis hilft aber keinem der beiden Teams weiter.</subtitle>
<subtitle>Weder _T0_ noch _T1_ können mit einem Unentschieden zufrieden sein.</subtitle>
<subtitle condition="_GOALS0_ < 2">Zahlreiche der _AT_ Zuschauer sterben an Langeweile während dieses unterirdischen Spiels.</subtitle>
<subtitle condition="_GOALS0_ < 2">Die beiden Teams liefern einen Grottenkick aus der Zeit des Catenaccio.</subtitle>
<subtitle condition="_GOALS0_ > 1">_AT_ werden trotz Unentschieden beim _RE_ gut unterhalten.</subtitle>
<subtitle condition="_GOALS0_ > 2">Trainer von [_T0_|_T1_] will sich in den nächsten Wochen auf die Defensive konzentrieren.</subtitle>
<subtitle condition="_GOALS0_ > 1">Gute Offensivleistung von [_T0_|_T1_] wird durch Leichtsinnsfehler kaputtgemacht.</subtitle>
<subtitle condition="_GOALS0_ > 1">[_T0_|_T1_] verschenkt durch Fehler in der Verteidigung den Sieg.</subtitle>
<subtitle condition="_GOALS0_ = 1">Ein Fehler kostet [_T0_|_T1_] den Sieg.</subtitle>
<subtitle condition="_GOALS0_ = 0 and _SHOTS0_ > 2">Mangelhafte Chancenverwertung raubt _T0_ die Chance auf den Sieg.</subtitle>
<subtitle condition="_GOALS1_ = 0 and _SHOTS1_ > 2">Mangelhafte Chancenverwertung raubt _T1_ die Chance auf den Sieg.</subtitle>
<subtitle condition="_GOALS0_ < _SHOTS0_ + 3">Mangelhafte Chancenverwertung raubt _T0_ die Chance auf den Sieg.</subtitle>
<subtitle condition="_GOALS1_ < _SHOTS1_ + 3">Mangelhafte Chancenverwertung raubt _T1_ die Chance auf den Sieg.</subtitle>
<subtitle condition="_GOALS1_ = 0 and _PEN1_ > 0">Ein verschenkter Elfmeter wird den Spielern von _T1_ noch lange den Schlaf rauben.</subtitle>
<subtitle condition="_GOALS0_ = 0 and _PEN0_ > 0">Ein verschenkter Elfmeter wird den Spielern von _T0_ noch lange den Schlaf rauben.</subtitle>
<subtitle condition="_UNBEATEN0_ > 3">_T0_ holt nur Unentschieden, ist aber seit _UNBEATEN0_ Matches ungeschlagen.</subtitle>
@ -175,23 +177,47 @@
<news_article>
<type>match</type>
<condition>_LAYERDIFF_ = 0 and _GD_ != 0 and _TAVSKILLDIFF_ > 7</condition>
<condition>_TLAYERDIFF_ = 0 and _GD_ != 0 and _TAVSKILLDIFF_ > 7</condition>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ [besiegt|gewinnt gegen|bezwingt|schlägt] _TL_</title>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">Wie erwartet _TW_ [besiegt|bezwingt|schlägt] _TL_</title>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">Wie erwartet [besiegt|bezwingt|schlägt] _TW_ _TL_</title>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ erfüllt Erwartungen der Experten</title>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ schlägt _TL_ erwartungsgemäß mit _RE_</title>
<title condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ schlägt _TL_ erwartungsgemäß mit _REW_</title>
<title condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ trotzt den Wettquoten und besiegt _TL_</title>
<title condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ schafft kleine Sensation gegen _TL_</title>
<title condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TL_ nominell überlegen, verliert aber _RE_</title>
<subtitle condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">Gegen _TW_ war nicht mehr drin für _TL_</subtitle>
<subtitle condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">Gegen _TW_ war nicht mehr drin für _TL_.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ war auf dem Papier besser als _TL_ - und auf dem Platz auch.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ > _TAVSKILL_TLN__">_TW_ hatte die bessere Mannschaft und nutzte den Vorteil gnadenlos.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ stellt die Fussballwelt auf den Kopf mit dem überraschenden Sieg.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ wurde schwächer eingeschätzt, macht die nominellen Nachteile aber mit Leidenschaft mehr als wett.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ wurde schwächer eingeschätzt, macht aber alle Nachteile mit Leidenschaft mehr als wett.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">Dank einer cleveren Taktik gewinnt _TW_ gegen einen höher eingeschätzten Gegner.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TL_ muss sich an den eigenen Kopf fassen nach einer unnötigen Niederlage gegen einen auf dem Papier wesentlich schwächeren Widersacher.</subtitle>
<subtitle condition="_TAVSKILL_TWN__ < _TAVSKILL_TLN__">_TW_ demonstriert eindrucksvoll, wie ein homogen agierendes Team einen Gegner mit den besseren Einzelspielern überwältigen kann.</subtitle>
</news_article>
<news_article>
<type>match</type>
<condition>_TLAYERDIFF_ > 0</condition>
<title condition="_GD_ = 0">_T[_TLAYER0_ L _TLAYER1_]_ schafft überraschendes Unentschieden</title>
<title condition="_GD_ = 0">_T[_TLAYER0_ L _TLAYER1_]_ hält _T[_TLAYER0_ G _TLAYER1_]_ stand</title>
<title condition="_GD_ = 0">_LEAGUECUPNAME_: _T[_TLAYER0_ L _TLAYER1_]_ erkämpft Remis</title>
<title condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ schlägt _T[_TLAYER0_ G _TLAYER1_]_ sensationell</title>
<title condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ schafft Sensation</title>
<title condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ siegt trotz Klassenunterschied</title>
<title condition="_TWN_ = [_TLAYER0_ > _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ muss sich der Übermacht beugen</title>
<title condition="_TWN_ = [_TLAYER0_ > _TLAYER1_]">_T[_TLAYER0_ G _TLAYER1_]_ zu gut für _T[_TLAYER0_ L _TLAYER1_]_</title>
<title condition="_TWN_ = [_TLAYER0_ > _TLAYER1_]">_T[_TLAYER0_ G _TLAYER1_]_ bezwingt tapferen Gegner</title>
<subtitle condition="_GD_ = 0">_T[_TLAYER0_ L _TLAYER1_]_ hält dem Druck des übermächtigen Gegners stand.</subtitle>
<subtitle condition="_GD_ = 0 or _TWN_ = [_TLAYER0_ L _TLAYER1_]">Keiner hätte ein solches Ergebnis erwartet - ausser die Spieler und der Trainer von _T[_TLAYER0_ L _TLAYER1_]_.</subtitle>
<subtitle condition="_GD_ = 0 or _TWN_ = [_TLAYER0_ L _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ gelingt mit dem _RE_ ein Ergebnis, das kein Experte erwartet hatte.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ > _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ gibt alles, _T[_TLAYER0_ G _TLAYER1_]_ erweist sich jedoch als zu stark.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ > _TLAYER1_]">_T[_TLAYER0_ G _TLAYER1_]_ erfüllt die Erwartungen und siegt vor _AT_ Zuschauern.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ > _TLAYER1_] and _GD_ > 1">_T[_TLAYER0_ G _TLAYER1_]_ lässt dem unterklassigen Gegner keine Chance.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ G _TLAYER1_]_ blamiert sich gegen den unterklassigen Gegner bis auf die Knochen.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">Nach der überraschenden Niederlage nimmt die Polizei Ermittlungen wegen des Verdachts auf Manipulation auf.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ fügt _T[_TLAYER0_ G _TLAYER1_]_ vor _AT_ Zuschauern eine demütigende Pokalniederlage zu.</subtitle>
<subtitle condition="_TWN_ = [_TLAYER0_ < _TLAYER1_]">_T[_TLAYER0_ L _TLAYER1_]_ lässt sich nicht durch den Klassenunterschied verunsichern und siegt _RE_.</subtitle>
</news_article>
</news>