void documents_recreate_preview_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContext *context; GimpContainer *container; GimpImagefile *imagefile; context = gimp_container_view_get_context (editor->view); container = gimp_container_view_get_container (editor->view); imagefile = gimp_context_get_imagefile (context); if (imagefile && gimp_container_have (container, GIMP_OBJECT (imagefile))) { GError *error = NULL; if (! gimp_imagefile_create_thumbnail (imagefile, context, NULL, context->gimp->config->thumbnail_size, FALSE, &error)) { gimp_message_literal (context->gimp, NULL , GIMP_MESSAGE_ERROR, error->message); g_clear_error (&error); } } }
void documents_raise_or_open_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContext *context; GimpContainer *container; GimpImagefile *imagefile; context = gimp_container_view_get_context (editor->view); container = gimp_container_view_get_container (editor->view); imagefile = gimp_context_get_imagefile (context); if (imagefile && gimp_container_have (container, GIMP_OBJECT (imagefile))) { RaiseClosure closure; closure.name = gimp_object_get_name (imagefile); closure.found = FALSE; gimp_container_foreach (context->gimp->displays, (GFunc) documents_raise_display, &closure); if (! closure.found) documents_open_image (GTK_WIDGET (editor), context, imagefile); } }
void images_raise_views_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContainer *container; GimpContext *context; GimpImage *image; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); image = gimp_context_get_image (context); if (image && gimp_container_have (container, GIMP_OBJECT (image))) { GList *list; for (list = gimp_get_display_iter (image->gimp); list; list = g_list_next (list)) { GimpDisplay *display = list->data; if (gimp_display_get_image (display) == image) gimp_display_shell_present (gimp_display_get_shell (display)); } } }
void buffers_paste_as_new_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContainer *container; GimpContext *context; GimpBuffer *buffer; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); buffer = gimp_context_get_buffer (context); if (buffer && gimp_container_have (container, GIMP_OBJECT (buffer))) { GimpImage *image = gimp_context_get_image (context); if (image) { GimpImage *new_image; new_image = gimp_image_new_from_buffer (image->gimp, image, buffer); gimp_create_display (image->gimp, new_image, GIMP_UNIT_PIXEL, 1.0); g_object_unref (new_image); } } }
static gboolean gimp_vectors_is_attached (const GimpItem *item) { GimpImage *image = gimp_item_get_image (item); return (GIMP_IS_IMAGE (image) && gimp_container_have (gimp_image_get_vectors (image), GIMP_OBJECT (item))); }
static void gimp_displays_image_dirty_callback (GimpImage *image, GimpDirtyMask dirty_mask, GimpContainer *container) { if (image->dirty && image->disp_count > 0 && ! gimp_container_have (container, GIMP_OBJECT (image))) gimp_container_add (container, GIMP_OBJECT (image)); }
static void gimp_container_editor_real_context_item (GimpContainerEditor *editor, GimpViewable *viewable) { GimpContainer *container = gimp_container_view_get_container (editor->view); if (viewable && gimp_container_have (container, GIMP_OBJECT (viewable))) { gimp_editor_popup_menu (GIMP_EDITOR (editor->view), NULL, NULL); } }
static void gimp_tagged_container_tag_removed (GimpTagged *tagged, GimpTag *tag, GimpTaggedContainer *tagged_container) { gimp_tagged_container_unref_tag (tagged_container, tag); if (! gimp_tagged_container_object_matches (tagged_container, GIMP_OBJECT (tagged)) && gimp_container_have (GIMP_CONTAINER (tagged_container), GIMP_OBJECT (tagged))) { gimp_container_remove (GIMP_CONTAINER (tagged_container), GIMP_OBJECT (tagged)); } }
static void buffers_paste (GimpBufferView *view, gboolean paste_into) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (view); GimpContainer *container; GimpContext *context; GimpBuffer *buffer; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); buffer = gimp_context_get_buffer (context); if (buffer && gimp_container_have (container, GIMP_OBJECT (buffer))) { GimpDisplay *display = gimp_context_get_display (context); GimpImage *image = NULL; gint x = -1; gint y = -1; gint width = -1; gint height = -1; if (display) { GimpDisplayShell *shell = gimp_display_get_shell (display); gimp_display_shell_untransform_viewport (shell, &x, &y, &width, &height); image = gimp_display_get_image (display); } else { image = gimp_context_get_image (context); } if (image) { gimp_edit_paste (image, gimp_image_get_active_drawable (image), buffer, paste_into, x, y, width, height); gimp_image_flush (image); } } }
static void gimp_data_factory_view_activate_item (GimpContainerEditor *editor, GimpViewable *viewable) { GimpDataFactoryView *view = GIMP_DATA_FACTORY_VIEW (editor); GimpData *data = GIMP_DATA (viewable); if (GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item) GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item (editor, viewable); if (data && gimp_container_have (view->factory->container, GIMP_OBJECT (data))) { if (view->edit_button && GTK_WIDGET_SENSITIVE (view->edit_button)) gtk_button_clicked (GTK_BUTTON (view->edit_button)); } }
static void gimp_document_view_activate_item (GimpContainerEditor *editor, GimpViewable *viewable) { GimpDocumentView *view = GIMP_DOCUMENT_VIEW (editor); GimpContainer *container; if (GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item) GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item (editor, viewable); container = gimp_container_view_get_container (editor->view); if (viewable && gimp_container_have (container, GIMP_OBJECT (viewable))) { gtk_button_clicked (GTK_BUTTON (view->open_button)); } }
void gimp_plug_in_cleanup (GimpPlugIn *plug_in, GimpPlugInProcFrame *proc_frame) { GList *list; g_return_if_fail (GIMP_IS_PLUG_IN (plug_in)); g_return_if_fail (proc_frame != NULL); for (list = proc_frame->cleanups; list; list = g_list_next (list)) { GimpPlugInCleanupImage *cleanup = list->data; GimpImage *image = cleanup->image; if (! gimp_container_have (plug_in->manager->gimp->images, (GimpObject *) image)) continue; if (image->pushing_undo_group == GIMP_UNDO_GROUP_NONE) continue; if (cleanup->undo_group_count != image->group_count) { GimpProcedure *proc = proc_frame->procedure; g_message ("Plug-In '%s' left image undo in inconsistent state, " "closing open undo groups.", gimp_plug_in_procedure_get_label (GIMP_PLUG_IN_PROCEDURE (proc))); while (image->pushing_undo_group != GIMP_UNDO_GROUP_NONE && cleanup->undo_group_count < image->group_count) { if (! gimp_image_undo_group_end (image)) break; } } g_slice_free (GimpPlugInCleanupImage, cleanup); } g_list_free (proc_frame->cleanups); proc_frame->cleanups = NULL; }
static void gimp_template_view_activate_item (GimpContainerEditor *editor, GimpViewable *viewable) { GimpTemplateView *view = GIMP_TEMPLATE_VIEW (editor); GimpContainer *container; GimpContext *context; if (GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item) GIMP_CONTAINER_EDITOR_CLASS (parent_class)->activate_item (editor, viewable); container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); if (viewable && gimp_container_have (container, GIMP_OBJECT (viewable))) { gtk_button_clicked (GTK_BUTTON (view->create_button)); } }
void images_new_view_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContainer *container; GimpContext *context; GimpImage *image; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); image = gimp_context_get_image (context); if (image && gimp_container_have (container, GIMP_OBJECT (image))) { gimp_create_display (image->gimp, image, GIMP_UNIT_PIXEL, 1.0); } }
void images_delete_image_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContainer *container; GimpContext *context; GimpImage *image; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); image = gimp_context_get_image (context); if (image && gimp_container_have (container, GIMP_OBJECT (image))) { if (gimp_image_get_display_count (image) == 0) g_object_unref (image); } }
void documents_file_open_dialog_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContext *context; GimpContainer *container; GimpImagefile *imagefile; context = gimp_container_view_get_context (editor->view); container = gimp_container_view_get_container (editor->view); imagefile = gimp_context_get_imagefile (context); if (imagefile && gimp_container_have (container, GIMP_OBJECT (imagefile))) { file_file_open_dialog (context->gimp, gimp_imagefile_get_file (imagefile), GTK_WIDGET (editor)); } }
void documents_recreate_preview_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContext *context; GimpContainer *container; GimpImagefile *imagefile; context = gimp_container_view_get_context (editor->view); container = gimp_container_view_get_container (editor->view); imagefile = gimp_context_get_imagefile (context); if (imagefile && gimp_container_have (container, GIMP_OBJECT (imagefile))) { gimp_imagefile_create_thumbnail (imagefile, context, NULL, context->gimp->config->thumbnail_size, FALSE); } }
gboolean gimp_container_tree_view_real_drop_possible (GimpContainerTreeView *tree_view, GimpDndType src_type, GimpViewable *src_viewable, GimpViewable *dest_viewable, GtkTreePath *drop_path, GtkTreeViewDropPosition drop_pos, GtkTreeViewDropPosition *return_drop_pos, GdkDragAction *return_drag_action) { GimpContainerView *view = GIMP_CONTAINER_VIEW (tree_view); GimpContainer *container = gimp_container_view_get_container (view); GimpContainer *src_container = NULL; GimpContainer *dest_container = NULL; gint src_index = -1; gint dest_index = -1; if (src_viewable) { GimpViewable *parent = gimp_viewable_get_parent (src_viewable); if (parent) src_container = gimp_viewable_get_children (parent); else if (gimp_container_have (container, GIMP_OBJECT (src_viewable))) src_container = container; if (src_container) src_index = gimp_container_get_child_index (src_container, GIMP_OBJECT (src_viewable)); } if (dest_viewable) { GimpViewable *parent; /* dropping on the lower third of a group item drops into that group */ if (drop_pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER && gimp_viewable_get_children (dest_viewable)) { parent = dest_viewable; } else { parent = gimp_viewable_get_parent (dest_viewable); } if (parent) dest_container = gimp_viewable_get_children (parent); else if (gimp_container_have (container, GIMP_OBJECT (dest_viewable))) dest_container = container; if (parent == dest_viewable) dest_index = 0; else dest_index = gimp_container_get_child_index (dest_container, GIMP_OBJECT (dest_viewable)); } if (src_viewable && g_type_is_a (G_TYPE_FROM_INSTANCE (src_viewable), gimp_container_get_children_type (container))) { if (src_viewable == dest_viewable) return FALSE; if (src_index == -1 || dest_index == -1) return FALSE; /* don't allow dropping a parent node onto one of its descendants */ if (gimp_viewable_is_ancestor (src_viewable, dest_viewable)) return FALSE; } if (src_container == dest_container) { if (drop_pos == GTK_TREE_VIEW_DROP_BEFORE) { if (dest_index == (src_index + 1)) return FALSE; } else if (drop_pos == GTK_TREE_VIEW_DROP_AFTER) { if (dest_index == (src_index - 1)) return FALSE; } } if (return_drop_pos) *return_drop_pos = drop_pos; if (return_drag_action) { if (src_viewable && g_type_is_a (G_TYPE_FROM_INSTANCE (src_viewable), gimp_container_get_children_type (container))) *return_drag_action = GDK_ACTION_MOVE; else *return_drag_action = GDK_ACTION_COPY; } return TRUE; }