GtkWidget * gimp_view_new_by_types (GimpContext *context, GType view_type, GType viewable_type, gint size, gint border_width, gboolean is_popup) { GimpViewRenderer *renderer; GimpView *view; g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (g_type_is_a (view_type, GIMP_TYPE_VIEW), NULL); g_return_val_if_fail (g_type_is_a (viewable_type, GIMP_TYPE_VIEWABLE), NULL); g_return_val_if_fail (size > 0 && size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, NULL); g_return_val_if_fail (border_width >= 0 && border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, NULL); renderer = gimp_view_renderer_new (context, viewable_type, size, border_width, is_popup); g_return_val_if_fail (renderer != NULL, NULL); view = g_object_new (view_type, NULL); g_signal_connect (renderer, "update", G_CALLBACK (gimp_view_update_callback), view); view->renderer = renderer; return GTK_WIDGET (view); }
static void gimp_container_combo_box_set (GimpContainerComboBox *combo_box, GtkTreeIter *iter, GimpViewable *viewable) { GimpContainerView *view = GIMP_CONTAINER_VIEW (combo_box); GtkTreeModel *model; GimpViewRenderer *renderer; gchar *name; gint view_size; gint border_width; model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)); view_size = gimp_container_view_get_view_size (view, &border_width); name = gimp_viewable_get_description (viewable, NULL); renderer = gimp_view_renderer_new (gimp_container_view_get_context (view), G_TYPE_FROM_INSTANCE (viewable), view_size, border_width, FALSE); gimp_view_renderer_set_viewable (renderer, viewable); gimp_view_renderer_remove_idle (renderer); g_signal_connect (renderer, "update", G_CALLBACK (gimp_container_combo_box_renderer_update), view); gtk_list_store_set (GTK_LIST_STORE (model), iter, COLUMN_RENDERER, renderer, COLUMN_NAME, name, -1); g_object_unref (renderer); g_free (name); }
static void gimp_component_editor_create_components (GimpComponentEditor *editor) { GimpImage *image = GIMP_IMAGE_EDITOR (editor)->image; gint n_components = 0; GimpChannelType components[MAX_CHANNELS]; GEnumClass *enum_class; gint i; switch (gimp_image_base_type (image)) { case GIMP_RGB: n_components = 3; components[0] = GIMP_RED_CHANNEL; components[1] = GIMP_GREEN_CHANNEL; components[2] = GIMP_BLUE_CHANNEL; break; case GIMP_GRAY: n_components = 1; components[0] = GIMP_GRAY_CHANNEL; break; case GIMP_INDEXED: n_components = 1; components[0] = GIMP_INDEXED_CHANNEL; break; } if (gimp_image_has_alpha (image)) components[n_components++] = GIMP_ALPHA_CHANNEL; enum_class = g_type_class_ref (GIMP_TYPE_CHANNEL_TYPE); for (i = 0; i < n_components; i++) { GimpViewRenderer *renderer; GtkTreeIter iter; GEnumValue *enum_value; const gchar *desc; gboolean visible; visible = gimp_image_get_component_visible (image, components[i]); renderer = gimp_view_renderer_new (GIMP_IMAGE_EDITOR (editor)->context, G_TYPE_FROM_INSTANCE (image), editor->view_size, 1, FALSE); gimp_view_renderer_set_viewable (renderer, GIMP_VIEWABLE (image)); gimp_view_renderer_remove_idle (renderer); GIMP_VIEW_RENDERER_IMAGE (renderer)->channel = components[i]; g_signal_connect (renderer, "update", G_CALLBACK (gimp_component_editor_renderer_update), editor); enum_value = g_enum_get_value (enum_class, components[i]); desc = gimp_enum_value_get_desc (enum_class, enum_value); gtk_list_store_append (GTK_LIST_STORE (editor->model), &iter); gtk_list_store_set (GTK_LIST_STORE (editor->model), &iter, COLUMN_CHANNEL, components[i], COLUMN_VISIBLE, visible, COLUMN_RENDERER, renderer, COLUMN_NAME, desc, -1); g_object_unref (renderer); if (gimp_image_get_component_active (image, components[i])) gtk_tree_selection_select_iter (editor->selection, &iter); } g_type_class_unref (enum_class); }