[1819] | 1 | #include "orxonox_gui_exec.h" |
---|
| 2 | GtkWidget *exec_flags_label; |
---|
| 3 | struct settings *exec_orxonox_settings; |
---|
[1822] | 4 | |
---|
[1829] | 5 | gint orxonox_gui_quit ( GtkWidget *widget, GdkEvent *event, gpointer data) |
---|
| 6 | { |
---|
| 7 | if (exec_orxonox_settings->exec_save_settings) |
---|
| 8 | orxonox_gui_file_save("~/.orxonox.conf", exec_orxonox_settings); |
---|
| 9 | gtk_main_quit(); |
---|
| 10 | return FALSE; |
---|
| 11 | } |
---|
| 12 | |
---|
| 13 | |
---|
[1822] | 14 | void exec_check_button_change(GtkWidget *widget, int* data) |
---|
| 15 | { |
---|
| 16 | *data = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); |
---|
| 17 | orxonox_flags_update (); |
---|
| 18 | if (verbose >=1) |
---|
| 19 | printf ("%s changed to %i.\n", gtk_button_get_label(GTK_BUTTON(widget)), *data); |
---|
| 20 | return; |
---|
| 21 | } |
---|
| 22 | |
---|
[1823] | 23 | void exec_verbose_mode_change(GtkWidget *widget, gpointer data) |
---|
| 24 | { |
---|
| 25 | verbose = GPOINTER_TO_INT(data); |
---|
| 26 | orxonox_flags_update (); |
---|
| 27 | if (verbose >= 1) |
---|
| 28 | printf ("Verbose-mode changed to %i.\n", verbose); |
---|
| 29 | return; |
---|
| 30 | } |
---|
[1822] | 31 | |
---|
| 32 | |
---|
[1818] | 33 | GtkWidget *orxonox_gui_exec_frame (struct settings *orxonox_settings) |
---|
[1809] | 34 | { |
---|
| 35 | GtkWidget *frame; |
---|
[1818] | 36 | GtkWidget *save_settings_button; |
---|
| 37 | GtkWidget *show_menu_button; |
---|
[1816] | 38 | GtkWidget *start_button; |
---|
| 39 | GtkWidget *quit_button; |
---|
[1819] | 40 | GtkWidget *flags_frame; |
---|
[1823] | 41 | GtkWidget *setting_box; |
---|
| 42 | GtkWidget *verbose_button; |
---|
[1809] | 43 | |
---|
[1819] | 44 | |
---|
[1812] | 45 | frame = gtk_frame_new ( "Execute-Tags:"); |
---|
[1819] | 46 | gtk_container_set_border_width (GTK_CONTAINER (frame), 5); |
---|
[1809] | 47 | { |
---|
[1812] | 48 | GtkWidget *orxonox_gui_exec_vbox; |
---|
[1819] | 49 | orxonox_gui_exec_vbox = gtk_vbox_new (FALSE, 5); |
---|
[1809] | 50 | { |
---|
| 51 | |
---|
[1816] | 52 | start_button = gtk_button_new_with_label ("Start"); |
---|
| 53 | gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), start_button, TRUE, TRUE, 5); |
---|
[1823] | 54 | setting_box = gtk_hbox_new(FALSE, 5); |
---|
| 55 | { |
---|
| 56 | save_settings_button = gtk_check_button_new_with_label ("Save Settings"); |
---|
| 57 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_settings_button), orxonox_settings->exec_save_settings); |
---|
| 58 | g_signal_connect(GTK_TOGGLE_BUTTON(save_settings_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_save_settings)); |
---|
| 59 | gtk_box_pack_start(GTK_BOX (setting_box), save_settings_button, TRUE, TRUE, 0); |
---|
| 60 | |
---|
| 61 | { |
---|
| 62 | GtkWidget *opt; |
---|
| 63 | GtkWidget *menu; |
---|
| 64 | GtkWidget *item; |
---|
[1816] | 65 | |
---|
[1823] | 66 | opt = gtk_option_menu_new (); |
---|
| 67 | menu = gtk_menu_new (); |
---|
[1816] | 68 | |
---|
[1823] | 69 | item = gtk_menu_item_new_with_label ("no verbose"); |
---|
| 70 | g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(0)); |
---|
| 71 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); |
---|
| 72 | |
---|
| 73 | item = gtk_menu_item_new_with_label ("verbose"); |
---|
| 74 | g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(1)); |
---|
| 75 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); |
---|
| 76 | |
---|
| 77 | item = gtk_menu_item_new_with_label ("debug"); |
---|
| 78 | g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(2)); |
---|
| 79 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), item); |
---|
| 80 | |
---|
| 81 | gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu); |
---|
| 82 | gtk_option_menu_set_history (GTK_OPTION_MENU (opt), verbose); |
---|
| 83 | gtk_box_pack_start (GTK_BOX (setting_box), opt, TRUE, TRUE, 0); |
---|
| 84 | |
---|
| 85 | } |
---|
| 86 | } |
---|
| 87 | gtk_box_pack_start(GTK_BOX(orxonox_gui_exec_vbox), setting_box, TRUE, TRUE, 0); |
---|
[1818] | 88 | show_menu_button = gtk_check_button_new_with_label ("Always show this Menu"); |
---|
| 89 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show_menu_button), orxonox_settings->exec_show_menu); |
---|
[1822] | 90 | g_signal_connect(GTK_TOGGLE_BUTTON(show_menu_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_show_menu)); |
---|
[1818] | 91 | gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), show_menu_button, TRUE, TRUE, 0); |
---|
[1816] | 92 | |
---|
| 93 | quit_button = gtk_button_new_with_label ("quit"); |
---|
[1829] | 94 | g_signal_connect(GTK_BUTTON(quit_button), "clicked", G_CALLBACK(orxonox_gui_quit), NULL); |
---|
[1816] | 95 | gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), quit_button, FALSE, FALSE, 5); |
---|
[1819] | 96 | |
---|
| 97 | |
---|
| 98 | flags_frame = gtk_frame_new("Orxonox's starting Flags"); |
---|
| 99 | { |
---|
| 100 | exec_flags_label = gtk_label_new("test"); |
---|
| 101 | exec_orxonox_settings = orxonox_settings; |
---|
| 102 | orxonox_flags_update(); |
---|
| 103 | gtk_container_add (GTK_CONTAINER(flags_frame), exec_flags_label); |
---|
[1820] | 104 | |
---|
[1819] | 105 | } |
---|
| 106 | gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), flags_frame, FALSE, FALSE, 5); |
---|
[1809] | 107 | } |
---|
[1812] | 108 | gtk_container_add(GTK_CONTAINER(frame), orxonox_gui_exec_vbox); |
---|
[1809] | 109 | } |
---|
| 110 | |
---|
| 111 | return frame; |
---|
| 112 | |
---|
| 113 | } |
---|
| 114 | |
---|
[1819] | 115 | |
---|
| 116 | char * orxonox_flags_text (struct settings *orxonox_settings, char *exec_flags_text) |
---|
| 117 | { |
---|
[1821] | 118 | char temp [50]; |
---|
[1819] | 119 | bzero(exec_flags_text, 1); |
---|
| 120 | strcat(exec_flags_text, "orxonox "); |
---|
| 121 | |
---|
| 122 | if(!orxonox_settings->video_fullscreen) |
---|
| 123 | strcat(exec_flags_text, "--windowed "); |
---|
| 124 | if(orxonox_settings->video_wireframe) |
---|
| 125 | strcat(exec_flags_text, "--wireframe "); |
---|
| 126 | |
---|
| 127 | if(!orxonox_settings->audio_enable_sound) |
---|
| 128 | strcat(exec_flags_text, "--disable_audio "); |
---|
[1821] | 129 | if(orxonox_settings->audio_music_volume != 80) |
---|
[1819] | 130 | { |
---|
| 131 | strcat(exec_flags_text, "--music_volume="); |
---|
[1821] | 132 | sprintf(temp, "%i ", (int) orxonox_settings->audio_music_volume); |
---|
| 133 | strcat(exec_flags_text, temp); |
---|
[1819] | 134 | } |
---|
[1821] | 135 | if(orxonox_settings->audio_effects_volume != 80) |
---|
| 136 | { |
---|
| 137 | strcat(exec_flags_text, "--effects_volume= "); |
---|
| 138 | sprintf(temp, "%i ", (int) orxonox_settings->audio_effects_volume); |
---|
| 139 | strcat(exec_flags_text, temp); |
---|
| 140 | } |
---|
[1819] | 141 | return (exec_flags_text); |
---|
| 142 | } |
---|
| 143 | |
---|
| 144 | void orxonox_flags_update (void) |
---|
| 145 | { |
---|
| 146 | char exec_flags_text[1024]; |
---|
| 147 | gtk_label_set_text (GTK_LABEL(exec_flags_label), orxonox_flags_text (exec_orxonox_settings, exec_flags_text)); |
---|
| 148 | return; |
---|
| 149 | } |
---|