#include "orxonox_gui_exec.h" GtkWidget *exec_flags_label; struct settings *exec_orxonox_settings; gint orxonox_gui_quit ( GtkWidget *widget, GdkEvent *event, gpointer data) { if (exec_orxonox_settings->exec_save_settings) orxonox_gui_file_save("~/.orxonox.conf", exec_orxonox_settings); gtk_main_quit(); return FALSE; } void exec_check_button_change(GtkWidget *widget, int* data) { *data = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); orxonox_flags_update (); if (verbose >=1) printf ("%s changed to %i.\n", gtk_button_get_label(GTK_BUTTON(widget)), *data); return; } void exec_verbose_mode_change(GtkWidget *widget, gpointer data) { verbose = GPOINTER_TO_INT(data); orxonox_flags_update (); if (verbose >= 1) printf ("Verbose-mode changed to %i.\n", verbose); return; } GtkWidget *orxonox_gui_exec_frame (struct settings *orxonox_settings) { GtkWidget *frame; GtkWidget *save_settings_button; GtkWidget *show_menu_button; GtkWidget *start_button; GtkWidget *quit_button; GtkWidget *flags_frame; GtkWidget *setting_box; GtkWidget *verbose_button; frame = gtk_frame_new ( "Execute-Tags:"); gtk_container_set_border_width (GTK_CONTAINER (frame), 5); { GtkWidget *orxonox_gui_exec_vbox; orxonox_gui_exec_vbox = gtk_vbox_new (FALSE, 5); { start_button = gtk_button_new_with_label ("Start"); gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), start_button, TRUE, TRUE, 5); setting_box = gtk_hbox_new(FALSE, 5); { save_settings_button = gtk_check_button_new_with_label ("Save Settings"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_settings_button), orxonox_settings->exec_save_settings); g_signal_connect(GTK_TOGGLE_BUTTON(save_settings_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_save_settings)); gtk_box_pack_start(GTK_BOX (setting_box), save_settings_button, TRUE, TRUE, 0); { GtkWidget *opt; GtkWidget *menu; GtkWidget *item; opt = gtk_option_menu_new (); menu = gtk_menu_new (); item = gtk_menu_item_new_with_label ("no verbose"); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(0)); gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("verbose"); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(1)); gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("debug"); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(2)); gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu); gtk_option_menu_set_history (GTK_OPTION_MENU (opt), verbose); gtk_box_pack_start (GTK_BOX (setting_box), opt, TRUE, TRUE, 0); } } gtk_box_pack_start(GTK_BOX(orxonox_gui_exec_vbox), setting_box, TRUE, TRUE, 0); show_menu_button = gtk_check_button_new_with_label ("Always show this Menu"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show_menu_button), orxonox_settings->exec_show_menu); g_signal_connect(GTK_TOGGLE_BUTTON(show_menu_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_show_menu)); gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), show_menu_button, TRUE, TRUE, 0); quit_button = gtk_button_new_with_label ("quit"); g_signal_connect(GTK_BUTTON(quit_button), "clicked", G_CALLBACK(orxonox_gui_quit), NULL); gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), quit_button, FALSE, FALSE, 5); flags_frame = gtk_frame_new("Orxonox's starting Flags"); { exec_flags_label = gtk_label_new("test"); exec_orxonox_settings = orxonox_settings; orxonox_flags_update(); gtk_container_add (GTK_CONTAINER(flags_frame), exec_flags_label); } gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), flags_frame, FALSE, FALSE, 5); } gtk_container_add(GTK_CONTAINER(frame), orxonox_gui_exec_vbox); } return frame; } char * orxonox_flags_text (struct settings *orxonox_settings, char *exec_flags_text) { char temp [50]; bzero(exec_flags_text, 1); strcat(exec_flags_text, "orxonox "); if(!orxonox_settings->video_fullscreen) strcat(exec_flags_text, "--windowed "); if(orxonox_settings->video_wireframe) strcat(exec_flags_text, "--wireframe "); if(!orxonox_settings->audio_enable_sound) strcat(exec_flags_text, "--disable_audio "); if(orxonox_settings->audio_music_volume != 80) { strcat(exec_flags_text, "--music_volume="); sprintf(temp, "%i ", (int) orxonox_settings->audio_music_volume); strcat(exec_flags_text, temp); } if(orxonox_settings->audio_effects_volume != 80) { strcat(exec_flags_text, "--effects_volume= "); sprintf(temp, "%i ", (int) orxonox_settings->audio_effects_volume); strcat(exec_flags_text, temp); } return (exec_flags_text); } void orxonox_flags_update (void) { char exec_flags_text[1024]; gtk_label_set_text (GTK_LABEL(exec_flags_label), orxonox_flags_text (exec_orxonox_settings, exec_flags_text)); return; }