Bug 574149 – Can't get name/filename of files loaded from URI

2009-03-04  Sven Neumann  <sven@gimp.org>

	Bug 574149 – Can't get name/filename of files loaded from URI

	* tools/pdbgen/pdb/image.pdb: added new procedure 
gimp-image-get-uri.

	* app/pdb/image-cmds.c
	* libgimp/gimpimage_pdb.c: regenerated.

	* plug-ins/pygimp/pygimp-image.c: wrap the new procedure into an
	Image attribute.


svn path=/trunk/; revision=28103
This commit is contained in:
Sven Neumann 2009-03-04 19:35:18 +00:00 committed by Sven Neumann
parent f6cff4b0f8
commit 849a18b08c
7 changed files with 168 additions and 12 deletions

View File

@ -1,3 +1,15 @@
2009-03-04 Sven Neumann <sven@gimp.org>
Bug 574149 Can't get name/filename of files loaded from URI
* tools/pdbgen/pdb/image.pdb: added new procedure gimp-image-get-uri.
* app/pdb/image-cmds.c
* libgimp/gimpimage_pdb.c: regenerated.
* plug-ins/pygimp/pygimp-image.c: wrap the new procedure into an
Image attribute.
2009-03-04 Sven Neumann <sven@gimp.org> 2009-03-04 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/image.pdb (image_get_filename): improved docs * tools/pdbgen/pdb/image.pdb (image_get_filename): improved docs

View File

@ -2172,6 +2172,35 @@ image_set_filename_invoker (GimpProcedure *procedure,
error ? *error : NULL); error ? *error : NULL);
} }
static GValueArray *
image_get_uri_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
GimpProgress *progress,
const GValueArray *args,
GError **error)
{
gboolean success = TRUE;
GValueArray *return_vals;
GimpImage *image;
gchar *uri = NULL;
image = gimp_value_get_image (&args->values[0], gimp);
if (success)
{
uri = g_strdup (gimp_object_get_name (GIMP_OBJECT (image)));
}
return_vals = gimp_procedure_get_return_values (procedure, success,
error ? *error : NULL);
if (success)
g_value_take_string (&return_vals->values[1], uri);
return return_vals;
}
static GValueArray * static GValueArray *
image_get_name_invoker (GimpProcedure *procedure, image_get_name_invoker (GimpProcedure *procedure,
Gimp *gimp, Gimp *gimp,
@ -4623,7 +4652,7 @@ register_image_procs (GimpPDB *pdb)
gimp_procedure_set_static_strings (procedure, gimp_procedure_set_static_strings (procedure,
"gimp-image-get-filename", "gimp-image-get-filename",
"Returns the specified image's filename.", "Returns the specified image's filename.",
"This procedure returns the specified image's filename in the filesystem encoding. The image has a filename only if it was loaded from a local filesystem or has since been saved locally. Otherwise, this function returns %NULL.", "This procedure returns the specified image's filename in the filesystem encoding. The image has a filename only if it was loaded from a local filesystem or has since been saved locally. Otherwise, this function returns %NULL. See also 'gimp-image-get-uri'.",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
"1995-1996", "1995-1996",
@ -4674,6 +4703,36 @@ register_image_procs (GimpPDB *pdb)
gimp_pdb_register_procedure (pdb, procedure); gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure); g_object_unref (procedure);
/*
* gimp-image-get-uri
*/
procedure = gimp_procedure_new (image_get_uri_invoker);
gimp_object_set_static_name (GIMP_OBJECT (procedure),
"gimp-image-get-uri");
gimp_procedure_set_static_strings (procedure,
"gimp-image-get-uri",
"Returns the URI for the specified image.",
"This procedure returns the URI associated with the specified image. The image has an URI only if it was loaded from a file or has since been saved. Otherwise, this function returns %NULL.",
"Sven Neumann <sven@gimp.org>",
"Sven Neumann",
"2009",
NULL);
gimp_procedure_add_argument (procedure,
gimp_param_spec_image_id ("image",
"image",
"The image",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_string ("uri",
"uri",
"The URI",
FALSE, FALSE, FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/* /*
* gimp-image-get-name * gimp-image-get-name
*/ */
@ -4683,7 +4742,7 @@ register_image_procs (GimpPDB *pdb)
gimp_procedure_set_static_strings (procedure, gimp_procedure_set_static_strings (procedure,
"gimp-image-get-name", "gimp-image-get-name",
"Returns the specified image's name.", "Returns the specified image's name.",
"This procedure returns the image's name. If the image has a filename, then this is the base name (the last component of the path).", "This procedure returns the image's name. If the image has a filename or an URI, then this is the base name (the last component of the path). Otherwise it is the translated string \"Untitled\".",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
"1995-1996", "1995-1996",

View File

@ -28,7 +28,7 @@
#include "internal-procs.h" #include "internal-procs.h"
/* 595 procedures registered total */ /* 596 procedures registered total */
void void
internal_procs_init (GimpPDB *pdb) internal_procs_init (GimpPDB *pdb)

View File

@ -2350,7 +2350,7 @@ gimp_image_set_component_visible (gint32 image_ID,
* This procedure returns the specified image's filename in the * This procedure returns the specified image's filename in the
* filesystem encoding. The image has a filename only if it was loaded * filesystem encoding. The image has a filename only if it was loaded
* from a local filesystem or has since been saved locally. Otherwise, * from a local filesystem or has since been saved locally. Otherwise,
* this function returns %NULL. * this function returns %NULL. See also gimp_image_get_uri().
* *
* Returns: The filename. * Returns: The filename.
*/ */
@ -2407,15 +2407,49 @@ gimp_image_set_filename (gint32 image_ID,
return success; return success;
} }
/**
* gimp_image_get_uri:
* @image_ID: The image.
*
* Returns the URI for the specified image.
*
* This procedure returns the URI associated with the specified image.
* The image has an URI only if it was loaded from a file or has since
* been saved. Otherwise, this function returns %NULL.
*
* Returns: The URI.
*
* Since: GIMP 2.8
*/
gchar *
gimp_image_get_uri (gint32 image_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gchar *uri = NULL;
return_vals = gimp_run_procedure ("gimp-image-get-uri",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
uri = g_strdup (return_vals[1].data.d_string);
gimp_destroy_params (return_vals, nreturn_vals);
return uri;
}
/** /**
* gimp_image_get_name: * gimp_image_get_name:
* @image_ID: The image. * @image_ID: The image.
* *
* Returns the specified image's name. * Returns the specified image's name.
* *
* This procedure returns the image's name. If the image has a * This procedure returns the image's name. If the image has a filename
* filename, then this is the base name (the last component of the * or an URI, then this is the base name (the last component of the
* path). * path). Otherwise it is the translated string \"Untitled\".
* *
* Returns: The name. * Returns: The name.
*/ */

View File

@ -169,6 +169,7 @@ gboolean gimp_image_set_component_visible (gint32
gchar* gimp_image_get_filename (gint32 image_ID); gchar* gimp_image_get_filename (gint32 image_ID);
gboolean gimp_image_set_filename (gint32 image_ID, gboolean gimp_image_set_filename (gint32 image_ID,
const gchar *filename); const gchar *filename);
gchar* gimp_image_get_uri (gint32 image_ID);
gchar* gimp_image_get_name (gint32 image_ID); gchar* gimp_image_get_name (gint32 image_ID);
gboolean gimp_image_get_resolution (gint32 image_ID, gboolean gimp_image_get_resolution (gint32 image_ID,
gdouble *xresolution, gdouble *xresolution,

View File

@ -1099,6 +1099,23 @@ img_set_filename(PyGimpImage *self, PyObject *value, void *closure)
return 0; return 0;
} }
static PyObject *
img_get_uri(PyGimpImage *self, void *closure)
{
gchar *uri;
uri = gimp_image_get_uri(self->ID);
if (uri) {
PyObject *ret = PyString_FromString(uri);
g_free(uri);
return ret;
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject * static PyObject *
img_get_floating_selection(PyGimpImage *self, void *closure) img_get_floating_selection(PyGimpImage *self, void *closure)
{ {
@ -1311,6 +1328,7 @@ static PyGetSetDef img_getsets[] = {
{ "tattoo_state", (getter)img_get_tattoo_state, { "tattoo_state", (getter)img_get_tattoo_state,
(setter)img_set_tattoo_state }, (setter)img_set_tattoo_state },
{ "unit", (getter)img_get_unit, (setter)img_set_unit }, { "unit", (getter)img_get_unit, (setter)img_set_unit },
{ "uri", (getter)img_get_uri, (setter)0 },
{ "vectors", (getter)img_get_vectors, (setter)0 }, { "vectors", (getter)img_get_vectors, (setter)0 },
{ "width", (getter)img_get_width, (setter)0 }, { "width", (getter)img_get_width, (setter)0 },
{ NULL, (getter)0, (setter)0 } { NULL, (getter)0, (setter)0 }

View File

@ -2143,7 +2143,7 @@ sub image_get_filename {
This procedure returns the specified image's filename in the This procedure returns the specified image's filename in the
filesystem encoding. The image has a filename only if it was loaded filesystem encoding. The image has a filename only if it was loaded
from a local filesystem or has since been saved locally. Otherwise, from a local filesystem or has since been saved locally. Otherwise,
this function returns %NULL. this function returns %NULL. See also gimp_image_get_uri().
HELP HELP
&std_pdb_misc; &std_pdb_misc;
@ -2211,11 +2211,42 @@ CODE
); );
} }
sub image_get_uri {
$blurb = "Returns the URI for the specified image.";
$help = <<'HELP';
This procedure returns the URI associated with the specified image.
The image has an URI only if it was loaded from a file or has since
been saved. Otherwise, this function returns %NULL.
HELP
&neo_pdb_misc('2009', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' }
);
@outargs = (
{ name => 'uri', type => 'string',
desc => 'The URI' }
);
%invoke = (
code => <<'CODE'
{
uri = g_strdup (gimp_object_get_name (GIMP_OBJECT (image)));
}
CODE
);
}
sub image_get_name { sub image_get_name {
$blurb = "Returns the specified image's name."; $blurb = "Returns the specified image's name.";
$help = <<'HELP'; $help = <<'HELP';
This procedure returns the image's name. If the image has a filename, This procedure returns the image's name. If the image has a filename or
then this is the base name (the last component of the path). an URI, then this is the base name (the last component of the path).
Otherwise it is the translated string "Untitled".
HELP HELP
&std_pdb_misc; &std_pdb_misc;
@ -2666,7 +2697,8 @@ CODE
image_get_component_active image_set_component_active image_get_component_active image_set_component_active
image_get_component_visible image_set_component_visible image_get_component_visible image_set_component_visible
image_get_filename image_set_filename image_get_filename image_set_filename
image_get_name image_get_uri
image_get_name
image_get_resolution image_set_resolution image_get_resolution image_set_resolution
image_get_unit image_set_unit image_get_unit image_set_unit
image_get_tattoo_state image_set_tattoo_state image_get_tattoo_state image_set_tattoo_state
@ -2674,7 +2706,7 @@ CODE
image_get_channel_by_tattoo image_get_channel_by_tattoo
image_get_vectors_by_tattoo); image_get_vectors_by_tattoo);
%exports = (app => [@procs], lib => [@procs[0..46,49..76]]); %exports = (app => [@procs], lib => [@procs[0..46,49..77]]);
$desc = 'Image'; $desc = 'Image';