From 0d488fa09c9e1d17102df7db590945064a6774bf Mon Sep 17 00:00:00 2001 From: gyboth Date: Sun, 22 May 2005 13:33:24 +0000 Subject: [PATCH] "Help stuff added." --- bygfoot.glade | 111 ++++---- bygfoot_misc.glade | 142 ---------- bygfoot_misc2.glade | 268 ++++++++++++++++++ src/bygfoot.h | 3 +- src/callbacks.c | 29 +- src/callbacks.h | 12 +- src/file.c | 4 +- src/game_gui.c | 30 ++ src/game_gui.h | 4 + src/interface.c | 132 +++++---- src/misc2_callbacks.c | 19 +- src/misc2_callbacks.h | 9 + src/misc2_interface.c | 142 ++++++++++ src/misc2_interface.h | 1 + src/misc_callbacks.c | 8 - src/misc_callbacks.h | 4 - src/misc_interface.c | 93 ------ src/misc_interface.h | 1 - src/treeview.c | 49 ++++ src/treeview.h | 3 + src/user.c | 2 +- src/window.c | 41 +++ src/window.h | 4 + support_files/bygfoot_app | 3 + .../definitions/scotland/league_scotland2.xml | 2 +- support_files/pixmaps/bygfoot_icon.png | Bin 7411 -> 12116 bytes 26 files changed, 731 insertions(+), 385 deletions(-) diff --git a/bygfoot.glade b/bygfoot.glade index eecc60a7..6ef1610b 100644 --- a/bygfoot.glade +++ b/bygfoot.glade @@ -69,7 +69,7 @@ - + True gtk-open 1 @@ -137,7 +137,7 @@ - + True gtk-preferences 1 @@ -291,7 +291,7 @@ True All Out Defend True - True + False @@ -301,7 +301,7 @@ True Defend True - True + False menu_all_out_defend @@ -312,7 +312,7 @@ True Balanced True - True + False menu_all_out_defend @@ -323,7 +323,7 @@ True Attack True - True + False menu_all_out_defend @@ -358,7 +358,7 @@ True Best True - True + False @@ -368,7 +368,7 @@ True Good True - True + False menu_scout_best @@ -379,7 +379,7 @@ True Average True - True + False menu_scout_best @@ -414,7 +414,7 @@ True Best True - True + False @@ -424,7 +424,7 @@ True Good True - True + False menu_physio_best @@ -435,7 +435,7 @@ True Average True - True + False menu_physio_best @@ -470,7 +470,7 @@ True On True - True + False @@ -480,7 +480,7 @@ True Off True - True + False menu_boost_on @@ -696,7 +696,7 @@ - + True gtk-go-forward 1 @@ -718,7 +718,7 @@ - + True gtk-go-back 1 @@ -740,7 +740,7 @@ - + True gtk-justify-fill 1 @@ -791,13 +791,13 @@ - + True _Help True - + @@ -807,6 +807,48 @@ + + + + True + Contributors + True + + + + + True + gtk-add + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Help + True + + + + + True + gtk-help + 1 + 0.5 + 0.5 + 0 + 0 + + + + @@ -1070,37 +1112,6 @@ - - - 2 - True - Help (H) - True - GTK_RELIEF_NORMAL - True - - - - - - True - gtk-help - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - GTK_PACK_END - - - True diff --git a/bygfoot_misc.glade b/bygfoot_misc.glade index a3ab3c4d..d5788ec2 100644 --- a/bygfoot_misc.glade +++ b/bygfoot_misc.glade @@ -1449,148 +1449,6 @@ - - 6 - True - Bygfoot help - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER - False - 550 - 650 - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - True - 0 - 0 - 0 - 0 - 0 - 5 - - - - - - 0 - True - True - - - - - - 2 - True - Esc / Return / Space - True - GTK_RELIEF_NORMAL - True - - - - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - 5 True diff --git a/bygfoot_misc2.glade b/bygfoot_misc2.glade index f2dfb086..ca096eab 100644 --- a/bygfoot_misc2.glade +++ b/bygfoot_misc2.glade @@ -1904,4 +1904,272 @@ + + 5 + True + window1 + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER + True + 400 + 400 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + True + False + 3 + + + + True + True + True + True + GTK_POS_TOP + False + False + + + + True + False + 5 + + + + True + bygfoot_icon.png + 0.5 + 0.5 + 0 + 5 + + + 0 + False + False + + + + + + True + True + + False + False + GTK_JUSTIFY_CENTER + False + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + False + False + + + + + + True + About + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + tab + + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + + + + + False + True + + + + + + True + Contributors + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + tab + + + + + + True + False + 3 + + + + True + gtk-help + 6 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + + False + False + GTK_JUSTIFY_LEFT + True + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + True + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + False + False + + + + + + True + Help + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + tab + + + + + 0 + True + True + + + + + + True + Esc + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + + 0 + False + False + + + + + + diff --git a/src/bygfoot.h b/src/bygfoot.h index 3cc1fab3..a90cecf7 100644 --- a/src/bygfoot.h +++ b/src/bygfoot.h @@ -119,6 +119,7 @@ typedef struct *contract, *menu_player, *user_management, - *wdebug; + *wdebug, + *help; } Windows; #endif diff --git a/src/callbacks.c b/src/callbacks.c index 1bb22944..0bcfcbbf 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -83,11 +83,29 @@ on_menu_quit_activate (GtkMenuItem *menuitem, } + + +void +on_menu_help_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + window_show_help(2); +} + + +void +on_menu_contributors_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + window_show_help(1); +} + + void on_menu_about_activate (GtkMenuItem *menuitem, gpointer user_data) { - + window_show_help(0); } @@ -162,14 +180,6 @@ on_button_new_week_clicked (GtkButton *button, } -void -on_button_help_clicked (GtkButton *button, - gpointer user_data) -{ - -} - - gboolean on_player_list1_button_press_event (GtkWidget *widget, GdkEventButton *event, @@ -888,4 +898,3 @@ on_button_quit_button_press_event (GtkWidget *widget, return FALSE; } - diff --git a/src/callbacks.h b/src/callbacks.h index cd67d3c1..507c50ae 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -57,10 +57,6 @@ void on_button_new_week_clicked (GtkButton *button, gpointer user_data); -void -on_button_help_clicked (GtkButton *button, - gpointer user_data); - gboolean on_player_list2_button_press_event (GtkWidget *widget, GdkEventButton *event, @@ -262,3 +258,11 @@ gboolean on_button_quit_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); + +void +on_menu_help_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_menu_contributors_activate (GtkMenuItem *menuitem, + gpointer user_data); diff --git a/src/file.c b/src/file.c index b52f2465..138ca942 100644 --- a/src/file.c +++ b/src/file.c @@ -359,8 +359,8 @@ file_get_next_opt_line(FILE *fil, gchar *opt_name, gchar *opt_value) if(buf[0] != '#' && strlen(buf) != 0) { - if(strlen(buf) > 100) - g_warning("\n the text file I'm reading contains a line longer than 100 chars.\n\n"); + if(strlen(buf) > 1000) + g_warning("\n the text file I'm reading contains a line longer than 1000 chars.\n\n"); for(i=0;ilist->len;i++) + { + if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str, + "string_help_text1")) + gtk_label_set_text(label_help_text1, + g_array_index(help_list->list, Option, i).string_value->str); + else if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str, + "string_help_desc")) + g_string_append_printf(text, "\n%s\n", + g_array_index(help_list->list, Option, i).string_value->str); + else if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str, + "string_help_url")) + g_string_append_printf(text, "%s\n", + g_array_index(help_list->list, Option, i).string_value->str); + } + + gtk_label_set_text(label_help_text2, text->str); + g_string_free(text, TRUE); +} diff --git a/src/game_gui.h b/src/game_gui.h index bb664b28..d73d5580 100644 --- a/src/game_gui.h +++ b/src/game_gui.h @@ -3,6 +3,7 @@ #include "bygfoot.h" #include "live_game_struct.h" +#include "option_struct.h" #define setsav1 gtk_widget_set_sensitive(lookup_widget(window.main, "button_save"), FALSE) #define setsav0 gtk_widget_set_sensitive(lookup_widget(window.main, "button_save"), TRUE) @@ -57,4 +58,7 @@ game_gui_write_check_items(void); void game_gui_read_check_items(GtkWidget *widget); +void +game_gui_set_help_labels(const OptionList *help_list); + #endif diff --git a/src/interface.c b/src/interface.c index e631d97e..6484284b 100644 --- a/src/interface.c +++ b/src/interface.c @@ -38,7 +38,7 @@ create_main_window (void) GtkWidget *menu_new; GtkWidget *menu_open; GtkWidget *menu_load_last_save; - GtkWidget *image311; + GtkWidget *image335; GtkWidget *menu_save; GtkWidget *menu_save_as; GtkWidget *trennlinie1; @@ -46,7 +46,7 @@ create_main_window (void) GtkWidget *menu_options; GtkWidget *menu_options_menu; GtkWidget *menu_preferences; - GtkWidget *image312; + GtkWidget *image336; GtkWidget *trennlinie7; GtkWidget *menu_job_offers; GtkWidget *menu_live_game; @@ -114,18 +114,22 @@ create_main_window (void) GtkWidget *menu_user_show_history; GtkWidget *trennlinie9; GtkWidget *menu_next_user; - GtkWidget *image313; + GtkWidget *image337; GtkWidget *menu_previous_user; - GtkWidget *image314; + GtkWidget *image338; GtkWidget *menu_manage_users; - GtkWidget *image315; + GtkWidget *image339; GtkWidget *menu_finances_stadium; GtkWidget *menu_finances_stadium_menu; GtkWidget *menu_show_finances; GtkWidget *menu_show_stadium; - GtkWidget *menu_help; - GtkWidget *menu_help_menu; + GtkWidget *menu_help1; + GtkWidget *menu_help1_menu; GtkWidget *menu_about; + GtkWidget *menu_contributors; + GtkWidget *image340; + GtkWidget *menu_help; + GtkWidget *image341; GtkWidget *hbox1; GtkWidget *button_load; GtkWidget *image11; @@ -144,8 +148,6 @@ create_main_window (void) GtkWidget *vseparator16; GtkWidget *button_new_week; GtkWidget *image23; - GtkWidget *button_help; - GtkWidget *image39; GtkWidget *entry_message; GtkWidget *hseparator1; GtkWidget *eventbox_main_info; @@ -250,9 +252,9 @@ create_main_window (void) GDK_l, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); - image311 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); - gtk_widget_show (image311); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_last_save), image311); + image335 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); + gtk_widget_show (image335); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_last_save), image335); menu_save = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); gtk_widget_show (menu_save); @@ -285,9 +287,9 @@ create_main_window (void) GDK_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image312 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); - gtk_widget_show (image312); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image312); + image336 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); + gtk_widget_show (image336); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image336); trennlinie7 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie7); @@ -377,25 +379,21 @@ create_main_window (void) menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_defend)); gtk_widget_show (menu_all_out_defend); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_all_out_defend); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_all_out_defend), TRUE); menu_defend = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Defend")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_defend)); gtk_widget_show (menu_defend); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_defend); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_defend), TRUE); menu_balanced = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Balanced")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_balanced)); gtk_widget_show (menu_balanced); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_balanced); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_balanced), TRUE); menu_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Attack")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_attack)); gtk_widget_show (menu_attack); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_attack); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_attack), TRUE); menu_all_out_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("All Out Attack")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_attack)); @@ -414,19 +412,16 @@ create_main_window (void) menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_best)); gtk_widget_show (menu_scout_best); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_best); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_best), TRUE); menu_scout_good = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Good")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_good)); gtk_widget_show (menu_scout_good); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_good); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_good), TRUE); menu_scout_average = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Average")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_average)); gtk_widget_show (menu_scout_average); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_average); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_average), TRUE); menu_scout_bad = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Bad")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_bad)); @@ -445,19 +440,16 @@ create_main_window (void) menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_best)); gtk_widget_show (menu_physio_best); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_best); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_best), TRUE); menu_physio_good = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Good")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_good)); gtk_widget_show (menu_physio_good); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_good); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_good), TRUE); menu_physio_average = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Average")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_average)); gtk_widget_show (menu_physio_average); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_average); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_average), TRUE); menu_physio_bad = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Bad")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_bad)); @@ -476,13 +468,11 @@ create_main_window (void) menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_on)); gtk_widget_show (menu_boost_on); gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_on); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_on), TRUE); menu_boost_off = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Off")); menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_off)); gtk_widget_show (menu_boost_off); gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_off); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_off), TRUE); menu_boost_anti = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Anti")); menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_anti)); @@ -602,9 +592,9 @@ create_main_window (void) GDK_F9, 0, GTK_ACCEL_VISIBLE); - image313 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU); - gtk_widget_show (image313); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image313); + image337 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU); + gtk_widget_show (image337); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image337); menu_previous_user = gtk_image_menu_item_new_with_mnemonic (_("Previous user")); gtk_widget_show (menu_previous_user); @@ -613,9 +603,9 @@ create_main_window (void) GDK_F8, 0, GTK_ACCEL_VISIBLE); - image314 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); - gtk_widget_show (image314); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image314); + image338 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); + gtk_widget_show (image338); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image338); menu_manage_users = gtk_image_menu_item_new_with_mnemonic (_("Manage users")); gtk_widget_show (menu_manage_users); @@ -624,9 +614,9 @@ create_main_window (void) GDK_F12, 0, GTK_ACCEL_VISIBLE); - image315 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); - gtk_widget_show (image315); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image315); + image339 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); + gtk_widget_show (image339); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image339); menu_finances_stadium = gtk_menu_item_new_with_mnemonic (_("Fin_Stad")); gtk_widget_show (menu_finances_stadium); @@ -649,16 +639,32 @@ create_main_window (void) GDK_f, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - menu_help = gtk_menu_item_new_with_mnemonic (_("_Help")); - gtk_widget_show (menu_help); - gtk_container_add (GTK_CONTAINER (menubar1), menu_help); + menu_help1 = gtk_menu_item_new_with_mnemonic (_("_Help")); + gtk_widget_show (menu_help1); + gtk_container_add (GTK_CONTAINER (menubar1), menu_help1); - menu_help_menu = gtk_menu_new (); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_help), menu_help_menu); + menu_help1_menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_help1), menu_help1_menu); menu_about = gtk_image_menu_item_new_from_stock ("gtk-dialog-info", accel_group); gtk_widget_show (menu_about); - gtk_container_add (GTK_CONTAINER (menu_help_menu), menu_about); + gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_about); + + menu_contributors = gtk_image_menu_item_new_with_mnemonic (_("Contributors")); + gtk_widget_show (menu_contributors); + gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_contributors); + + image340 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image340); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_contributors), image340); + + menu_help = gtk_image_menu_item_new_with_mnemonic (_("Help")); + gtk_widget_show (menu_help); + gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_help); + + image341 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); + gtk_widget_show (image341); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_help), image341); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); @@ -761,19 +767,6 @@ create_main_window (void) gtk_widget_show (image23); gtk_container_add (GTK_CONTAINER (button_new_week), image23); - button_help = gtk_button_new (); - gtk_widget_show (button_help); - gtk_box_pack_end (GTK_BOX (hbox1), button_help, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (button_help), 2); - gtk_tooltips_set_tip (tooltips, button_help, _("Help (H)"), NULL); - gtk_widget_add_accelerator (button_help, "clicked", accel_group, - GDK_h, 0, - GTK_ACCEL_VISIBLE); - - image39 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_BUTTON); - gtk_widget_show (image39); - gtk_container_add (GTK_CONTAINER (button_help), image39); - entry_message = gtk_entry_new (); gtk_widget_show (entry_message); gtk_box_pack_start (GTK_BOX (hbox1), entry_message, TRUE, TRUE, 5); @@ -1206,6 +1199,12 @@ create_main_window (void) g_signal_connect ((gpointer) menu_about, "activate", G_CALLBACK (on_menu_about_activate), NULL); + g_signal_connect ((gpointer) menu_contributors, "activate", + G_CALLBACK (on_menu_contributors_activate), + NULL); + g_signal_connect ((gpointer) menu_help, "activate", + G_CALLBACK (on_menu_help_activate), + NULL); g_signal_connect ((gpointer) button_load, "clicked", G_CALLBACK (on_button_load_clicked), NULL); @@ -1230,9 +1229,6 @@ create_main_window (void) g_signal_connect ((gpointer) button_new_week, "clicked", G_CALLBACK (on_button_new_week_clicked), NULL); - g_signal_connect ((gpointer) button_help, "clicked", - G_CALLBACK (on_button_help_clicked), - NULL); g_signal_connect ((gpointer) eventbox_style, "button_press_event", G_CALLBACK (on_eventbox_style_button_press_event), NULL); @@ -1273,7 +1269,7 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_new, "menu_new"); GLADE_HOOKUP_OBJECT (main_window, menu_open, "menu_open"); GLADE_HOOKUP_OBJECT (main_window, menu_load_last_save, "menu_load_last_save"); - GLADE_HOOKUP_OBJECT (main_window, image311, "image311"); + GLADE_HOOKUP_OBJECT (main_window, image335, "image335"); GLADE_HOOKUP_OBJECT (main_window, menu_save, "menu_save"); GLADE_HOOKUP_OBJECT (main_window, menu_save_as, "menu_save_as"); GLADE_HOOKUP_OBJECT (main_window, trennlinie1, "trennlinie1"); @@ -1281,7 +1277,7 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_options, "menu_options"); GLADE_HOOKUP_OBJECT (main_window, menu_options_menu, "menu_options_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_preferences, "menu_preferences"); - GLADE_HOOKUP_OBJECT (main_window, image312, "image312"); + GLADE_HOOKUP_OBJECT (main_window, image336, "image336"); GLADE_HOOKUP_OBJECT (main_window, trennlinie7, "trennlinie7"); GLADE_HOOKUP_OBJECT (main_window, menu_job_offers, "menu_job_offers"); GLADE_HOOKUP_OBJECT (main_window, menu_live_game, "menu_live_game"); @@ -1345,18 +1341,22 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_user_show_history, "menu_user_show_history"); GLADE_HOOKUP_OBJECT (main_window, trennlinie9, "trennlinie9"); GLADE_HOOKUP_OBJECT (main_window, menu_next_user, "menu_next_user"); - GLADE_HOOKUP_OBJECT (main_window, image313, "image313"); + GLADE_HOOKUP_OBJECT (main_window, image337, "image337"); GLADE_HOOKUP_OBJECT (main_window, menu_previous_user, "menu_previous_user"); - GLADE_HOOKUP_OBJECT (main_window, image314, "image314"); + GLADE_HOOKUP_OBJECT (main_window, image338, "image338"); GLADE_HOOKUP_OBJECT (main_window, menu_manage_users, "menu_manage_users"); - GLADE_HOOKUP_OBJECT (main_window, image315, "image315"); + GLADE_HOOKUP_OBJECT (main_window, image339, "image339"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium, "menu_finances_stadium"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium_menu, "menu_finances_stadium_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_show_finances, "menu_show_finances"); GLADE_HOOKUP_OBJECT (main_window, menu_show_stadium, "menu_show_stadium"); - GLADE_HOOKUP_OBJECT (main_window, menu_help, "menu_help"); - GLADE_HOOKUP_OBJECT (main_window, menu_help_menu, "menu_help_menu"); + GLADE_HOOKUP_OBJECT (main_window, menu_help1, "menu_help1"); + GLADE_HOOKUP_OBJECT (main_window, menu_help1_menu, "menu_help1_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_about, "menu_about"); + GLADE_HOOKUP_OBJECT (main_window, menu_contributors, "menu_contributors"); + GLADE_HOOKUP_OBJECT (main_window, image340, "image340"); + GLADE_HOOKUP_OBJECT (main_window, menu_help, "menu_help"); + GLADE_HOOKUP_OBJECT (main_window, image341, "image341"); GLADE_HOOKUP_OBJECT (main_window, hbox1, "hbox1"); GLADE_HOOKUP_OBJECT (main_window, button_load, "button_load"); GLADE_HOOKUP_OBJECT (main_window, image11, "image11"); @@ -1375,8 +1375,6 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, vseparator16, "vseparator16"); GLADE_HOOKUP_OBJECT (main_window, button_new_week, "button_new_week"); GLADE_HOOKUP_OBJECT (main_window, image23, "image23"); - GLADE_HOOKUP_OBJECT (main_window, button_help, "button_help"); - GLADE_HOOKUP_OBJECT (main_window, image39, "image39"); GLADE_HOOKUP_OBJECT (main_window, entry_message, "entry_message"); GLADE_HOOKUP_OBJECT (main_window, hseparator1, "hseparator1"); GLADE_HOOKUP_OBJECT (main_window, eventbox_main_info, "eventbox_main_info"); diff --git a/src/misc2_callbacks.c b/src/misc2_callbacks.c index 01f25db6..e4b28858 100644 --- a/src/misc2_callbacks.c +++ b/src/misc2_callbacks.c @@ -15,7 +15,6 @@ #include "user.h" #include "window.h" - gboolean on_button_cancel_clicked (GtkWidget *widget, GdkEvent *event, @@ -357,3 +356,21 @@ on_window_user_management_delete_event (GtkWidget *widget, return FALSE; } + +gboolean +on_window_help_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + on_button_help_close_clicked(NULL, NULL); + + return FALSE; +} + + +void +on_button_help_close_clicked (GtkButton *button, + gpointer user_data) +{ + window_destroy(&window.help, FALSE); +} diff --git a/src/misc2_callbacks.h b/src/misc2_callbacks.h index 05183482..3c2eabda 100644 --- a/src/misc2_callbacks.h +++ b/src/misc2_callbacks.h @@ -115,4 +115,13 @@ gboolean on_window_user_management_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); + +gboolean +on_window_help_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); + +void +on_button_help_close_clicked (GtkButton *button, + gpointer user_data); #endif diff --git a/src/misc2_interface.c b/src/misc2_interface.c index 0bdf94cf..da3a3bcd 100644 --- a/src/misc2_interface.c +++ b/src/misc2_interface.c @@ -980,3 +980,145 @@ create_window_debug (void) return window_debug; } +GtkWidget* +create_window_help (void) +{ + GtkWidget *window_help; + GtkWidget *vbox23; + GtkWidget *notebook1; + GtkWidget *vbox24; + GtkWidget *image12; + GtkWidget *label_about; + GtkWidget *label49; + GtkWidget *scrolledwindow4; + GtkWidget *treeview_contributors; + GtkWidget *label50; + GtkWidget *vbox25; + GtkWidget *image13; + GtkWidget *label_help_text1; + GtkWidget *label_help_text2; + GtkWidget *label51; + GtkWidget *button_help_close; + GtkAccelGroup *accel_group; + GtkTooltips *tooltips; + + tooltips = gtk_tooltips_new (); + + accel_group = gtk_accel_group_new (); + + window_help = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (window_help), 5); + gtk_window_set_title (GTK_WINDOW (window_help), _("window1")); + gtk_window_set_position (GTK_WINDOW (window_help), GTK_WIN_POS_CENTER); + gtk_window_set_modal (GTK_WINDOW (window_help), TRUE); + gtk_window_set_default_size (GTK_WINDOW (window_help), 400, 400); + + vbox23 = gtk_vbox_new (FALSE, 3); + gtk_widget_show (vbox23); + gtk_container_add (GTK_CONTAINER (window_help), vbox23); + + notebook1 = gtk_notebook_new (); + gtk_widget_show (notebook1); + gtk_box_pack_start (GTK_BOX (vbox23), notebook1, TRUE, TRUE, 0); + + vbox24 = gtk_vbox_new (FALSE, 5); + gtk_widget_show (vbox24); + gtk_container_add (GTK_CONTAINER (notebook1), vbox24); + gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (notebook1), vbox24, + FALSE, FALSE, GTK_PACK_START); + + image12 = create_pixmap (window_help, "bygfoot_icon.png"); + gtk_widget_show (image12); + gtk_box_pack_start (GTK_BOX (vbox24), image12, FALSE, FALSE, 0); + gtk_misc_set_padding (GTK_MISC (image12), 0, 5); + + label_about = gtk_label_new (""); + gtk_widget_show (label_about); + gtk_box_pack_start (GTK_BOX (vbox24), label_about, FALSE, FALSE, 0); + GTK_WIDGET_SET_FLAGS (label_about, GTK_CAN_FOCUS); + gtk_label_set_justify (GTK_LABEL (label_about), GTK_JUSTIFY_CENTER); + gtk_label_set_selectable (GTK_LABEL (label_about), TRUE); + + label49 = gtk_label_new (_("About")); + gtk_widget_show (label49); + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label49); + + scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow4); + gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow4); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_SHADOW_IN); + + treeview_contributors = gtk_tree_view_new (); + gtk_widget_show (treeview_contributors); + gtk_container_add (GTK_CONTAINER (scrolledwindow4), treeview_contributors); + + label50 = gtk_label_new (_("Contributors")); + gtk_widget_show (label50); + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label50); + + vbox25 = gtk_vbox_new (FALSE, 3); + gtk_widget_show (vbox25); + gtk_container_add (GTK_CONTAINER (notebook1), vbox25); + gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (notebook1), vbox25, + FALSE, FALSE, GTK_PACK_START); + + image13 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image13); + gtk_box_pack_start (GTK_BOX (vbox25), image13, FALSE, FALSE, 0); + + label_help_text1 = gtk_label_new (""); + gtk_widget_show (label_help_text1); + gtk_box_pack_start (GTK_BOX (vbox25), label_help_text1, FALSE, FALSE, 0); + gtk_label_set_line_wrap (GTK_LABEL (label_help_text1), TRUE); + + label_help_text2 = gtk_label_new (""); + gtk_widget_show (label_help_text2); + gtk_box_pack_start (GTK_BOX (vbox25), label_help_text2, FALSE, FALSE, 0); + GTK_WIDGET_SET_FLAGS (label_help_text2, GTK_CAN_FOCUS); + gtk_label_set_line_wrap (GTK_LABEL (label_help_text2), TRUE); + gtk_label_set_selectable (GTK_LABEL (label_help_text2), TRUE); + + label51 = gtk_label_new (_("Help")); + gtk_widget_show (label51); + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label51); + + button_help_close = gtk_button_new_from_stock ("gtk-close"); + gtk_widget_show (button_help_close); + gtk_box_pack_start (GTK_BOX (vbox23), button_help_close, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, button_help_close, _("Esc"), NULL); + gtk_widget_add_accelerator (button_help_close, "clicked", accel_group, + GDK_Escape, 0, + GTK_ACCEL_VISIBLE); + + g_signal_connect ((gpointer) window_help, "delete_event", + G_CALLBACK (on_window_help_delete_event), + NULL); + g_signal_connect ((gpointer) button_help_close, "clicked", + G_CALLBACK (on_button_help_close_clicked), + NULL); + + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF (window_help, window_help, "window_help"); + GLADE_HOOKUP_OBJECT (window_help, vbox23, "vbox23"); + GLADE_HOOKUP_OBJECT (window_help, notebook1, "notebook1"); + GLADE_HOOKUP_OBJECT (window_help, vbox24, "vbox24"); + GLADE_HOOKUP_OBJECT (window_help, image12, "image12"); + GLADE_HOOKUP_OBJECT (window_help, label_about, "label_about"); + GLADE_HOOKUP_OBJECT (window_help, label49, "label49"); + GLADE_HOOKUP_OBJECT (window_help, scrolledwindow4, "scrolledwindow4"); + GLADE_HOOKUP_OBJECT (window_help, treeview_contributors, "treeview_contributors"); + GLADE_HOOKUP_OBJECT (window_help, label50, "label50"); + GLADE_HOOKUP_OBJECT (window_help, vbox25, "vbox25"); + GLADE_HOOKUP_OBJECT (window_help, image13, "image13"); + GLADE_HOOKUP_OBJECT (window_help, label_help_text1, "label_help_text1"); + GLADE_HOOKUP_OBJECT (window_help, label_help_text2, "label_help_text2"); + GLADE_HOOKUP_OBJECT (window_help, label51, "label51"); + GLADE_HOOKUP_OBJECT (window_help, button_help_close, "button_help_close"); + GLADE_HOOKUP_OBJECT_NO_REF (window_help, tooltips, "tooltips"); + + gtk_window_add_accel_group (GTK_WINDOW (window_help), accel_group); + + return window_help; +} + diff --git a/src/misc2_interface.h b/src/misc2_interface.h index 1d0f8f85..61f31247 100644 --- a/src/misc2_interface.h +++ b/src/misc2_interface.h @@ -10,3 +10,4 @@ GtkWidget* create_window_yesno (void); GtkWidget* create_window_contract (void); GtkWidget* create_window_user_management (void); GtkWidget* create_window_debug (void); +GtkWidget* create_window_help (void); diff --git a/src/misc_callbacks.c b/src/misc_callbacks.c index c55e4600..aa5661f9 100644 --- a/src/misc_callbacks.c +++ b/src/misc_callbacks.c @@ -181,14 +181,6 @@ on_button_live_close_clicked (GtkButton *button, } -void -on_button_help_close_clicked (GtkButton *button, - gpointer user_data) -{ - -} - - void on_button_pause_clicked (GtkButton *button, gpointer user_data) diff --git a/src/misc_callbacks.h b/src/misc_callbacks.h index 452b5be5..4b5a7896 100644 --- a/src/misc_callbacks.h +++ b/src/misc_callbacks.h @@ -57,10 +57,6 @@ void on_button_live_close_clicked (GtkButton *button, gpointer user_data); -void -on_button_help_close_clicked (GtkButton *button, - gpointer user_data); - void on_button_pause_clicked (GtkButton *button, gpointer user_data); diff --git a/src/misc_interface.c b/src/misc_interface.c index 84d7d97b..8437256e 100644 --- a/src/misc_interface.c +++ b/src/misc_interface.c @@ -825,99 +825,6 @@ create_window_live (void) return window_live; } -GtkWidget* -create_help_window (void) -{ - GtkWidget *help_window; - GtkWidget *vbox27; - GtkWidget *scrolledwindow5; - GtkWidget *text_view_help; - GtkWidget *button_help_close; - GtkWidget *alignment11; - GtkWidget *hbox40; - GtkWidget *image40; - GtkWidget *label59; - GtkAccelGroup *accel_group; - GtkTooltips *tooltips; - - tooltips = gtk_tooltips_new (); - - accel_group = gtk_accel_group_new (); - - help_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (help_window), 6); - gtk_window_set_title (GTK_WINDOW (help_window), _("Bygfoot help")); - gtk_window_set_position (GTK_WINDOW (help_window), GTK_WIN_POS_CENTER); - gtk_window_set_default_size (GTK_WINDOW (help_window), 550, 650); - - vbox27 = gtk_vbox_new (FALSE, 0); - gtk_widget_show (vbox27); - gtk_container_add (GTK_CONTAINER (help_window), vbox27); - - scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL); - gtk_widget_show (scrolledwindow5); - gtk_box_pack_start (GTK_BOX (vbox27), scrolledwindow5, TRUE, TRUE, 0); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_SHADOW_IN); - - text_view_help = gtk_text_view_new (); - gtk_widget_show (text_view_help); - gtk_container_add (GTK_CONTAINER (scrolledwindow5), text_view_help); - gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view_help), FALSE); - gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view_help), GTK_WRAP_WORD); - gtk_text_view_set_indent (GTK_TEXT_VIEW (text_view_help), 5); - - button_help_close = gtk_button_new (); - gtk_widget_show (button_help_close); - gtk_box_pack_start (GTK_BOX (vbox27), button_help_close, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (button_help_close), 2); - gtk_tooltips_set_tip (tooltips, button_help_close, _("Esc / Return / Space"), NULL); - gtk_widget_add_accelerator (button_help_close, "clicked", accel_group, - GDK_Escape, 0, - GTK_ACCEL_VISIBLE); - gtk_widget_add_accelerator (button_help_close, "clicked", accel_group, - GDK_Return, 0, - GTK_ACCEL_VISIBLE); - gtk_widget_add_accelerator (button_help_close, "clicked", accel_group, - GDK_space, 0, - GTK_ACCEL_VISIBLE); - - alignment11 = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_widget_show (alignment11); - gtk_container_add (GTK_CONTAINER (button_help_close), alignment11); - - hbox40 = gtk_hbox_new (FALSE, 2); - gtk_widget_show (hbox40); - gtk_container_add (GTK_CONTAINER (alignment11), hbox40); - - image40 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_BUTTON); - gtk_widget_show (image40); - gtk_box_pack_start (GTK_BOX (hbox40), image40, FALSE, FALSE, 0); - - label59 = gtk_label_new_with_mnemonic (_("Close")); - gtk_widget_show (label59); - gtk_box_pack_start (GTK_BOX (hbox40), label59, FALSE, FALSE, 0); - - g_signal_connect ((gpointer) button_help_close, "clicked", - G_CALLBACK (on_button_help_close_clicked), - NULL); - - /* Store pointers to all widgets, for use by lookup_widget(). */ - GLADE_HOOKUP_OBJECT_NO_REF (help_window, help_window, "help_window"); - GLADE_HOOKUP_OBJECT (help_window, vbox27, "vbox27"); - GLADE_HOOKUP_OBJECT (help_window, scrolledwindow5, "scrolledwindow5"); - GLADE_HOOKUP_OBJECT (help_window, text_view_help, "text_view_help"); - GLADE_HOOKUP_OBJECT (help_window, button_help_close, "button_help_close"); - GLADE_HOOKUP_OBJECT (help_window, alignment11, "alignment11"); - GLADE_HOOKUP_OBJECT (help_window, hbox40, "hbox40"); - GLADE_HOOKUP_OBJECT (help_window, image40, "image40"); - GLADE_HOOKUP_OBJECT (help_window, label59, "label59"); - GLADE_HOOKUP_OBJECT_NO_REF (help_window, tooltips, "tooltips"); - - gtk_window_add_accel_group (GTK_WINDOW (help_window), accel_group); - - return help_window; -} - GtkWidget* create_window_stadium (void) { diff --git a/src/misc_interface.h b/src/misc_interface.h index 48c4fde1..92da4231 100644 --- a/src/misc_interface.h +++ b/src/misc_interface.h @@ -6,5 +6,4 @@ GtkWidget* create_window_startup (void); GtkWidget* create_window_file_sel (void); GtkWidget* create_window_font_sel (void); GtkWidget* create_window_live (void); -GtkWidget* create_help_window (void); GtkWidget* create_window_stadium (void); diff --git a/src/treeview.c b/src/treeview.c index 20e854ed..6bcef6f2 100644 --- a/src/treeview.c +++ b/src/treeview.c @@ -2290,3 +2290,52 @@ treeview_create_country_list(const GPtrArray *country_list) return GTK_TREE_MODEL(ls); } + +/** Show the list of contributors in the help window.*/ +void +treeview_show_contributors(const OptionList *help_list) +{ + GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.help, "treeview_contributors")); + GtkListStore *ls = gtk_list_store_new(1, G_TYPE_STRING); + GtkTreeIter iter; + GtkTreeViewColumn *col; + GtkCellRenderer *renderer; + gint i; + gchar buf[SMALL]; + + gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview), + GTK_SELECTION_NONE); + gtk_tree_view_set_rules_hint(treeview, FALSE); + gtk_tree_view_set_headers_visible(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); + + for(i=0;ilist->len;i++) + { + gtk_list_store_append(ls, &iter); + + if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str, + "string_contrib_title")) + { + sprintf(buf, "\n%s", + const_app("string_help_window_title_attribute"), + g_array_index(help_list->list, Option, i).string_value->str); + gtk_list_store_set(ls, &iter, 0, buf, -1); + } + else if(g_str_has_prefix(g_array_index(help_list->list, Option, i).name->str, + "string_contrib_")) + { + strcpy(buf, g_array_index(help_list->list, Option, i).string_value->str); + gtk_list_store_set(ls, &iter, 0, buf, -1); + } + + } + + gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(ls)); + g_object_unref(ls); +} diff --git a/src/treeview.h b/src/treeview.h index 3262d345..e34e99ab 100644 --- a/src/treeview.h +++ b/src/treeview.h @@ -202,4 +202,7 @@ treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_ GtkTreeModel* treeview_create_country_list(const GPtrArray *country_list); +void +treeview_show_contributors(const OptionList *help_list); + #endif diff --git a/src/user.c b/src/user.c index c89f190f..f107cf42 100644 --- a/src/user.c +++ b/src/user.c @@ -710,7 +710,7 @@ user_history_to_string(const UserHistory *history, gchar *buf) team_of_id(history->team_id)->name->str); break; case USER_HISTORY_END_SEASON: - sprintf(buf, "You finish the season in %s on rank %d.", + sprintf(buf, "You finish the season in the %s on rank %d.", league_cup_get_name_string(history->value1), history->value2); break; diff --git a/src/window.c b/src/window.c index 4ce7dc8a..dbb7bb89 100644 --- a/src/window.c +++ b/src/window.c @@ -16,6 +16,40 @@ #include "user.h" #include "window.h" +/** Show the help/about window. + @param page Which notebook page to display. */ +void +window_show_help(gint page) +{ + gchar buf[SMALL]; + gchar *help_file = file_find_support_file("bygfoot_help", TRUE); + OptionList help_list; + + if(help_file == NULL) + { + game_gui_show_warning("Didn't find file 'bygfoot_help'."); + return; + } + + help_list.list = NULL; + help_list.datalist = NULL; + file_load_opt_file(help_file, &help_list); + + window_create(WINDOW_HELP); + + sprintf(buf, "Bygfoot Football Manager\n%s\n(c) 2005 Győző Both (gyboth@bygfoot.com)\nhttp://bygfoot.sourceforge.net", VERS); + gtk_label_set_text(GTK_LABEL(lookup_widget(window.help, "label_about")), buf); + + treeview_show_contributors(&help_list); + + game_gui_set_help_labels(&help_list); + + gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window.help, "notebook1")), page); + + g_free(help_file); + free_option_list(&help_list, FALSE); +} + /** Show the country selection window. All files with prefix 'country_' from $HOME/.bygfoot/definitions are appended to a combo box. @@ -379,6 +413,13 @@ window_create(gint window_type) wind = window.wdebug; strcpy(buf, "Bygfoot debug window"); break; + case WINDOW_HELP: + if(window.help != NULL) + g_warning("window_create: called on already existing window\n"); + else + window.help = create_window_help(); + wind = window.help; + break; } gtk_window_set_title(GTK_WINDOW(wind), buf); diff --git a/src/window.h b/src/window.h index 501fa81b..880c230e 100644 --- a/src/window.h +++ b/src/window.h @@ -22,9 +22,13 @@ enum Windows WINDOW_CONTRACT, WINDOW_USER_MANAGEMENT, WINDOW_DEBUG, + WINDOW_HELP, WINDOW_END }; +void +window_show_help(gint page); + void window_show_startup(void); diff --git a/support_files/bygfoot_app b/support_files/bygfoot_app index 4cb5dcb7..d405fce5 100644 --- a/support_files/bygfoot_app +++ b/support_files/bygfoot_app @@ -6,6 +6,9 @@ # treeview background and foreground colours ###### ################################################### +# font attributes for the help window +string_help_window_title_attribute size='large' + # colours of the live game commentary for the away team string_treeview_live_game_commentary_away_fg black string_treeview_live_game_commentary_away_bg lightgrey diff --git a/support_files/definitions/scotland/league_scotland2.xml b/support_files/definitions/scotland/league_scotland2.xml index ce5a3ba9..d789a747 100644 --- a/support_files/definitions/scotland/league_scotland2.xml +++ b/support_files/definitions/scotland/league_scotland2.xml @@ -22,7 +22,7 @@ 9 10 scotland3 - promotion + relegation diff --git a/support_files/pixmaps/bygfoot_icon.png b/support_files/pixmaps/bygfoot_icon.png index d3b792b5e60dad6d3c80bd078e8d99b7997e8b22..6b544f5a56cacf8633974e845825b37658e48c03 100644 GIT binary patch literal 12116 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 KMNUMnLSTZ#zviw0 literal 7411 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