bygfoot/src/window.c

752 lines
23 KiB
C
Raw Normal View History

2005-06-15 21:13:35 +02:00
#include "callbacks.h"
2005-01-09 21:21:22 +01:00
#include "file.h"
2005-03-17 21:26:01 +01:00
#include "finance.h"
2005-01-09 21:21:22 +01:00
#include "free.h"
#include "game_gui.h"
2005-03-17 21:26:01 +01:00
#include "gui.h"
#include "interface.h"
2005-06-05 12:39:29 +02:00
#include "league.h"
#include "live_game.h"
2005-06-14 22:04:37 +02:00
#include "load_save.h"
2005-04-09 21:18:28 +02:00
#include "main.h"
2005-06-14 22:04:37 +02:00
#include "misc_callback_func.h"
#include "misc_interface.h"
2005-03-08 09:25:46 +01:00
#include "misc2_interface.h"
#include "option.h"
2005-03-23 20:03:26 +01:00
#include "option_gui.h"
#include "options_interface.h"
#include "support.h"
2005-06-15 18:44:53 +02:00
#include "transfer.h"
2005-05-07 16:19:52 +02:00
#include "treeview.h"
2005-08-20 21:39:36 +02:00
#include "treeview2.h"
2005-05-07 16:19:52 +02:00
#include "treeview_helper.h"
#include "user.h"
2005-01-09 21:21:22 +01:00
#include "window.h"
2004-12-23 13:58:39 +01:00
2005-06-23 23:53:57 +02:00
/** Show the window with the news. */
/* void */
/* window_show_news(void) */
/* { */
/* GtkNotebook *nb = NULL; */
2005-06-23 23:53:57 +02:00
/* window_create(WINDOW_HELP); */
2005-06-23 23:53:57 +02:00
/* nb = GTK_NOTEBOOK(lookup_widget(window.help, "notebook1")); */
2005-06-23 23:53:57 +02:00
/* gtk_notebook_remove_page(nb, 0); */
/* gtk_notebook_remove_page(nb, -1); */
2005-06-23 23:53:57 +02:00
/* gtk_label_set_text(GTK_LABEL(lookup_widget(window.help, "label_contributors")), */
/* _("News")); */
/* } */
2005-06-23 23:53:57 +02:00
2005-05-22 15:33:24 +02:00
/** 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)
{
2005-06-18 16:45:29 +02:00
game_gui_show_warning(_("Didn't find file 'bygfoot_help'."));
2005-05-22 15:33:24 +02:00
return;
}
help_list.list = NULL;
help_list.datalist = NULL;
file_load_opt_file(help_file, &help_list);
window_create(WINDOW_HELP);
2005-05-24 20:31:07 +02:00
sprintf(buf, "<span %s>Bygfoot Football Manager %s</span>\n(c) 2005 Győző Both (gyboth@bygfoot.com)\nhttp://bygfoot.sourceforge.net", const_app("string_help_window_program_name_attribute"), VERS);
gtk_label_set_markup(GTK_LABEL(lookup_widget(window.help, "label_about")), buf);
2005-05-22 15:33:24 +02:00
treeview_show_contributors(&help_list);
2005-05-24 20:31:07 +02:00
game_gui_set_help_labels();
2005-05-22 15:33:24 +02:00
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window.help, "notebook1")), page);
g_free(help_file);
free_option_list(&help_list, FALSE);
}
2004-12-23 13:58:39 +01:00
/**
Show the country selection window. All files with prefix
'country_' from $HOME/.bygfoot/definitions are appended to a combo box.
*/
void
window_show_startup(void)
{
GtkWidget *window_startup =
window_create(WINDOW_STARTUP);
2004-12-23 13:58:39 +01:00
GtkWidget *combo_country =
lookup_widget(window_startup, "combo_country");
2005-04-09 21:18:28 +02:00
GPtrArray *country_files = NULL;
2005-05-07 16:19:52 +02:00
GtkTreeModel *model = NULL;
GtkCellRenderer *renderer = NULL;
2004-12-23 13:58:39 +01:00
2005-04-09 21:18:28 +02:00
country_files = file_get_country_files();
2004-12-23 13:58:39 +01:00
2005-04-09 21:18:28 +02:00
if(country_files->len == 0)
main_exit_program(EXIT_NO_COUNTRY_FILES, "Didn't find any country definition files in the support directories.");
2004-12-23 13:58:39 +01:00
2005-05-07 16:19:52 +02:00
gtk_cell_layout_clear(GTK_CELL_LAYOUT(combo_country));
renderer = gtk_cell_renderer_pixbuf_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_country), renderer, FALSE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_country), renderer, "pixbuf", 0, NULL);
renderer = treeview_helper_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_country), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_country), renderer, "text", 1, NULL);
2005-08-26 14:41:37 +02:00
model = treeview_create_country_list(country_files);
gtk_combo_box_set_model(GTK_COMBO_BOX(combo_country), model);
g_object_unref(model);
2005-05-07 16:19:52 +02:00
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_country), 0);
2004-12-23 13:58:39 +01:00
2005-10-05 21:59:37 +02:00
free_gchar_array(&country_files);
2004-12-23 13:58:39 +01:00
}
2005-04-04 12:36:04 +02:00
/** Show the file selection window. */
void
window_show_file_sel(void)
{
gchar buf[SMALL];
const gchar *home = g_get_home_dir();
2005-06-14 22:04:37 +02:00
gchar *filename = NULL;
2005-06-20 14:46:57 +02:00
GtkFileFilter *filter;
2005-08-20 21:39:36 +02:00
gboolean mm_file_exists = FALSE;
2005-04-04 12:36:04 +02:00
2005-06-14 22:04:37 +02:00
window_create(WINDOW_FILE_CHOOSER);
2005-08-26 14:41:37 +02:00
if(stat5 != STATUS_LOAD_GAME &&
stat5 != STATUS_LOAD_GAME_TEAM_SELECTION)
2005-06-14 22:04:37 +02:00
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window.file_chooser),
GTK_FILE_CHOOSER_ACTION_SAVE);
else
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window.file_chooser),
GTK_FILE_CHOOSER_ACTION_OPEN);
2005-04-04 12:36:04 +02:00
2005-06-20 14:46:57 +02:00
filter = gtk_file_filter_new();
2005-08-26 14:41:37 +02:00
if(stat5 == STATUS_SAVE_GAME ||
stat5 == STATUS_LOAD_GAME ||
stat5 == STATUS_LOAD_GAME_TEAM_SELECTION)
2005-08-20 21:39:36 +02:00
{
gtk_file_filter_set_name(filter, _("Bygfoot Save Files"));
gtk_file_filter_add_pattern(filter, "*.zip");
gtk_file_filter_add_pattern(filter, "last_save");
}
else
{
gtk_file_filter_set_name(filter, _("Bygfoot Memorable Matches"));
gtk_file_filter_add_pattern(filter, "*.bmm.zip");
}
2005-06-20 14:46:57 +02:00
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window.file_chooser), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_set_name(filter, _("All Files"));
gtk_file_filter_add_pattern(filter, "*");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window.file_chooser), filter);
2005-08-26 14:41:37 +02:00
if((stat5 == STATUS_SAVE_GAME ||
stat5 == STATUS_LOAD_GAME ||
stat5 == STATUS_LOAD_GAME_TEAM_SELECTION) &&
2005-10-09 11:35:44 +02:00
save_file != NULL)
2005-08-26 14:41:37 +02:00
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(window.file_chooser),
2005-10-09 11:35:44 +02:00
save_file);
else if(users->len > 0 && current_user.mmatches_file != NULL)
2005-06-14 22:04:37 +02:00
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(window.file_chooser),
2005-10-09 11:35:44 +02:00
current_user.mmatches_file);
2005-04-04 12:36:04 +02:00
else
{
2005-07-25 06:35:53 +02:00
if(os_is_unix)
sprintf(buf, "%s%s%s%ssaves", home, G_DIR_SEPARATOR_S,
HOMEDIRNAME, G_DIR_SEPARATOR_S);
2005-07-25 06:35:53 +02:00
else
{
gchar *pwd = g_get_current_dir();
sprintf(buf, "%s%ssaves", pwd, G_DIR_SEPARATOR_S);
2005-07-25 06:35:53 +02:00
g_free(pwd);
2005-08-04 14:37:50 +02:00
}
gtk_file_chooser_set_current_folder(
GTK_FILE_CHOOSER(window.file_chooser), buf);
2005-06-14 22:04:37 +02:00
}
if(gtk_dialog_run(GTK_DIALOG(window.file_chooser)) == GTK_RESPONSE_OK)
{
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(window.file_chooser));
2005-08-20 21:39:36 +02:00
if(stat5 == STATUS_LOAD_GAME)
2005-09-29 15:41:16 +02:00
load_save_load_game(filename, FALSE);
2005-08-20 21:39:36 +02:00
else if(stat5 == STATUS_LOAD_GAME_TEAM_SELECTION)
2005-06-14 22:04:37 +02:00
misc_callback_startup_load(filename);
2005-08-20 21:39:36 +02:00
else if(stat5 == STATUS_SAVE_GAME)
2005-06-14 22:04:37 +02:00
load_save_save_game(filename);
2005-08-20 21:39:36 +02:00
else if(stat5 == STATUS_SELECT_MM_FILE_LOAD)
{
mm_file_exists = g_file_test(filename, G_FILE_TEST_EXISTS);
if((mm_file_exists && g_str_has_suffix(filename, ".bmm.zip")) ||
!mm_file_exists)
{
if(mm_file_exists)
2005-08-21 21:58:51 +02:00
user_mm_load_file(filename, NULL);
2005-08-20 21:39:36 +02:00
else
2005-08-21 21:58:51 +02:00
user_mm_set_filename(filename, NULL);
2005-08-20 21:39:36 +02:00
window_show_mmatches();
}
else
2005-08-28 10:56:36 +02:00
game_gui_show_warning(_("Not a valid Bygfoot Memorable Matches filename."));
2005-08-20 21:39:36 +02:00
}
else if(stat5 == STATUS_SELECT_MM_FILE_ADD)
{
2005-08-21 21:58:51 +02:00
user_mm_set_filename(filename, NULL);
2005-10-09 11:35:44 +02:00
mm_file_exists = g_file_test(current_user.mmatches_file,
2005-08-20 21:39:36 +02:00
G_FILE_TEST_EXISTS);
user_mm_add_last_match(mm_file_exists, TRUE);
}
2005-08-21 21:58:51 +02:00
else if(stat5 == STATUS_SELECT_MM_FILE_IMPORT)
{
user_mm_import_file(filename);
window_show_mmatches();
}
else if(stat5 == STATUS_SELECT_MM_FILE_EXPORT)
user_mm_export_file(filename);
2005-06-14 22:04:37 +02:00
2005-08-20 21:39:36 +02:00
if(stat5 == STATUS_LOAD_GAME ||
stat5 == STATUS_LOAD_GAME_TEAM_SELECTION)
2005-06-15 21:13:35 +02:00
{
cur_user = 0;
on_button_back_to_main_clicked(NULL, NULL);
setsav1;
}
2005-06-14 22:04:37 +02:00
g_free(filename);
2005-04-04 12:36:04 +02:00
}
2005-06-14 22:04:37 +02:00
window_destroy(&window.file_chooser, FALSE);
2005-04-04 12:36:04 +02:00
}
2005-08-20 21:39:36 +02:00
/** Show window with memorable matches list. */
void
window_show_mmatches(void)
{
if(window.mmatches == NULL)
window_create(WINDOW_MMATCHES);
treeview2_show_mmatches();
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.mmatches, "entry_mm_file")),
2005-10-09 11:35:44 +02:00
current_user.mmatches_file);
2005-08-20 21:39:36 +02:00
}
2005-03-23 20:03:26 +01:00
/** Show the options window. */
void
window_show_options(void)
{
window_create(WINDOW_OPTIONS);
option_gui_set_up_window();
}
2005-03-27 19:59:57 +02:00
/** Show the player list context menu, triggered by 'event'. */
void
window_show_menu_player(GdkEvent *event)
{
if(window.menu_player != NULL)
window_destroy(&window.menu_player, FALSE);
window.menu_player = create_menu_player();
gtk_menu_popup(GTK_MENU(window.menu_player), NULL, NULL, NULL, NULL,
((GdkEventButton*)event)->button, gdk_event_get_time(event));
}
2005-07-08 11:26:00 +02:00
/** Show the youth academy context menu, triggered by 'event'. */
void
window_show_menu_youth(GdkEvent *event)
{
if(window.menu_youth != NULL)
window_destroy(&window.menu_youth, FALSE);
window.menu_youth = create_menu_youth();
gtk_menu_popup(GTK_MENU(window.menu_youth), NULL, NULL, NULL, NULL,
((GdkEventButton*)event)->button, gdk_event_get_time(event));
}
2005-03-17 21:26:01 +01:00
/** Show the digits window with the labels and values set
according to the arguments. */
void
2005-05-30 17:54:20 +02:00
window_show_digits(const gchar *text_main, const gchar* text1, gint value1,
const gchar* text2, gint value2)
2005-03-17 21:26:01 +01:00
{
GtkLabel *label_main, *label_1, *label_2;
GtkSpinButton *spinbutton1, *spinbutton2;
window_create(WINDOW_DIGITS);
label_main = GTK_LABEL(lookup_widget(window.digits, "label_main"));
label_1 = GTK_LABEL(lookup_widget(window.digits, "label_1"));
label_2 = GTK_LABEL(lookup_widget(window.digits, "label_2"));
spinbutton1 = GTK_SPIN_BUTTON(lookup_widget(window.digits, "spinbutton1"));
spinbutton2 = GTK_SPIN_BUTTON(lookup_widget(window.digits, "spinbutton2"));
2005-07-08 11:26:00 +02:00
if(stat1 == STATUS_GET_LOAN ||
stat1 == STATUS_PAY_LOAN)
2005-03-17 21:26:01 +01:00
gtk_spin_button_set_range(spinbutton1, (gdouble)1, (gdouble)value1);
2005-07-08 11:26:00 +02:00
else if(stat1 == STATUS_SET_YA_PERCENTAGE)
gtk_spin_button_set_range(spinbutton2, (gdouble)0,
(gdouble)const_int("int_youth_academy_max_percentage"));
2005-03-17 21:26:01 +01:00
gtk_spin_button_set_value(spinbutton1, (gdouble)value1);
gtk_spin_button_set_value(spinbutton2, (gdouble)value2);
gtk_label_set_text(label_main, text_main);
if(text1 != NULL)
gtk_label_set_text(label_1, text1);
else
gtk_widget_hide(GTK_WIDGET(label_1)->parent);
if(text2 != NULL)
gtk_label_set_text(label_2, text2);
else
gtk_widget_hide(GTK_WIDGET(label_2)->parent);
}
/** Show the stadium window for the current user. */
void
window_show_stadium(void)
{
gchar buf[SMALL];
2005-03-18 23:03:23 +01:00
const Team *tm = current_user.tm;
2005-03-17 21:26:01 +01:00
GtkLabel *label_capacity,
2005-06-21 15:33:16 +02:00
*label_stadium_status, *label_average_attendance,
*label_name;
2005-04-07 18:44:33 +02:00
GtkProgressBar *progressbar_safety,
*progressbar_average_attendance;
gfloat average_attendance_perc = 0;
2005-03-17 21:26:01 +01:00
window_create(WINDOW_STADIUM);
label_capacity = GTK_LABEL(lookup_widget(window.stadium, "label_capacity"));
label_stadium_status = GTK_LABEL(lookup_widget(window.stadium, "label_stadium_status"));
2005-04-07 18:44:33 +02:00
label_average_attendance = GTK_LABEL(lookup_widget(window.stadium, "label_average_attendance"));
2005-06-21 15:33:16 +02:00
label_name = GTK_LABEL(lookup_widget(window.stadium, "label_stadium_name"));
2005-03-17 21:26:01 +01:00
progressbar_safety = GTK_PROGRESS_BAR(lookup_widget(window.stadium, "progressbar_safety"));
2005-04-07 18:44:33 +02:00
progressbar_average_attendance = GTK_PROGRESS_BAR(lookup_widget(window.stadium, "progressbar_average_attendance"));
2005-03-17 21:26:01 +01:00
gui_label_set_text_from_int(label_capacity, tm->stadium.capacity, FALSE);
2005-04-07 18:44:33 +02:00
gui_label_set_text_from_int(label_average_attendance, tm->stadium.average_attendance, FALSE);
2005-06-21 15:33:16 +02:00
if(tm->stadium.name != NULL)
2005-10-09 11:35:44 +02:00
gtk_label_set_text(label_name, tm->stadium.name);
2005-06-22 17:07:34 +02:00
else
gtk_widget_hide(GTK_WIDGET(label_name));
2005-03-17 21:26:01 +01:00
2005-04-07 18:44:33 +02:00
if(tm->stadium.games > 0)
average_attendance_perc =
(gfloat)(tm->stadium.average_attendance * tm->stadium.games) /
(gfloat)tm->stadium.possible_attendance;
2005-03-17 21:26:01 +01:00
gtk_progress_bar_set_fraction(progressbar_safety, tm->stadium.safety);
2005-04-07 18:44:33 +02:00
gtk_progress_bar_set_fraction(progressbar_average_attendance, average_attendance_perc);
2005-03-17 21:26:01 +01:00
sprintf(buf, "%d%%", (gint)rint(tm->stadium.safety * 100));
gtk_progress_bar_set_text(progressbar_safety, buf);
2005-04-07 18:44:33 +02:00
sprintf(buf, "%d%%", (gint)rint(average_attendance_perc * 100));
gtk_progress_bar_set_text(progressbar_average_attendance, buf);
2005-03-18 23:03:23 +01:00
if(current_user.counters[COUNT_USER_STADIUM_CAPACITY] +
current_user.counters[COUNT_USER_STADIUM_SAFETY] != 0)
2005-03-17 21:26:01 +01:00
{
sprintf(buf, _("Improvement in progress.\n%d seats and %d%% safety still to be done.\nExpected finish: %d weeks."),
2005-03-18 23:03:23 +01:00
current_user.counters[COUNT_USER_STADIUM_CAPACITY],
current_user.counters[COUNT_USER_STADIUM_SAFETY],
2005-03-17 21:26:01 +01:00
MAX(finance_get_stadium_improvement_duration(
2005-03-18 23:03:23 +01:00
(gfloat)current_user.counters[COUNT_USER_STADIUM_CAPACITY], TRUE),
2005-03-17 21:26:01 +01:00
finance_get_stadium_improvement_duration(
2005-03-18 23:03:23 +01:00
(gfloat)current_user.counters[COUNT_USER_STADIUM_SAFETY] / 100, FALSE)));
2005-03-17 21:26:01 +01:00
gtk_label_set_text(label_stadium_status, buf);
}
else
gtk_label_set_text(label_stadium_status, _("No improvements currently in progress."));
}
2005-03-27 19:59:57 +02:00
gboolean
window_show(gpointer window)
{
gtk_widget_show((GtkWidget*)window);
return FALSE;
}
2005-03-20 21:49:55 +01:00
/** Show the window where the user can select between yes and no.
2005-05-30 17:54:20 +02:00
@param text The text shown in the window. */
2005-03-20 21:49:55 +01:00
void
2005-05-30 17:54:20 +02:00
window_show_yesno(const gchar *text)
2005-03-20 21:49:55 +01:00
{
window_create(WINDOW_YESNO);
gtk_label_set_text(GTK_LABEL(lookup_widget(window.yesno, "label_yesno")), text);
}
2005-05-30 17:54:20 +02:00
/** Show the transfer dialog (yes/no/later).
@param text The text to put into the label. */
void
window_show_transfer_dialog(const gchar *text)
{
window_create(WINDOW_TRANSFER_DIALOG);
gtk_label_set_text(GTK_LABEL(lookup_widget(window.transfer_dialog, "label_transfer_dialog")), text);
}
2005-09-28 18:41:32 +02:00
/** Set up the spinbuttons and boost/style images in the
live window. */
2005-05-28 16:34:14 +02:00
void
2005-09-28 18:41:32 +02:00
window_live_set_up(void)
2005-05-28 16:34:14 +02:00
{
2005-08-29 10:31:00 +02:00
GtkSpinButton *sb_speed =
GTK_SPIN_BUTTON(lookup_widget(window.live, "spinbutton_speed"));
gfloat user_option = (gfloat)option_int("int_opt_user_live_game_speed",
&usr(stat2).options);
gtk_spin_button_set_range(
sb_speed, 0, -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(sb_speed, user_option);
2005-08-29 10:31:00 +02:00
2005-05-28 16:34:14 +02:00
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(lookup_widget(window.live, "spinbutton_verbosity")),
(gfloat)option_int("int_opt_user_live_game_verbosity", &usr(stat2).options));
2005-09-28 18:41:32 +02:00
game_gui_write_meters(GTK_IMAGE(lookup_widget(window.live, "image_lg_style")),
GTK_IMAGE(lookup_widget(window.live, "image_lg_boost")),
usr(stat2).tm);
2005-05-28 16:34:14 +02:00
}
/** Save main window size and position into a file.*/
void
window_main_save_geometry(void)
{
gchar filename[SMALL];
const gchar *home = g_get_home_dir();
gchar *pwd = g_get_current_dir();
FILE *fil = NULL;
gint width, height, pos_x, pos_y, paned_pos;
if(os_is_unix)
sprintf(filename, "%s%s%s%swindow_settings",
home, G_DIR_SEPARATOR_S, HOMEDIRNAME, G_DIR_SEPARATOR_S);
else
sprintf(filename, "%s%swindow_settings",
pwd, G_DIR_SEPARATOR_S);
g_free(pwd);
if(window.main != NULL && file_my_fopen(filename, "w", &fil, FALSE))
{
gtk_window_get_size(GTK_WINDOW(window.main), &width, &height);
gtk_window_get_position(GTK_WINDOW(window.main), &pos_x, &pos_y);
paned_pos = gtk_paned_get_position(
GTK_PANED(lookup_widget(window.main, "hpaned2")));
fprintf(fil, "int_window_settings_width\t%d\n", width);
fprintf(fil, "int_window_settings_height\t%d\n", height);
fprintf(fil, "int_window_settings_pos_x\t%d\n", pos_x);
fprintf(fil, "int_window_settings_pos_y\t%d\n", pos_y);
fprintf(fil, "int_window_settings_paned_pos\t%d\n", paned_pos);
fclose(fil);
}
}
/** Set the main window geometry according to the file
settings. */
void
window_main_load_geometry(void)
{
gchar filename[SMALL];
const gchar *home = g_get_home_dir();
gchar *pwd = g_get_current_dir();
OptionList optionlist;
if(os_is_unix)
sprintf(filename, "%s%s%s%swindow_settings",
home, G_DIR_SEPARATOR_S, HOMEDIRNAME, G_DIR_SEPARATOR_S);
else
sprintf(filename, "%s%swindow_settings",
pwd, G_DIR_SEPARATOR_S);
g_free(pwd);
if(g_file_test(filename, G_FILE_TEST_EXISTS))
{
optionlist.list = NULL;
optionlist.datalist = NULL;
file_load_opt_file(filename, &optionlist);
gtk_window_resize(GTK_WINDOW(window.main),
option_int("int_window_settings_width", &optionlist),
option_int("int_window_settings_height", &optionlist));
gtk_window_move(GTK_WINDOW(window.main),
option_int("int_window_settings_pos_x", &optionlist),
option_int("int_window_settings_pos_y", &optionlist));
gtk_paned_set_position(GTK_PANED(lookup_widget(window.main, "hpaned2")),
option_int("int_window_settings_paned_pos", &optionlist));
free_option_list(&optionlist, FALSE);
}
}
/** Create and show a window. Which one depends on the argument.
@param window_type An integer telling us which window to
create.
2005-03-08 09:25:46 +01:00
@param count_popups Whether this window adds to the popup
counter that determines when the main window gets (in)sensitive.
@return The pointer to the new window.
@see #Windows */
GtkWidget*
window_create(gint window_type)
{
2005-03-08 09:25:46 +01:00
gint old_popups_active = popups_active;
2005-03-10 21:59:39 +01:00
gchar buf[SMALL];
GtkWidget *wind = NULL;
2005-01-09 21:21:22 +01:00
2005-03-10 21:59:39 +01:00
sprintf(buf, "Bygfoot Football Manager %s", VERS);
switch(window_type)
{
default:
2005-03-08 09:25:46 +01:00
g_warning("window_create: unknown window type %d\n", window_type);
2005-06-17 14:57:05 +02:00
main_exit_program(EXIT_INT_NOT_FOUND, NULL);
2005-03-08 09:25:46 +01:00
break;
case WINDOW_MAIN:
if(window.main == NULL)
2005-01-09 21:21:22 +01:00
{
window.main = create_main_window();
wind = window.main;
window_main_load_geometry();
2005-07-08 11:26:00 +02:00
game_gui_print_message(_("Welcome to Bygfoot %s"), VERS);
2005-06-15 10:58:26 +02:00
sprintf(buf, "Bygfoot Football Manager %s", VERS);
2005-01-09 21:21:22 +01:00
}
else
wind = window.main;
2005-03-24 19:04:31 +01:00
if(opt_int("int_opt_maximize_main_window"))
gtk_window_maximize(GTK_WINDOW(wind));
break;
case WINDOW_STARTUP:
if(window.startup != NULL)
g_warning("window_create: called on already existing window\n");
else
2005-03-08 09:25:46 +01:00
{
popups_active++;
window.startup = create_window_startup();
2005-03-08 09:25:46 +01:00
}
wind = window.startup;
break;
2005-01-09 21:21:22 +01:00
case WINDOW_LIVE:
if(window.live != NULL)
g_warning("window_create: called on already existing window\n");
else
2005-03-08 09:25:46 +01:00
{
popups_active++;
window.live = create_window_live();
2005-03-08 09:25:46 +01:00
}
2005-06-05 12:39:29 +02:00
strcpy(buf, league_cup_get_name_string(((LiveGame*)statp)->fix->clid));
wind = window.live;
2005-09-28 18:41:32 +02:00
window_live_set_up();
break;
2005-03-08 09:25:46 +01:00
case WINDOW_WARNING:
if(window.warning != NULL)
g_warning("window_create: called on already existing window\n");
else
window.warning = create_window_warning();
wind = window.warning;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("Erm..."));
2005-03-10 21:59:39 +01:00
break;
case WINDOW_PROGRESS:
if(window.progress != NULL)
g_warning("window_create: called on already existing window\n");
else
window.progress = create_window_progress();
wind = window.progress;
strcpy(buf, "");
2005-03-08 09:25:46 +01:00
break;
2005-03-17 21:26:01 +01:00
case WINDOW_DIGITS:
if(window.digits != NULL)
g_warning("window_create: called on already existing window\n");
else
{
popups_active++;
window.digits = create_window_digits();
}
wind = window.digits;
strcpy(buf, _("Numbers..."));
break;
case WINDOW_STADIUM:
if(window.stadium != NULL)
g_warning("window_create: called on already existing window\n");
else
{
popups_active++;
window.stadium = create_window_stadium();
}
wind = window.stadium;
strcpy(buf, _("Your stadium"));
break;
2005-03-18 23:03:23 +01:00
case WINDOW_JOB_OFFER:
if(window.job_offer != NULL)
g_warning("window_create: called on already existing window\n");
else
{
popups_active++;
window.job_offer = create_window_job_offer();
}
wind = window.job_offer;
strcpy(buf, _("Job offer"));
break;
2005-03-20 21:49:55 +01:00
case WINDOW_YESNO:
if(window.yesno != NULL)
g_warning("window_create: called on already existing window\n");
else
{
popups_active++;
window.yesno = create_window_yesno();
}
wind = window.yesno;
strcpy(buf, "???");
break;
2005-03-23 20:03:26 +01:00
case WINDOW_OPTIONS:
if(window.options != NULL)
g_warning("window_create: called on already existing window\n");
else
{
popups_active++;
window.options = create_window_options();
}
wind = window.options;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("Options"));
2005-03-23 20:03:26 +01:00
break;
2005-03-24 14:00:01 +01:00
case WINDOW_FONT_SEL:
if(window.font_sel != NULL)
g_warning("window_create: called on already existing window\n");
else
window.font_sel = create_window_font_sel();
wind = window.font_sel;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("Select font"));
2005-03-24 14:00:01 +01:00
break;
2005-06-14 22:04:37 +02:00
case WINDOW_FILE_CHOOSER:
if(window.file_chooser != NULL)
2005-04-04 12:36:04 +02:00
g_warning("window_create: called on already existing window\n");
else
2005-06-14 22:04:37 +02:00
window.file_chooser = create_window_file_chooser();
wind = window.file_chooser;
2005-04-04 12:36:04 +02:00
break;
2005-03-25 11:54:54 +01:00
case WINDOW_CONTRACT:
if(window.contract != NULL)
g_warning("window_create: called on already existing window\n");
else
window.contract = create_window_contract();
wind = window.contract;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("Contract offer"));
2005-03-25 11:54:54 +01:00
break;
2005-03-27 19:59:57 +02:00
case WINDOW_USER_MANAGEMENT:
if(window.user_management != NULL)
g_warning("window_create: called on already existing window\n");
else
window.user_management = create_window_user_management();
wind = window.user_management;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("User management"));
2005-03-27 19:59:57 +02:00
break;
2005-05-13 20:20:47 +02:00
case WINDOW_DEBUG:
if(window.wdebug != NULL)
g_warning("window_create: called on already existing window\n");
else
window.wdebug = create_window_debug();
wind = window.wdebug;
strcpy(buf, "Bygfoot debug window");
break;
2005-05-22 15:33:24 +02:00
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;
2005-05-30 17:54:20 +02:00
case WINDOW_TRANSFER_DIALOG:
if(window.transfer_dialog != NULL)
g_warning("window_create: called on already existing window\n");
else
window.transfer_dialog = create_window_transfer_dialog();
wind = window.transfer_dialog;
2005-06-18 16:45:29 +02:00
strcpy(buf, _("Transfer offer"));
2005-05-30 17:54:20 +02:00
break;
2005-06-20 14:46:57 +02:00
case WINDOW_SPONSORS:
if(window.sponsors != NULL)
g_warning("window_create: called on already existing window\n");
else
window.sponsors = create_window_sponsors();
wind = window.sponsors;
strcpy(buf, _("Sponsorship offers"));
break;
2005-08-20 21:39:36 +02:00
case WINDOW_MMATCHES:
if(window.mmatches != NULL)
g_warning("window_create: called on already existing window\n");
else
{
window.mmatches = create_window_mmatches();
popups_active++;
}
wind = window.mmatches;
strcpy(buf, _("Memorable matches"));
break;
}
2005-06-14 22:04:37 +02:00
if(window_type != WINDOW_FILE_CHOOSER)
gtk_window_set_title(GTK_WINDOW(wind), buf);
2005-04-13 15:01:59 +02:00
if(window_type != WINDOW_PROGRESS)
g_timeout_add(20, (GSourceFunc)window_show, (gpointer)wind);
else
gtk_widget_show(wind);
2005-03-11 18:18:51 +01:00
if(popups_active != old_popups_active &&
window.main != NULL)
gtk_widget_set_sensitive(window.main, FALSE);
2005-01-09 21:21:22 +01:00
return wind;
}
2005-01-09 21:21:22 +01:00
/** Destroy a window widget and set the popups and
main window sensitivity correctly.
2005-03-08 09:25:46 +01:00
@param window The window we destroy.
@param count_popups Whether this window adds to the popup
counter that determines when the main window gets (in)sensitive. */
2005-01-09 21:21:22 +01:00
void
2005-03-08 09:25:46 +01:00
window_destroy(GtkWidget **wind, gboolean count_popups)
2005-01-09 21:21:22 +01:00
{
if(*wind == NULL)
2005-01-09 21:21:22 +01:00
return;
2005-03-08 09:25:46 +01:00
if(*wind != window.main && count_popups)
2005-01-09 21:21:22 +01:00
{
popups_active--;
if(popups_active == 0 && window.main != NULL)
gtk_widget_set_sensitive(window.main, TRUE);
2005-01-09 21:21:22 +01:00
}
gtk_widget_destroy(*wind);
2005-01-09 21:21:22 +01:00
*wind = NULL;
2005-01-09 21:21:22 +01:00
}