static void
terminal_screen_container_set_placement_internal (TerminalScreenContainer *container,
        GtkCornerType corner)
{
	TerminalScreenContainerPrivate *priv = container->priv;

#ifdef USE_SCROLLED_WINDOW
	gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (priv->scrolled_window), corner);
#else
	switch (corner)
	{
	case GTK_CORNER_TOP_LEFT:
	case GTK_CORNER_BOTTOM_LEFT:
		gtk_box_reorder_child (GTK_BOX (priv->hbox), priv->vscrollbar, 1);
		break;
	case GTK_CORNER_TOP_RIGHT:
	case GTK_CORNER_BOTTOM_RIGHT:
		gtk_box_reorder_child (GTK_BOX (priv->hbox), priv->vscrollbar, 0);
		break;
	default:
		g_assert_not_reached ();
	}
#endif

	priv->window_placement = corner;
	g_object_notify (G_OBJECT (container), "window-placement");
}
static VALUE
rg_set_placement(VALUE self, VALUE corner_type)
{
    gtk_scrolled_window_set_placement(_SELF(self), 
                                      RVAL2GTKCORNERTYPE(corner_type));
    return self;
}
示例#3
0
/* Determines the location of the child widget with respect to the scrollbars.
 * The default is GTK_CORNER_TOP_LEFT, meaning the child is in the top left,
 * with the scrollbars underneath and to the right. Other values in GtkCornerType are
 * GTK_CORNER_TOP_RIGHT, GTK_CORNER_BOTTOM_LEFT, and GTK_CORNER_BOTTOM_RIGHT. */
int
clip_GTK_SCROLLEDWINDOWSETPLACEMENT (ClipMachine *cm)
{
    C_widget *csw = _fetch_cw_arg(cm);
    int placement = _clip_parni(cm,2);
    CHECKOPT(2,NUMERIC_t);
    CHECKCWID(csw,GTK_IS_SCROLLED_WINDOW);
    gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW(csw->widget), placement);
    return 0;
err:
    return 1;
}
示例#4
0
void ChatArea(GtkWidget *vbox)
{
  GtkWidget *hbox;
  GtkWidget *frame, *scroll, *view, *label, *msg;
  GtkAdjustment *adjustment; /* Uso interno de ajuste de scroll */

  frame  = gtk_frame_new("Chat");
  scroll = gtk_scrolled_window_new(NULL,NULL);
  view   = gtk_text_view_new();  
  buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
  label  = gtk_label_new("Mensaje");
  hbox   = gtk_hbox_new(FALSE,2),
  msg    = gtk_entry_new();

  gtk_box_pack_start(GTK_BOX(vbox), frame,FALSE,FALSE,2);
  gtk_container_add(GTK_CONTAINER(frame), scroll);
  gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll),view);
  gtk_box_pack_end(GTK_BOX(vbox), hbox,FALSE,FALSE,2);
  gtk_box_pack_start(GTK_BOX(hbox), label,FALSE,FALSE,2);
  gtk_box_pack_end(GTK_BOX(hbox), msg,FALSE,FALSE,2);

  gtk_widget_set_size_request(msg,600,-1);
  gtk_text_view_set_editable(GTK_TEXT_VIEW(view),FALSE);
  gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view),GTK_WRAP_WORD_CHAR);
  gtk_widget_set_size_request(scroll,600,330);
  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
  gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll),GTK_CORNER_BOTTOM_LEFT);
  adjustment = (GtkAdjustment *) gtk_adjustment_new(0.,0., 396.,18.,183.,396.);
  gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW(scroll),adjustment);

  gtk_text_buffer_create_tag(buffer, "lmarg", "left_margin", 5, NULL);
  gtk_text_buffer_create_tag(buffer, "red_fg","foreground", "red", NULL); 
  gtk_text_buffer_create_tag(buffer, "blue_fg","foreground", "blue", NULL); 
  gtk_text_buffer_create_tag(buffer, "magenta_fg","foreground", "#FF00FF", NULL);
  gtk_text_buffer_create_tag(buffer, "black_bg","background", "black", NULL);
  gtk_text_buffer_create_tag(buffer, "green_fg","foreground", "#00BB00", NULL); 
  gtk_text_buffer_create_tag(buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL);
  gtk_text_buffer_create_tag(buffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);

  gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);

  g_signal_connect(G_OBJECT(msg), "activate", G_CALLBACK(readMessageCB), NULL);
  g_signal_connect(G_OBJECT(scroll), "size-allocate", G_CALLBACK(scrolling), NULL);
}
示例#5
0
文件: fileview.c 项目: dimkr/emelfm
GtkWidget *
create_file_view(FileView *view)
{
  GtkWidget *vbox;
  GtkWidget *hbox;
  GtkWidget *menu_bar;
  GtkWidget *button;
  GtkWidget *pixmapwid;
  GdkPixmap *pixmap;
  GdkBitmap *mask;
  GtkStyle *style;
  GdkFont *font;
  GtkWidget *sw;
  gint i;

  /* Top Pane */
  vbox = gtk_vbox_new(FALSE, 0);
  gtk_widget_show(vbox);

  menu_bar = create_filelist_menu_bar(view);
  gtk_widget_show(menu_bar);
  gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0);

  hbox = gtk_hbox_new(FALSE, 0);
  gtk_widget_show(hbox);

  /* Show/Hide Button */
  if (view == &app.right_view)
    button = gtk_button_new_with_label("<");
  else
    button = gtk_button_new_with_label(">");
  GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
  gtk_signal_connect(GTK_OBJECT(button), "button_press_event", 
                    GTK_SIGNAL_FUNC(show_hide_file_view_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button,
                       _("Left Click: Maximize/Minimize File View\n"
                         "Right Click: Sync Dirs"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
  gtk_widget_show(button);

  /* Hidden files toggle button */
  view->hidden_toggle = gtk_toggle_button_new_with_label("H");
  GTK_WIDGET_UNSET_FLAGS(view->hidden_toggle, GTK_CAN_FOCUS);
  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(view->hidden_toggle),
                               view->show_hidden);
  gtk_signal_connect(GTK_OBJECT(view->hidden_toggle), "toggled",
                     GTK_SIGNAL_FUNC(toggle_show_hidden_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), view->hidden_toggle,
                       _("Show/Hide hidden files"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), view->hidden_toggle, FALSE, FALSE, 0);
  gtk_widget_show(view->hidden_toggle);

  /* Dir Entry Combo */
  view->dir_entry = gtk_combo_new();
  gtk_combo_disable_activate(GTK_COMBO(view->dir_entry));
  gtk_combo_set_use_arrows_always(GTK_COMBO(view->dir_entry), TRUE);
  gtk_combo_set_case_sensitive(GTK_COMBO(view->dir_entry), TRUE);
  gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->entry), 
              "activate", GTK_SIGNAL_FUNC(dir_entry_cb), view);
  gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->popwin),
              "hide", GTK_SIGNAL_FUNC(dir_popwin_cb), view);
  gtk_box_pack_start(GTK_BOX(hbox), view->dir_entry, TRUE, TRUE, 0);
  gtk_widget_show(view->dir_entry);

  /* Up Dir Button */
  button = gtk_button_new();
  GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
  gtk_signal_connect(GTK_OBJECT(button), "button_press_event",
                     GTK_SIGNAL_FUNC(updir_click_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button,
                       _("Left Click: Up Dir   Right Click: Home"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
  gtk_widget_show(button);

  style = gtk_widget_get_style(app.main_window);
  pixmap = gdk_pixmap_create_from_xpm_d(app.main_window->window, &mask, 
                                        &style->bg[GTK_STATE_NORMAL], 
                                        icon_dirparent_xpm);
  pixmapwid = gtk_pixmap_new(pixmap, mask);
  gtk_container_add(GTK_CONTAINER(button), pixmapwid);
  gtk_widget_show(pixmapwid);

  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

  sw = gtk_scrolled_window_new(NULL, NULL);
  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
          GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(sw), cfg.scrollbar_pos);
  gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
  gtk_widget_show(sw);

  /* File List */
  view->clist = gtk_clist_new(MAX_COLUMNS);
  for (i = 0; i < MAX_COLUMNS; i++)
  {
    GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
    GtkWidget *label = gtk_label_new(all_columns[i].title);

    view->sort_arrows[i] = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN);
    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
    gtk_box_pack_end(GTK_BOX(hbox), view->sort_arrows[i], FALSE, TRUE, 0);

    gtk_widget_show(label);
    gtk_widget_show(hbox);
    gtk_clist_set_column_widget(GTK_CLIST(view->clist), i, hbox);
    GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(view->clist)->column[i].button,
                           GTK_CAN_FOCUS);
  } 
  gtk_clist_column_titles_show(GTK_CLIST(view->clist));
  gtk_clist_set_shadow_type(GTK_CLIST(view->clist), GTK_SHADOW_ETCHED_IN);
  gtk_clist_set_selection_mode(GTK_CLIST(view->clist), GTK_SELECTION_EXTENDED);
  gtk_clist_set_use_drag_icons(GTK_CLIST(view->clist), TRUE);
  gtk_clist_set_row_height(GTK_CLIST(view->clist), 0);
  
  font = gdk_font_load(cfg.list_font);
  if (font != NULL)
  {
    style = gtk_style_copy(gtk_widget_get_style(view->clist));
    style->font = font;
    gtk_widget_set_style(view->clist, style);
  }

  for (i = 0; i < MAX_COLUMNS; i++)
  {
    gtk_clist_set_column_width(GTK_CLIST(view->clist), i, all_columns[i].size);
    gtk_clist_set_column_visibility(GTK_CLIST(view->clist), i,
                                    all_columns[i].is_visible);
  }

  gtk_signal_connect(GTK_OBJECT(view->clist), "select_row",
                     GTK_SIGNAL_FUNC(select_row_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "button_press_event",
                     GTK_SIGNAL_FUNC(mouse_click_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "key_press_event",
                     GTK_SIGNAL_FUNC(file_list_key_press_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "click_column",
                     GTK_SIGNAL_FUNC(column_button_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_get",
                     GTK_SIGNAL_FUNC(clist_drag_data_get), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_motion",
                     GTK_SIGNAL_FUNC(clist_drag_motion), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_leave",
                     GTK_SIGNAL_FUNC(clist_drag_leave), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_received",
                     GTK_SIGNAL_FUNC(clist_drag_data_received), view);
  gtk_drag_dest_set(view->clist, GTK_DEST_DEFAULT_MOTION |
    GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, target_table,
    n_targets, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK |
    GDK_ACTION_ASK);

  gtk_container_add(GTK_CONTAINER(sw), view->clist);
  gtk_widget_show(view->clist);

  /* Set the CLIST_COLOR for resetting from the DRAG_HILIGHT color */
  {
    GtkStyle *style = gtk_widget_get_style(view->clist);
    CLIST_COLOR.red   = style->base[GTK_STATE_NORMAL].red;
    CLIST_COLOR.green = style->base[GTK_STATE_NORMAL].green;
    CLIST_COLOR.blue  = style->base[GTK_STATE_NORMAL].blue;
  }

  return vbox;
}
/*
 * Sets the properties of the widget. This is used for both applying the
 * properties changed in the property editor, and also for loading.
 */
static void
gb_scrolled_window_set_properties (GtkWidget * widget, GbWidgetSetArgData * data)
{
  gint i;
  gchar *hpolicy, *vpolicy, *hupdate_policy, *vupdate_policy;
  gboolean set_policy = FALSE;
  GtkPolicyType hpolicy_value = GTK_POLICY_AUTOMATIC;
  GtkPolicyType vpolicy_value = GTK_POLICY_AUTOMATIC;
  GtkUpdateType hupdate_policy_value = GTK_UPDATE_CONTINUOUS;
  GtkUpdateType vupdate_policy_value = GTK_UPDATE_CONTINUOUS;
  gchar *shadow, *placement;

  hpolicy = gb_widget_input_choice (data, HPolicy);
  if (data->apply)
    {
      set_policy = TRUE;
      for (i = 0; i < sizeof (GbPolicyValues) / sizeof (GbPolicyValues[0]);
	   i++)
	{
	  if (!strcmp (hpolicy, GbPolicyChoices[i])
	      || !strcmp (hpolicy, GbPolicySymbols[i]))
	    hpolicy_value = GbPolicyValues[i];
	}
    }
  else
    hpolicy_value = GTK_SCROLLED_WINDOW (widget)->hscrollbar_policy;

  vpolicy = gb_widget_input_choice (data, VPolicy);
  if (data->apply)
    {
      set_policy = TRUE;
      for (i = 0; i < sizeof (GbPolicyValues) / sizeof (GbPolicyValues[0]);
	   i++)
	{
	  if (!strcmp (vpolicy, GbPolicyChoices[i])
	      || !strcmp (vpolicy, GbPolicySymbols[i]))
	    vpolicy_value = GbPolicyValues[i];
	}
    }
  else
    vpolicy_value = GTK_SCROLLED_WINDOW (widget)->vscrollbar_policy;

  if (set_policy)
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (widget),
				    hpolicy_value, vpolicy_value);

  shadow = gb_widget_input_choice (data, ShadowType);
  if (data->apply)
    {
      for (i = 0; i < GladeShadowChoicesSize; i++)
	{
	  if (!strcmp (shadow, GladeShadowChoices[i])
	      || !strcmp (shadow, GladeShadowSymbols[i]))
	    {
	      gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (widget), GladeShadowValues[i]);
	      break;
	    }
	}
    }

  placement = gb_widget_input_choice (data, WindowPlacement);
  if (data->apply)
    {
      for (i = 0; i < GladeCornerChoicesSize; i++)
	{
	  if (!strcmp (placement, GladeCornerChoices[i])
	      || !strcmp (placement, GladeCornerSymbols[i]))
	    {
	      gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (widget),
						 GladeCornerValues[i]);
	      break;
	    }
	}
    }
}
示例#7
0
/*
 * GUI initialization
 * args:
 *   width - window width
 *   height - window height
 *
 * asserts:
 *   none
 *
 * returns: error code (0 -OK)
 */
int gui_attach_gtk3(int width, int height)
{
	if(!gtk_init_called)
	{
		if(!gtk_init_check(NULL, NULL))
		{
			fprintf(stderr, "GUVCVIEW: (GUI) Gtk3 can't open display\n");
			return -1;
		}

		gtk_init_called = 1;
	}


	/*check for device errors*/
	//if(!device)
	//{
	//	gui_error("Guvcview error", "no video device found", 1);
	//	return -1;
	//}

	g_set_application_name(_("Guvcview Video Capture"));

#if !GTK_VER_AT_LEAST(3,12)
	/* make sure the type is realized so that we can change the properties*/
	g_type_class_unref (g_type_class_ref (GTK_TYPE_BUTTON));
	/* make sure gtk-button-images property is set to true (defaults to false in karmic)*/
	g_object_set (gtk_settings_get_default (), "gtk-button-images", TRUE, NULL);
#endif

	/* Create a main window */
	main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title (GTK_WINDOW (main_window), _("Guvcview"));
	gtk_widget_show (main_window);

	/* get screen resolution */
	GdkScreen* screen = NULL;
	screen = gtk_window_get_screen(GTK_WINDOW(main_window));
	int desktop_width = gdk_screen_get_width(screen);
	int desktop_height = gdk_screen_get_height(screen);

	if(debug_level > 0)
		printf("GUVCVIEW: (GUI) Screen resolution is (%d x %d)\n", desktop_width, desktop_height);

	if((width > desktop_width) && (desktop_width > 0))
		width = desktop_width;
	if((height > desktop_height) && (desktop_height > 0))
		height = desktop_height;

	gtk_window_resize(GTK_WINDOW(main_window), width, height);

	/* Add delete event handler */
	g_signal_connect(GTK_WINDOW(main_window), "delete_event", G_CALLBACK(delete_event), NULL);

	/*window icon*/
	char* icon1path = g_strconcat (PACKAGE_DATA_DIR, "/pixmaps/guvcview/guvcview.png", NULL);
	if (g_file_test(icon1path, G_FILE_TEST_EXISTS))
		gtk_window_set_icon_from_file(GTK_WINDOW (main_window), icon1path, NULL);
	g_free(icon1path);

	/*---------------------------- Main table ---------------------------------*/
	GtkWidget *maintable = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
	gtk_widget_show (maintable);

	/*----------------------------- Top Menu ----------------------------------*/
	gui_attach_gtk3_menu(maintable);

	/*----------------------------- Buttons -----------------------------------*/
	GtkWidget *HButtonBox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
	gtk_widget_set_halign (HButtonBox, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (HButtonBox, TRUE);
	gtk_button_box_set_layout(GTK_BUTTON_BOX(HButtonBox),GTK_BUTTONBOX_SPREAD);
	gtk_box_set_homogeneous(GTK_BOX(HButtonBox),TRUE);
	gtk_widget_show(HButtonBox);

	/*photo button*/
	if(check_photo_timer())
	{
		CapImageButt = gtk_button_new_with_mnemonic (_("Stop Cap. (I)"));
		g_object_set_data (G_OBJECT (CapImageButt), "control_info",
							GINT_TO_POINTER(1));
	}
	else
	{
		CapImageButt = gtk_button_new_with_mnemonic (_("Cap. Image (I)"));
		g_object_set_data (G_OBJECT (CapImageButt), "control_info",
							GINT_TO_POINTER(0));
	}

	char *pix2path = g_strconcat (PACKAGE_DATA_DIR, "/pixmaps/guvcview/camera.png",NULL);
	if (g_file_test(pix2path, G_FILE_TEST_EXISTS))
	{
		GtkWidget *ImgButton_Img = gtk_image_new_from_file (pix2path);
#if GTK_VER_AT_LEAST(3,12)		
		gtk_button_set_always_show_image(GTK_BUTTON(CapImageButt), TRUE);
#endif
		gtk_button_set_image(GTK_BUTTON(CapImageButt), ImgButton_Img);
		gtk_button_set_image_position(GTK_BUTTON(CapImageButt), GTK_POS_TOP);
	}
	g_free(pix2path);
	
	gtk_box_pack_start(GTK_BOX(HButtonBox), CapImageButt, TRUE, TRUE, 2);
	gtk_widget_show (CapImageButt);

	g_signal_connect (GTK_BUTTON(CapImageButt), "clicked",
		G_CALLBACK (capture_image_clicked), NULL);

	/*video button*/
	CapVideoButt = gtk_toggle_button_new_with_mnemonic (_("Cap. Video (V)"));
	gui_set_video_capture_button_status_gtk3(get_encoder_status());

	char *pix3path = g_strconcat (PACKAGE_DATA_DIR, "/pixmaps/guvcview/movie.png",NULL);
	if (g_file_test(pix3path, G_FILE_TEST_EXISTS))
	{
		GtkWidget *VideoButton_Img = gtk_image_new_from_file (pix3path);
#if GTK_VER_AT_LEAST(3,12)
		gtk_button_set_always_show_image(GTK_BUTTON(CapVideoButt), TRUE);
#endif
		gtk_button_set_image(GTK_BUTTON(CapVideoButt), VideoButton_Img);
		gtk_button_set_image_position(GTK_BUTTON(CapVideoButt), GTK_POS_TOP);
	}
	g_free(pix3path);

	gtk_box_pack_start(GTK_BOX(HButtonBox), CapVideoButt, TRUE, TRUE, 2);
	gtk_widget_show (CapVideoButt);

	g_signal_connect (GTK_BUTTON(CapVideoButt), "clicked",
		G_CALLBACK (capture_video_clicked), NULL);

	/*quit button*/
	//GtkWidget *quitButton = gtk_button_new_from_stock(GTK_STOCK_QUIT);
	GtkWidget *quitButton = gtk_button_new_with_mnemonic (_("Quit"));

	char* pix4path = g_strconcat (PACKAGE_DATA_DIR, "/pixmaps/guvcview/close.png", NULL);
	if (g_file_test(pix4path,G_FILE_TEST_EXISTS))
	{
		GtkWidget *QButton_Img = gtk_image_new_from_file (pix4path);
#if GTK_VER_AT_LEAST(3,12)		
		gtk_button_set_always_show_image(GTK_BUTTON(quitButton), TRUE);
#endif
		gtk_button_set_image(GTK_BUTTON(quitButton), QButton_Img);
		gtk_button_set_image_position(GTK_BUTTON(quitButton), GTK_POS_TOP);

	}
	/*must free path strings*/
	g_free(pix4path);
	gtk_box_pack_start(GTK_BOX(HButtonBox), quitButton, TRUE, TRUE, 2);
	gtk_widget_show_all (quitButton);

	g_signal_connect (GTK_BUTTON(quitButton), "clicked",
		G_CALLBACK (quit_button_clicked), NULL);

	gtk_box_pack_start(GTK_BOX(maintable), HButtonBox, FALSE, TRUE, 2);

	/*--------------------------- Tab container -------------------------------*/
	GtkWidget *tab_box = gtk_notebook_new();
	gtk_widget_show (tab_box);

	/*------------------------ Image controls Tab -----------------------------*/

	GtkWidget *scroll_1 = gtk_scrolled_window_new(NULL,NULL);
	gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll_1), GTK_CORNER_TOP_LEFT);
	gtk_widget_show(scroll_1);

	/*
	 * viewport is only needed for gtk < 3.8
	 * for 3.8 and above controls tab can be directly added to scroll1
	 */
	GtkWidget* viewport = gtk_viewport_new(NULL,NULL);
	gtk_widget_show(viewport);

	gtk_container_add(GTK_CONTAINER(scroll_1), viewport);

	gui_attach_gtk3_v4l2ctrls(viewport);

	GtkWidget *tab_1 = gtk_grid_new();
	gtk_widget_show (tab_1);

    GtkWidget *tab_1_label = gtk_label_new(_("Image Controls"));
	gtk_widget_show (tab_1_label);
	/** check for files */
	gchar *tab_1_icon_path = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/image_controls.png",NULL);
	/** don't test for file - use default empty image if load fails */
	/** get icon image*/
	GtkWidget *tab_1_icon = gtk_image_new_from_file(tab_1_icon_path);
	gtk_widget_show (tab_1_icon);

	g_free(tab_1_icon_path);
	gtk_grid_attach (GTK_GRID(tab_1), tab_1_icon, 0, 0, 1, 1);
	gtk_grid_attach (GTK_GRID(tab_1), tab_1_label, 1, 0, 1, 1);

	gtk_notebook_append_page(GTK_NOTEBOOK(tab_box), scroll_1, tab_1);

	/*----------------------------H264 Controls Tab --------------------------*/
	if(v4l2core_get_h264_unit_id(get_v4l2_device_handler()) > 0)
	{
		GtkWidget *scroll_2 = gtk_scrolled_window_new(NULL,NULL);
		gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll_2), GTK_CORNER_TOP_LEFT);
		gtk_widget_show(scroll_2);

		/*
		 * viewport is only needed for gtk < 3.8
		 * for 3.8 and above controls tab can be directly added to scroll1
		 */
		GtkWidget* viewport2 = gtk_viewport_new(NULL,NULL);
		gtk_widget_show(viewport2);

		gtk_container_add(GTK_CONTAINER(scroll_2), viewport2);

		gui_attach_gtk3_h264ctrls(viewport2);

		GtkWidget *tab_2 = gtk_grid_new();
		gtk_widget_show (tab_2);

		GtkWidget *tab_2_label = gtk_label_new(_("H264 Controls"));
		gtk_widget_show (tab_2_label);
		/** check for files */
		gchar *tab_2_icon_path = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/image_controls.png",NULL);
		/** don't test for file - use default empty image if load fails */
		/** get icon image*/
		GtkWidget *tab_2_icon = gtk_image_new_from_file(tab_2_icon_path);
		gtk_widget_show (tab_2_icon);

		g_free(tab_2_icon_path);
		gtk_grid_attach (GTK_GRID(tab_2), tab_2_icon, 0, 0, 1, 1);
		gtk_grid_attach (GTK_GRID(tab_2), tab_2_label, 1, 0, 1, 1);

		gtk_notebook_append_page(GTK_NOTEBOOK(tab_box), scroll_2, tab_2);
	}

	/*exclude video and audio tabs if we are in control panel mode*/
	if(!is_control_panel)
	{
		/*----------------------- Video controls Tab ------------------------------*/

		GtkWidget *scroll_3 = gtk_scrolled_window_new(NULL,NULL);
		gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll_3), GTK_CORNER_TOP_LEFT);
		gtk_widget_show(scroll_3);

		/*
		 * viewport is only needed for gtk < 3.8
		 * for 3.8 and above controls tab can be directly added to scroll1
		 */
		GtkWidget* viewport3 = gtk_viewport_new(NULL,NULL);
		gtk_widget_show(viewport3);

		gtk_container_add(GTK_CONTAINER(scroll_3), viewport3);

		gui_attach_gtk3_videoctrls(viewport3);

		GtkWidget *tab_3 = gtk_grid_new();
		gtk_widget_show (tab_3);

		GtkWidget *tab_3_label = gtk_label_new(_("Video Controls"));
		gtk_widget_show (tab_3_label);
		/** check for files */
		gchar *tab_3_icon_path = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/video_controls.png",NULL);
		/** don't test for file - use default empty image if load fails */
		/** get icon image*/
		GtkWidget *tab_3_icon = gtk_image_new_from_file(tab_3_icon_path);
		gtk_widget_show (tab_3_icon);

		g_free(tab_3_icon_path);
		gtk_grid_attach (GTK_GRID(tab_3), tab_3_icon, 0, 0, 1, 1);
		gtk_grid_attach (GTK_GRID(tab_3), tab_3_label, 1, 0, 1, 1);

		gtk_notebook_append_page(GTK_NOTEBOOK(tab_box), scroll_3, tab_3);

		/*----------------------- Audio controls Tab ------------------------------*/

		GtkWidget *scroll_4 = gtk_scrolled_window_new(NULL,NULL);
		gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll_4), GTK_CORNER_TOP_LEFT);
		gtk_widget_show(scroll_4);

		/*
		 * viewport is only needed for gtk < 3.8
		 * for 3.8 and above controls tab can be directly added to scroll1
		 */
		GtkWidget* viewport4 = gtk_viewport_new(NULL,NULL);
		gtk_widget_show(viewport4);

		gtk_container_add(GTK_CONTAINER(scroll_4), viewport4);

		gui_attach_gtk3_audioctrls(viewport4);

		GtkWidget *tab_4 = gtk_grid_new();
		gtk_widget_show (tab_4);

		GtkWidget *tab_4_label = gtk_label_new(_("Audio Controls"));
		gtk_widget_show (tab_4_label);
		/** check for files */
		gchar *tab_4_icon_path = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/audio_controls.png",NULL);
		/** don't test for file - use default empty image if load fails */
		/** get icon image*/
		GtkWidget *tab_4_icon = gtk_image_new_from_file(tab_4_icon_path);
		gtk_widget_show (tab_4_icon);

		g_free(tab_4_icon_path);
		gtk_grid_attach (GTK_GRID(tab_4), tab_4_icon, 0, 0, 1, 1);
		gtk_grid_attach (GTK_GRID(tab_4), tab_4_label, 1, 0, 1, 1);

		gtk_notebook_append_page(GTK_NOTEBOOK(tab_box), scroll_4, tab_4);
	}

	/* Attach the notebook (tabs) */
	gtk_box_pack_start(GTK_BOX(maintable), tab_box, TRUE, TRUE, 2);

	/*-------------------------- Status bar ------------------------------------*/
	status_bar = gtk_statusbar_new();
	status_warning_id = gtk_statusbar_get_context_id (GTK_STATUSBAR(status_bar), "warning");

    gtk_widget_show(status_bar);
	/* add the status bar*/
	gtk_box_pack_start(GTK_BOX(maintable), status_bar, FALSE, FALSE, 2);


	/* attach to main window container */
	gtk_container_add (GTK_CONTAINER (main_window), maintable);

	/* add key events*/
	gtk_widget_add_events (GTK_WIDGET (main_window), GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
	g_signal_connect (GTK_WINDOW(main_window), "key_press_event", G_CALLBACK(window_key_pressed), NULL);

	/* add update timers:
	 *  devices
	 */
	gtk_devices_timer_id = g_timeout_add( 1000, check_device_events, NULL);
	/*controls*/
	gtk_control_events_timer_id = g_timeout_add(1000, check_control_events, NULL);

	return 0;
}
示例#8
0
void meta_tab(struct ALL_DATA *all_data)
{
	struct GLOBAL *global = all_data->global;
	struct GWIDGET *gwidget = all_data->gwidget;
	struct paRecordData *pdata = all_data->pdata;

	int line = 0;
	int i = 0;
	//TABLE
	GtkWidget *table3 = gtk_grid_new();
	  gtk_grid_set_column_homogeneous (GTK_GRID(table3), FALSE);
	  gtk_widget_set_hexpand (table3, TRUE);
	  gtk_widget_set_halign (table3, GTK_ALIGN_FILL);
	
	  gtk_grid_set_row_spacing (GTK_GRID(table3), 4);
	  gtk_grid_set_column_spacing (GTK_GRID (table3), 4);
	  gtk_container_set_border_width (GTK_CONTAINER (table3), 2);
	  gtk_widget_show (table3);
	
	//SCROLL
	GtkWidget *scroll3 = gtk_scrolled_window_new(NULL,NULL);
	
	//ADD TABLE TO SCROLL
	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll3),table3);
	gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll3), GTK_CORNER_TOP_LEFT);
	gtk_widget_show(scroll3);
	
	//new grid for tab label and icon
	GtkWidget *Tab3 = gtk_grid_new();
	  GtkWidget *Tab3Label = gtk_label_new(_("Meta Controls"));
	    gtk_widget_show (Tab3Label);

	  gchar* Tab3IconPath = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/meta_controls.png",NULL);

	  GtkWidget *Tab3Icon = gtk_image_new_from_file(Tab3IconPath);
	    g_free(Tab3IconPath);
	    gtk_widget_show (Tab3Icon);
	    gtk_grid_attach (GTK_GRID(Tab3), Tab3Icon, 0, 0, 1, 1);
	    gtk_grid_attach (GTK_GRID(Tab3), Tab3Label, 1, 0, 1, 1);
	    
	gtk_widget_show (Tab3);
	
	//ADD SCROLL to NOTEBOOK (TAB)
	gtk_notebook_append_page(GTK_NOTEBOOK(gwidget->boxh),scroll3,Tab3);

	//enable meta
	line++;
	gwidget->MetaEnableCB=gtk_check_button_new_with_label (_(" Meta"));
	gtk_grid_attach(GTK_GRID(table3), gwidget->MetaEnableCB, 1, 0, 1, 1);
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gwidget->MetaEnableCB),  global->Meta_enable);
	gtk_widget_show (gwidget->MetaEnableCB);
	g_signal_connect (GTK_CHECK_BUTTON(gwidget->MetaEnableCB), "toggled",
		G_CALLBACK (MetaEnable_changed), all_data);
    

	line++;
	
	gwidget->label_XImuDevice = gtk_label_new(_("xIMU Device:"));//label_SndAPI
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_XImuDevice), 1, 0.5);

	gtk_grid_attach (GTK_GRID(table3), gwidget->label_XImuDevice, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_XImuDevice);
	
	gwidget->XImuDeviceCB = gtk_combo_box_text_new (); //SndAPI
	gtk_widget_set_halign (gwidget->XImuDeviceCB, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->XImuDeviceCB, TRUE);
	gtk_grid_attach(GTK_GRID(table3), gwidget->XImuDeviceCB, 1, line, 1, 1);
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->XImuDeviceCB),_("None"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->XImuDeviceCB),_("/dev/ttyUSB0"));
	gtk_widget_show (gwidget->XImuDeviceCB);
	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->XImuDeviceCB),global->XImuDeviceCB_idx);//Sound_API
	gtk_widget_set_sensitive (gwidget->XImuDeviceCB, TRUE);
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->XImuDeviceCB), "changed", G_CALLBACK (XImuDeviceCB_changed), all_data);

	gwidget->XImuPropBtn= gtk_button_new_with_label (_("properties"));
	gtk_grid_attach (GTK_GRID(table3), gwidget->XImuPropBtn, 2, line, 1, 1);
	gtk_widget_show (gwidget->XImuPropBtn);
	g_signal_connect (GTK_BUTTON(gwidget->XImuPropBtn), "clicked", G_CALLBACK (ximu_properties_dialog), all_data);

	line++;
	
	gwidget->label_EncoderDevice = gtk_label_new(_("Encoder Device:"));
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_EncoderDevice), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table3), gwidget->label_EncoderDevice, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_EncoderDevice);
//---
	gwidget->EncoderDeviceCB = gtk_combo_box_text_new ();//SndDevice
	
	gtk_widget_set_halign (gwidget->EncoderDeviceCB, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->EncoderDeviceCB, TRUE);
	gtk_grid_attach(GTK_GRID(table3), gwidget->EncoderDeviceCB, 1, line, 1, 1);

	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->EncoderDeviceCB),_("None"));
//TODO: request available encoder, now I have only one id=271264
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->EncoderDeviceCB),_("271264"));
	gtk_widget_show (gwidget->EncoderDeviceCB);

	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->EncoderDeviceCB),global->EncoderDeviceCB_idx);

	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->EncoderDeviceCB), "changed",
		G_CALLBACK (EncoderDeviceCB_changed), all_data);

gwidget->EncoderPropBtn= gtk_button_new_with_label (_("properties"));
gtk_grid_attach (GTK_GRID(table3), gwidget->EncoderPropBtn, 2, line, 1, 1);
gtk_widget_show (gwidget->EncoderPropBtn);
g_signal_connect (GTK_BUTTON(gwidget->EncoderPropBtn), "clicked", G_CALLBACK (encoder_properties_dialog), all_data);
    
//---	
	line++;
	gwidget->EncoderRateCB= gtk_combo_box_text_new ();//SndSampleRate
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->EncoderRateCB),_("Dev. Default"));
	gtk_widget_set_halign (gwidget->EncoderRateCB, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->EncoderRateCB, TRUE);
	gtk_grid_attach(GTK_GRID(table3), gwidget->EncoderRateCB, 1, line, 1, 1);
	gtk_widget_show (gwidget->EncoderRateCB);
	
	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->EncoderRateCB),global->EncoderRateCB_idx);
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->EncoderRateCB), "changed", G_CALLBACK (EncoderRateCB_changed), all_data);
	gwidget->label_EncoderRate = gtk_label_new(_("Encoder Rate:"));
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_EncoderRate), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table3), gwidget->label_EncoderRate, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_EncoderRate);
	
	//channels
	line++;
//TODO: request available bridge, now I have only one id=253523
	gwidget->TensoDeviceCB= gtk_combo_box_text_new ();
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoDeviceCB),_("None"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoDeviceCB),_("253523"));
	
	gtk_widget_set_halign (gwidget->TensoDeviceCB, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->TensoDeviceCB, TRUE);
	gtk_grid_attach(GTK_GRID(table3), gwidget->TensoDeviceCB, 1, line, 1, 1);
	gtk_widget_show (gwidget->TensoDeviceCB);
	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->TensoDeviceCB),global->TensoDeviceCB_idx);
	
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->TensoDeviceCB), "changed", G_CALLBACK (TensoDeviceCB_changed), all_data);
	
	gwidget->label_TensoDeviceCB = gtk_label_new(_("Tensor Device:"));
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_TensoDeviceCB), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table3), gwidget->label_TensoDeviceCB, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_TensoDeviceCB);
    
        gwidget->TensoPropBtn= gtk_button_new_with_label (_("properties"));
        gtk_grid_attach (GTK_GRID(table3), gwidget->TensoPropBtn, 2, line, 1, 1);
        gtk_widget_show (gwidget->TensoPropBtn);
        g_signal_connect (GTK_BUTTON(gwidget->TensoPropBtn), "clicked", G_CALLBACK (tenso_properties_dialog), all_data);

	line++;
	gwidget->TensoRateCB = gtk_combo_box_text_new ();
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB),_("8"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB),_("16"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB),_("32"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB),_("64"));
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB),_("128"));

	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->TensoRateCB), global->TensoDeviceCB_idx);
	
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->TensoRateCB), "changed", G_CALLBACK (TensoRateCB_changed), all_data);

	gtk_widget_set_halign (gwidget->TensoRateCB, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->TensoRateCB, TRUE);
	gtk_grid_attach(GTK_GRID(table3), gwidget->TensoRateCB, 1, line, 1, 1);
	gtk_widget_show (gwidget->TensoRateCB);
	
	gwidget->label_TensoRateCB = gtk_label_new(_("Sensor Rate:"));
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_TensoRateCB), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table3), gwidget->label_TensoRateCB, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_TensoRateCB);
	
//---------------------------------------------------------------------------------------------------
	
line++;
	gwidget->label_TensoChannels = gtk_label_new(_("Sensor Channels:"));
	gtk_misc_set_alignment (GTK_MISC (gwidget->label_TensoChannels), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table3), gwidget->label_TensoChannels, 0, line, 1, 1);
	gtk_widget_show (gwidget->label_TensoChannels);
	
	
	gwidget->table_TensoChannels = gtk_grid_new();
	  gtk_grid_set_row_spacing (GTK_GRID (gwidget->table_TensoChannels), 4);
	  gtk_grid_set_column_spacing (GTK_GRID (gwidget->table_TensoChannels), 4);
	  gtk_container_set_border_width (GTK_CONTAINER (gwidget->table_TensoChannels), 4);
	  gtk_widget_set_size_request (gwidget->table_TensoChannels, -1, -1);
	  gtk_widget_set_halign (gwidget->table_TensoChannels, GTK_ALIGN_FILL);
	  gtk_widget_set_hexpand (gwidget->table_TensoChannels, TRUE);
	  gtk_grid_attach (GTK_GRID(table3), gwidget->table_TensoChannels, 1, line, 3, 1);
	  gtk_widget_show (gwidget->table_TensoChannels);

	// 0
	  gwidget->TensoChannTB_0 = gtk_check_button_new_with_label (_(" 0"));
	    g_object_set_data (G_OBJECT (gwidget->TensoChannTB_0), "effect_info", GINT_TO_POINTER(CH_0));
	    gtk_widget_set_halign (gwidget->TensoChannTB_0, GTK_ALIGN_FILL);
	    gtk_widget_set_hexpand (gwidget->TensoChannTB_0, TRUE);
	    gtk_grid_attach(GTK_GRID(gwidget->table_TensoChannels), gwidget->TensoChannTB_0, 1, 0, 1, 1);
	    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gwidget->TensoChannTB_0),global->tenso_enabled_ch_0);
	    gtk_widget_show (gwidget->TensoChannTB_0);
	    g_signal_connect (GTK_CHECK_BUTTON(gwidget->TensoChannTB_0), "toggled", G_CALLBACK (TensoChannTB_0_changed), all_data);

	// 1
	  gwidget->TensoChannTB_1 = gtk_check_button_new_with_label (_(" 1"));
	    g_object_set_data (G_OBJECT (gwidget->TensoChannTB_1), "effect_info", GINT_TO_POINTER(CH_1));
	    gtk_widget_set_halign (gwidget->TensoChannTB_1, GTK_ALIGN_FILL);
	    gtk_widget_set_hexpand (gwidget->TensoChannTB_1, TRUE);
	    gtk_grid_attach(GTK_GRID(gwidget->table_TensoChannels), gwidget->TensoChannTB_1, 2, 0, 1, 1);
	    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gwidget->TensoChannTB_1),global->tenso_enabled_ch_1);
	    gtk_widget_show (gwidget->TensoChannTB_1);
	    g_signal_connect (GTK_CHECK_BUTTON(gwidget->TensoChannTB_1), "toggled", G_CALLBACK (TensoChannTB_1_changed), all_data);

	// 2
	  gwidget->TensoChannTB_2 = gtk_check_button_new_with_label (_(" 2"));
	    g_object_set_data (G_OBJECT (gwidget->TensoChannTB_2), "effect_info", GINT_TO_POINTER(CH_2));
	    gtk_widget_set_halign (gwidget->TensoChannTB_2, GTK_ALIGN_FILL);
	    gtk_widget_set_hexpand (gwidget->TensoChannTB_2, TRUE);
	    gtk_grid_attach(GTK_GRID(gwidget->table_TensoChannels), gwidget->TensoChannTB_2, 3, 0, 1, 1);
	    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gwidget->TensoChannTB_2),global->tenso_enabled_ch_2);
	    gtk_widget_show (gwidget->TensoChannTB_2);
	    g_signal_connect (GTK_CHECK_BUTTON(gwidget->TensoChannTB_2), "toggled", G_CALLBACK (TensoChannTB_2_changed), all_data);

      // 3
	    gwidget->TensoChannTB_3 = gtk_check_button_new_with_label (_(" 3"));
	    g_object_set_data (G_OBJECT (gwidget->TensoChannTB_3), "effect_info", GINT_TO_POINTER(CH_3));
	    gtk_widget_set_halign (gwidget->TensoChannTB_3, GTK_ALIGN_FILL);
	    gtk_widget_set_hexpand (gwidget->TensoChannTB_3, TRUE);
	    gtk_grid_attach(GTK_GRID(gwidget->table_TensoChannels), gwidget->TensoChannTB_3, 4, 0, 1, 1);
	    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gwidget->TensoChannTB_3),global->tenso_enabled_ch_3);

	    gtk_widget_show (gwidget->TensoChannTB_3);
	    g_signal_connect (GTK_CHECK_BUTTON(gwidget->TensoChannTB_3), "toggled", G_CALLBACK (TensoChannTB_3_changed), all_data);

}
示例#9
0
/*--------------------------- file chooser dialog ----------------------------*/
void video_tab(struct ALL_DATA *all_data)
{
	struct GLOBAL *global = all_data->global;
	struct vdIn *videoIn = all_data->videoIn;
	struct GWIDGET *gwidget = all_data->gwidget;
	//struct paRecordData *pdata = all_data->pdata;

	GtkWidget *table2;
	GtkWidget *scroll2;
	GtkWidget *Tab2;
	GtkWidget *Tab2Label;
	GtkWidget *Tab2Icon;
	GtkWidget *label_Device;
	//GtkWidget *FrameRate;
	GtkWidget *label_FPS;
	GtkWidget *ShowFPS;
	GtkWidget *labelResol;
	GtkWidget *label_InpType;
	GtkWidget *label_videoFilters;
	GtkWidget *table_filt;
	GtkWidget *FiltMirrorEnable;
	GtkWidget *FiltUpturnEnable;
	GtkWidget *FiltNegateEnable;
	GtkWidget *FiltMonoEnable;
	GtkWidget *FiltPiecesEnable;
	GtkWidget *FiltParticlesEnable;
	GtkWidget *set_jpeg_comp;
	GtkWidget *label_jpeg_comp;

	int line = 0;
	int i = 0;
	VidFormats *listVidFormats;

	//TABLE
	table2 = gtk_grid_new();
	gtk_grid_set_column_homogeneous (GTK_GRID(table2), FALSE);
	gtk_widget_set_hexpand (table2, TRUE);
	gtk_widget_set_halign (table2, GTK_ALIGN_FILL);

	gtk_grid_set_row_spacing (GTK_GRID(table2), 4);
	gtk_grid_set_column_spacing (GTK_GRID (table2), 4);
	gtk_container_set_border_width (GTK_CONTAINER (table2), 2);
	gtk_widget_show (table2);
	//SCROLL
	scroll2 = gtk_scrolled_window_new(NULL,NULL);
	//ADD TABLE TO SCROLL
	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll2),table2);
	gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(scroll2), GTK_CORNER_TOP_LEFT);
	gtk_widget_show(scroll2);

	//new hbox for tab label and icon
	Tab2 = gtk_grid_new();
	Tab2Label = gtk_label_new(_("Video"));
	gtk_widget_show (Tab2Label);

	gchar* Tab2IconPath = g_strconcat (PACKAGE_DATA_DIR,"/pixmaps/guvcview/video_controls.png",NULL);
	//don't test for file - use default empty image if load fails
	//get icon image
	Tab2Icon = gtk_image_new_from_file(Tab2IconPath);
	g_free(Tab2IconPath);
	gtk_widget_show (Tab2Icon);
	gtk_grid_attach (GTK_GRID(Tab2), Tab2Icon, 0, 0, 1, 1);
	gtk_grid_attach (GTK_GRID(Tab2), Tab2Label, 1, 0, 1, 1);

	gtk_widget_show (Tab2);
	gtk_notebook_append_page(GTK_NOTEBOOK(gwidget->boxh),scroll2,Tab2);

	//Devices
	label_Device = gtk_label_new(_("Device:"));
	gtk_misc_set_alignment (GTK_MISC (label_Device), 1, 0.5);

	gtk_grid_attach (GTK_GRID(table2), label_Device, 0, line, 1, 1);

	gtk_widget_show (label_Device);


	gwidget->Devices = gtk_combo_box_text_new ();
	gtk_widget_set_halign (gwidget->Devices, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->Devices, TRUE);
	if (videoIn->listDevices->num_devices < 1)
	{
		//use current
		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->Devices),
			videoIn->videodevice);
		gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->Devices),0);
	}
	else
	{
		for(i=0;i<(videoIn->listDevices->num_devices);i++)
		{
			gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->Devices),
				videoIn->listDevices->listVidDevices[i].name);
			if(videoIn->listDevices->listVidDevices[i].current)
				gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->Devices),i);
		}
	}
	gtk_grid_attach (GTK_GRID(table2), gwidget->Devices, 1, line, 1 ,1);
	gtk_widget_show (gwidget->Devices);
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->Devices), "changed",
		G_CALLBACK (Devices_changed), all_data);

	// Resolution
	gwidget->Resolution = gtk_combo_box_text_new ();
	gtk_widget_set_halign (gwidget->Resolution, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->Resolution, TRUE);
	char temp_str[20];
	int defres=0;

	{
		int current_format = videoIn->listFormats->current_format;
		listVidFormats = &videoIn->listFormats->listVidFormats[current_format];
	}


	if (global->debug)
		g_print("resolutions of format(%d) = %d \n",
			videoIn->listFormats->current_format+1,
			listVidFormats->numb_res);
	for(i = 0 ; i < listVidFormats->numb_res ; i++)
	{
		if (listVidFormats->listVidCap[i].width>0)
		{
			g_snprintf(temp_str,18,"%ix%i", listVidFormats->listVidCap[i].width,
							 listVidFormats->listVidCap[i].height);
			gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->Resolution),temp_str);

			if ((global->width == listVidFormats->listVidCap[i].width) &&
				(global->height == listVidFormats->listVidCap[i].height))
					defres=i;//set selected resolution index
		}
	}

	// Frame Rate
	line++;

	gwidget->FrameRate = gtk_combo_box_text_new ();
	gtk_widget_set_halign (gwidget->FrameRate, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->FrameRate, TRUE);
	int deffps=0;
	if (global->debug)
		g_print("frame rates of %dº resolution=%d \n",
			defres+1,
			listVidFormats->listVidCap[defres].numb_frates);
	for ( i = 0 ; i < listVidFormats->listVidCap[defres].numb_frates ; i++)
	{
		g_snprintf(temp_str,18,"%i/%i fps", listVidFormats->listVidCap[defres].framerate_denom[i],
			listVidFormats->listVidCap[defres].framerate_num[i]);
		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->FrameRate),temp_str);

		if (( global->fps_num == listVidFormats->listVidCap[defres].framerate_num[i]) &&
			(global->fps == listVidFormats->listVidCap[defres].framerate_denom[i]))
				deffps=i;//set selected
	}

	gtk_grid_attach (GTK_GRID(table2), gwidget->FrameRate, 1, line, 1 ,1);
	gtk_widget_show (gwidget->FrameRate);


	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->FrameRate),deffps);
	if (deffps==0)
	{
		if (listVidFormats->listVidCap[defres].framerate_denom)
			global->fps = listVidFormats->listVidCap[defres].framerate_denom[0];

		if (listVidFormats->listVidCap[defres].framerate_num)
			global->fps_num = listVidFormats->listVidCap[defres].framerate_num[0];

		g_print("fps is set to %i/%i\n", global->fps_num, global->fps);
	}
	gtk_widget_set_sensitive (gwidget->FrameRate, TRUE);
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->FrameRate), "changed",
		G_CALLBACK (FrameRate_changed), all_data);

	label_FPS = gtk_label_new(_("Frame Rate:"));
	gtk_misc_set_alignment (GTK_MISC (label_FPS), 1, 0.5);

	gtk_grid_attach (GTK_GRID(table2), label_FPS, 0, line, 1, 1);

	gtk_widget_show (label_FPS);

	ShowFPS=gtk_check_button_new_with_label (_(" Show"));
	gtk_grid_attach (GTK_GRID(table2), ShowFPS, 2, line, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ShowFPS),(global->FpsCount > 0));
	gtk_widget_show (ShowFPS);
	g_signal_connect (GTK_CHECK_BUTTON(ShowFPS), "toggled",
		G_CALLBACK (ShowFPS_changed), all_data);

	// add resolution combo box
	line++;
	gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->Resolution),defres);

	if(global->debug)
		g_print("Def. Res: %i  numb. fps:%i\n",defres,videoIn->listFormats->listVidFormats[videoIn->listFormats->current_format].listVidCap[defres].numb_frates);

	gtk_grid_attach (GTK_GRID(table2), gwidget->Resolution, 1, line, 1 ,1);
	gtk_widget_show (gwidget->Resolution);

	gtk_widget_set_sensitive (gwidget->Resolution, TRUE);
	g_signal_connect (gwidget->Resolution, "changed",
		G_CALLBACK (resolution_changed), all_data);

	labelResol = gtk_label_new(_("Resolution:"));
	gtk_misc_set_alignment (GTK_MISC (labelResol), 1, 0.5);
	gtk_grid_attach (GTK_GRID(table2), labelResol, 0, line, 1, 1);
	gtk_widget_show (labelResol);

	// Input Format
	line++;
	gwidget->InpType= gtk_combo_box_text_new ();
	gtk_widget_set_halign (gwidget->InpType, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (gwidget->InpType, TRUE);

	int fmtind=0;
	for (fmtind=0; fmtind < videoIn->listFormats->numb_formats; fmtind++)
	{
		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gwidget->InpType),videoIn->listFormats->listVidFormats[fmtind].fourcc);
		if(global->format == videoIn->listFormats->listVidFormats[fmtind].format)
			gtk_combo_box_set_active(GTK_COMBO_BOX(gwidget->InpType),fmtind); /*set active*/
	}

	gtk_grid_attach (GTK_GRID(table2), gwidget->InpType, 1, line, 1 ,1);

	gtk_widget_set_sensitive (gwidget->InpType, TRUE);
	g_signal_connect (GTK_COMBO_BOX_TEXT(gwidget->InpType), "changed",
		G_CALLBACK (InpType_changed), all_data);
	gtk_widget_show (gwidget->InpType);

	label_InpType = gtk_label_new(_("Camera Output:"));
	gtk_misc_set_alignment (GTK_MISC (label_InpType), 1, 0.5);

	gtk_grid_attach (GTK_GRID(table2), label_InpType, 0, line, 1, 1);

	gtk_widget_show (label_InpType);

	//jpeg compression quality for MJPEG and JPEG input formats
	if((global->format == V4L2_PIX_FMT_MJPEG || global->format == V4L2_PIX_FMT_JPEG) && videoIn->jpgcomp.quality > 0)
	{
		line++;
		gwidget->jpeg_comp = gtk_spin_button_new_with_range(0,100,1);
		gtk_widget_set_halign (gwidget->jpeg_comp, GTK_ALIGN_FILL);
		gtk_widget_set_hexpand (gwidget->jpeg_comp, TRUE);
		/*can't edit the spin value by hand*/
		gtk_editable_set_editable(GTK_EDITABLE(gwidget->jpeg_comp),FALSE);
		gtk_spin_button_set_value (GTK_SPIN_BUTTON(gwidget->jpeg_comp), videoIn->jpgcomp.quality);
		gtk_grid_attach (GTK_GRID(table2), gwidget->jpeg_comp, 1, line, 1 ,1);

		gtk_widget_set_sensitive (gwidget->jpeg_comp, TRUE);
		gtk_widget_show (gwidget->jpeg_comp);

		set_jpeg_comp = gtk_button_new_with_label(_("Apply"));
		gtk_grid_attach (GTK_GRID(table2), set_jpeg_comp, 2, line, 1 ,1);
		g_signal_connect (GTK_BUTTON (set_jpeg_comp), "clicked",
				G_CALLBACK (set_jpeg_comp_clicked), all_data);
		gtk_widget_set_sensitive (set_jpeg_comp, TRUE);
		gtk_widget_show (set_jpeg_comp);

		label_jpeg_comp = gtk_label_new(_("Quality:"));
		gtk_misc_set_alignment (GTK_MISC (label_jpeg_comp), 1, 0.5);

		gtk_grid_attach (GTK_GRID(table2), label_jpeg_comp, 0, line, 1 ,1);

		gtk_widget_show (label_jpeg_comp);
	}

	// Filter controls
	line++;
	label_videoFilters = gtk_label_new(_("---- Video Filters ----"));
	gtk_misc_set_alignment (GTK_MISC (label_videoFilters), 0.5, 0.5);

	gtk_grid_attach (GTK_GRID(table2), label_videoFilters, 0, line, 3, 1);
	gtk_widget_show (label_videoFilters);

	line++;
	table_filt = gtk_grid_new();
	gtk_grid_set_row_spacing (GTK_GRID (table_filt), 4);
	gtk_grid_set_column_spacing (GTK_GRID (table_filt), 4);
	gtk_container_set_border_width (GTK_CONTAINER (table_filt), 4);
	gtk_widget_set_size_request (table_filt, -1, -1);

	gtk_widget_set_halign (table_filt, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (table_filt, TRUE);
	gtk_grid_attach (GTK_GRID(table2), table_filt, 0, line, 3, 1);
	gtk_widget_show (table_filt);

	// Mirror
	FiltMirrorEnable=gtk_check_button_new_with_label (_(" Mirror"));
	g_object_set_data (G_OBJECT (FiltMirrorEnable), "filt_info", GINT_TO_POINTER(YUV_MIRROR));
	gtk_widget_set_halign (FiltMirrorEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltMirrorEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltMirrorEnable, 0, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltMirrorEnable),(global->Frame_Flags & YUV_MIRROR)>0);
	gtk_widget_show (FiltMirrorEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltMirrorEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);
	// Upturn
	FiltUpturnEnable=gtk_check_button_new_with_label (_(" Invert"));
	g_object_set_data (G_OBJECT (FiltUpturnEnable), "filt_info", GINT_TO_POINTER(YUV_UPTURN));
	gtk_widget_set_halign (FiltUpturnEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltUpturnEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltUpturnEnable, 1, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltUpturnEnable),(global->Frame_Flags & YUV_UPTURN)>0);
	gtk_widget_show (FiltUpturnEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltUpturnEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);
	// Negate
	FiltNegateEnable=gtk_check_button_new_with_label (_(" Negative"));
	g_object_set_data (G_OBJECT (FiltNegateEnable), "filt_info", GINT_TO_POINTER(YUV_NEGATE));
	gtk_widget_set_halign (FiltNegateEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltNegateEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltNegateEnable, 2, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltNegateEnable),(global->Frame_Flags & YUV_NEGATE)>0);
	gtk_widget_show (FiltNegateEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltNegateEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);
	// Mono
	FiltMonoEnable=gtk_check_button_new_with_label (_(" Mono"));
	g_object_set_data (G_OBJECT (FiltMonoEnable), "filt_info", GINT_TO_POINTER(YUV_MONOCR));
	gtk_widget_set_halign (FiltMonoEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltMonoEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltMonoEnable, 3, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltMonoEnable),(global->Frame_Flags & YUV_MONOCR)>0);
	gtk_widget_show (FiltMonoEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltMonoEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);

	// Pieces
	FiltPiecesEnable=gtk_check_button_new_with_label (_(" Pieces"));
	g_object_set_data (G_OBJECT (FiltPiecesEnable), "filt_info", GINT_TO_POINTER(YUV_PIECES));
	gtk_widget_set_halign (FiltPiecesEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltPiecesEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltPiecesEnable, 4, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltPiecesEnable),(global->Frame_Flags & YUV_PIECES)>0);
	gtk_widget_show (FiltPiecesEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltPiecesEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);

	// Particles
	FiltParticlesEnable=gtk_check_button_new_with_label (_(" Particles"));
	g_object_set_data (G_OBJECT (FiltParticlesEnable), "filt_info", GINT_TO_POINTER(YUV_PARTICLES));
	gtk_widget_set_halign (FiltParticlesEnable, GTK_ALIGN_FILL);
	gtk_widget_set_hexpand (FiltParticlesEnable, TRUE);
	gtk_grid_attach(GTK_GRID(table_filt), FiltParticlesEnable, 5, 0, 1, 1);

	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FiltParticlesEnable),(global->Frame_Flags & YUV_PARTICLES)>0);
	gtk_widget_show (FiltParticlesEnable);
	g_signal_connect (GTK_CHECK_BUTTON(FiltParticlesEnable), "toggled",
		G_CALLBACK (FiltEnable_changed), all_data);

}
示例#10
0
static void
create_layout (GtkWidget *vbox)
{
  GtkAdjustment *hadjustment, *vadjustment;
  GtkLayout *layout;
  GtkWidget *layout_widget;
  GtkWidget *scrolledwindow;
  GtkWidget *button;
  gchar buf[16];
  gint i, j;

  scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow),
				       GTK_SHADOW_IN);
  gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolledwindow),
				     GTK_CORNER_TOP_RIGHT);

  gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0);

  layout_widget = gtk_layout_new (NULL, NULL);
  layout = GTK_LAYOUT (layout_widget);
  gtk_container_add (GTK_CONTAINER (scrolledwindow), layout_widget);

  /* We set step sizes here since GtkLayout does not set
   * them itself.
   */
  hadjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout));
  vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (layout));
  gtk_adjustment_set_step_increment (hadjustment, 10.0);
  gtk_adjustment_set_step_increment (vadjustment, 10.0);
  gtk_scrollable_set_hadjustment (GTK_SCROLLABLE (layout), hadjustment);
  gtk_scrollable_set_vadjustment (GTK_SCROLLABLE (layout), vadjustment);

  gtk_widget_set_events (layout_widget, GDK_EXPOSURE_MASK);
  g_signal_connect (layout, "draw",
		    G_CALLBACK (layout_draw_handler),
                    NULL);

  gtk_layout_set_size (layout, 1600, 128000);

  for (i = 0 ; i < 16 ; i++)
    for (j = 0 ; j < 16 ; j++)
      {
	g_snprintf (buf, sizeof (buf), "Button %d, %d", i, j);

	if ((i + j) % 2)
	  button = gtk_button_new_with_label (buf);
	else
	  button = gtk_label_new (buf);

	gtk_layout_put (layout, button,	j * 100, i * 100);
      }

  for (i = 16; i < 1280; i++)
    {
      g_snprintf (buf, sizeof (buf), "Button %d, %d", i, 0);

      if (i % 2)
	button = gtk_button_new_with_label (buf);
      else
	button = gtk_label_new (buf);

      gtk_layout_put (layout, button, 0, i * 100);
    }

  layout_timeout = g_timeout_add (1000, scroll_layout, layout);
}
示例#11
0
文件: interface.c 项目: dimkr/beaver
void menu_items_treatment (GtkWidget *Widget, guint Op)
{
  gint CurrentPage, i;

  CurrentPage = gtk_notebook_get_current_page (GTK_NOTEBOOK(MainNotebook));
  switch(Op)
    {
    case NEW                  : new_file ();                   break;
    case OPEN                 : open_file ();                  break;
    case SAVE                 : save_file ();                  break;
    case SAVE_ALL             : save_all ();                   break;
    case SAVE_AS              : save_file_as ();               break;
    case PRINT                : print_buffer ();               break;
    case CLOSE                : close_file ();                 break;
    case CLOSE_ALL            : close_all ();                  break;
    case QUIT                 : quit ();                       break;
    case UNDO                 :
      if (OpenedFilesCnt)
	{
	  proceed_undo ();
	  break;
	 } 
    case REDO                 :
      if (OpenedFilesCnt)
	{
	  proceed_redo ();
	  break;
	}
    case CUT                  :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  gtk_editable_cut_clipboard (GTK_EDITABLE(FPROPS(CurrentPage, Text)));
	  print_msg ("Selection cut to Clipboard...");
	}
      break;
    case COPY                 :
      if (OpenedFilesCnt)
	{
	  gtk_editable_copy_clipboard
	    (GTK_EDITABLE(FPROPS(CurrentPage, Text)));
	  print_msg ("Selection copied to Clipboard...");
	}
	break;
    case PASTE                :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  gtk_editable_paste_clipboard
	    (GTK_EDITABLE(FPROPS(CurrentPage, Text)));
	  print_msg ("Text pasted from Clipboard...");
	}
      break;
    case CLEAR                :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  gtk_editable_delete_text
	    (GTK_EDITABLE(FPROPS(CurrentPage, Text)), 0, -1);
	  print_msg ("Buffer cleared...");
	}
      break;
    case SELECT_ALL           :
      if (OpenedFilesCnt)
	{
	  gtk_editable_select_region
	    (GTK_EDITABLE(FPROPS(CurrentPage, Text)), 0, -1);
	  print_msg ("All Text selected...");
	}
      break;
    case COMPLETE             :
      if (OpenedFilesCnt)
	auto_completion (GTK_TEXT(FPROPS(CurrentPage, Text)));
      break;
    case FIND                 :
      if (OpenedFilesCnt)
	search (FALSE);
      break;
    case REPLACE              :
      if (OpenedFilesCnt)
	search (TRUE);
      break;
    case LINE                 :
      if (OpenedFilesCnt)
	goto_line ();
      break;
    case READONLY             : toggle_readonly ();            break;
    case CONVERTER            : converter ();                  break;
    case COLOR                : color_picker ();               break;
    case INSERT_TIME          : insert_time (CurrentPage);     break;
    case TO_UPPER             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  change_case (1);
	  print_msg ("Selection converted to upper Case...");
	}
      break;
    case TO_LOWER             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  change_case (2);
	  print_msg ("Selection converted to Lower Case...");
	}
      break;
    case CAPITALIZE           :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  change_case (3);
	  print_msg ("Selection Capitalized...");
	}
      break; 
    case INVERT_CASE          :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  change_case (4);
	  print_msg ("Case inverted...");
	}
      break;
    case UNIX_DOS             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_unix_to_dos ();
	}
      break;
    case UNIX_MAC             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_unix_to_mac ();
	}
      break;
    case DOS_UNIX             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_dos_to_unix ();
	}
      break;
    case DOS_MAC              :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_dos_to_mac ();
	}
      break;
    case MAC_DOS              :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_mac_to_dos ();
	}
      break;
    case MAC_UNIX             :
      if ((OpenedFilesCnt) && !FPROPS(CurrentPage, ReadOnly))
	{
	  conv_mac_to_unix ();
	}
      break;
    case UNIX_DOS_ALL             :
      convert_all(conv_unix_to_dos);
      break;
    case UNIX_MAC_ALL             :
      convert_all(conv_unix_to_mac);
      break;
    case DOS_UNIX_ALL             :
      convert_all(conv_dos_to_unix);
      break;
    case DOS_MAC_ALL              :
      convert_all(conv_dos_to_mac);
      break;
    case MAC_DOS_ALL              :
      convert_all(conv_mac_to_dos);
      break;
    case MAC_UNIX_ALL             :
      convert_all(conv_mac_to_unix);
      break;
    case FILE_INFO            : file_info (CurrentPage);       break;
    case TOOLBAR              :
      if ((!ToolBarToggleDisplay) && (TOOLBAR_DISPLAY))
	ToolBarToggleDisplay = TRUE;
      else
	{
	  if (TOOLBAR_DISPLAY)
	    {
	      TOOLBAR_DISPLAY = FALSE;
	      hide_toolbar ();
	      print_msg ("Hide Tool Bar...");
	    }
	  else
	    {
	      TOOLBAR_DISPLAY = TRUE;
	      show_toolbar ();
	      if (!ToolBarToggleDisplay) ToolBarToggleDisplay = TRUE;
	      print_msg ("Display Tool Bar...");
	    }
	}
      break;
    case MSGBAR               :
      if ((!MsgBarToggleDisplay) && (MSGBAR_DISPLAY))
	MsgBarToggleDisplay = TRUE;
      else
	{
	  if (MSGBAR_DISPLAY)
	    {
	      MSGBAR_DISPLAY = FALSE;
	      hide_msgbar ();
	    }
	  else
	    {
	      MSGBAR_DISPLAY = TRUE;
	      show_msgbar ();
	      if (!MsgBarToggleDisplay) MsgBarToggleDisplay = TRUE;
	      print_msg ("Display Msg Bar...");
	    }
	}
      break;
    case WORDWRAP        :
     if ((!ToggleWordwrap) && (TOGGLE_WORDWRAP))
	ToggleWordwrap = TRUE;
      else
	{
	  if (TOGGLE_WORDWRAP)
	    {
	      TOGGLE_WORDWRAP = FALSE;
	      for (i = 0; i < OpenedFilesCnt; i++)
		gtk_text_set_word_wrap (GTK_TEXT(FPROPS(CurrentPage, Text)),
					FALSE);
	      print_msg ("Wordwrap disabled...");
	    }
	  else
	    {
	      TOGGLE_WORDWRAP = TRUE;
	      for (i = 0; i < OpenedFilesCnt; i++)
		gtk_text_set_word_wrap (GTK_TEXT(FPROPS(CurrentPage, Text)),
					TRUE);
	      if (!ToggleWordwrap) ToggleWordwrap = TRUE;
	      print_msg ("Wordwrap enabled...");
	    }
	}
      break;
    case TAB_POS_TOP          :
      TAB_POSITION = 1;
      gtk_notebook_set_tab_pos (GTK_NOTEBOOK(MainNotebook), GTK_POS_TOP);
      break;
    case TAB_POS_BOTTOM       :
      TAB_POSITION = 2;
      gtk_notebook_set_tab_pos (GTK_NOTEBOOK(MainNotebook), GTK_POS_BOTTOM);
      break;
    case TAB_POS_LEFT         :
      TAB_POSITION = 3;
      gtk_notebook_set_tab_pos (GTK_NOTEBOOK(MainNotebook), GTK_POS_LEFT);
      break;
    case TAB_POS_RIGHT        :
      TAB_POSITION = 4;
      gtk_notebook_set_tab_pos (GTK_NOTEBOOK(MainNotebook), GTK_POS_RIGHT);  
      break;
    case SCROLLBAR_POS_LEFT   :
      SCROLLBAR_POSITION = 1;
      for (i = 0; i < OpenedFilesCnt; i++)
	gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW
					   (gtk_notebook_get_nth_page
					    (GTK_NOTEBOOK(MainNotebook), i)),
					   GTK_CORNER_TOP_RIGHT);
      break;
    case SCROLLBAR_POS_RIGHT  :
      SCROLLBAR_POSITION = 2;
      for (i = 0; i < OpenedFilesCnt; i++)
	gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW
					   (gtk_notebook_get_nth_page
					    (GTK_NOTEBOOK(MainNotebook), i)),
					   GTK_CORNER_TOP_LEFT);
      break;
    case PREFS                : display_prefs (&Settings);     break;
    case HELP                 :
      print_msg ("No help available yet...");
      break;
    case ABOUT                : about ();                      break;
    }
  (void)Widget; /* avoid the "unused parameter" warning */
}
示例#12
0
文件: interface.c 项目: dimkr/beaver
void add_page_in_notebook (GtkNotebook *Notebook, gchar *FileName)
{
  GtkWidget *VScrolledWindow;
  GtkWidget *TabLabel, *MenuLabel;
  GtkWidget *PopUpMenu;
  GtkStyle *Style;
  t_fprops Storage;
  
  g_array_append_val (FileProperties, Storage);
  if (!FileName)
    {
      gchar *Untitled;
      
      Untitled = g_strdup_printf (UNTITLED " %d", ++NewFilesCnt);
      init_file_properties (Untitled, OpenedFilesCnt);
      g_free (Untitled);
    }
  else init_file_properties (FileName, OpenedFilesCnt);
  VScrolledWindow = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(VScrolledWindow),
				  GTK_POLICY_NEVER,
				  GTK_POLICY_ALWAYS);
  if (SCROLLBAR_POSITION == 1)
    gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW(VScrolledWindow),
				       GTK_CORNER_TOP_RIGHT);
  if (SCROLLBAR_POSITION == 2)
    gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW(VScrolledWindow),
				       GTK_CORNER_TOP_LEFT);
  FPROPS(OpenedFilesCnt, Text) = gtk_text_new (NULL, NULL);
  Style = gtk_style_copy (gtk_widget_get_style(FPROPS(OpenedFilesCnt, Text)));
  Style -> font = gdk_font_load (FONT);
  Style -> bg[GTK_STATE_SELECTED].red = SELECTED_BG_RED;
  Style -> bg[GTK_STATE_SELECTED].green = SELECTED_BG_GREEN;
  Style -> bg[GTK_STATE_SELECTED].blue = SELECTED_BG_BLUE;
  Style -> fg[GTK_STATE_SELECTED].red = SELECTED_FG_RED;
  Style -> fg[GTK_STATE_SELECTED].green = SELECTED_FG_GREEN;
  Style -> fg[GTK_STATE_SELECTED].blue = SELECTED_FG_BLUE;
  Style -> base[GTK_STATE_NORMAL].red = BG_RED;
  Style -> base[GTK_STATE_NORMAL].green = BG_GREEN;
  Style -> base[GTK_STATE_NORMAL].blue = BG_BLUE;
  Style -> text[GTK_STATE_NORMAL].red = FG_RED;
  Style -> text[GTK_STATE_NORMAL].green = FG_GREEN;
  Style -> text[GTK_STATE_NORMAL].blue = FG_BLUE;
  gtk_widget_set_style (FPROPS(OpenedFilesCnt, Text), Style);
  if (!FPROPS(OpenedFilesCnt, ReadOnly))
    gtk_text_set_editable (GTK_TEXT(FPROPS(OpenedFilesCnt, Text)), TRUE);
  if (TOGGLE_WORDWRAP)
    gtk_text_set_word_wrap (GTK_TEXT(FPROPS(OpenedFilesCnt, Text)),
			    TRUE);
  PopUpMenu = popup_menu_new ();
  gtk_signal_connect_object (GTK_OBJECT(FPROPS(OpenedFilesCnt, Text)),
			     "event", (GtkSignalFunc)popup_menu_show,
			     GTK_OBJECT(PopUpMenu));
  gtk_container_add (GTK_CONTAINER(VScrolledWindow),
		     FPROPS(OpenedFilesCnt, Text));
  TabLabel = gtk_label_new ("");
  MenuLabel = gtk_label_new ("");
  gtk_notebook_append_page_menu (Notebook, VScrolledWindow,
				 TabLabel, MenuLabel);
  gtk_widget_show_all (GTK_WIDGET(Notebook));
  set_label (Notebook, OpenedFilesCnt);
  gtk_notebook_set_page (GTK_NOTEBOOK(Notebook), OpenedFilesCnt++);
}