[gimp] libgimp: replace gimp_pdb_dump() and gimp_pdb_query() by new API
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimp: replace gimp_pdb_dump() and gimp_pdb_query() by new API
- Date: Wed, 7 Aug 2019 23:15:23 +0000 (UTC)
commit 0aa2dcfadbbf355a1c6f3c5fd0dfaa37ab3170ee
Author: Michael Natterer <mitch gimp org>
Date: Thu Aug 8 01:14:35 2019 +0200
libgimp: replace gimp_pdb_dump() and gimp_pdb_query() by new API
and move them to gimplegacy.[ch].
libgimp/gimp.def | 2 ++
libgimp/gimplegacy.c | 70 ++++++++++++++++++++++++++++++++++++++
libgimp/gimplegacy.h | 10 ++++++
libgimp/gimppdb.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++
libgimp/gimppdb.h | 13 +++++++
libgimp/gimppdb_pdb.c | 24 ++++++-------
libgimp/gimppdb_pdb.h | 4 +--
pdb/groups/pdb.pdb | 4 +++
8 files changed, 207 insertions(+), 14 deletions(-)
---
diff --git a/libgimp/gimp.def b/libgimp/gimp.def
index faef83b1aa..f2e98e626f 100644
--- a/libgimp/gimp.def
+++ b/libgimp/gimp.def
@@ -613,6 +613,7 @@ EXPORTS
gimp_patterns_refresh
gimp_patterns_set_popup
gimp_pdb_dump
+ gimp_pdb_dump_to_file
gimp_pdb_get_data
gimp_pdb_get_data_size
gimp_pdb_get_type
@@ -625,6 +626,7 @@ EXPORTS
gimp_pdb_proc_val
gimp_pdb_procedure_exists
gimp_pdb_query
+ gimp_pdb_query_procedures
gimp_pdb_run_procedure
gimp_pdb_run_procedure_array
gimp_pdb_run_procedure_valist
diff --git a/libgimp/gimplegacy.c b/libgimp/gimplegacy.c
index c284a331f9..744339836a 100644
--- a/libgimp/gimplegacy.c
+++ b/libgimp/gimplegacy.c
@@ -1220,6 +1220,76 @@ gimp_pdb_temp_name (void)
return _gimp_pdb_temp_name ();
}
+/**
+ * gimp_pdb_dump:
+ * @filename: The dump filename.
+ *
+ * Dumps the current contents of the procedural database
+ *
+ * This procedure dumps the contents of the procedural database to the
+ * specified file. The file will contain all of the information
+ * provided for each registered procedure.
+ *
+ * Returns: TRUE on success.
+ **/
+gboolean
+gimp_pdb_dump (const gchar *filename)
+{
+ ASSERT_NO_PLUG_IN_EXISTS (G_STRFUNC);
+
+ return _gimp_pdb_dump (filename);
+}
+
+/**
+ * gimp_pdb_query:
+ * @name: The regex for procedure name.
+ * @blurb: The regex for procedure blurb.
+ * @help: The regex for procedure help.
+ * @author: The regex for procedure author.
+ * @copyright: The regex for procedure copyright.
+ * @date: The regex for procedure date.
+ * @proc_type: The regex for procedure type: { 'Internal GIMP procedure', 'GIMP Plug-in', 'GIMP Extension',
'Temporary Procedure' }.
+ * @num_matches: (out): The number of matching procedures.
+ * @procedure_names: (out) (array length=num_matches) (element-type gchar*) (transfer full): The list of
procedure names.
+ *
+ * Queries the procedural database for its contents using regular
+ * expression matching.
+ *
+ * This procedure queries the contents of the procedural database. It
+ * is supplied with seven arguments matching procedures on { name,
+ * blurb, help, author, copyright, date, procedure type}. This is
+ * accomplished using regular expression matching. For instance, to
+ * find all procedures with \"jpeg\" listed in the blurb, all seven
+ * arguments can be supplied as \".*\", except for the second, which
+ * can be supplied as \".*jpeg.*\". There are two return arguments for
+ * this procedure. The first is the number of procedures matching the
+ * query. The second is a concatenated list of procedure names
+ * corresponding to those matching the query. If no matching entries
+ * are found, then the returned string is NULL and the number of
+ * entries is 0.
+ *
+ * Returns: TRUE on success.
+ **/
+gboolean
+gimp_pdb_query (const gchar *name,
+ const gchar *blurb,
+ const gchar *help,
+ const gchar *author,
+ const gchar *copyright,
+ const gchar *date,
+ const gchar *proc_type,
+ gint *num_matches,
+ gchar ***procedure_names)
+{
+ ASSERT_NO_PLUG_IN_EXISTS (G_STRFUNC);
+
+ return _gimp_pdb_query (name,
+ blurb, help,
+ author, copyright, date,
+ proc_type,
+ num_matches, procedure_names);
+}
+
/**
* gimp_pdb_proc_exists:
* @procedure_name: The procedure name.
diff --git a/libgimp/gimplegacy.h b/libgimp/gimplegacy.h
index 90c7f2cc3b..3c27fddb67 100644
--- a/libgimp/gimplegacy.h
+++ b/libgimp/gimplegacy.h
@@ -313,6 +313,16 @@ gboolean gimp_plugin_icon_register (const gchar *procedure_name,
*/
gchar * gimp_pdb_temp_name (void);
+gboolean gimp_pdb_dump (const gchar *filename);
+gboolean gimp_pdb_query (const gchar *name,
+ const gchar *blurb,
+ const gchar *help,
+ const gchar *author,
+ const gchar *copyright,
+ const gchar *date,
+ const gchar *proc_type,
+ gint *num_matches,
+ gchar ***procedure_names);
gboolean gimp_pdb_proc_exists (const gchar *procedure_name);
gboolean gimp_pdb_proc_info (const gchar *procedure_name,
gchar **blurb,
diff --git a/libgimp/gimppdb.c b/libgimp/gimppdb.c
index 301ebbccf6..47347d6c2f 100644
--- a/libgimp/gimppdb.c
+++ b/libgimp/gimppdb.c
@@ -352,6 +352,100 @@ gimp_pdb_temp_procedure_name (GimpPDB *pdb)
return _gimp_pdb_temp_name ();
}
+/**
+ * gimp_pdb_dump_to_file:
+ * @pdb: A #GimpPDB.
+ * @file: The dump filename.
+ *
+ * Dumps the current contents of the procedural database
+ *
+ * This procedure dumps the contents of the procedural database to the
+ * specified @file. The file will contain all of the information
+ * provided for each registered procedure.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: 3.0
+ **/
+gboolean
+gimp_pdb_dump_to_file (GimpPDB *pdb,
+ GFile *file)
+{
+ gchar *path;
+ gboolean success;
+
+ g_return_val_if_fail (GIMP_IS_PDB (pdb), FALSE);
+ g_return_val_if_fail (G_IS_FILE (pdb), FALSE);
+
+ path = g_file_get_path (file);
+ success = _gimp_pdb_dump (path);
+ g_free (path);
+
+ return success;
+}
+
+/**
+ * gimp_pdb_query_procedures:
+ * @pdb: A #GimpPDB.
+ * @name: The regex for procedure name.
+ * @blurb: The regex for procedure blurb.
+ * @help: The regex for procedure help.
+ * @help_id: The regex for procedure help-id.
+ * @authors: The regex for procedure authors.
+ * @copyright: The regex for procedure copyright.
+ * @date: The regex for procedure date.
+ * @proc_type: The regex for procedure type: { 'Internal GIMP procedure', 'GIMP Plug-in', 'GIMP
Extension', 'Temporary Procedure' }.
+ * @num_matches: (out): The number of matching procedures.
+ *
+ * Queries the procedural database for its contents using regular
+ * expression matching.
+ *
+ * This function queries the contents of the procedural database. It
+ * is supplied with eight arguments matching procedures on
+ *
+ * { name, blurb, help, help-id, authors, copyright, date, procedure type}.
+ *
+ * This is accomplished using regular expression matching. For
+ * instance, to find all procedures with "jpeg" listed in the blurb,
+ * all seven arguments can be supplied as ".*", except for the second,
+ * which can be supplied as ".*jpeg.*". There are two return arguments
+ * for this procedure. The first is the number of procedures matching
+ * the query. The second is a concatenated list of procedure names
+ * corresponding to those matching the query. If no matching entries
+ * are found, then the returned string is NULL and the number of
+ * entries is 0.
+ *
+ * Returns: (out) (array length=num_matches) (transfer full): The list
+ * of procedure names. Free with g_strfreev().
+ *
+ * Since: 3.0
+ **/
+gchar **
+gimp_pdb_query_procedures (GimpPDB *pdb,
+ const gchar *name,
+ const gchar *blurb,
+ const gchar *help,
+ const gchar *help_id,
+ const gchar *authors,
+ const gchar *copyright,
+ const gchar *date,
+ const gchar *proc_type,
+ gint *num_matches)
+{
+ gchar **matches;
+
+ g_return_val_if_fail (GIMP_IS_PDB (pdb), NULL);
+
+ _gimp_pdb_query (name,
+ blurb, help, /* FIXME help_id */
+ authors, copyright, date,
+ proc_type,
+ num_matches,
+ &matches);
+
+ return matches;
+}
+
GQuark
_gimp_pdb_error_quark (void)
{
diff --git a/libgimp/gimppdb.h b/libgimp/gimppdb.h
index 1c1159e5a7..4a8271c834 100644
--- a/libgimp/gimppdb.h
+++ b/libgimp/gimppdb.h
@@ -87,6 +87,19 @@ GimpValueArray * gimp_pdb_run_procedure_array (GimpPDB *pdb,
gchar * gimp_pdb_temp_procedure_name (GimpPDB *pdb);
+gboolean gimp_pdb_dump_to_file (GimpPDB *pdb,
+ GFile *file);
+gchar ** gimp_pdb_query_procedures (GimpPDB *pdb,
+ const gchar *name,
+ const gchar *blurb,
+ const gchar *help,
+ const gchar *help_id,
+ const gchar *authors,
+ const gchar *copyright,
+ const gchar *date,
+ const gchar *proc_type,
+ gint *num_matches);
+
/* Cruft API */
diff --git a/libgimp/gimppdb_pdb.c b/libgimp/gimppdb_pdb.c
index ea62ff87af..4dc28f618f 100644
--- a/libgimp/gimppdb_pdb.c
+++ b/libgimp/gimppdb_pdb.c
@@ -63,7 +63,7 @@ _gimp_pdb_temp_name (void)
}
/**
- * gimp_pdb_dump:
+ * _gimp_pdb_dump:
* @filename: The dump filename.
*
* Dumps the current contents of the procedural database
@@ -75,7 +75,7 @@ _gimp_pdb_temp_name (void)
* Returns: TRUE on success.
**/
gboolean
-gimp_pdb_dump (const gchar *filename)
+_gimp_pdb_dump (const gchar *filename)
{
GimpPDB *pdb = gimp_get_pdb ();
GimpValueArray *args;
@@ -103,7 +103,7 @@ gimp_pdb_dump (const gchar *filename)
}
/**
- * gimp_pdb_query:
+ * _gimp_pdb_query:
* @name: The regex for procedure name.
* @blurb: The regex for procedure blurb.
* @help: The regex for procedure help.
@@ -133,15 +133,15 @@ gimp_pdb_dump (const gchar *filename)
* Returns: TRUE on success.
**/
gboolean
-gimp_pdb_query (const gchar *name,
- const gchar *blurb,
- const gchar *help,
- const gchar *author,
- const gchar *copyright,
- const gchar *date,
- const gchar *proc_type,
- gint *num_matches,
- gchar ***procedure_names)
+_gimp_pdb_query (const gchar *name,
+ const gchar *blurb,
+ const gchar *help,
+ const gchar *author,
+ const gchar *copyright,
+ const gchar *date,
+ const gchar *proc_type,
+ gint *num_matches,
+ gchar ***procedure_names)
{
GimpPDB *pdb = gimp_get_pdb ();
GimpValueArray *args;
diff --git a/libgimp/gimppdb_pdb.h b/libgimp/gimppdb_pdb.h
index c0f2321145..5767376501 100644
--- a/libgimp/gimppdb_pdb.h
+++ b/libgimp/gimppdb_pdb.h
@@ -33,8 +33,8 @@ G_BEGIN_DECLS
G_GNUC_INTERNAL gchar* _gimp_pdb_temp_name (void);
-gboolean gimp_pdb_dump (const gchar *filename);
-gboolean gimp_pdb_query (const gchar *name,
+G_GNUC_INTERNAL gboolean _gimp_pdb_dump (const gchar *filename);
+G_GNUC_INTERNAL gboolean _gimp_pdb_query (const gchar *name,
const gchar *blurb,
const gchar *help,
const gchar *author,
diff --git a/pdb/groups/pdb.pdb b/pdb/groups/pdb.pdb
index fbfcd9df40..45cb34f370 100644
--- a/pdb/groups/pdb.pdb
+++ b/pdb/groups/pdb.pdb
@@ -57,6 +57,8 @@ HELP
$author = 'Spencer Kimball & Josh MacDonald';
$copyright = $author . ' & Peter Mattis';
+ $lib_private = 1;
+
@inargs = (
{ name => 'filename', type => 'string', allow_non_utf8 => 1,
non_empty => 1,
@@ -97,6 +99,8 @@ HELP
&std_pdb_misc;
+ $lib_private = 1;
+
@inargs = (
{ name => 'name', type => 'string', allow_non_utf8 => 1,
desc => 'The regex for procedure name' },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]