/* misc_callbacks.c Bygfoot Football Manager -- a small and simple GTK2-based football management game. http://bygfoot.sourceforge.net Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "callbacks.h" #include "callback_func.h" #include "game.h" #include "game_gui.h" #include "gui.h" #include "live_game.h" #include "load_save.h" #include "main.h" #include "maths.h" #include "misc_callback_func.h" #include "misc_callbacks.h" #include "option.h" #include "user.h" #include "variables.h" #include "window.h" #include "xml_country.h" G_MODULE_EXPORT void on_button_add_player_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_add_player_clicked\n"); #endif misc_callback_add_player(); } G_MODULE_EXPORT void on_entry_player_name_activate (GtkEntry *entry, gpointer user_data) { #ifdef DEBUG printf("on_entry_player_name_activate\n"); #endif on_button_add_player_clicked(NULL, NULL); } G_MODULE_EXPORT void on_team_selection_ok_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_team_selection_ok_clicked\n"); #endif misc_callback_start_game(); } G_MODULE_EXPORT void on_team_selection_cancel_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_team_selection_cancel_clicked\n"); #endif main_exit_program(EXIT_OK, NULL); } G_MODULE_EXPORT gboolean on_button_font_sel_cancel_clicked (GtkWidget *widget, GdkEvent *event, gpointer user_data) { #ifdef DEBUG printf("on_button_font_sel_cancel_clicked\n"); #endif window_destroy(&window.font_sel); return FALSE; } G_MODULE_EXPORT void on_button_font_sel_ok_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_font_sel_ok_clicked\n"); #endif gchar *font = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(window.font_sel)); if(font != NULL) { gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.options, "entry_font_name")), font); g_free(font); } window_destroy(&window.font_sel); } G_MODULE_EXPORT void on_button_font_sel_apply_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_font_sel_apply_clicked\n"); #endif gchar *font = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(window.font_sel)); if(font != NULL) { opt_set_str("string_opt_font_name", font); gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.options, "entry_font_name")), font); g_free(font); stat0 = STATUS_MAIN; game_gui_show_main(); setsav0; } } G_MODULE_EXPORT gboolean on_live_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { #ifdef DEBUG printf("on_live_window_delete_event\n"); #endif if(GTK_WIDGET_IS_SENSITIVE(lookup_widget(widget, "button_live_close"))) { on_button_live_close_clicked(NULL, NULL); return FALSE; } return TRUE; } G_MODULE_EXPORT void on_button_live_close_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_live_close_clicked\n"); #endif if(stat1 == STATUS_SHOW_LAST_MATCH && stat3 != -1 && stat4 != STATUS_SHOW_LAST_MATCH_PAUSE) stat4 = STATUS_SHOW_LAST_MATCH_ABORT; else if(stat1 != STATUS_SHOW_LAST_MATCH) callback_show_next_live_game(); else { window_destroy(&window.live); stat1 = stat2 = stat3 = stat4 = -1; } } G_MODULE_EXPORT void on_button_pause_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_pause_clicked\n"); #endif misc_callback_pause_live_game(); } G_MODULE_EXPORT void on_button_resume_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_resume_clicked\n"); #endif GtkWidget *button_pause = lookup_widget(window.live, "button_pause"); if(stat1 == STATUS_SHOW_LAST_MATCH) { callback_show_last_match(FALSE, ¤t_user.live_game); return; } else if(game_check_live_game_resume_state()) { gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); if(g_array_index(usr(stat2).live_game.units, LiveGameUnit, usr(stat2).live_game.units->len - 1).event.type != LIVE_GAME_EVENT_PENALTIES) { gtk_widget_set_sensitive(button_pause, TRUE); gtk_widget_grab_focus(button_pause); } game_gui_set_main_window_sensitivity(FALSE); live_game_resume(); } else game_gui_show_warning(_("There were too many substitutions. Only 3 per game are allowed. Player list reset.")); } G_MODULE_EXPORT void on_spinbutton_speed_value_changed (GtkSpinButton *spinbutton, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_speed_value_changed\n"); #endif option_set_int("int_opt_user_live_game_speed", &usr(stat2).options, gtk_spin_button_get_value_as_int(spinbutton)); } G_MODULE_EXPORT void on_spinbutton_verbosity_value_changed (GtkSpinButton *spinbutton, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_verbosity_value_changed\n"); #endif option_set_int("int_opt_user_live_game_verbosity", &usr(stat2).options, gtk_spin_button_get_value_as_int(spinbutton)); } G_MODULE_EXPORT gboolean on_treeview_users_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG printf("on_treeview_users_button_press_event\n"); #endif misc_callback_remove_user(event); return FALSE; } G_MODULE_EXPORT void on_spinbutton_capacity_value_changed (GtkSpinButton *spinbutton, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_capacity_value_changed\n"); #endif misc_callback_update_stadium_window(TRUE); } G_MODULE_EXPORT void on_spinbutton_safety_value_changed (GtkSpinButton *spinbutton, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_safety_value_changed\n"); #endif misc_callback_update_stadium_window(FALSE); } G_MODULE_EXPORT void on_button_stadium_ok_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_stadium_ok_clicked\n"); #endif misc_callback_improve_stadium(); if(stat0 == STATUS_SHOW_FINANCES) on_menu_show_finances_activate(NULL, NULL); } G_MODULE_EXPORT void on_button_stadium_cancel_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_stadium_cancel_clicked\n"); #endif window_destroy(&window.stadium); } G_MODULE_EXPORT gboolean on_spinbutton_capacity_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_capacity_button_press_event\n"); #endif if(event->button == 3) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), 0); return TRUE; } return FALSE; } G_MODULE_EXPORT gboolean on_window_stadium_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { #ifdef DEBUG printf("on_window_stadium_delete_event\n"); #endif on_button_stadium_cancel_clicked(NULL, NULL); return TRUE; } G_MODULE_EXPORT void on_combo_country_changed (GtkComboBox *combobox, gpointer user_data) { #ifdef DEBUG printf("on_combo_country_changed\n"); #endif GtkTreeIter iter; gchar *buf = NULL; gtk_combo_box_get_active_iter(combobox, &iter); if (!gtk_tree_model_iter_has_child (gtk_combo_box_get_model(combobox), &iter)) { gtk_tree_model_get(gtk_combo_box_get_model(combobox), &iter, 1, &buf, -1); misc_callback_show_team_list(GTK_WIDGET(combobox), buf); } else { gtk_widget_set_sensitive(lookup_widget(window.startup, "button_add_player"), FALSE); } g_free(buf); } G_MODULE_EXPORT gboolean on_spinbutton_speed_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG printf("on_spinbutton_speed_button_press_event\n"); #endif if(event->button == 3) { if(option_int("int_opt_user_live_game_speed", &usr(stat2).options) == -rint((gfloat)(const_int("int_game_gui_live_game_speed_max") - 10) / (gfloat)(const_int("int_game_gui_live_game_speed_grad")))) option_set_int("int_opt_user_live_game_speed", &usr(stat2).options, 0); else if(option_int("int_opt_user_live_game_speed", &usr(stat2).options) == 0) option_set_int("int_opt_user_live_game_speed", &usr(stat2).options, -rint((gfloat)(const_int("int_game_gui_live_game_speed_max") - 10) / (gfloat)(const_int("int_game_gui_live_game_speed_grad") * 2))); else option_set_int("int_opt_user_live_game_speed", &usr(stat2).options, -rint((gfloat)(const_int("int_game_gui_live_game_speed_max") - 10) / (gfloat)(const_int("int_game_gui_live_game_speed_grad")))); gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(window.live, "spinbutton_speed")), (gdouble)option_int("int_opt_user_live_game_speed", &usr(stat2).options)); return TRUE; } return FALSE; } G_MODULE_EXPORT void on_button_sponsors_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_sponsors_clicked\n"); #endif misc_callback_new_sponsor(); window_destroy(&window.sponsors); } G_MODULE_EXPORT void on_treeview_sponsors_row_activated (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { #ifdef DEBUG printf("on_treeview_sponsors_row_activated\n"); #endif on_button_sponsors_clicked(NULL, NULL); } G_MODULE_EXPORT gboolean on_window_sponsors_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { #ifdef DEBUG printf("on_window_sponsors_delete_event\n"); #endif return TRUE; } G_MODULE_EXPORT void on_button_sponsors_wait_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_sponsors_wait_clicked\n"); #endif if(stat1 != STATUS_SPONSOR_CONTINUE) { g_string_printf(current_user.sponsor.name, _("None")); current_user.sponsor.contract = 0; current_user.sponsor.benefit = 0; current_user.counters[COUNT_USER_NEW_SPONSOR] = math_rndi(const_int("int_sponsor_without_weeks_lower"), const_int("int_sponsor_without_weeks_upper")); } else current_user.counters[COUNT_USER_NEW_SPONSOR] = 0; window_destroy(&window.sponsors); } G_MODULE_EXPORT gboolean on_eventbox_lg_style_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG printf("on_eventbox_lg_style_button_press_event\n"); #endif gint new_style = -1; if(stat0 == STATUS_LIVE_GAME_PAUSE) { on_eventbox_style_button_press_event(NULL, event, NULL); return FALSE; } if(event->type != GDK_BUTTON_PRESS || g_array_index(usr(stat2).live_game.units, LiveGameUnit, usr(stat2).live_game.units->len -1).event.type == LIVE_GAME_EVENT_END_MATCH) return FALSE; if(event->button == 3) new_style = (usr(stat2).tm->style != 2) ? usr(stat2).tm->style + 1 : -2; else if(event->button == 1) new_style = (usr(stat2).tm->style != -2) ? usr(stat2).tm->style - 1 : 2; else return FALSE; game_save_team_states(); usr(stat2).tm->style = new_style; game_gui_write_meters(usr(stat2).tm); if(¤t_user == &usr(stat2)) game_gui_write_meters(current_user.tm); stat0 = STATUS_LIVE_GAME_CHANGE; return FALSE; } G_MODULE_EXPORT gboolean on_eventbox_lg_boost_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG printf("on_eventbox_lg_boost_button_press_event\n"); #endif gint new_boost = -1; if(stat0 == STATUS_LIVE_GAME_PAUSE) { on_eventbox_boost_button_press_event(NULL, event, NULL); return FALSE; } if(event->type != GDK_BUTTON_PRESS || g_array_index(usr(stat2).live_game.units, LiveGameUnit, usr(stat2).live_game.units->len -1).event.type == LIVE_GAME_EVENT_END_MATCH) return FALSE; if(event->button == 3) new_boost = (usr(stat2).tm->boost != 1) ? usr(stat2).tm->boost + 1 : -1; else if(event->button == 1) new_boost = (usr(stat2).tm->boost != -1) ? usr(stat2).tm->boost - 1 : 1; else return FALSE; if(new_boost == 1 && sett_int("int_opt_disable_boost_on")) { game_gui_show_warning(_("Boost ON is disabled in this country definition.")); return FALSE; } game_save_team_states(); usr(stat2).tm->boost = new_boost; game_gui_write_meters(usr(stat2).tm); if(¤t_user == &usr(stat2)) game_gui_write_meters(current_user.tm); stat0 = STATUS_LIVE_GAME_CHANGE; return FALSE; } G_MODULE_EXPORT void on_button_team_selection_back_clicked (GtkButton *button, gpointer user_data) { #ifdef DEBUG printf("on_button_team_selection_back_clicked\n"); #endif window_destroy(&window.startup); stat0 = STATUS_SPLASH; window_show_splash(); }