📄 callbacks.cc
字号:
case BTRUE: robotBody = BFALSE; gui_print("Robot body off"); break; }#ifdef DEBUG_GUI printf("robotBody %d\n",robotBody);#endif}voidon_trace_tgl_toggled (GtkToggleButton *togglebutton, gpointer user_data){ if(notTrajactoryRobot){ notTrajactoryRobot=0; gui_print("Trajactory trace turned on"); } else{ gui_print("Trajactory turned turned off"); notTrajactoryRobot=1; }}voidon_refresh_btn_clicked (GtkButton *button, gpointer user_data){ sim_redrawWorld();}voidon_draw_tgl_toggled (GtkToggleButton *togglebutton, gpointer user_data){ switch(gfxUpdate){ case 1: gfxUpdate=0; gui_print("GUI update turned off"); break; case 0: gfxUpdate=1; gui_print("GUI update turned on");break; }}voidon_generation_next_btn_clicked (GtkToggleButton *togglebutton, gpointer user_data){ on_paus_btn_clicked(NULL,NULL); sim_loadNextIndivid(); on_run_btn_clicked(NULL,NULL); }GtkWidget* create_main_window(){ /* main window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (window), "window", window); gtk_window_set_title (GTK_WINDOW (window), _("YAKS - Yet Another Khepera Simulator")); { /* vbox window */ vbox_window = gtk_vbox_new (FALSE, 0); gtk_widget_ref (vbox_window); gtk_object_set_data_full (GTK_OBJECT (window), "vbox_window", vbox_window, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox_window); gtk_container_add (GTK_CONTAINER (window), vbox_window); { /* vbox -> menu_bar */ menubar_window = gtk_menu_bar_new (); gtk_widget_ref (menubar_window); gtk_object_set_data_full (GTK_OBJECT (window), "menubar_window", menubar_window, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (menubar_window); gtk_box_pack_start (GTK_BOX (vbox_window), menubar_window, FALSE, FALSE, 0); file_menubar = gtk_menu_item_new_with_label (_("File")); gtk_widget_ref (file_menubar); gtk_object_set_data_full (GTK_OBJECT (window), "file_menubar", file_menubar, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (file_menubar); gtk_container_add (GTK_CONTAINER (menubar_window), file_menubar); file_menu = gtk_menu_new (); gtk_widget_ref (file_menu); gtk_object_set_data_full (GTK_OBJECT (window), "file_menu", file_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_menu_item_set_submenu (GTK_MENU_ITEM (file_menubar), file_menu); file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu)); quit_menu_item = gtk_menu_item_new_with_label (_("Quit")); gtk_widget_ref (quit_menu_item); gtk_object_set_data_full (GTK_OBJECT (window), "quit_menu_item", quit_menu_item, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (quit_menu_item); gtk_container_add (GTK_CONTAINER (file_menu), quit_menu_item); } { /* vbox -> table */ table_vbox = gtk_table_new (1, 2, FALSE); gtk_widget_ref (table_vbox); gtk_object_set_data_full (GTK_OBJECT (window), "table_vbox", table_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (table_vbox); gtk_box_pack_start (GTK_BOX (vbox_window), table_vbox, TRUE, TRUE, 0); { /* simulation frame */ sim_frame_table = gtk_frame_new (_("Simulation")); gtk_widget_ref (sim_frame_table); gtk_object_set_data_full (GTK_OBJECT (window), "sim_frame_table", sim_frame_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (sim_frame_table); gtk_table_attach (GTK_TABLE (table_vbox), sim_frame_table, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (sim_frame_table), 3); gtk_frame_set_label_align (GTK_FRAME (sim_frame_table), 0.5, 0.5); gtk_frame_set_shadow_type (GTK_FRAME (sim_frame_table), GTK_SHADOW_ETCHED_OUT); { /* simulation vbox */ vbox_sim_frame = gtk_vbox_new (FALSE, 0); gtk_widget_ref (vbox_sim_frame); gtk_object_set_data_full (GTK_OBJECT (window), "vbox_sim_frame", vbox_sim_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox_sim_frame); gtk_container_add (GTK_CONTAINER (sim_frame_table), vbox_sim_frame); { /* Simulation buttons - toolbar_vbox_sim_frame */ toolbar_vbox_sim_frame = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); gtk_widget_ref (toolbar_vbox_sim_frame); gtk_object_set_data_full (GTK_OBJECT (window), "toolbar_vbox_sim_frame", toolbar_vbox_sim_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (toolbar_vbox_sim_frame); gtk_box_pack_start (GTK_BOX (vbox_sim_frame), toolbar_vbox_sim_frame, FALSE, FALSE, 0); tmp_toolbar_icon = create_pixmap (window, "pill_play.xpm"); gtk_widget_ref(tmp_toolbar_icon); run_btn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_vbox_sim_frame), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Run"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (run_btn); gtk_object_set_data_full (GTK_OBJECT (window), "run_btn", run_btn, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (run_btn); tmp_toolbar_icon = create_pixmap (window, "pill_paus.xpm"); gtk_widget_ref(tmp_toolbar_icon); paus_btn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_vbox_sim_frame), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Pause"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (paus_btn); gtk_object_set_data_full (GTK_OBJECT (window), "paus_btn", paus_btn, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (paus_btn); tmp_toolbar_icon = create_pixmap (window, "pill_step.xpm"); gtk_widget_ref(tmp_toolbar_icon); step_btn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_vbox_sim_frame), GTK_TOOLBAR_CHILD_BUTTON, NULL, _("Step"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (step_btn); gtk_object_set_data_full (GTK_OBJECT (window), "step_btn", step_btn, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (step_btn); tmp_toolbar_icon = create_pixmap (window, "pill_evol.xpm"); gtk_widget_ref(tmp_toolbar_icon); evolution_tgl = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_vbox_sim_frame), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("togglebutton5"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (evolution_tgl); gtk_object_set_data_full (GTK_OBJECT (window), "evolution_tgl", evolution_tgl, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (evolution_tgl); tmp_toolbar_icon = create_pixmap (window, "pill_norefresh.xpm"); gtk_widget_ref(tmp_toolbar_icon); draw_tgl = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar_vbox_sim_frame), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("togglebutton8"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (draw_tgl); gtk_object_set_data_full (GTK_OBJECT (window), "draw_tgl", draw_tgl, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (draw_tgl); } { /* simulator area */ simulatorArea = gtk_drawing_area_new(); gtk_drawing_area_size(GTK_DRAWING_AREA(simulatorArea),sim_area_x_size,sim_area_y_size); gtk_widget_ref(simulatorArea); gtk_object_set_data_full(GTK_OBJECT(window),"simulatorArea",simulatorArea, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(simulatorArea); gtk_box_pack_start (GTK_BOX (vbox_sim_frame), simulatorArea, TRUE, TRUE, 0); } } } { /* draw_frame_table */ draw_frame_table = gtk_frame_new (_("Drawing")); gtk_widget_ref (draw_frame_table); gtk_object_set_data_full (GTK_OBJECT (window), "draw_frame_table", draw_frame_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (draw_frame_table); gtk_table_attach (GTK_TABLE (table_vbox), draw_frame_table, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (draw_frame_table), 2); gtk_frame_set_label_align (GTK_FRAME (draw_frame_table), 0.5, 0.5); gtk_frame_set_shadow_type (GTK_FRAME (draw_frame_table), GTK_SHADOW_ETCHED_OUT); vbox_draw_frame = gtk_vbox_new (FALSE, 0); gtk_widget_ref (vbox_draw_frame); gtk_object_set_data_full (GTK_OBJECT (window), "vbox_draw_frame", vbox_draw_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox_draw_frame); gtk_container_add (GTK_CONTAINER (draw_frame_table), vbox_draw_frame); { /*robot frame -> vbox_draw_frame -> drawing_frame */ robot_frame_vbox = gtk_frame_new (_("Robot")); gtk_widget_ref (robot_frame_vbox); gtk_object_set_data_full (GTK_OBJECT (window), "robot_frame_vbox", robot_frame_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (robot_frame_vbox); gtk_box_pack_start (GTK_BOX (vbox_draw_frame), robot_frame_vbox, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (robot_frame_vbox), GTK_SHADOW_ETCHED_OUT); vbox_robot_frame = gtk_vbox_new (FALSE, 0); gtk_widget_ref (vbox_robot_frame); gtk_object_set_data_full (GTK_OBJECT (window), "vbox_robot_frame", vbox_robot_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vbox_robot_frame); gtk_container_add (GTK_CONTAINER (robot_frame_vbox), vbox_robot_frame); toolbar8 = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); gtk_widget_ref (toolbar8); gtk_object_set_data_full (GTK_OBJECT (window), "toolbar8", toolbar8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (toolbar8); gtk_box_pack_start (GTK_BOX (vbox_robot_frame), toolbar8, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (toolbar8), 4); tmp_toolbar_icon = create_pixmap (window, "pill_wheel.xpm"); gtk_widget_ref(tmp_toolbar_icon); wheel_rbtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar8), GTK_TOOLBAR_CHILD_RADIOBUTTON, NULL, _("Wheel"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (wheel_rbtn); gtk_object_set_data_full (GTK_OBJECT (window), "wheel_rbtn", wheel_rbtn, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (wheel_rbtn); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (wheel_rbtn), FALSE); tmp_toolbar_icon = create_pixmap (window, "pill_arrow.xpm"); gtk_widget_ref(tmp_toolbar_icon); arrow_rbtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar8), GTK_TOOLBAR_CHILD_RADIOBUTTON, wheel_rbtn, _("Arrow\n"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (arrow_rbtn); gtk_object_set_data_full (GTK_OBJECT (window), "arrow_rbtn", arrow_rbtn, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (arrow_rbtn); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (arrow_rbtn), FALSE); toolbar10 = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); gtk_widget_ref (toolbar10); gtk_object_set_data_full (GTK_OBJECT (window), "toolbar10", toolbar10, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (toolbar10); gtk_box_pack_start (GTK_BOX (vbox_robot_frame), toolbar10, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (toolbar10), 4); tmp_toolbar_icon = create_pixmap (window, "pill_bodyb.xpm"); gtk_widget_ref(tmp_toolbar_icon); body_tgl = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar10), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("Body"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (body_tgl); gtk_object_set_data_full (GTK_OBJECT (window), "body_tgl", body_tgl, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (body_tgl); tmp_toolbar_icon = create_pixmap (window, "pill_traceb.xpm"); gtk_widget_ref(tmp_toolbar_icon); trace_tgl = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar10), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("togglebutton7"), NULL, NULL, tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (trace_tgl); gtk_object_set_data_full (GTK_OBJECT (window), "trace_tgl", trace_tgl, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (trace_tgl); Robots_frm = gtk_frame_new (_("Robots")); gtk_widget_ref (Robots_frm); gtk_object_set_data_full (GTK_OBJECT (window), "Robots_frm", Robots_frm, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (Robots_frm); gtk_box_pack_start (GTK_BOX (vbox_draw_frame), Robots_frm, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (Robots_frm), GTK_SHADOW_ETCHED_OUT); } } } { /* generation progressbar */ adj = (GtkAdjustment *) gtk_adjustment_new (0, 1, 100, 0, 0, 0); generation_progress_bar = gtk_progress_bar_new_with_adjustment (adj); gtk_widget_ref (generation_progress_bar); gtk_object_set_data_full (GTK_OBJECT (window), "generation_progress_bar", generation_progress_bar, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (generation_progress_bar); gtk_box_pack_start (GTK_BOX (vbox_window), generation_progress_bar, FALSE, FALSE, 0); gtk_progress_set_show_text (GTK_PROGRESS (generation_progress_bar), TRUE); gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR (generation_progress_bar),GTK_PROGRESS_CONTINUOUS); gtk_progress_set_activity_mode(GTK_PROGRESS (generation_progress_bar),FALSE); gtk_progress_set_format_string (GTK_PROGRESS (generation_progress_bar),"(%p%%)"); } { /* status bar */ statusbar1 = gtk_statusbar_new (); gtk_widget_ref (statusbar1); gtk_object_set_data_full (GTK_OBJECT (window), "statusbar1", statusbar1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (statusbar1); gtk_box_pack_start (GTK_BOX (vbox_window), statusbar1, FALSE, FALSE, 0); } } gtk_signal_connect (GTK_OBJECT (quit_menu_item), "activate", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); gtk_signal_connect (GTK_OBJECT (run_btn), "clicked", GTK_SIGNAL_FUNC (on_run_btn_clicked), NULL); gtk_signal_connect (GTK_OBJECT (paus_btn), "clicked", GTK_SIGNAL_FUNC (on_paus_btn_clicked), NULL); gtk_signal_connect (GTK_OBJECT (step_btn), "clicked", GTK_SIGNAL_FUNC (on_step_btn_clicked), NULL); gtk_signal_connect (GTK_OBJECT (evolution_tgl), "toggled", GTK_SIGNAL_FUNC (on_evolution_tgl_toggled), NULL); gtk_signal_connect (GTK_OBJECT (wheel_rbtn), "toggled", GTK_SIGNAL_FUNC (on_wheel_rbtn_toggled), NULL); gtk_signal_connect (GTK_OBJECT (arrow_rbtn), "toggled", GTK_SIGNAL_FUNC (on_arrow_rbtn_toggled), NULL); gtk_signal_connect (GTK_OBJECT (body_tgl), "toggled", GTK_SIGNAL_FUNC (on_body_tgl_toggled), NULL); gtk_signal_connect (GTK_OBJECT (trace_tgl), "toggled", GTK_SIGNAL_FUNC (on_trace_tgl_toggled), NULL); gtk_signal_connect (GTK_OBJECT (draw_tgl), "toggled", GTK_SIGNAL_FUNC (on_draw_tgl_toggled), NULL); return window;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -