Exemplo n.º 1
0
GtkWidget *statusbar_create(void)
{
	GtkWidget *statusbar;
	GtkWidget *child;
	GtkWidget *parent;
	GtkWidget *hbox;

	statusbar = gtk_statusbar_new();
	statusbar_list = g_list_append(statusbar_list, statusbar);
	gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(statusbar), 
					  FALSE);
	gtk_container_set_border_width(GTK_CONTAINER(statusbar), 1);
	child = gtk_statusbar_get_message_area(GTK_STATUSBAR(statusbar));
	parent = gtk_widget_get_parent(child);
	gtk_container_remove(GTK_CONTAINER(parent), g_object_ref(child));
	hbox = gtk_hbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(parent), hbox);
	gtk_widget_show(hbox);
	gtk_box_pack_start(GTK_BOX(hbox), child, TRUE, TRUE, 0);
	g_object_unref(child);	

	return statusbar;
}
/* object libre impuesto window constructed */
static void
libre_impuesto_window_constructed (GObject *object)
{
  GtkBox *box;
  GtkPaned *paned;
  GtkWidget *widget;
  GtkWidget *notebook;
  GtkWidget *background;
  LibreImpuesto *impuesto;
  LibreImpuestoWindow *impuesto_window = LIBRE_IMPUESTO_WINDOW (object);
  LibreImpuestoWindowPrivate *priv = impuesto_window->priv;

  impuesto = libre_impuesto_window_get_impuesto (impuesto_window);
  libre_impuesto_window_actions_init(impuesto_window);

  // Create a GtkBox container
  widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  gtk_container_add (GTK_CONTAINER (impuesto_window), widget);

  box = GTK_BOX (widget);

  widget = libre_impuesto_window_construct_menubar (impuesto_window);
  if (widget != NULL)
    gtk_box_pack_start (box, widget, FALSE, FALSE, 0);

  widget = libre_impuesto_window_construct_headerbar (impuesto_window);
  if (widget != NULL)
    gtk_box_pack_start (box, widget, FALSE, FALSE, 0);

  widget = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
  gtk_box_pack_start (box, widget, TRUE, TRUE, 0);

  paned = GTK_PANED (widget);


  widget = gtk_statusbar_new();
  g_object_bind_property ( impuesto_window, "statusbar-visible",
			   widget, "visible",
			   G_BINDING_SYNC_CREATE);
  gtk_statusbar_push (GTK_STATUSBAR (widget), 
		      1, PACKAGE_STRING);

  gtk_box_pack_start (box, widget, FALSE, FALSE, 0);

  widget = gtk_statusbar_get_message_area (GTK_STATUSBAR (widget));
  gtk_widget_set_halign (widget, GTK_ALIGN_END);
    
  widget = libre_impuesto_window_construct_sidebar (impuesto, impuesto_window);
  if (widget != NULL)
    gtk_paned_pack1 (paned, widget, FALSE, FALSE);

  background = gtk_drawing_area_new();
  gtk_widget_set_name (background, "libre-impuesto-background");
  g_signal_connect (background, "draw",
  G_CALLBACK (draw_area_cb), NULL);

  notebook = impuesto_notebook_new();
  priv->notebook = GTK_NOTEBOOK (notebook);
  g_object_set_data ( G_OBJECT(impuesto_window), "notebook", notebook);
  g_signal_connect ( GTK_NOTEBOOK (notebook), "tab-close-request",
		    G_CALLBACK (notebook_page_close_request_cb), impuesto_window);
  g_signal_connect ( GTK_NOTEBOOK (notebook), "switch-page",
		     G_CALLBACK (switch_page_cb), 
		     impuesto_window);

  widget = gtk_stack_new();
  priv->stack = GTK_STACK (widget);
  gtk_container_add_with_properties (GTK_CONTAINER (widget), background, 
				     "name", "background",
				     NULL);

  gtk_container_add_with_properties (GTK_CONTAINER (widget), notebook, 
				     "name", "notebook",
				     NULL);
  if (widget != NULL)
    gtk_paned_pack2 (paned, widget, TRUE, FALSE);

  gtk_widget_show_all (GTK_WIDGET(box));

  //gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), 0);
  gtk_application_add_window (GTK_APPLICATION (impuesto), 
			      GTK_WINDOW(impuesto_window));

  /* Chain up to parent's constructed() method. */
  G_OBJECT_CLASS (libre_impuesto_window_parent_class)->constructed (object);
}
Exemplo n.º 3
0
static void
nemo_status_bar_constructed (GObject *object)
{
    NemoStatusBar *bar = NEMO_STATUS_BAR (object);
    G_OBJECT_CLASS (nemo_status_bar_parent_class)->constructed (object);

    GtkToolbar *toolbar;
    GtkWidget *widget_box;
    GtkToolItem *item;
    GtkWidget *statusbar = gtk_statusbar_new ();
    GtkActionGroup *action_group;
    GtkStyleContext *context;

    bar->real_statusbar = statusbar;

    GtkIconSize size = gtk_icon_size_from_name (NEMO_STATUSBAR_ICON_SIZE_NAME);

    context = gtk_widget_get_style_context (GTK_WIDGET (bar));
    gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOOLBAR);
    gtk_container_set_border_width (GTK_CONTAINER (bar), 1);

    GtkWidget *button, *icon;

    button = gtk_toggle_button_new ();
    icon = gtk_image_new_from_icon_name ("sidebar-places-symbolic", size);
    gtk_button_set_image (GTK_BUTTON (button), icon);
    gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Show Places"));
    bar->places_button = button;
    gtk_box_pack_start (GTK_BOX (bar), button, FALSE, FALSE, 2);
    g_signal_connect (GTK_BUTTON (button), "clicked",
                      G_CALLBACK (action_places_toggle_callback), bar);

    button = gtk_toggle_button_new ();
    icon = gtk_image_new_from_icon_name ("sidebar-tree-symbolic", size);
    gtk_button_set_image (GTK_BUTTON (button), icon);
    gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Show Treeview"));
    bar->tree_button = button;
    gtk_box_pack_start (GTK_BOX (bar), button, FALSE, FALSE, 2);
    g_signal_connect (GTK_BUTTON (button), "clicked",
                      G_CALLBACK (action_treeview_toggle_callback), bar);

    GtkWidget *sep = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
    gtk_box_pack_start (GTK_BOX (bar), sep, FALSE, FALSE, 6);
    gtk_widget_show (sep);
    bar->separator = sep;

    button = gtk_button_new ();
    icon = gtk_image_new_from_icon_name ("sidebar-hide-symbolic", size);
    gtk_button_set_image (GTK_BUTTON (button), icon);
    gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Hide the Sidebar (F9)"));
    bar->hide_button = button;
    gtk_box_pack_start (GTK_BOX (bar), button, FALSE, FALSE, 2);
    g_signal_connect (GTK_BUTTON (button), "clicked",
                      G_CALLBACK (action_hide_sidebar_callback), bar);

    button = gtk_button_new ();
    icon = gtk_image_new_from_icon_name ("sidebar-show-symbolic", size);
    gtk_button_set_image (GTK_BUTTON (button), icon);
    gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Show the Sidebar (F9)"));
    bar->show_button = button;
    gtk_box_pack_start (GTK_BOX (bar), button, FALSE, FALSE, 2);
    g_signal_connect (GTK_BUTTON (button), "clicked",
                      G_CALLBACK (action_show_sidebar_callback), bar);

    gtk_box_pack_start (GTK_BOX (bar), statusbar, TRUE, TRUE, 10);

    GtkWidget *zoom_slider = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 6.0, 1.0);
    gtk_widget_set_tooltip_text (GTK_WIDGET (zoom_slider), _("Adjust zoom level"));
    bar->zoom_slider = zoom_slider;

    gtk_box_pack_start (GTK_BOX (bar), zoom_slider, FALSE, FALSE, 2);

    gtk_widget_set_size_request (GTK_WIDGET (zoom_slider), SLIDER_WIDTH, 0);
    gtk_scale_set_draw_value (GTK_SCALE (zoom_slider), FALSE);
    gtk_range_set_increments (GTK_RANGE (zoom_slider), 1.0, 1.0);
    gtk_range_set_round_digits (GTK_RANGE (zoom_slider), 0);

    gtk_widget_show_all (GTK_WIDGET (bar));

    g_signal_connect_object (NEMO_WINDOW (bar->window), "notify::show-sidebar",
                             G_CALLBACK (sidebar_state_changed_cb), bar, G_CONNECT_AFTER);

    g_signal_connect_object (NEMO_WINDOW (bar->window), "notify::sidebar-view-id",
                           G_CALLBACK (sidebar_type_changed_cb), bar, G_CONNECT_AFTER);

    g_signal_connect (GTK_RANGE (zoom_slider), "value-changed",
                      G_CALLBACK (on_slider_changed_cb), bar);

    GtkWidget *cont = gtk_statusbar_get_message_area (GTK_STATUSBAR (statusbar));

    GList *children = gtk_container_get_children (GTK_CONTAINER (cont));

    gtk_box_set_child_packing (GTK_BOX (cont),
                               GTK_WIDGET (children->data),
                               TRUE, FALSE, 10, GTK_PACK_START);

    nemo_status_bar_sync_button_states (bar);
}
Exemplo n.º 4
0
static void
ld_window_main_init (LdWindowMain *self)
{
	LdWindowMainPrivate *priv;
	GError *error;

	self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE
		(self, LD_TYPE_WINDOW_MAIN, LdWindowMainPrivate);

	/* Construct menu and toolbar. */
	priv->ui_manager = gtk_ui_manager_new ();

	g_signal_connect (priv->ui_manager, "connect-proxy",
		G_CALLBACK (on_ui_proxy_connected), self);
	g_signal_connect (priv->ui_manager, "disconnect-proxy",
		G_CALLBACK (on_ui_proxy_disconnected), self);

	priv->action_group = gtk_action_group_new ("MainActions");
	gtk_action_group_set_translation_domain
		(priv->action_group, GETTEXT_DOMAIN);
	gtk_action_group_add_actions
		(priv->action_group, wm_action_entries,
		G_N_ELEMENTS (wm_action_entries), self);
	gtk_action_group_add_toggle_actions
		(priv->action_group, wm_toggle_action_entries,
		G_N_ELEMENTS (wm_toggle_action_entries), self);
	gtk_ui_manager_insert_action_group (priv->ui_manager,
		priv->action_group, 0);

	error = NULL;
	gtk_ui_manager_add_ui_from_file
		(priv->ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
	if (error)
	{
		g_message ("building UI failed: %s", error->message);
		g_error_free (error);
	}

	priv->menu = gtk_ui_manager_get_widget (priv->ui_manager, "/MenuBar");
	priv->toolbar = gtk_ui_manager_get_widget (priv->ui_manager, "/Toolbar");

	/* Create the remaining widgets. */
	priv->library_view = ld_category_tree_view_new (NULL);

	priv->view = LD_DIAGRAM_VIEW (ld_diagram_view_new ());
	priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
		GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
	gtk_container_add (GTK_CONTAINER (priv->scrolled_window),
		GTK_WIDGET (priv->view));

	priv->statusbar = gtk_statusbar_new ();
	priv->statusbar_menu_context_id = gtk_statusbar_get_context_id
		(GTK_STATUSBAR (priv->statusbar), "menu");
	priv->statusbar_symbol_context_id = gtk_statusbar_get_context_id
		(GTK_STATUSBAR (priv->statusbar), "symbol");
	priv->statusbar_hint_context_id = gtk_statusbar_get_context_id
		(GTK_STATUSBAR (priv->statusbar), "hint");

	priv->lv_viewport = gtk_viewport_new (NULL, NULL);
	gtk_viewport_set_shadow_type
		(GTK_VIEWPORT (priv->lv_viewport), GTK_SHADOW_NONE);
	gtk_container_add (GTK_CONTAINER (priv->lv_viewport), priv->library_view);

	priv->lv_window = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->lv_window),
		GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
	gtk_container_add (GTK_CONTAINER (priv->lv_window), priv->lv_viewport);

	priv->paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
	gtk_paned_pack1 (GTK_PANED (priv->paned),
		priv->lv_window, FALSE, FALSE);
	gtk_paned_pack2 (GTK_PANED (priv->paned),
		priv->scrolled_window, TRUE, TRUE);
	gtk_paned_set_position (GTK_PANED (priv->paned), 180);

	/* Pack all widgets into the window. */
	priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	gtk_box_pack_start (GTK_BOX (priv->vbox), priv->menu, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (priv->vbox), priv->toolbar, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (priv->vbox), priv->paned, TRUE, TRUE, 0);
	gtk_box_pack_end (GTK_BOX (priv->vbox), priv->statusbar, FALSE, FALSE, 0);

	gtk_container_add (GTK_CONTAINER (self), priv->vbox);

	/* Configure the window. */
	g_signal_connect (self, "delete-event", G_CALLBACK (on_delete), NULL);

	gtk_window_add_accel_group (GTK_WINDOW (self),
		gtk_ui_manager_get_accel_group (priv->ui_manager));
	gtk_window_set_default_size (GTK_WINDOW (self), 640, 440);
	gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER);

	/* Initialize the backend. */
	priv->diagram = ld_diagram_new ();

	g_signal_connect_after (priv->diagram, "changed",
		G_CALLBACK (on_diagram_changed), self);
	g_signal_connect (priv->diagram, "notify::can-undo",
		G_CALLBACK (on_diagram_history_changed), self);
	g_signal_connect (priv->diagram, "notify::can-redo",
		G_CALLBACK (on_diagram_history_changed), self);
	g_signal_connect_after (priv->diagram, "selection-changed",
		G_CALLBACK (on_diagram_selection_changed), self);

	priv->library = ld_library_new ();
	load_library_directories (priv->library);

	ld_diagram_view_set_diagram (priv->view, priv->diagram);
	ld_diagram_view_set_library (priv->view, priv->library);

	ld_category_view_set_category (LD_CATEGORY_VIEW (priv->library_view),
		ld_library_get_root (priv->library));

	g_signal_connect_after (priv->library_view, "symbol-selected",
		G_CALLBACK (on_symbol_selected), self);
	g_signal_connect_after (priv->library_view, "symbol-deselected",
		G_CALLBACK (on_symbol_deselected), self);

	diagram_set_filename (self, NULL);

	priv->statusbar_hint_drag = gtk_statusbar_push
		(GTK_STATUSBAR (priv->statusbar), priv->statusbar_hint_context_id,
		_("Drag symbols from the library pane to add them to the diagram."));

	priv->zoom_label = gtk_label_new ("");
	gtk_label_set_single_line_mode (GTK_LABEL (priv->zoom_label), TRUE);
	gtk_box_pack_end (GTK_BOX (gtk_statusbar_get_message_area
		(GTK_STATUSBAR (priv->statusbar))), priv->zoom_label, FALSE, FALSE, 0);

	g_signal_connect (priv->view, "notify::zoom",
		G_CALLBACK (on_view_zoom_changed), self);
	g_object_notify (G_OBJECT (priv->view), "zoom");

	action_set_sensitive (self, "Undo", FALSE);
	action_set_sensitive (self, "Redo", FALSE);
	action_set_sensitive (self, "Delete", FALSE);
	action_set_sensitive (self, "NormalSize", FALSE);

	gtk_widget_grab_focus (GTK_WIDGET (priv->view));

	/* Realize the window. */
	gtk_widget_show_all (GTK_WIDGET (self));

	/* Set up GSettings. */
	priv->settings = g_settings_new ("org." PROJECT_NAME);

	g_settings_bind (priv->settings, "show-main-toolbar",
		gtk_action_group_get_action (priv->action_group,
			"MainToolbar"), "active", G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (priv->settings, "show-library-pane",
		gtk_action_group_get_action (priv->action_group,
			"LibraryPane"), "active", G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (priv->settings, "show-grid",
		gtk_action_group_get_action (priv->action_group,
			"ShowGrid"), "active", G_SETTINGS_BIND_DEFAULT);
}