[gimp] libgimp: add gimp_file_procedure_set_handles_uri()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimp: add gimp_file_procedure_set_handles_uri()
- Date: Sun, 11 Aug 2019 10:52:46 +0000 (UTC)
commit cd836e9d96dad56b9ffa5a2b6892f612ad05d8c2
Author: Michael Natterer <mitch gimp org>
Date: Sun Aug 11 12:46:48 2019 +0200
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.
libgimp/gimpfileprocedure.c | 55 +++++++++++++++++++++++++++++++++----
libgimp/gimpfileprocedure.h | 36 +++++++++++++-----------
libgimp/gimploadprocedure.c | 3 +-
libgimp/gimpsaveprocedure.c | 3 +-
plug-ins/common/file-desktop-link.c | 2 --
plug-ins/common/file-pat.c | 2 ++
6 files changed, 76 insertions(+), 25 deletions(-)
---
diff --git a/libgimp/gimpfileprocedure.c b/libgimp/gimpfileprocedure.c
index 3c2f426f9d..80bbf53523 100644
--- a/libgimp/gimpfileprocedure.c
+++ b/libgimp/gimpfileprocedure.c
@@ -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;
+}
diff --git a/libgimp/gimpfileprocedure.h b/libgimp/gimpfileprocedure.h
index bb554ea479..318f439b20 100644
--- a/libgimp/gimpfileprocedure.h
+++ b/libgimp/gimpfileprocedure.h
@@ -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
diff --git a/libgimp/gimploadprocedure.c b/libgimp/gimploadprocedure.c
index 34c72fa5b3..3479b71ce5 100644
--- a/libgimp/gimploadprocedure.c
+++ b/libgimp/gimploadprocedure.c
@@ -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)
diff --git a/libgimp/gimpsaveprocedure.c b/libgimp/gimpsaveprocedure.c
index 1eb7380145..616c84a850 100644
--- a/libgimp/gimpsaveprocedure.c
+++ b/libgimp/gimpsaveprocedure.c
@@ -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)
diff --git a/plug-ins/common/file-desktop-link.c b/plug-ins/common/file-desktop-link.c
index 617eaebead..dcf2d588b2 100644
--- a/plug-ins/common/file-desktop-link.c
+++ b/plug-ins/common/file-desktop-link.c
@@ -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;
diff --git a/plug-ins/common/file-pat.c b/plug-ins/common/file-pat.c
index 0071656d8e..d8da79e50f 100644
--- a/plug-ins/common/file-pat.c
+++ b/plug-ins/common/file-pat.c
@@ -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",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]