#include #include "mainwindowdesign.h" #include "configure.h" #include "apptogui.h" #include "guiglobal.h" void apptogui_initialize_main_window(int *argc, char *argv[], const char *name); void apptogui_show_main_window(int total, int left, int eliminated); void apptogui_run_main_window(void); void apptogui_show_correct_solution(char *); void apptogui_add_choices(FD_mainwindow *mainwindow); void apptogui_hide_shortcut_buttons(FD_mainwindow *mainwindow); void apptogui_current_state(int, int, int); void apptogui_get_entered_try(long, char *); void apptogui_flat_try_button(long); void apptogui_show_answer(char *, long); void apptogui_reset_all(int total, int left, int eliminated); void apptogui_change_choice_item(int position, char ch); void apptogui_initialize_main_window(int *argc, char *argv[], const char *name) { fl_initialize(argc, argv, name, 0, 0); } void apptogui_show_main_window(int total, int left, int eliminated) { int i; mainwindow = create_form_mainwindow(); apptogui_add_choices(mainwindow); apptogui_hide_shortcut_buttons(mainwindow); apptogui_current_state(total, left, eliminated); for (i = 0; i < HEIGHT; i++) { fl_deactivate_object(mainwindow->try_button[i]); fl_set_object_boxtype(mainwindow->try_button[i], FL_UP_BOX); fl_redraw_object(mainwindow->try_button[i]); } fl_activate_object(mainwindow->try_button[0]); fl_show_form(mainwindow->mainwindow, FL_PLACE_MOUSE, FL_TRANSIENT, "Mastermind"); } void apptogui_run_main_window() { fl_do_forms(); } void apptogui_show_correct_solution(char *solution) { int i; char label[2]; label[1] = 0; for (i = 0; i < WIDTH; i++) { label[0] = solution[i]; fl_set_object_label(mainwindow->correct_solution[i], label); fl_redraw_object(mainwindow->correct_solution[i]); } fl_deactivate_object(mainwindow->get_solution_button); for (i = 0; i < HEIGHT; i++) apptogui_flat_try_button(i); } void apptogui_add_choices(FD_mainwindow *mainwindow) { int i; int j; char text[2]; text[1] = 0; for (i = 0 ; i < WIDTH * HEIGHT ; i++) { fl_set_choice_fontsize(mainwindow->game_area_choice[i], FL_HUGE_SIZE); fl_set_choice_fontstyle(mainwindow->game_area_choice[i], FL_BOLD_STYLE); for (j = 0 ; j < COLORS ; j++) { text[0] = (char) ('A' + j); fl_addto_choice(mainwindow->game_area_choice[i], text); } } } void apptogui_hide_shortcut_buttons(FD_mainwindow *mainwindow) { int i; for (i = 0; i < 26; i++) { mainwindow->shortcut[i]->type = FL_HIDDEN_BUTTON; } } void apptogui_current_state(int total, int left, int eliminated) { char total_str[100]; char left_str[100]; char eliminated_str[100]; sprintf(total_str, "%u", total); fl_set_object_label(mainwindow->total_combinations, total_str); fl_redraw_object(mainwindow->total_combinations); sprintf(left_str, "%u (ca. %u%%)", left, left * 100 / total); fl_set_object_label(mainwindow->left_combinations, left_str); fl_redraw_object(mainwindow->left_combinations); sprintf(eliminated_str, "%u (ca. %u%%)", eliminated, 100 - (left * 100 / total)); fl_set_object_label(mainwindow->eliminated_combinations, eliminated_str); fl_redraw_object(mainwindow->eliminated_combinations); } void apptogui_get_entered_try(long number, char *entered) { char choice[10]; int i; /* Get the contents from the choices of this try */ for (i = 0; i < WIDTH; i++) { strncpy(choice, fl_get_choice_text(mainwindow->game_area_choice[number * WIDTH + i]),2); if (NULL == choice) { printf("In a choice nothing was selected.\n"); } entered[i] = choice[0]; fl_deactivate_object(mainwindow->game_area_choice[number *WIDTH + i]); } } void apptogui_flat_try_button(long number) { fl_set_object_boxtype(mainwindow->try_button[number], FL_FRAME_BOX); fl_deactivate_object(mainwindow->try_button[number]); if (HEIGHT > (number + 1)) fl_activate_object(mainwindow->try_button[number + 1]); fl_redraw_object(mainwindow->try_button[number]); } void apptogui_show_answer(char *to_show, long line) { int i; for (i = 0; i < WIDTH; i++) { switch (to_show[i]) { case '*': fl_set_object_color(mainwindow->answer[line * WIDTH + i], FL_BLACK, FL_BLACK); fl_redraw_object(mainwindow->answer[line * WIDTH + i]); break; case 'O': fl_set_object_color(mainwindow->answer[line * WIDTH + i], FL_WHITE, FL_WHITE); fl_redraw_object(mainwindow->answer[line * WIDTH + i]); break; default: fl_set_object_boxtype(mainwindow->answer[line * WIDTH + i], FL_FLAT_BOX); fl_set_object_color(mainwindow->answer[line * WIDTH + i], FL_COL1, FL_COL1); fl_redraw_object(mainwindow->answer[line * WIDTH + i]); } } } void apptogui_reset_all(int total, int left, int eliminated) { int i; char choice[2]; char label[2]; for (i = 0; i < WIDTH * HEIGHT; i++) { fl_activate_object(mainwindow->game_area_choice[i]); strncpy(choice, fl_get_choice_text(mainwindow->game_area_choice[i]), 2); if ('A' != choice[0]) { fl_set_choice_text(mainwindow->game_area_choice[i], "A"); fl_redraw_object(mainwindow->game_area_choice[i]); } fl_set_object_boxtype(mainwindow->answer[i], FL_BORDER_BOX); fl_set_object_color(mainwindow->answer[i], FL_COL1, FL_COL1); fl_redraw_object(mainwindow->answer[i]); } label[1] = 0; label[0] = '?'; for (i = 0; i < HEIGHT; i++) { fl_deactivate_object(mainwindow->try_button[i]); fl_set_object_boxtype(mainwindow->try_button[i], FL_UP_BOX); fl_redraw_object(mainwindow->try_button[i]); } fl_activate_object(mainwindow->try_button[0]); for (i = 0; i < WIDTH; i++) { fl_set_object_label(mainwindow->correct_solution[i], label); } fl_activate_object(mainwindow->get_solution_button); apptogui_current_state(total, left, eliminated); } void apptogui_change_choice_item(int position, char ch) { fl_set_choice(mainwindow->game_area_choice[position], ch+1); }