libgimp: add gimp_file_procedure_set_handles_uri()

Implementing a shiny new GimpFileProcedure doesn't mean the libraries
we use to load/save files are automatically capable of handling remote
files, so we still need this flag.
This commit is contained in:
Michael Natterer 2019-08-11 12:46:48 +02:00
parent f042d21989
commit cd836e9d96
6 changed files with 76 additions and 25 deletions

View File

@ -26,11 +26,12 @@
struct _GimpFileProcedurePrivate
{
gchar *mime_types;
gchar *extensions;
gchar *prefixes;
gchar *magics;
gint priority;
gchar *mime_types;
gchar *extensions;
gchar *prefixes;
gchar *magics;
gint priority;
gboolean handles_uri;
};
@ -280,3 +281,47 @@ gimp_file_procedure_get_priority (GimpFileProcedure *procedure)
return procedure->priv->priority;
}
/**
* gimp_file_procedure_set_handles_uri:
* @procedure: A #GimpFileProcedure.
* @handles_uri: The procedure's handles uri flag.
*
* Registers a file procedure as capable of handling arbitrary URIs
* via GIO.
*
* When @handles_uri is set to %TRUE, the procedure will get a #GFile
* passed that can point to a remote file.
*
* When @handles_uri is set to %FALSE, the procedure will get a local
* #GFile passed and can use g_file_get_path() to get to a filename
* that can be used with whatever non-GIO means of dealing with the
* file.
*
* Since: 3.0
**/
void
gimp_file_procedure_set_handles_uri (GimpFileProcedure *procedure,
gint handles_uri)
{
g_return_if_fail (GIMP_IS_FILE_PROCEDURE (procedure));
procedure->priv->handles_uri = handles_uri;
}
/**
* gimp_file_procedure_get_handles_uri:
* @procedure: A #GimpFileProcedure.
*
* Returns: The procedure's handles uri flag as set with
* gimp_file_procedure_set_handles_uri().
*
* Since: 3.0
**/
gint
gimp_file_procedure_get_handles_uri (GimpFileProcedure *procedure)
{
g_return_val_if_fail (GIMP_IS_FILE_PROCEDURE (procedure), 0);
return procedure->priv->handles_uri;
}

View File

@ -54,27 +54,31 @@ struct _GimpFileProcedureClass
};
GType gimp_file_procedure_get_type (void) G_GNUC_CONST;
GType gimp_file_procedure_get_type (void) G_GNUC_CONST;
void gimp_file_procedure_set_mime_types (GimpFileProcedure *procedure,
const gchar *mime_types);
const gchar * gimp_file_procedure_get_mime_types (GimpFileProcedure *procedure);
void gimp_file_procedure_set_mime_types (GimpFileProcedure *procedure,
const gchar *mime_types);
const gchar * gimp_file_procedure_get_mime_types (GimpFileProcedure *procedure);
void gimp_file_procedure_set_extensions (GimpFileProcedure *procedure,
const gchar *extensions);
const gchar * gimp_file_procedure_get_extensions (GimpFileProcedure *procedure);
void gimp_file_procedure_set_extensions (GimpFileProcedure *procedure,
const gchar *extensions);
const gchar * gimp_file_procedure_get_extensions (GimpFileProcedure *procedure);
void gimp_file_procedure_set_prefixes (GimpFileProcedure *procedure,
const gchar *prefixes);
const gchar * gimp_file_procedure_get_prefixes (GimpFileProcedure *procedure);
void gimp_file_procedure_set_prefixes (GimpFileProcedure *procedure,
const gchar *prefixes);
const gchar * gimp_file_procedure_get_prefixes (GimpFileProcedure *procedure);
void gimp_file_procedure_set_magics (GimpFileProcedure *procedure,
const gchar *magics);
const gchar * gimp_file_procedure_get_magics (GimpFileProcedure *procedure);
void gimp_file_procedure_set_magics (GimpFileProcedure *procedure,
const gchar *magics);
const gchar * gimp_file_procedure_get_magics (GimpFileProcedure *procedure);
void gimp_file_procedure_set_priority (GimpFileProcedure *procedure,
gint priority);
gint gimp_file_procedure_get_priority (GimpFileProcedure *procedure);
void gimp_file_procedure_set_priority (GimpFileProcedure *procedure,
gint priority);
gint gimp_file_procedure_get_priority (GimpFileProcedure *procedure);
void gimp_file_procedure_set_handles_uri (GimpFileProcedure *procedure,
gboolean handles_uri);
gboolean gimp_file_procedure_get_handles_uri (GimpFileProcedure *procedure);
G_END_DECLS

View File

@ -135,7 +135,8 @@ gimp_load_procedure_install (GimpProcedure *procedure)
gimp_file_procedure_get_prefixes (file_proc));
}
gimp_register_file_handler_uri (gimp_procedure_get_name (procedure));
if (gimp_file_procedure_get_handles_uri (file_proc))
gimp_register_file_handler_uri (gimp_procedure_get_name (procedure));
mime_types = gimp_file_procedure_get_mime_types (file_proc);
if (mime_types)

View File

@ -128,7 +128,8 @@ gimp_save_procedure_install (GimpProcedure *procedure)
gimp_file_procedure_get_extensions (file_proc),
gimp_file_procedure_get_prefixes (file_proc));
gimp_register_file_handler_uri (gimp_procedure_get_name (procedure));
if (gimp_file_procedure_get_handles_uri (file_proc))
gimp_register_file_handler_uri (gimp_procedure_get_name (procedure));
mime_types = gimp_file_procedure_get_mime_types (file_proc);
if (mime_types)

View File

@ -173,8 +173,6 @@ load_image (GFile *file,
GError *error = NULL;
filename = g_file_get_path (file);
if (! filename)
goto out;
if (! g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &error))
goto out;

View File

@ -127,6 +127,8 @@ pat_create_procedure (GimpPlugIn *plug_in,
"image/x-gimp-pat");
gimp_file_procedure_set_extensions (GIMP_FILE_PROCEDURE (procedure),
"pat");
gimp_file_procedure_set_handles_uri (GIMP_FILE_PROCEDURE (procedure),
TRUE);
gimp_procedure_add_argument (procedure,
gimp_param_spec_string ("description",