static void gwy_sensitivity_group_debug(GwySensitivityGroup *sensgroup) { SensList *senslist; GtkWidget *widget, *w; GList *l, *ll; const gchar *s; gint nw = 0; g_printerr("SENS GROUP %p\n", sensgroup); for (ll = sensgroup->lists; ll; ll = g_list_next(ll)) { g_printerr(" LIST: "); senslist = (SensList*)ll->data; g_printerr("mask=%04x, dirty=%d, parent=%p\n", senslist->mask, senslist->dirty, senslist->parent); for (l = senslist->widgets; l; l = g_list_next(l)) { nw++; g_printerr(" WIDGET: "); widget = GTK_WIDGET(l->data); g_printerr("%s ", g_type_name(G_TYPE_FROM_INSTANCE(widget))); if (GTK_IS_BUTTON(widget)) { s = gtk_button_get_label(GTK_BUTTON(widget)); if (s) g_printerr("<%s> ", s); else { w = gtk_bin_get_child(GTK_BIN(widget)); if (w) { g_printerr("%s ", g_type_name(G_TYPE_FROM_INSTANCE(w))); if (GTK_IS_LABEL(w)) { s = gtk_label_get_text(GTK_LABEL(w)); if (s) g_printerr("<%s> ", s); } else if (GTK_IS_IMAGE(w)) { s = NULL; gtk_image_get_stock(GTK_IMAGE(w), (gchar**)&s, NULL); if (s) g_printerr("<%s> ", s); } } } } else if (GTK_IS_MENU_ITEM(widget)) { w = gtk_bin_get_child(GTK_BIN(widget)); if (w) { g_printerr("%s ", g_type_name(G_TYPE_FROM_INSTANCE(w))); if (GTK_IS_LABEL(w)) { s = gtk_label_get_text(GTK_LABEL(w)); if (s) g_printerr("<%s> ", s); } } } g_printerr("\n"); } } g_printerr(" nwidgets=%d, ref_count=%d\n", nw, G_OBJECT(sensgroup)->ref_count); }
static GdkPixbuf * get_pixbuf_from_icon(SexyIconEntry *entry, SexyIconEntryPosition icon_pos) { GdkPixbuf *pixbuf = NULL; gchar *stock_id; SexyIconInfo *icon_info = &entry->priv->icons[icon_pos]; GtkIconSize size; switch (gtk_image_get_storage_type(GTK_IMAGE(icon_info->icon))) { case GTK_IMAGE_PIXBUF: pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(icon_info->icon)); g_object_ref(pixbuf); break; case GTK_IMAGE_STOCK: gtk_image_get_stock(GTK_IMAGE(icon_info->icon), &stock_id, &size); pixbuf = gtk_widget_render_icon(GTK_WIDGET(entry), stock_id, size, NULL); break; default: return NULL; } return pixbuf; }
static void pidgin_mini_dialog_get_property(GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PidginMiniDialog *self = PIDGIN_MINI_DIALOG(object); PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self); switch (property_id) { case PROP_TITLE: g_value_set_string(value, gtk_label_get_text(priv->title)); break; case PROP_DESCRIPTION: g_value_set_string(value, gtk_label_get_text(priv->desc)); break; case PROP_ICON_NAME: { gchar *icon_name = NULL; GtkIconSize size; gtk_image_get_stock(priv->icon, &icon_name, &size); g_value_set_string(value, icon_name); break; } case PROP_CUSTOM_ICON: g_value_set_object(value, gtk_image_get_pixbuf(priv->icon)); break; case PROP_ENABLE_DESCRIPTION_MARKUP: g_value_set_boolean(value, priv->enable_description_markup); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static GtkWidget * clone_image_menu_size (GtkImage *image) { GtkImageType storage_type = gtk_image_get_storage_type (image); if (storage_type == GTK_IMAGE_STOCK) { gchar *stock_id; GtkWidget *widget; G_GNUC_BEGIN_IGNORE_DEPRECATIONS; gtk_image_get_stock (image, &stock_id, NULL); widget = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU); G_GNUC_END_IGNORE_DEPRECATIONS; return widget; } else if (storage_type == GTK_IMAGE_ICON_NAME) { const gchar *icon_name; gtk_image_get_icon_name (image, &icon_name, NULL); return gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); } else if (storage_type == GTK_IMAGE_ICON_SET) { GtkWidget *widget; GtkIconSet *icon_set; G_GNUC_BEGIN_IGNORE_DEPRECATIONS; gtk_image_get_icon_set (image, &icon_set, NULL); widget = gtk_image_new_from_icon_set (icon_set, GTK_ICON_SIZE_MENU); G_GNUC_END_IGNORE_DEPRECATIONS; return widget; } else if (storage_type == GTK_IMAGE_GICON) { GIcon *icon; gtk_image_get_gicon (image, &icon, NULL); return gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_MENU); } else if (storage_type == GTK_IMAGE_PIXBUF) { gint width, height; if (gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &width, &height)) { GdkPixbuf *src_pixbuf, *dest_pixbuf; GtkWidget *cloned_image; src_pixbuf = gtk_image_get_pixbuf (image); dest_pixbuf = gdk_pixbuf_scale_simple (src_pixbuf, width, height, GDK_INTERP_BILINEAR); cloned_image = gtk_image_new_from_pixbuf (dest_pixbuf); g_object_unref (dest_pixbuf); return cloned_image; } } return NULL; }
static void event_box_realize_cb (GtkWidget *widget, GtkImage *icon) { GtkImageType type; set_drag_cursor (widget); type = gtk_image_get_storage_type (icon); if (type == GTK_IMAGE_STOCK) { gchar *stock_id; GdkPixbuf *pixbuf; gtk_image_get_stock (icon, &stock_id, NULL); pixbuf = gtk_widget_render_icon (widget, stock_id, GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); gtk_drag_source_set_icon_pixbuf (widget, pixbuf); g_object_unref (pixbuf); } else if (type == GTK_IMAGE_ICON_NAME) { const gchar *icon_name; GdkScreen *screen; GtkIconTheme *icon_theme; GtkSettings *settings; gint width, height; GdkPixbuf *pixbuf; gtk_image_get_icon_name (icon, &icon_name, NULL); screen = gtk_widget_get_screen (widget); icon_theme = gtk_icon_theme_get_for_screen (screen); settings = gtk_settings_get_for_screen (screen); if (!gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_LARGE_TOOLBAR, &width, &height)) { width = height = 24; } pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name, MIN (width, height), 0, NULL); if (G_UNLIKELY (!pixbuf)) return; gtk_drag_source_set_icon_pixbuf (widget, pixbuf); g_object_unref (pixbuf); } else if (type == GTK_IMAGE_PIXBUF) { GdkPixbuf *pixbuf = gtk_image_get_pixbuf (icon); gtk_drag_source_set_icon_pixbuf (widget, pixbuf); } }
void gimp_editor_set_box_style (GimpEditor *editor, GtkBox *box) { GtkIconSize button_icon_size; gint button_spacing; GtkReliefStyle button_relief; GList *children; GList *list; g_return_if_fail (GIMP_IS_EDITOR (editor)); g_return_if_fail (GTK_IS_BOX (box)); gtk_widget_style_get (GTK_WIDGET (editor), "button-icon-size", &button_icon_size, "button-spacing", &button_spacing, "button-relief", &button_relief, NULL); gtk_box_set_spacing (box, button_spacing); children = gtk_container_get_children (GTK_CONTAINER (box)); for (list = children; list; list = g_list_next (list)) { if (GTK_IS_BUTTON (list->data)) { GtkWidget *child; gtk_button_set_relief (GTK_BUTTON (list->data), button_relief); child = gtk_bin_get_child (GTK_BIN (list->data)); if (GTK_IS_IMAGE (child)) { GtkIconSize old_size; gchar *stock_id; gtk_image_get_stock (GTK_IMAGE (child), &stock_id, &old_size); if (button_icon_size != old_size) gtk_image_set_from_stock (GTK_IMAGE (child), stock_id, button_icon_size); } } } g_list_free (children); }
static GdkPixbuf * get_image_pixbuf (GtkImage *image) { gchar *stock_id; GtkIconSize size; switch (gtk_image_get_storage_type (image)) { case GTK_IMAGE_PIXBUF: return g_object_ref (gtk_image_get_pixbuf (image)); case GTK_IMAGE_STOCK: gtk_image_get_stock (image, &stock_id, &size); return gtk_widget_render_icon (GTK_WIDGET (image), stock_id, size, NULL); default: g_warning ("Image storage type %d not handled", gtk_image_get_storage_type (image)); return NULL; } }
static const gchar * gtk_image_accessible_get_name (AtkObject *accessible) { GtkWidget* widget; GtkImage *image; GtkImageAccessible *image_accessible; GtkStockItem stock_item; gchar *stock_id; const gchar *name; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) return NULL; name = ATK_OBJECT_CLASS (_gtk_image_accessible_parent_class)->get_name (accessible); if (name) return name; image = GTK_IMAGE (widget); image_accessible = GTK_IMAGE_ACCESSIBLE (accessible); g_free (image_accessible->stock_name); image_accessible->stock_name = NULL; if (gtk_image_get_storage_type (image) != GTK_IMAGE_STOCK) return NULL; gtk_image_get_stock (image, &stock_id, NULL); if (stock_id == NULL) return NULL; if (!gtk_stock_lookup (stock_id, &stock_item)) return NULL; image_accessible->stock_name = _gtk_toolbar_elide_underscores (stock_item.label); return image_accessible->stock_name; }
static void event_box_realize_cb (GtkWidget *widget, GtkImage *icon) { GtkImageType type; set_drag_cursor (widget); type = gtk_image_get_storage_type (icon); if (type == GTK_IMAGE_STOCK) { gchar *stock_id; GdkPixbuf *pixbuf; gtk_image_get_stock (icon, &stock_id, NULL); pixbuf = gtk_widget_render_icon (widget, stock_id, GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); gtk_drag_source_set_icon_pixbuf (widget, pixbuf); g_object_unref (pixbuf); } else if (type == GTK_IMAGE_PIXBUF) { GdkPixbuf *pixbuf = gtk_image_get_pixbuf (icon); gtk_drag_source_set_icon_pixbuf (widget, pixbuf); } }
void brasero_file_chooser_customize (GtkWidget *widget, gpointer null_data) { /* we explore everything until we reach a treeview (there are two) */ if (GTK_IS_TREE_VIEW (widget)) { GtkTargetList *list; GdkAtom target; gboolean found; guint num; list = gtk_drag_source_get_target_list (widget); target = gdk_atom_intern ("text/uri-list", TRUE); found = gtk_target_list_find (list, target, &num); /* FIXME: should we unref them ? apparently not according to * the warning messages we get if we do */ if (found && gtk_tree_selection_get_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (widget))) == GTK_SELECTION_MULTIPLE) { GtkTreeModel *model; /* This is done because GtkFileChooser does not use a * GtkListStore or GtkTreeStore any more. */ egg_tree_multi_drag_add_drag_support (GTK_TREE_VIEW (widget)); model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); if (model) { GType type; type = G_OBJECT_TYPE (model); brasero_enable_multi_DND_for_model_type (type); } else g_signal_connect (widget, "notify::model", G_CALLBACK (brasero_file_chooser_notify_model), NULL); } } else if (GTK_IS_BUTTON (widget)) { GtkWidget *image; gchar *stock_id = NULL; image = gtk_button_get_image (GTK_BUTTON (widget)); if (!GTK_IS_IMAGE (image)) return; gtk_image_get_stock (GTK_IMAGE (image), &stock_id, NULL); if (stock_id && (!strcmp (stock_id,GTK_STOCK_ADD) || !strcmp (stock_id, GTK_STOCK_REMOVE))) { GtkRequisition request; gint width; GtkWidget *parent; /* This is to avoid having the left part too small */ parent = gtk_widget_get_parent (widget); gtk_widget_get_requisition (parent, &request); width = request.width; gtk_widget_get_preferred_size (parent, &request, NULL); if (request.width >= width) gtk_widget_set_size_request (parent, request.width, request.height); gtk_widget_hide (widget); } } else if (GTK_IS_CONTAINER (widget)) { if (GTK_IS_PANED (widget)) { GtkWidget *left; /* This is to allow the left part to be shrunk as much * as the user want. */ left = gtk_paned_get_child1 (GTK_PANED (widget)); g_object_ref (left); gtk_container_remove (GTK_CONTAINER (widget), left); gtk_paned_pack1 (GTK_PANED (widget), left, TRUE, TRUE); g_object_unref (left); g_signal_connect (widget, "size-allocate", G_CALLBACK (brasero_file_chooser_allocation_changed), NULL); } gtk_container_foreach (GTK_CONTAINER (widget), brasero_file_chooser_customize, NULL); } }