[gimp] app: change GimpImageFile and GimpDocumentList to speak GFile
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: change GimpImageFile and GimpDocumentList to speak GFile
- Date: Mon, 7 Jul 2014 22:01:08 +0000 (UTC)
commit 3f528288969dc35369c0f27e2d34c03022b89510
Author: Michael Natterer <mitch gimp org>
Date: Sat Jul 5 12:51:54 2014 +0200
app: change GimpImageFile and GimpDocumentList to speak GFile
app/core/gimp-gui.c | 14 ++++++------
app/core/gimp-gui.h | 8 +++---
app/core/gimpdocumentlist.c | 19 ++++++++++------
app/core/gimpdocumentlist.h | 4 +-
app/core/gimpimagefile.c | 44 ++++++++++++++++++++++++-------------
app/core/gimpimagefile.h | 2 +-
app/core/gimpprogress.c | 1 +
app/core/gimptaggedcontainer.c | 2 +-
app/file/file-open.c | 12 +++++++--
app/file/file-save.c | 9 +++++--
app/file/file-utils.c | 6 ++++-
app/gegl/gimp-gegl.c | 1 +
app/gui/gui-vtable.c | 32 ++++++++++++++++++---------
app/operations/gimp-operations.c | 1 +
14 files changed, 99 insertions(+), 56 deletions(-)
---
diff --git a/app/core/gimp-gui.c b/app/core/gimp-gui.c
index 71ff90c..8403a5e 100644
--- a/app/core/gimp-gui.c
+++ b/app/core/gimp-gui.c
@@ -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;
}
diff --git a/app/core/gimp-gui.h b/app/core/gimp-gui.h
index 9d371f2..4c275a0 100644
--- a/app/core/gimp-gui.h
+++ b/app/core/gimp-gui.h
@@ -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);
diff --git a/app/core/gimpdocumentlist.c b/app/core/gimpdocumentlist.c
index a794304..7b515da 100644
--- a/app/core/gimpdocumentlist.c
+++ b/app/core/gimpdocumentlist.c
@@ -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);
+ g_return_val_if_fail (G_IS_FILE (file), NULL);
+
+ container = GIMP_CONTAINER (document_list);
gimp = document_list->gimp;
- container = GIMP_CONTAINER (document_list);
+ 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;
}
diff --git a/app/core/gimpdocumentlist.h b/app/core/gimpdocumentlist.h
index f36aa94..dc58e21 100644
--- a/app/core/gimpdocumentlist.h
+++ b/app/core/gimpdocumentlist.h
@@ -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);
diff --git a/app/core/gimpimagefile.c b/app/core/gimpimagefile.c
index f39459e..ff49e76 100644
--- a/app/core/gimpimagefile.c
+++ b/app/core/gimpimagefile.c
@@ -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
diff --git a/app/core/gimpimagefile.h b/app/core/gimpimagefile.h
index 7e76c63..9063883 100644
--- a/app/core/gimpimagefile.h
+++ b/app/core/gimpimagefile.h
@@ -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);
diff --git a/app/core/gimpprogress.c b/app/core/gimpprogress.c
index 2510769..c91eca9 100644
--- a/app/core/gimpprogress.c
+++ b/app/core/gimpprogress.c
@@ -22,6 +22,7 @@
#include <string.h>
+#include <gio/gio.h>
#include <gegl.h>
#include "core-types.h"
diff --git a/app/core/gimptaggedcontainer.c b/app/core/gimptaggedcontainer.c
index 4161914..75fc047 100644
--- a/app/core/gimptaggedcontainer.c
+++ b/app/core/gimptaggedcontainer.c
@@ -20,7 +20,7 @@
#include "config.h"
-#include <glib-object.h>
+#include <gio/gio.h>
#include "core-types.h"
diff --git a/app/file/file-open.c b/app/file/file-open.c
index 5634b62..2a34c71 100644
--- a/app/file/file-open.c
+++ b/app/file/file-open.c
@@ -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
{
diff --git a/app/file/file-save.c b/app/file/file-save.c
index 6006ec2..62ad4db 100644
--- a/app/file/file-save.c
+++ b/app/file/file-save.c
@@ -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)
diff --git a/app/file/file-utils.c b/app/file/file-utils.c
index 284f932..d1b9754 100644
--- a/app/file/file-utils.c
+++ b/app/file/file-utils.c
@@ -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);
diff --git a/app/gegl/gimp-gegl.c b/app/gegl/gimp-gegl.c
index eaef90c..0574ab0 100644
--- a/app/gegl/gimp-gegl.c
+++ b/app/gegl/gimp-gegl.c
@@ -20,6 +20,7 @@
#include "config.h"
+#include <gio/gio.h>
#include <gegl.h>
#include "gimp-gegl-types.h"
diff --git a/app/gui/gui-vtable.c b/app/gui/gui-vtable.c
index b6580a4..5463294 100644
--- a/app/gui/gui-vtable.c
+++ b/app/gui/gui-vtable.c
@@ -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);
diff --git a/app/operations/gimp-operations.c b/app/operations/gimp-operations.c
index 6b35ec9..4f2a4e2 100644
--- a/app/operations/gimp-operations.c
+++ b/app/operations/gimp-operations.c
@@ -19,6 +19,7 @@
#include "config.h"
+#include <gio/gio.h>
#include <gegl.h>
#include "operations-types.h"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]