⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build_menus.c

📁 Coriander is a GUI for controlling a Digital Camera (in the sense of the IIDC specs issued by the 1
💻 C
📖 第 1 页 / 共 3 页
字号:
  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 + -