[gimp] app: make GimpImageFile handle a NULL URI/GFile
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: make GimpImageFile handle a NULL URI/GFile
- Date: Wed, 9 Jul 2014 18:15:59 +0000 (UTC)
commit ef539211331994f2e7a134bc2464784793318ed8
Author: Michael Natterer <mitch gimp org>
Date: Wed Jul 9 20:10:58 2014 +0200
app: make GimpImageFile handle a NULL URI/GFile
and reorder its functions to be in the usual order.
app/core/gimpimagefile.c | 189 +++++++++++++++++++++++----------------------
1 files changed, 97 insertions(+), 92 deletions(-)
---
diff --git a/app/core/gimpimagefile.c b/app/core/gimpimagefile.c
index b70db12..d4330e6 100644
--- a/app/core/gimpimagefile.c
+++ b/app/core/gimpimagefile.c
@@ -83,14 +83,21 @@ static void gimp_imagefile_finalize (GObject *object);
static void gimp_imagefile_name_changed (GimpObject *object);
-static void gimp_imagefile_info_changed (GimpImagefile *imagefile);
-static void gimp_imagefile_notify_thumbnail (GimpImagefile *imagefile,
- GParamSpec *pspec);
-
static GdkPixbuf * gimp_imagefile_get_new_pixbuf (GimpViewable *viewable,
GimpContext *context,
gint width,
gint height);
+static gchar * gimp_imagefile_get_description (GimpViewable *viewable,
+ gchar **tooltip);
+
+static void gimp_imagefile_info_changed (GimpImagefile *imagefile);
+static void gimp_imagefile_notify_thumbnail (GimpImagefile *imagefile,
+ GParamSpec *pspec);
+
+static void gimp_imagefile_icon_callback (GObject *source_object,
+ GAsyncResult *result,
+ gpointer data);
+
static GdkPixbuf * gimp_imagefile_load_thumb (GimpImagefile *imagefile,
gint width,
gint height);
@@ -100,13 +107,6 @@ static gboolean gimp_imagefile_save_thumb (GimpImagefile *imagefile,
gboolean replace,
GError **error);
-static gchar * gimp_imagefile_get_description (GimpViewable *viewable,
- gchar **tooltip);
-
-static void gimp_imagefile_icon_callback (GObject *source_object,
- GAsyncResult *result,
- gpointer data);
-
static void gimp_thumbnail_set_info_from_image (GimpThumbnail *thumbnail,
const gchar *mime_type,
GimpImage *image);
@@ -224,6 +224,85 @@ gimp_imagefile_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+static void
+gimp_imagefile_name_changed (GimpObject *object)
+{
+ GimpImagefilePrivate *private = GET_PRIVATE (object);
+
+ if (GIMP_OBJECT_CLASS (parent_class)->name_changed)
+ 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 = NULL;
+ }
+
+ if (gimp_object_get_name (object))
+ private->file = g_file_new_for_uri (gimp_object_get_name (object));
+}
+
+static GdkPixbuf *
+gimp_imagefile_get_new_pixbuf (GimpViewable *viewable,
+ GimpContext *context,
+ gint width,
+ gint height)
+{
+ GimpImagefile *imagefile = GIMP_IMAGEFILE (viewable);
+
+ if (! gimp_object_get_name (imagefile))
+ return NULL;
+
+ return gimp_imagefile_load_thumb (imagefile, width, height);
+}
+
+static gchar *
+gimp_imagefile_get_description (GimpViewable *viewable,
+ gchar **tooltip)
+{
+ GimpImagefile *imagefile = GIMP_IMAGEFILE (viewable);
+ GimpImagefilePrivate *private = GET_PRIVATE (imagefile);
+ GimpThumbnail *thumbnail = private->thumbnail;
+ gchar *basename;
+
+ if (! private->file)
+ return NULL;
+
+ if (tooltip)
+ {
+ const gchar *name;
+ const gchar *desc;
+
+ name = gimp_file_get_utf8_name (private->file);
+ desc = gimp_imagefile_get_desc_string (imagefile);
+
+ if (desc)
+ *tooltip = g_strdup_printf ("%s\n%s", name, desc);
+ else
+ *tooltip = g_strdup (name);
+ }
+
+ basename = g_path_get_basename (gimp_file_get_utf8_name (private->file));
+
+ if (thumbnail->image_width > 0 && thumbnail->image_height > 0)
+ {
+ gchar *tmp = basename;
+
+ basename = g_strdup_printf ("%s (%d × %d)",
+ tmp,
+ thumbnail->image_width,
+ thumbnail->image_height);
+ g_free (tmp);
+ }
+
+ return basename;
+}
+
+
+/* public functions */
+
GimpImagefile *
gimp_imagefile_new (Gimp *gimp,
GFile *file)
@@ -260,9 +339,10 @@ gimp_imagefile_set_file (GimpImagefile *imagefile,
GFile *file)
{
g_return_if_fail (GIMP_IS_IMAGEFILE (imagefile));
- g_return_if_fail (G_IS_FILE (file));
+ g_return_if_fail (file == NULL || G_IS_FILE (file));
- gimp_object_take_name (GIMP_OBJECT (imagefile), g_file_get_uri (file));
+ gimp_object_take_name (GIMP_OBJECT (imagefile),
+ file ? g_file_get_uri (file) : NULL);
}
GimpThumbnail *
@@ -285,7 +365,7 @@ gimp_imagefile_get_gicon (GimpImagefile *imagefile)
if (private->icon)
return private->icon;
- if (! private->icon_cancellable)
+ if (private->file && ! private->icon_cancellable)
{
private->icon_cancellable = g_cancellable_new ();
@@ -483,7 +563,6 @@ gimp_imagefile_create_thumbnail_weak (GimpImagefile *imagefile,
{
GimpImagefilePrivate *private;
GimpImagefile *local;
- const gchar *uri;
g_return_if_fail (GIMP_IS_IMAGEFILE (imagefile));
@@ -492,8 +571,7 @@ gimp_imagefile_create_thumbnail_weak (GimpImagefile *imagefile,
private = GET_PRIVATE (imagefile);
- uri = gimp_object_get_name (imagefile);
- if (! uri)
+ if (! private->file)
return;
local = gimp_imagefile_new (private->gimp, private->file);
@@ -515,10 +593,9 @@ gimp_imagefile_create_thumbnail_weak (GimpImagefile *imagefile,
if (imagefile)
{
- uri = gimp_object_get_name (imagefile);
+ GFile *file = gimp_imagefile_get_file (imagefile);
- if (uri &&
- strcmp (uri, gimp_object_get_name (local)) == 0)
+ if (file && g_file_equal (file, gimp_imagefile_get_file (local)))
{
gimp_imagefile_update (imagefile);
}
@@ -589,22 +666,6 @@ gimp_imagefile_save_thumbnail (GimpImagefile *imagefile,
/* private functions */
static void
-gimp_imagefile_name_changed (GimpObject *object)
-{
- GimpImagefilePrivate *private = GET_PRIVATE (object);
-
- if (GIMP_OBJECT_CLASS (parent_class)->name_changed)
- 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
gimp_imagefile_info_changed (GimpImagefile *imagefile)
{
GimpImagefilePrivate *private = GET_PRIVATE (imagefile);
@@ -636,62 +697,6 @@ gimp_imagefile_notify_thumbnail (GimpImagefile *imagefile,
}
}
-static GdkPixbuf *
-gimp_imagefile_get_new_pixbuf (GimpViewable *viewable,
- GimpContext *context,
- gint width,
- gint height)
-{
- GimpImagefile *imagefile = GIMP_IMAGEFILE (viewable);
-
- if (! gimp_object_get_name (imagefile))
- return NULL;
-
- return gimp_imagefile_load_thumb (imagefile, width, height);
-}
-
-static gchar *
-gimp_imagefile_get_description (GimpViewable *viewable,
- gchar **tooltip)
-{
- GimpImagefile *imagefile = GIMP_IMAGEFILE (viewable);
- GimpImagefilePrivate *private = GET_PRIVATE (imagefile);
- GimpThumbnail *thumbnail = private->thumbnail;
- gchar *basename;
-
- if (! private->file)
- return NULL;
-
- if (tooltip)
- {
- const gchar *name;
- const gchar *desc;
-
- name = gimp_file_get_utf8_name (private->file);
- desc = gimp_imagefile_get_desc_string (imagefile);
-
- if (desc)
- *tooltip = g_strdup_printf ("%s\n%s", name, desc);
- else
- *tooltip = g_strdup (name);
- }
-
- basename = g_path_get_basename (gimp_file_get_utf8_name (private->file));
-
- if (thumbnail->image_width > 0 && thumbnail->image_height > 0)
- {
- gchar *tmp = basename;
-
- basename = g_strdup_printf ("%s (%d × %d)",
- tmp,
- thumbnail->image_width,
- thumbnail->image_height);
- g_free (tmp);
- }
-
- return basename;
-}
-
static void
gimp_imagefile_icon_callback (GObject *source_object,
GAsyncResult *result,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]