static void glade_gtk_header_bar_parse_finished (GladeProject * project, GObject * object) { GladeWidget *gbox; gbox = glade_widget_get_from_gobject (object); glade_widget_property_set (gbox, "size", glade_gtk_header_bar_get_num_children (object)); glade_widget_property_set (gbox, "use-custom-title", gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)) != NULL); }
void ide_workbench_header_bar_focus_search (IdeWorkbenchHeaderBar *self) { GtkWidget *entry; g_return_if_fail (IDE_IS_WORKBENCH_HEADER_BAR (self)); entry = gtk_header_bar_get_custom_title (GTK_HEADER_BAR (self)); if (GTK_IS_ENTRY (entry)) gtk_widget_grab_focus (GTK_WIDGET (entry)); }
static void glade_gtk_header_bar_set_size (GObject * object, const GValue * value) { GList *l, *next, *children; GtkWidget *child; guint new_size, old_size, i; g_return_if_fail (GTK_IS_HEADER_BAR (object)); d(g_message ("Setting size to %d", g_value_get_int (value))); if (glade_util_object_is_loading (object)) return; children = gtk_container_get_children (GTK_CONTAINER (object)); l = children; while (l) { next = l->next; if (l->data == gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)) || (!glade_widget_get_from_gobject (l->data) && !GLADE_IS_PLACEHOLDER (l->data))) children = g_list_delete_link (children, l); l = next; } old_size = g_list_length (children); new_size = g_value_get_int (value); if (old_size == new_size) { g_list_free (children); return; } for (i = old_size; i < new_size; i++) { GtkWidget *placeholder = glade_placeholder_new (); gtk_header_bar_pack_start (GTK_HEADER_BAR (object), placeholder); } for (l = g_list_last (children); l && old_size > new_size; l = l->prev) { child = l->data; if (glade_widget_get_from_gobject (child) || !GLADE_IS_PLACEHOLDER (child)) continue; gtk_container_remove (GTK_CONTAINER (object), child); old_size--; } g_list_free (children); }
static gint glade_gtk_header_bar_get_num_children (GObject *object) { ChildrenData data; data.parent = GTK_CONTAINER (object); data.custom_title = gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)); data.include_placeholders = TRUE; data.count = 0; gtk_container_forall (data.parent, count_children, &data); return data.count; }
static void change_title (GtkButton *button, gpointer data) { GtkWidget *headerbar = GTK_WIDGET (data); if (gtk_header_bar_get_custom_title (GTK_HEADER_BAR (headerbar)) == NULL) { gtk_header_bar_set_custom_title (GTK_HEADER_BAR (headerbar), gtk_check_button_new_with_label ("Middle")); } else { gtk_header_bar_set_custom_title (GTK_HEADER_BAR (headerbar), NULL); gtk_header_bar_set_title (GTK_HEADER_BAR (headerbar), "Middle"); } }
void glade_gtk_header_bar_set_use_custom_title (GObject *object, gboolean use_custom_title) { GladeWidget *gwidget = glade_widget_get_from_gobject (object); GtkWidget *child; if (use_custom_title) { child = gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)); if (!child) { child = glade_placeholder_new (); g_object_set_data (G_OBJECT (child), "special-child-type", "title"); } } else child = NULL; gtk_header_bar_set_custom_title (GTK_HEADER_BAR (object), child); if (GLADE_IS_PLACEHOLDER (child)) { GList *list, *l; list = glade_placeholder_packing_actions (GLADE_PLACEHOLDER (child)); for (l = list; l; l = l->next) { GladeWidgetAction *gwa = l->data; if (!strcmp (glade_widget_action_get_class (gwa)->id, "remove_slot")) glade_widget_action_set_visible (gwa, FALSE); } } if (use_custom_title) { glade_widget_property_set_sensitive (gwidget, "title", FALSE, TITLE_DISABLED_MESSAGE); glade_widget_property_set_sensitive (gwidget, "subtitle", FALSE, TITLE_DISABLED_MESSAGE); glade_widget_property_set_sensitive (gwidget, "has-subtitle", FALSE, TITLE_DISABLED_MESSAGE); } else { glade_widget_property_set_sensitive (gwidget, "title", TRUE, NULL); glade_widget_property_set_sensitive (gwidget, "subtitle", TRUE, NULL); glade_widget_property_set_sensitive (gwidget, "has-subtitle", TRUE, NULL); } }
static gboolean glade_gtk_header_bar_verify_size (GObject *object, const GValue *value) { gint new_size; ChildrenData data; new_size = g_value_get_int (value); data.parent = GTK_CONTAINER (object); data.custom_title = gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)); data.include_placeholders = FALSE; data.count = 0; gtk_container_forall (data.parent, count_children, &data); return data.count <= new_size; }
void glade_gtk_header_bar_get_property (GladeWidgetAdaptor * adaptor, GObject * object, const gchar * id, GValue * value) { if (!strcmp (id, "use-custom-title")) { g_value_reset (value); g_value_set_boolean (value, gtk_header_bar_get_custom_title (GTK_HEADER_BAR (object)) != NULL); } else if (!strcmp (id, "size")) { g_value_reset (value); g_value_set_int (value, glade_gtk_header_bar_get_num_children (object)); } else GWA_GET_CLASS (GTK_TYPE_CONTAINER)->get_property (adaptor, object, id, value); }