📄 build_menus.c
字号:
gtk_option_menu_set_menu (GTK_OPTION_MENU (color_num), color_num_menu); // sets the active menu item: gtk_option_menu_set_history (GTK_OPTION_MENU (color_num), index[camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].color_coding_id-COLOR_FORMAT7_MIN]);}voidBuildFpsMenu(void){ int i, f; quadlet_t value; GtkWidget* fps; GtkWidget* fps_menu; GtkWidget* glade_menuitem; int index[NUM_FRAMERATES]; int k=0; if (camera->misc_info.format == FORMAT_SCALABLE_IMAGE_SIZE) { value = 0; /* format 7 has no fixed framerates */ gtk_widget_set_sensitive(lookup_widget(main_window,"fps_menu"),FALSE); } else { gtk_widget_set_sensitive(lookup_widget(main_window,"fps_menu"),TRUE); if (dc1394_query_supported_framerates(camera->camera_info.handle, camera->camera_info.id, camera->misc_info.format, camera->misc_info.mode, &value)!=DC1394_SUCCESS) MainError("Could not query supported framerates"); gtk_widget_destroy(GTK_WIDGET (lookup_widget(main_window,"fps_menu"))); // remove previous menu fps = gtk_option_menu_new (); gtk_widget_ref (fps); gtk_object_set_data_full (GTK_OBJECT (main_window), "fps_menu", fps, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fps); gtk_table_attach_defaults (GTK_TABLE (lookup_widget(main_window,"table17")), fps, 0, 2, 2, 3); gtk_container_set_border_width (GTK_CONTAINER (fps), 1); fps_menu = gtk_menu_new (); k=0; for (f=FRAMERATE_MIN,i=0;f<=FRAMERATE_MAX;i++,f++) { if ( value & (0x1<< (31-i) ) ) { //31 to 31-num_framerates index[i]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(fps_label_list[i])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (fps_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (on_fps_activate), (int*)f); } else index[i]=-1; // framerate not supported } gtk_option_menu_set_menu (GTK_OPTION_MENU (fps), fps_menu); // here we set the sensitiveness, AFTER the 'gtk_option_menu_set_menu' command: //gtk_widget_set_sensitive (lookup_widget(main_window,"fps_menu"), // !(GTK_TOGGLE_BUTTON (lookup_widget(main_window,"trigger_external")))->active); // sets the active menu item: if (index[camera->misc_info.framerate-FRAMERATE_MIN]<0) { // previously selected framerate unsupported!! SwitchToNearestFPS(value, camera->misc_info.framerate); } gtk_option_menu_set_history (GTK_OPTION_MENU (fps), index[camera->misc_info.framerate-FRAMERATE_MIN]); } }voidBuildFormatMenu(void){ int f; int k=0; int index[2048]; quadlet_t modes, formats; GtkWidget* mode_num; GtkWidget* mode_num_menu; GtkWidget* glade_menuitem; gtk_widget_destroy(GTK_WIDGET (lookup_widget(main_window,"format_select"))); // remove previous menu mode_num = gtk_option_menu_new (); gtk_widget_ref (mode_num); gtk_object_set_data_full (GTK_OBJECT (main_window), "format_select", mode_num, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mode_num); gtk_table_attach_defaults (GTK_TABLE (lookup_widget(main_window,"table60")), mode_num, 0, 1, 0, 1); gtk_container_set_border_width (GTK_CONTAINER (mode_num), 1); mode_num_menu = gtk_menu_new (); // get supported formats if (dc1394_query_supported_formats(camera->camera_info.handle, camera->camera_info.id, &formats)<0) { MainError("Could not query supported formats"); formats=0x0; } // FORMAT_0 ----------------------------------- if (formats & (0x1<<31)) { if (dc1394_query_supported_modes(camera->camera_info.handle, camera->camera_info.id, FORMAT_VGA_NONCOMPRESSED, &modes)<0) { MainError("Could not query Format0 modes"); modes=0; } } else modes=0; for (f=MODE_FORMAT0_MIN;f<=MODE_FORMAT0_MAX;f++) { if (modes & (0x1<<(31-(f-MODE_FORMAT0_MIN)))) { index[f]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(format0_list[f-MODE_FORMAT0_MIN])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (mode_num_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (ChangeModeAndFormat), (int*)f); // i is an int passed in a pointer variable. This is 'normal'. } else index[f]=0; } // FORMAT_1 ----------------------------------- if (formats & (0x1<<30)) { if (dc1394_query_supported_modes(camera->camera_info.handle, camera->camera_info.id, FORMAT_SVGA_NONCOMPRESSED_1, &modes)<0) { MainError("Could not query Format0 modes"); modes=0; } } else modes=0; for (f=MODE_FORMAT1_MIN;f<=MODE_FORMAT1_MAX;f++) { if (modes & (0x1<<(31-(f-MODE_FORMAT1_MIN)))) { index[f]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(format1_list[f-MODE_FORMAT1_MIN])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (mode_num_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (ChangeModeAndFormat), (int*)f); // i is an int passed in a pointer variable. This is 'normal'. } else index[f]=0; } // FORMAT_2 ----------------------------------- if (formats & (0x1<<29)) { if (dc1394_query_supported_modes(camera->camera_info.handle, camera->camera_info.id, FORMAT_SVGA_NONCOMPRESSED_2, &modes)<0) { MainError("Could not query Format0 modes"); modes=0; } } else modes=0; for (f=MODE_FORMAT2_MIN;f<=MODE_FORMAT2_MAX;f++) { if (modes & (0x1<<(31-(f-MODE_FORMAT2_MIN)))) { index[f]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(format2_list[f-MODE_FORMAT2_MIN])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (mode_num_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (ChangeModeAndFormat), (int*)f); // i is an int passed in a pointer variable. This is 'normal'. } else index[f]=0; } // FORMAT_6 ----------------------------------- if (formats & (0x1<<25)) { if (dc1394_query_supported_modes(camera->camera_info.handle, camera->camera_info.id, FORMAT_STILL_IMAGE, &modes)<0) { MainError("Could not query Format0 modes"); modes=0; } } else modes=0; for (f=MODE_FORMAT6_MIN;f<=MODE_FORMAT6_MAX;f++) { if (modes & (0x1<<(31-(f-MODE_FORMAT6_MIN)))) { index[f]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(format6_list[f-MODE_FORMAT6_MIN])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (mode_num_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (ChangeModeAndFormat), (int*)f); // i is an int passed in a pointer variable. This is 'normal'. } else index[f]=0; } // FORMAT_7 ----------------------------------- if (formats & (0x1<<24)) { if (dc1394_query_supported_modes(camera->camera_info.handle, camera->camera_info.id, FORMAT_SCALABLE_IMAGE_SIZE, &modes)<0) { MainError("Could not query Format0 modes"); modes=0; } } else modes=0; for (f=MODE_FORMAT7_MIN;f<=MODE_FORMAT7_MAX;f++) { if (modes & (0x1<<(31-(f-MODE_FORMAT7_MIN)))) { index[f]=k; k++; glade_menuitem = gtk_menu_item_new_with_label (_(format7_list[f-MODE_FORMAT7_MIN])); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (mode_num_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (ChangeModeAndFormat), (int*)f); // i is an int passed in a pointer variable. This is 'normal'. } else index[f]=0; } gtk_option_menu_set_menu (GTK_OPTION_MENU (mode_num), mode_num_menu); // sets the active menu item: gtk_option_menu_set_history (GTK_OPTION_MENU (mode_num), index[camera->misc_info.mode]);}voidBuildBayerMenu(void){ GtkWidget* new_option_menu; GtkWidget* new_menu; GtkWidget* glade_menuitem; // build bayer option menu: gtk_widget_destroy(GTK_WIDGET(lookup_widget(main_window,"bayer_menu"))); // remove previous menu new_option_menu = gtk_option_menu_new (); gtk_widget_ref (new_option_menu); gtk_object_set_data_full (GTK_OBJECT (main_window), "bayer_menu", new_option_menu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (new_option_menu); gtk_table_attach (GTK_TABLE (lookup_widget(main_window,"table61")), new_option_menu, 0, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (new_option_menu), 1); new_menu = gtk_menu_new (); // add no bayer option glade_menuitem = gtk_menu_item_new_with_label (_("No Bayer")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (new_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (on_bayer_menu_activate), (int*)NO_BAYER_DECODING); // add nearest_neighbor option glade_menuitem = gtk_menu_item_new_with_label (_("Nearest")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (new_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (on_bayer_menu_activate), (int*)BAYER_DECODING_NEAREST); // add simple option glade_menuitem = gtk_menu_item_new_with_label (_("Simple")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (new_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (on_bayer_menu_activate), (int*)BAYER_DECODING_SIMPLE); // add edge sense option glade_menuitem = gtk_menu_item_new_with_label (_("Edge Sense")); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (new_menu), glade_menuitem); gtk_signal_connect (GTK_OBJECT (glade_menuitem), "activate", GTK_SIGNAL_FUNC (on_bayer_menu_activate), (int*)BAYER_DECODING_EDGE_SENSE); // add downsample option
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -