mirror of https://github.com/GNOME/gimp.git
app: change GimpImageFile and GimpDocumentList to speak GFile
This commit is contained in:
parent
53fe11b6dd
commit
3f52828896
|
@ -62,7 +62,7 @@ gimp_gui_init (Gimp *gimp)
|
|||
gimp->gui.progress_free = NULL;
|
||||
gimp->gui.pdb_dialog_set = NULL;
|
||||
gimp->gui.pdb_dialog_close = NULL;
|
||||
gimp->gui.recent_list_add_uri = NULL;
|
||||
gimp->gui.recent_list_add_file = NULL;
|
||||
gimp->gui.recent_list_load = NULL;
|
||||
}
|
||||
|
||||
|
@ -471,15 +471,15 @@ gimp_pdb_dialog_close (Gimp *gimp,
|
|||
}
|
||||
|
||||
gboolean
|
||||
gimp_recent_list_add_uri (Gimp *gimp,
|
||||
const gchar *uri,
|
||||
const gchar *mime_type)
|
||||
gimp_recent_list_add_file (Gimp *gimp,
|
||||
GFile *file,
|
||||
const gchar *mime_type)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE);
|
||||
g_return_val_if_fail (uri != NULL, FALSE);
|
||||
g_return_val_if_fail (G_IS_FILE (file), FALSE);
|
||||
|
||||
if (gimp->gui.recent_list_add_uri)
|
||||
return gimp->gui.recent_list_add_uri (gimp, uri, mime_type);
|
||||
if (gimp->gui.recent_list_add_file)
|
||||
return gimp->gui.recent_list_add_file (gimp, file, mime_type);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -88,8 +88,8 @@ struct _GimpGui
|
|||
gboolean (* pdb_dialog_close) (Gimp *gimp,
|
||||
GimpContainer *container,
|
||||
const gchar *callback_name);
|
||||
gboolean (* recent_list_add_uri) (Gimp *gimp,
|
||||
const gchar *uri,
|
||||
gboolean (* recent_list_add_file) (Gimp *gimp,
|
||||
GFile *file,
|
||||
const gchar *mime_type);
|
||||
void (* recent_list_load) (Gimp *gimp);
|
||||
|
||||
|
@ -166,8 +166,8 @@ gboolean gimp_pdb_dialog_set (Gimp *gimp,
|
|||
gboolean gimp_pdb_dialog_close (Gimp *gimp,
|
||||
GimpContainer *container,
|
||||
const gchar *callback_name);
|
||||
gboolean gimp_recent_list_add_uri (Gimp *gimp,
|
||||
const gchar *uri,
|
||||
gboolean gimp_recent_list_add_file (Gimp *gimp,
|
||||
GFile *file,
|
||||
const gchar *mime_type);
|
||||
void gimp_recent_list_load (Gimp *gimp);
|
||||
|
||||
|
|
|
@ -63,31 +63,36 @@ gimp_document_list_new (Gimp *gimp)
|
|||
}
|
||||
|
||||
GimpImagefile *
|
||||
gimp_document_list_add_uri (GimpDocumentList *document_list,
|
||||
const gchar *uri,
|
||||
const gchar *mime_type)
|
||||
gimp_document_list_add_file (GimpDocumentList *document_list,
|
||||
GFile *file,
|
||||
const gchar *mime_type)
|
||||
{
|
||||
Gimp *gimp;
|
||||
GimpImagefile *imagefile;
|
||||
GimpContainer *container;
|
||||
gchar *uri;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DOCUMENT_LIST (document_list), NULL);
|
||||
g_return_val_if_fail (uri != NULL, NULL);
|
||||
|
||||
gimp = document_list->gimp;
|
||||
g_return_val_if_fail (G_IS_FILE (file), NULL);
|
||||
|
||||
container = GIMP_CONTAINER (document_list);
|
||||
|
||||
gimp = document_list->gimp;
|
||||
|
||||
uri = g_file_get_uri (file);
|
||||
|
||||
imagefile = (GimpImagefile *) gimp_container_get_child_by_name (container,
|
||||
uri);
|
||||
|
||||
g_free (uri);
|
||||
|
||||
if (imagefile)
|
||||
{
|
||||
gimp_container_reorder (container, GIMP_OBJECT (imagefile), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
imagefile = gimp_imagefile_new (gimp, uri);
|
||||
imagefile = gimp_imagefile_new (gimp, file);
|
||||
gimp_container_add (container, GIMP_OBJECT (imagefile));
|
||||
g_object_unref (imagefile);
|
||||
}
|
||||
|
@ -95,7 +100,7 @@ gimp_document_list_add_uri (GimpDocumentList *document_list,
|
|||
gimp_imagefile_set_mime_type (imagefile, mime_type);
|
||||
|
||||
if (gimp->config->save_document_history)
|
||||
gimp_recent_list_add_uri (gimp, uri, mime_type);
|
||||
gimp_recent_list_add_file (gimp, file, mime_type);
|
||||
|
||||
return imagefile;
|
||||
}
|
||||
|
|
|
@ -46,8 +46,8 @@ struct _GimpDocumentListClass
|
|||
GType gimp_document_list_get_type (void) G_GNUC_CONST;
|
||||
GimpContainer * gimp_document_list_new (Gimp *gimp);
|
||||
|
||||
GimpImagefile * gimp_document_list_add_uri (GimpDocumentList *document_list,
|
||||
const gchar *uri,
|
||||
GimpImagefile * gimp_document_list_add_file (GimpDocumentList *document_list,
|
||||
GFile *file,
|
||||
const gchar *mime_type);
|
||||
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ struct _GimpImagefilePrivate
|
|||
{
|
||||
Gimp *gimp;
|
||||
|
||||
GFile *file;
|
||||
GimpThumbnail *thumbnail;
|
||||
GIcon *icon;
|
||||
GCancellable *icon_cancellable;
|
||||
|
@ -215,23 +216,34 @@ gimp_imagefile_finalize (GObject *object)
|
|||
private->icon = NULL;
|
||||
}
|
||||
|
||||
if (private->file)
|
||||
{
|
||||
g_object_unref (private->file);
|
||||
private->file = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GimpImagefile *
|
||||
gimp_imagefile_new (Gimp *gimp,
|
||||
const gchar *uri)
|
||||
gimp_imagefile_new (Gimp *gimp,
|
||||
GFile *file)
|
||||
{
|
||||
GimpImagefile *imagefile;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
|
||||
g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL);
|
||||
|
||||
imagefile = g_object_new (GIMP_TYPE_IMAGEFILE, NULL);
|
||||
|
||||
GET_PRIVATE (imagefile)->gimp = gimp;
|
||||
|
||||
if (uri)
|
||||
gimp_object_set_name (GIMP_OBJECT (imagefile), uri);
|
||||
if (file)
|
||||
{
|
||||
gimp_object_take_name (GIMP_OBJECT (imagefile), g_file_get_uri (file));
|
||||
|
||||
/* file member gets created by gimp_imagefile_name_changed() */
|
||||
}
|
||||
|
||||
return imagefile;
|
||||
}
|
||||
|
@ -258,20 +270,14 @@ gimp_imagefile_get_gicon (GimpImagefile *imagefile)
|
|||
|
||||
if (! private->icon_cancellable)
|
||||
{
|
||||
GFile *file;
|
||||
|
||||
file = g_file_new_for_uri (gimp_object_get_name (imagefile));
|
||||
|
||||
private->icon_cancellable = g_cancellable_new ();
|
||||
|
||||
g_file_query_info_async (file, "standard::icon",
|
||||
g_file_query_info_async (private->file, "standard::icon",
|
||||
G_FILE_QUERY_INFO_NONE,
|
||||
G_PRIORITY_DEFAULT,
|
||||
private->icon_cancellable,
|
||||
gimp_imagefile_icon_callback,
|
||||
imagefile);
|
||||
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -481,17 +487,18 @@ gimp_imagefile_create_thumbnail_weak (GimpImagefile *imagefile,
|
|||
if (! uri)
|
||||
return;
|
||||
|
||||
local = gimp_imagefile_new (private->gimp, uri);
|
||||
local = gimp_imagefile_new (private->gimp, private->file);
|
||||
|
||||
g_object_add_weak_pointer (G_OBJECT (imagefile), (gpointer) &imagefile);
|
||||
|
||||
if (! gimp_imagefile_create_thumbnail (local, context, progress, size, replace,
|
||||
NULL))
|
||||
{
|
||||
/* The weak version works on a local copy so the thumbnail status
|
||||
* of the actual image is not properly updated in case of creation
|
||||
* failure, thus it would end up in a generic GIMP_THUMB_STATE_NOT_FOUND,
|
||||
* which is less informative. */
|
||||
/* The weak version works on a local copy so the thumbnail
|
||||
* status of the actual image is not properly updated in case of
|
||||
* creation failure, thus it would end up in a generic
|
||||
* GIMP_THUMB_STATE_NOT_FOUND, which is less informative.
|
||||
*/
|
||||
g_object_set (private->thumbnail,
|
||||
"thumb-state", GIMP_THUMB_STATE_FAILED,
|
||||
NULL);
|
||||
|
@ -581,6 +588,11 @@ gimp_imagefile_name_changed (GimpObject *object)
|
|||
GIMP_OBJECT_CLASS (parent_class)->name_changed (object);
|
||||
|
||||
gimp_thumbnail_set_uri (private->thumbnail, gimp_object_get_name (object));
|
||||
|
||||
if (private->file)
|
||||
g_object_unref (private->file);
|
||||
|
||||
private->file = g_file_new_for_uri (gimp_object_get_name (object));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -56,7 +56,7 @@ struct _GimpImagefileClass
|
|||
GType gimp_imagefile_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GimpImagefile * gimp_imagefile_new (Gimp *gimp,
|
||||
const gchar *uri);
|
||||
GFile *file);
|
||||
|
||||
GimpThumbnail * gimp_imagefile_get_thumbnail (GimpImagefile *imagefile);
|
||||
GIcon * gimp_imagefile_get_gicon (GimpImagefile *imagefile);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gegl.h>
|
||||
|
||||
#include "core-types.h"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
#include "core-types.h"
|
||||
|
||||
|
|
|
@ -497,8 +497,11 @@ file_open_with_proc_and_display (Gimp *gimp,
|
|||
GimpDocumentList *documents = GIMP_DOCUMENT_LIST (gimp->documents);
|
||||
GimpImagefile *imagefile;
|
||||
const gchar *any_uri;
|
||||
GFile *file;
|
||||
|
||||
imagefile = gimp_document_list_add_uri (documents, uri, mime_type);
|
||||
file = g_file_new_for_uri (uri);
|
||||
imagefile = gimp_document_list_add_file (documents, file, mime_type);
|
||||
g_object_unref (file);
|
||||
|
||||
/* can only create a thumbnail if the passed uri and the
|
||||
* resulting image's uri match. Use any_uri() here so we
|
||||
|
@ -578,12 +581,15 @@ file_open_layers (Gimp *gimp,
|
|||
if (layers)
|
||||
{
|
||||
gchar *basename = file_utils_uri_display_basename (uri);
|
||||
GFile *file;
|
||||
|
||||
file_open_convert_items (dest_image, basename, layers);
|
||||
g_free (basename);
|
||||
|
||||
gimp_document_list_add_uri (GIMP_DOCUMENT_LIST (gimp->documents),
|
||||
uri, mime_type);
|
||||
file = g_file_new_for_uri (uri);
|
||||
gimp_document_list_add_file (GIMP_DOCUMENT_LIST (gimp->documents),
|
||||
file, mime_type);
|
||||
g_object_unref (file);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -166,6 +166,7 @@ file_save (Gimp *gimp,
|
|||
{
|
||||
GimpDocumentList *documents;
|
||||
GimpImagefile *imagefile;
|
||||
GFile *file;
|
||||
|
||||
if (change_saved_state)
|
||||
{
|
||||
|
@ -215,9 +216,11 @@ file_save (Gimp *gimp,
|
|||
gimp_image_saved (image, uri);
|
||||
|
||||
documents = GIMP_DOCUMENT_LIST (image->gimp->documents);
|
||||
imagefile = gimp_document_list_add_uri (documents,
|
||||
uri,
|
||||
file_proc->mime_type);
|
||||
|
||||
file = g_file_new_for_uri (uri);
|
||||
imagefile = gimp_document_list_add_file (documents, file,
|
||||
file_proc->mime_type);
|
||||
g_object_unref (file);
|
||||
|
||||
/* only save a thumbnail if we are saving as XCF, see bug #25272 */
|
||||
if (GIMP_PROCEDURE (file_proc)->proc_type == GIMP_INTERNAL)
|
||||
|
|
|
@ -462,8 +462,12 @@ file_utils_save_thumbnail (GimpImage *image,
|
|||
if ( ! strcmp (uri, image_uri))
|
||||
{
|
||||
GimpImagefile *imagefile;
|
||||
GFile *file;
|
||||
|
||||
file = g_file_new_for_uri (uri);
|
||||
imagefile = gimp_imagefile_new (image->gimp, file);
|
||||
g_object_unref (file);
|
||||
|
||||
imagefile = gimp_imagefile_new (image->gimp, uri);
|
||||
success = gimp_imagefile_save_thumbnail (imagefile, NULL, image,
|
||||
NULL);
|
||||
g_object_unref (imagefile);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "config.h"
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gegl.h>
|
||||
|
||||
#include "gimp-gegl-types.h"
|
||||
|
|
|
@ -137,8 +137,8 @@ static gboolean gui_pdb_dialog_set (Gimp *gimp,
|
|||
static gboolean gui_pdb_dialog_close (Gimp *gimp,
|
||||
GimpContainer *container,
|
||||
const gchar *callback_name);
|
||||
static gboolean gui_recent_list_add_uri (Gimp *gimp,
|
||||
const gchar *uri,
|
||||
static gboolean gui_recent_list_add_file (Gimp *gimp,
|
||||
GFile *file,
|
||||
const gchar *mime_type);
|
||||
static void gui_recent_list_load (Gimp *gimp);
|
||||
|
||||
|
@ -174,7 +174,7 @@ gui_vtable_init (Gimp *gimp)
|
|||
gimp->gui.pdb_dialog_new = gui_pdb_dialog_new;
|
||||
gimp->gui.pdb_dialog_set = gui_pdb_dialog_set;
|
||||
gimp->gui.pdb_dialog_close = gui_pdb_dialog_close;
|
||||
gimp->gui.recent_list_add_uri = gui_recent_list_add_uri;
|
||||
gimp->gui.recent_list_add_file = gui_recent_list_add_file;
|
||||
gimp->gui.recent_list_load = gui_recent_list_load;
|
||||
}
|
||||
|
||||
|
@ -641,15 +641,17 @@ gui_pdb_dialog_close (Gimp *gimp,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gui_recent_list_add_uri (Gimp *gimp,
|
||||
const gchar *uri,
|
||||
const gchar *mime_type)
|
||||
gui_recent_list_add_file (Gimp *gimp,
|
||||
GFile *file,
|
||||
const gchar *mime_type)
|
||||
{
|
||||
GtkRecentData recent;
|
||||
const gchar *groups[2] = { "Graphics", NULL };
|
||||
gchar *uri;
|
||||
gboolean success;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE);
|
||||
g_return_val_if_fail (uri != NULL, FALSE);
|
||||
g_return_val_if_fail (G_IS_FILE (file), FALSE);
|
||||
|
||||
/* use last part of the URI */
|
||||
recent.display_name = NULL;
|
||||
|
@ -663,8 +665,14 @@ gui_recent_list_add_uri (Gimp *gimp,
|
|||
recent.groups = (gchar **) groups;
|
||||
recent.is_private = FALSE;
|
||||
|
||||
return gtk_recent_manager_add_full (gtk_recent_manager_get_default (),
|
||||
uri, &recent);
|
||||
uri = g_file_get_uri (file);
|
||||
|
||||
success = gtk_recent_manager_add_full (gtk_recent_manager_get_default (),
|
||||
uri, &recent);
|
||||
|
||||
g_free (uri);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@ -704,9 +712,11 @@ gui_recent_list_load (Gimp *gimp)
|
|||
mime_type))
|
||||
{
|
||||
GimpImagefile *imagefile;
|
||||
GFile *file;
|
||||
|
||||
imagefile = gimp_imagefile_new (gimp,
|
||||
gtk_recent_info_get_uri (info));
|
||||
file = g_file_new_for_uri (gtk_recent_info_get_uri (info));
|
||||
imagefile = gimp_imagefile_new (gimp, file);
|
||||
g_object_unref (file);
|
||||
|
||||
gimp_imagefile_set_mime_type (imagefile, mime_type);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "config.h"
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gegl.h>
|
||||
|
||||
#include "operations-types.h"
|
||||
|
|
Loading…
Reference in New Issue