[gimp] pdb: add new procedure gimp-get-default-new-layer-mode



commit 59fae30b5361d33c0fee211e7513a49e36a89bea
Author: Michael Natterer <mitch gimp org>
Date:   Sun Aug 20 16:12:53 2017 +0200

    pdb: add new procedure gimp-get-default-new-layer-mode
    
    Which returns GimpCoreConfig::default-new-layer-mode and will be
    used to make plug-ins create layers/images in the configured way.

 app/pdb/gimprc-cmds.c       |   43 +++++++++++++++++++++++++++++++++++++++++++
 app/pdb/internal-procs.c    |    2 +-
 libgimp/gimp.def            |    1 +
 libgimp/gimpgimprc_pdb.c    |   30 ++++++++++++++++++++++++++++++
 libgimp/gimpgimprc_pdb.h    |   23 ++++++++++++-----------
 tools/pdbgen/pdb/gimprc.pdb |   22 ++++++++++++++++++++++
 6 files changed, 109 insertions(+), 12 deletions(-)
---
diff --git a/app/pdb/gimprc-cmds.c b/app/pdb/gimprc-cmds.c
index 7f4b502..2eea82a 100644
--- a/app/pdb/gimprc-cmds.c
+++ b/app/pdb/gimprc-cmds.c
@@ -174,6 +174,25 @@ get_monitor_resolution_invoker (GimpProcedure         *procedure,
 }
 
 static GimpValueArray *
+get_default_new_layer_mode_invoker (GimpProcedure         *procedure,
+                                    Gimp                  *gimp,
+                                    GimpContext           *context,
+                                    GimpProgress          *progress,
+                                    const GimpValueArray  *args,
+                                    GError               **error)
+{
+  GimpValueArray *return_vals;
+  gint32 mode = 0;
+
+  mode = gimp->config->default_new_layer_mode;
+
+  return_vals = gimp_procedure_get_return_values (procedure, TRUE, NULL);
+  g_value_set_enum (gimp_value_array_index (return_vals, 1), mode);
+
+  return return_vals;
+}
+
+static GimpValueArray *
 get_theme_dir_invoker (GimpProcedure         *procedure,
                        Gimp                  *gimp,
                        GimpContext           *context,
@@ -401,6 +420,30 @@ register_gimprc_procs (GimpPDB *pdb)
   g_object_unref (procedure);
 
   /*
+   * gimp-get-default-new-layer-mode
+   */
+  procedure = gimp_procedure_new (get_default_new_layer_mode_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-get-default-new-layer-mode");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-get-default-new-layer-mode",
+                                     "Get the default mode for newly created layers.",
+                                     "Returns the default mode for newly created layers.",
+                                     "Michael Natterer <mitch gimp org>",
+                                     "Michael Natterer",
+                                     "2017",
+                                     NULL);
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_enum ("mode",
+                                                      "mode",
+                                                      "The layer mode",
+                                                      GIMP_TYPE_LAYER_MODE,
+                                                      GIMP_LAYER_MODE_NORMAL,
+                                                      GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
    * gimp-get-theme-dir
    */
   procedure = gimp_procedure_new (get_theme_dir_invoker);
diff --git a/app/pdb/internal-procs.c b/app/pdb/internal-procs.c
index 4f76ae8..9083d52 100644
--- a/app/pdb/internal-procs.c
+++ b/app/pdb/internal-procs.c
@@ -28,7 +28,7 @@
 #include "internal-procs.h"
 
 
-/* 811 procedures registered total */
+/* 812 procedures registered total */
 
 void
 internal_procs_init (GimpPDB *pdb)
diff --git a/libgimp/gimp.def b/libgimp/gimp.def
index 861ba71..f0d63d9 100644
--- a/libgimp/gimp.def
+++ b/libgimp/gimp.def
@@ -332,6 +332,7 @@ EXPORTS
        gimp_gamma
        gimp_get_color_configuration
        gimp_get_default_comment
+       gimp_get_default_new_layer_mode
        gimp_get_default_unit
        gimp_get_icon_theme_dir
        gimp_get_module_load_inhibit
diff --git a/libgimp/gimpgimprc_pdb.c b/libgimp/gimpgimprc_pdb.c
index e595b58..8f2cc5a 100644
--- a/libgimp/gimpgimprc_pdb.c
+++ b/libgimp/gimpgimprc_pdb.c
@@ -209,6 +209,36 @@ gimp_get_monitor_resolution (gdouble *xres,
 }
 
 /**
+ * gimp_get_default_new_layer_mode:
+ *
+ * Get the default mode for newly created layers.
+ *
+ * Returns the default mode for newly created layers.
+ *
+ * Returns: The layer mode.
+ *
+ * Since: 2.10
+ **/
+GimpLayerMode
+gimp_get_default_new_layer_mode (void)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  GimpLayerMode mode = 0;
+
+  return_vals = gimp_run_procedure ("gimp-get-default-new-layer-mode",
+                                    &nreturn_vals,
+                                    GIMP_PDB_END);
+
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    mode = return_vals[1].data.d_int32;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return mode;
+}
+
+/**
  * gimp_get_theme_dir:
  *
  * Get the directory of the current GUI theme.
diff --git a/libgimp/gimpgimprc_pdb.h b/libgimp/gimpgimprc_pdb.h
index 4be14ca..420d31f 100644
--- a/libgimp/gimpgimprc_pdb.h
+++ b/libgimp/gimpgimprc_pdb.h
@@ -32,17 +32,18 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-gchar*                 gimp_gimprc_query             (const gchar *token);
-gboolean               gimp_gimprc_set               (const gchar *token,
-                                                      const gchar *value);
-gchar*                 gimp_get_default_comment      (void);
-GimpUnit               gimp_get_default_unit         (void);
-gboolean               gimp_get_monitor_resolution   (gdouble     *xres,
-                                                      gdouble     *yres);
-gchar*                 gimp_get_theme_dir            (void);
-gchar*                 gimp_get_icon_theme_dir       (void);
-G_GNUC_INTERNAL gchar* _gimp_get_color_configuration (void);
-gchar*                 gimp_get_module_load_inhibit  (void);
+gchar*                 gimp_gimprc_query               (const gchar *token);
+gboolean               gimp_gimprc_set                 (const gchar *token,
+                                                        const gchar *value);
+gchar*                 gimp_get_default_comment        (void);
+GimpUnit               gimp_get_default_unit           (void);
+gboolean               gimp_get_monitor_resolution     (gdouble     *xres,
+                                                        gdouble     *yres);
+GimpLayerMode          gimp_get_default_new_layer_mode (void);
+gchar*                 gimp_get_theme_dir              (void);
+gchar*                 gimp_get_icon_theme_dir         (void);
+G_GNUC_INTERNAL gchar* _gimp_get_color_configuration   (void);
+gchar*                 gimp_get_module_load_inhibit    (void);
 
 
 G_END_DECLS
diff --git a/tools/pdbgen/pdb/gimprc.pdb b/tools/pdbgen/pdb/gimprc.pdb
index 70e339a..1ea3293 100644
--- a/tools/pdbgen/pdb/gimprc.pdb
+++ b/tools/pdbgen/pdb/gimprc.pdb
@@ -170,6 +170,27 @@ CODE
     );
 }
 
+sub get_default_new_layer_mode {
+    $blurb = 'Get the default mode for newly created layers.';
+    $help  = 'Returns the default mode for newly created layers.';
+
+    &mitch_pdb_misc('2017', '2.10');
+
+    @outargs = (
+       { name => 'mode', type => 'enum GimpLayerMode',
+          default => 'GIMP_LAYER_MODE_NORMAL',
+         desc => 'The layer mode' }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  mode = gimp->config->default_new_layer_mode;
+}
+CODE
+    );
+}
+
 sub get_theme_dir {
     $blurb = 'Get the directory of the current GUI theme.';
     $help  = 'Returns a copy of the current GUI theme dir.';
@@ -269,6 +290,7 @@ CODE
             get_default_comment
             get_default_unit
             get_monitor_resolution
+            get_default_new_layer_mode
             get_theme_dir
             get_icon_theme_dir
             get_color_configuration


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]