void setup_renderer_rrt_debug(Viewer *viewer, int priority) { RendererRrtDebug *self = (RendererRrtDebug*) calloc(1, sizeof(RendererRrtDebug)); Renderer *renderer = &self->renderer; renderer->draw = my_draw; renderer->destroy = my_free; renderer->name = "RRT Debug"; renderer->widget = gtk_vbox_new(FALSE, 0); renderer->enabled = 1; renderer->user = self; self->lc = globals_get_lcm(); self->ctrans = globals_get_ctrans(); self->viewer = viewer; self->data = NULL; self->min_node_id = 0; self->plot_ctrl = 0; self->plot_state = 1; self->pw = GTKU_PARAM_WIDGET(gtku_param_widget_new()); gtk_box_pack_start(GTK_BOX(renderer->widget), GTK_WIDGET(self->pw), TRUE, TRUE, 0); gtku_param_widget_add_double (self->pw, PARAM_MIN0, GTKU_PARAM_WIDGET_SLIDER, 0, 1e4, 1e2, 0); gtku_param_widget_add_int (self->pw, PARAM_MIN_PLOT, GTKU_PARAM_WIDGET_SLIDER, 0, 5e2, 1, 0); gtku_param_widget_add_double (self->pw, PARAM_MAX0, GTKU_PARAM_WIDGET_SLIDER, 0, MAX_ID_TO_PLOT, 1e2, MAX_ID_TO_PLOT); gtku_param_widget_add_int (self->pw, PARAM_MAX_PLOT, GTKU_PARAM_WIDGET_SLIDER, 0, 5e2, 1, 5e2); gtku_param_widget_add_booleans (self->pw, 0, PARAM_NAME_RENDER_CTRL, self->plot_ctrl, PARAM_NAME_RENDER_STATE, self->plot_state, NULL); gtk_widget_show_all(renderer->widget); g_signal_connect (G_OBJECT (self->pw), "changed", G_CALLBACK (on_param_widget_changed), self); lcmtypes_rrt_debug_t_subscribe(self->lc, "RRT_DEBUG", on_rrt_debug, self); viewer_add_renderer(viewer, renderer, priority); }
int main(int argc, char **argv) { printf("param_widget_test\n"); GtkWidget *window; GtkuParamWidget *pw; gtk_init( &argc, &argv ); window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); g_signal_connect( G_OBJECT(window), "delete_event", gtk_main_quit, NULL ); g_signal_connect( G_OBJECT(window), "destroy", gtk_main_quit, NULL ); gtk_container_set_border_width( GTK_CONTAINER(window), 10 ); pw = GTKU_PARAM_WIDGET( gtku_param_widget_new() ); gtk_container_add( GTK_CONTAINER(window), GTK_WIDGET( pw ) ); gtku_param_widget_add_int( pw, "Integer 1", GTKU_PARAM_WIDGET_SPINBOX, INT_MIN, INT_MAX, 1, 10 ); gtku_param_widget_add_int( pw, "Integer Slider", GTKU_PARAM_WIDGET_SLIDER, 0, 100, 50, 1 ); gtku_param_widget_add_double( pw, "Double Slider", GTKU_PARAM_WIDGET_SLIDER, 0, 1, 0.01, 0.5 ); gtku_param_widget_add_booleans( pw, GTKU_PARAM_WIDGET_CHECKBOX, "check1", 0, "check2", 1, "check3", 0, NULL ); gtku_param_widget_add_enum( pw, "Menu", GTKU_PARAM_WIDGET_MENU, MENU_1, "entry 1", MENU_1, "entry 2", MENU_2, "entry 3", MENU_3, NULL ); g_signal_connect( G_OBJECT( pw ), "changed", G_CALLBACK( on_param_changed ), NULL ); gtk_widget_show_all( window ); gtk_main(); return 0; }
void setup_renderer_car(Viewer *viewer, int render_priority) { RendererCar *self = (RendererCar*) calloc (1, sizeof (RendererCar)); Renderer *renderer = &self->renderer; renderer->draw = car_draw; renderer->destroy = car_free; renderer->widget = gtk_vbox_new(FALSE, 0); renderer->name = RENDERER_NAME; renderer->user = self; renderer->enabled = 1; EventHandler *ehandler = &self->ehandler; ehandler->name = RENDERER_NAME; ehandler->enabled = 1; ehandler->pick_query = pick_query; ehandler->key_press = key_press; ehandler->hover_query = pick_query; ehandler->mouse_press = mouse_press; ehandler->mouse_release = mouse_release; ehandler->mouse_motion = mouse_motion; ehandler->user = self; self->viewer = viewer; self->lc = globals_get_lcm (); self->config = globals_get_config (); self->pw = GTKU_PARAM_WIDGET(gtku_param_widget_new()); self->ctrans = globals_get_ctrans (); self->path = gu_ptr_circular_new (MAX_POSES, free_path_element, NULL); gtk_box_pack_start(GTK_BOX(renderer->widget), GTK_WIDGET(self->pw), TRUE, TRUE, 0); gtku_param_widget_add_booleans (self->pw, 0, PARAM_FOLLOW_POS, 1, NULL); gtku_param_widget_add_booleans (self->pw, 0, PARAM_FOLLOW_YAW, 0, NULL); char * model; char path[256]; if (config_get_str (self->config, "renderer_car.chassis_model", &model) == 0) { snprintf (path, sizeof (path), "%s/%s", MESH_MODEL_PATH, model); self->chassis_model = rwx_model_create (path); } if (config_get_str (self->config, "renderer_car.wheel_model", &model) == 0) { snprintf (path, sizeof (path), "%s/%s", MESH_MODEL_PATH, model); self->wheel_model = rwx_model_create (path); } if (self->chassis_model) gtku_param_widget_add_booleans (self->pw, 0, PARAM_NAME_BLING, 1, NULL); if (self->wheel_model) gtku_param_widget_add_booleans (self->pw, 0, PARAM_NAME_WHEELS, 1, NULL); self->max_draw_poses = 1000; gtku_param_widget_add_int (self->pw, PARAM_MAXPOSES, GTKU_PARAM_WIDGET_SLIDER, 0, MAX_POSES, 100, self->max_draw_poses); GtkWidget *find_button = gtk_button_new_with_label("Find"); gtk_box_pack_start(GTK_BOX(renderer->widget), find_button, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(find_button), "clicked", G_CALLBACK (on_find_button), self); GtkWidget *clear_button = gtk_button_new_with_label("Clear path"); gtk_box_pack_start(GTK_BOX(renderer->widget), clear_button, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(clear_button), "clicked", G_CALLBACK (on_clear_button), self); gtk_widget_show_all(renderer->widget); g_signal_connect (G_OBJECT (self->pw), "changed", G_CALLBACK (on_param_widget_changed), self); on_param_widget_changed(self->pw, "", self); ctrans_subscribe (self->ctrans, pose_listener, self); #ifdef USE_CANDECODE self->can = can_decode_new (self->lc); can_decode_subscribe (self->can, CAN_MSG_WHEELSPEEDS, on_wheelspeeds, self); can_decode_subscribe (self->can, CAN_MSG_STEERING_WHEEL, on_steering, self); can_decode_subscribe (self->can, CAN_MSG_SUSPENSION_HEIGHT, on_suspension, self); #endif viewer_add_renderer(viewer, &self->renderer, render_priority); viewer_add_event_handler(viewer, &self->ehandler, render_priority); self->footprint = config_util_get_vehicle_footprint (self->config); assert (self->footprint); g_signal_connect (G_OBJECT (viewer), "load-preferences", G_CALLBACK (on_load_preferences), self); g_signal_connect (G_OBJECT (viewer), "save-preferences", G_CALLBACK (on_save_preferences), self); }