static PyObject * _wrap_gimp_thumb_ensure_thumb_dir(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "size", NULL }; PyObject *py_size = NULL; int ret; GError *error = NULL; GimpThumbSize size; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:ensure_thumb_dir", kwlist, &py_size)) return NULL; if (pyg_enum_get_value(GIMP_TYPE_THUMB_SIZE, py_size, (gpointer)&size)) return NULL; ret = gimp_thumb_ensure_thumb_dir(size, &error); if (pyg_error_check(&error)) return NULL; return PyBool_FromLong(ret); }
/** * gimp_thumbnail_save_thumb: * @thumbnail: a #GimpThumbnail object * @pixbuf: a #GdkPixbuf representing the preview thumbnail * @software: a string describing the software saving the thumbnail * @error: return location for possible errors * * Saves a preview thumbnail for the image associated with @thumbnail. * to the global thumbnail repository. * * The caller is responsible for setting the image file location, it's * filesize, modification time. One way to set this info is to is to * call gimp_thumbnail_set_uri() followed by gimp_thumbnail_peek_image(). * Since this won't work for remote images, it is left to the user of * gimp_thumbnail_save_thumb() to do this or to set the information * using the @thumbnail object properties. * * The image format type and the number of layers can optionally be * set in order to be stored with the preview image. * * Return value: %TRUE if a thumbnail was successfully written, * %FALSE otherwise **/ gboolean gimp_thumbnail_save_thumb (GimpThumbnail *thumbnail, GdkPixbuf *pixbuf, const gchar *software, GError **error) { GimpThumbSize size; gchar *name; gboolean success; g_return_val_if_fail (GIMP_IS_THUMBNAIL (thumbnail), FALSE); g_return_val_if_fail (thumbnail->image_uri != NULL, FALSE); g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE); g_return_val_if_fail (software != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); GIMP_THUMB_DEBUG_CALL (thumbnail); size = MAX (gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf)); if (size < 1) return TRUE; name = gimp_thumb_name_from_uri (thumbnail->image_uri, size); if (! name) return TRUE; if (! gimp_thumb_ensure_thumb_dir (size, error)) { g_free (name); return FALSE; } success = gimp_thumbnail_save (thumbnail, size, name, pixbuf, software, error); g_free (name); return success; }
/** * gimp_thumbnail_save_failure: * @thumbnail: a #GimpThumbnail object * @software: a string describing the software saving the thumbnail * @error: return location for possible errors * * Saves a failure thumbnail for the image associated with * @thumbnail. This is an empty pixbuf that indicates that an attempt * to create a preview for the image file failed. It should be used to * prevent the software from further attempts to create this thumbnail. * * Return value: %TRUE if a failure thumbnail was successfully written, * %FALSE otherwise **/ gboolean gimp_thumbnail_save_failure (GimpThumbnail *thumbnail, const gchar *software, GError **error) { GdkPixbuf *pixbuf; gchar *name; gchar *desc; gchar *time_str; gchar *size_str; gboolean success; g_return_val_if_fail (GIMP_IS_THUMBNAIL (thumbnail), FALSE); g_return_val_if_fail (thumbnail->image_uri != NULL, FALSE); g_return_val_if_fail (software != NULL, FALSE); GIMP_THUMB_DEBUG_CALL (thumbnail); name = gimp_thumb_name_from_uri (thumbnail->image_uri, GIMP_THUMB_SIZE_FAIL); if (! name) return TRUE; if (! gimp_thumb_ensure_thumb_dir (GIMP_THUMB_SIZE_FAIL, error)) { g_free (name); return FALSE; } pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 1, 1); desc = g_strdup_printf ("Thumbnail failure for %s", thumbnail->image_uri); time_str = g_strdup_printf ("%" G_GINT64_FORMAT, thumbnail->image_mtime); size_str = g_strdup_printf ("%" G_GINT64_FORMAT, thumbnail->image_filesize); success = gdk_pixbuf_save (pixbuf, name, "png", error, TAG_DESCRIPTION, desc, TAG_SOFTWARE, software, TAG_THUMB_URI, thumbnail->image_uri, TAG_THUMB_MTIME, time_str, TAG_THUMB_FILESIZE, size_str, NULL); if (success) { success = (g_chmod (name, 0600) == 0); if (success) gimp_thumbnail_update_thumb (thumbnail, GIMP_THUMB_SIZE_NORMAL); else g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), "Could not set permissions of thumbnail '%s': %s", name, g_strerror (errno)); } g_object_unref (pixbuf); g_free (size_str); g_free (time_str); g_free (desc); g_free (name); return success; }