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); }
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); }
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); }