[gimp] libgimp: implement GimpProcedure::create_config() in all subclasses



commit aeef726044ee4985b368af245f6c1d51d8b67736
Author: Michael Natterer <mitch gimp org>
Date:   Tue Sep 24 00:59:50 2019 +0200

    libgimp: implement GimpProcedure::create_config() in all subclasses

 libgimp/gimploadprocedure.c      | 50 +++++++++++++++++++++++++++++++---------
 libgimp/gimpsaveprocedure.c      | 50 +++++++++++++++++++++++++++++++---------
 libgimp/gimpthumbnailprocedure.c | 39 +++++++++++++++++++++++++++----
 3 files changed, 112 insertions(+), 27 deletions(-)
---
diff --git a/libgimp/gimploadprocedure.c b/libgimp/gimploadprocedure.c
index 08d8ea02a6..78608d833e 100644
--- a/libgimp/gimploadprocedure.c
+++ b/libgimp/gimploadprocedure.c
@@ -37,13 +37,17 @@ struct _GimpLoadProcedurePrivate
 };
 
 
-static void   gimp_load_procedure_constructed (GObject              *object);
-static void   gimp_load_procedure_finalize    (GObject              *object);
+static void   gimp_load_procedure_constructed   (GObject              *object);
+static void   gimp_load_procedure_finalize      (GObject              *object);
 
-static void   gimp_load_procedure_install     (GimpProcedure        *procedure);
+static void   gimp_load_procedure_install       (GimpProcedure        *procedure);
 static GimpValueArray *
-              gimp_load_procedure_run         (GimpProcedure        *procedure,
-                                               const GimpValueArray *args);
+              gimp_load_procedure_run           (GimpProcedure        *procedure,
+                                                 const GimpValueArray *args);
+static GimpProcedureConfig *
+              gimp_load_procedure_create_config (GimpProcedure        *procedure,
+                                                 GParamSpec          **args,
+                                                 gint                  n_args);
 
 
 G_DEFINE_TYPE_WITH_PRIVATE (GimpLoadProcedure, gimp_load_procedure,
@@ -58,11 +62,12 @@ gimp_load_procedure_class_init (GimpLoadProcedureClass *klass)
   GObjectClass       *object_class    = G_OBJECT_CLASS (klass);
   GimpProcedureClass *procedure_class = GIMP_PROCEDURE_CLASS (klass);
 
-  object_class->constructed  = gimp_load_procedure_constructed;
-  object_class->finalize     = gimp_load_procedure_finalize;
+  object_class->constructed      = gimp_load_procedure_constructed;
+  object_class->finalize         = gimp_load_procedure_finalize;
 
-  procedure_class->install   = gimp_load_procedure_install;
-  procedure_class->run       = gimp_load_procedure_run;
+  procedure_class->install       = gimp_load_procedure_install;
+  procedure_class->run           = gimp_load_procedure_run;
+  procedure_class->create_config = gimp_load_procedure_create_config;
 }
 
 static void
@@ -139,6 +144,8 @@ gimp_load_procedure_install (GimpProcedure *procedure)
                                               load_proc->priv->thumbnail_proc);
 }
 
+#define ARG_OFFSET 2
+
 static GimpValueArray *
 gimp_load_procedure_run (GimpProcedure        *procedure,
                          const GimpValueArray *args)
@@ -153,9 +160,9 @@ gimp_load_procedure_run (GimpProcedure        *procedure,
   run_mode = GIMP_VALUES_GET_ENUM (args, 0);
   file     = GIMP_VALUES_GET_FILE (args, 1);
 
-  remaining = gimp_value_array_new (gimp_value_array_length (args) - 2);
+  remaining = gimp_value_array_new (gimp_value_array_length (args) - ARG_OFFSET);
 
-  for (i = 2; i < gimp_value_array_length (args); i++)
+  for (i = ARG_OFFSET; i < gimp_value_array_length (args); i++)
     {
       GValue *value = gimp_value_array_index (args, i);
 
@@ -173,6 +180,27 @@ gimp_load_procedure_run (GimpProcedure        *procedure,
   return return_values;
 }
 
+static GimpProcedureConfig *
+gimp_load_procedure_create_config (GimpProcedure  *procedure,
+                                   GParamSpec    **args,
+                                   gint            n_args)
+{
+  if (n_args > ARG_OFFSET)
+    {
+      args   += ARG_OFFSET;
+      n_args -= ARG_OFFSET;
+    }
+  else
+    {
+      args   = NULL;
+      n_args = 0;
+    }
+
+  return GIMP_PROCEDURE_CLASS (parent_class)->create_config (procedure,
+                                                             args,
+                                                             n_args);
+}
+
 
 /*  public functions  */
 
diff --git a/libgimp/gimpsaveprocedure.c b/libgimp/gimpsaveprocedure.c
index c5a6bedf35..2d8ed8ea06 100644
--- a/libgimp/gimpsaveprocedure.c
+++ b/libgimp/gimpsaveprocedure.c
@@ -34,13 +34,17 @@ struct _GimpSaveProcedurePrivate
 };
 
 
-static void   gimp_save_procedure_constructed (GObject              *object);
-static void   gimp_save_procedure_finalize    (GObject              *object);
+static void   gimp_save_procedure_constructed   (GObject              *object);
+static void   gimp_save_procedure_finalize      (GObject              *object);
 
-static void   gimp_save_procedure_install     (GimpProcedure        *procedure);
+static void   gimp_save_procedure_install       (GimpProcedure        *procedure);
 static GimpValueArray *
-              gimp_save_procedure_run         (GimpProcedure        *procedure,
-                                               const GimpValueArray *args);
+              gimp_save_procedure_run           (GimpProcedure        *procedure,
+                                                 const GimpValueArray *args);
+static GimpProcedureConfig *
+              gimp_save_procedure_create_config (GimpProcedure        *procedure,
+                                                 GParamSpec          **args,
+                                                 gint                  n_args);
 
 
 G_DEFINE_TYPE_WITH_PRIVATE (GimpSaveProcedure, gimp_save_procedure,
@@ -55,11 +59,12 @@ gimp_save_procedure_class_init (GimpSaveProcedureClass *klass)
   GObjectClass       *object_class    = G_OBJECT_CLASS (klass);
   GimpProcedureClass *procedure_class = GIMP_PROCEDURE_CLASS (klass);
 
-  object_class->constructed  = gimp_save_procedure_constructed;
-  object_class->finalize     = gimp_save_procedure_finalize;
+  object_class->constructed      = gimp_save_procedure_constructed;
+  object_class->finalize         = gimp_save_procedure_finalize;
 
-  procedure_class->install   = gimp_save_procedure_install;
-  procedure_class->run       = gimp_save_procedure_run;
+  procedure_class->install       = gimp_save_procedure_install;
+  procedure_class->run           = gimp_save_procedure_run;
+  procedure_class->create_config = gimp_save_procedure_create_config;
 }
 
 static void
@@ -131,6 +136,8 @@ gimp_save_procedure_install (GimpProcedure *procedure)
                                       priority);
 }
 
+#define ARG_OFFSET 4
+
 static GimpValueArray *
 gimp_save_procedure_run (GimpProcedure        *procedure,
                          const GimpValueArray *args)
@@ -149,9 +156,9 @@ gimp_save_procedure_run (GimpProcedure        *procedure,
   drawable = GIMP_VALUES_GET_DRAWABLE (args, 2);
   file     = GIMP_VALUES_GET_FILE     (args, 3);
 
-  remaining = gimp_value_array_new (gimp_value_array_length (args) - 4);
+  remaining = gimp_value_array_new (gimp_value_array_length (args) - ARG_OFFSET);
 
-  for (i = 4; i < gimp_value_array_length (args); i++)
+  for (i = ARG_OFFSET; i < gimp_value_array_length (args); i++)
     {
       GValue *value = gimp_value_array_index (args, i);
 
@@ -170,6 +177,27 @@ gimp_save_procedure_run (GimpProcedure        *procedure,
   return return_values;
 }
 
+static GimpProcedureConfig *
+gimp_save_procedure_create_config (GimpProcedure  *procedure,
+                                   GParamSpec    **args,
+                                   gint            n_args)
+{
+  if (n_args > ARG_OFFSET)
+    {
+      args   += ARG_OFFSET;
+      n_args -= ARG_OFFSET;
+    }
+  else
+    {
+      args   = NULL;
+      n_args = 0;
+    }
+
+  return GIMP_PROCEDURE_CLASS (parent_class)->create_config (procedure,
+                                                             args,
+                                                             n_args);
+}
+
 
 /*  public functions  */
 
diff --git a/libgimp/gimpthumbnailprocedure.c b/libgimp/gimpthumbnailprocedure.c
index a823de61bc..030b456289 100644
--- a/libgimp/gimpthumbnailprocedure.c
+++ b/libgimp/gimpthumbnailprocedure.c
@@ -39,6 +39,11 @@ static void   gimp_thumbnail_procedure_finalize    (GObject              *object
 static GimpValueArray *
               gimp_thumbnail_procedure_run         (GimpProcedure        *procedure,
                                                     const GimpValueArray *args);
+static GimpProcedureConfig *
+              gimp_thumbnail_procedure_create_config
+                                                   (GimpProcedure        *procedure,
+                                                    GParamSpec          **args,
+                                                    gint                  n_args);
 
 
 G_DEFINE_TYPE_WITH_PRIVATE (GimpThumbnailProcedure, gimp_thumbnail_procedure,
@@ -53,10 +58,11 @@ gimp_thumbnail_procedure_class_init (GimpThumbnailProcedureClass *klass)
   GObjectClass       *object_class    = G_OBJECT_CLASS (klass);
   GimpProcedureClass *procedure_class = GIMP_PROCEDURE_CLASS (klass);
 
-  object_class->constructed  = gimp_thumbnail_procedure_constructed;
-  object_class->finalize     = gimp_thumbnail_procedure_finalize;
+  object_class->constructed      = gimp_thumbnail_procedure_constructed;
+  object_class->finalize         = gimp_thumbnail_procedure_finalize;
 
-  procedure_class->run       = gimp_thumbnail_procedure_run;
+  procedure_class->run           = gimp_thumbnail_procedure_run;
+  procedure_class->create_config = gimp_thumbnail_procedure_create_config;
 }
 
 static void
@@ -126,6 +132,8 @@ gimp_thumbnail_procedure_finalize (GObject *object)
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
+#define ARG_OFFSET 2
+
 static GimpValueArray *
 gimp_thumbnail_procedure_run (GimpProcedure        *procedure,
                               const GimpValueArray *args)
@@ -140,9 +148,9 @@ gimp_thumbnail_procedure_run (GimpProcedure        *procedure,
   file = GIMP_VALUES_GET_FILE (args, 0);
   size = GIMP_VALUES_GET_INT  (args, 1);
 
-  remaining = gimp_value_array_new (gimp_value_array_length (args) - 2);
+  remaining = gimp_value_array_new (gimp_value_array_length (args) - ARG_OFFSET);
 
-  for (i = 2; i < gimp_value_array_length (args); i++)
+  for (i = ARG_OFFSET; i < gimp_value_array_length (args); i++)
     {
       GValue *value = gimp_value_array_index (args, i);
 
@@ -160,6 +168,27 @@ gimp_thumbnail_procedure_run (GimpProcedure        *procedure,
   return return_values;
 }
 
+static GimpProcedureConfig *
+gimp_thumbnail_procedure_create_config (GimpProcedure  *procedure,
+                                        GParamSpec    **args,
+                                        gint            n_args)
+{
+  if (n_args > ARG_OFFSET)
+    {
+      args   += ARG_OFFSET;
+      n_args -= ARG_OFFSET;
+    }
+  else
+    {
+      args   = NULL;
+      n_args = 0;
+    }
+
+  return GIMP_PROCEDURE_CLASS (parent_class)->create_config (procedure,
+                                                             args,
+                                                             n_args);
+}
+
 
 /*  public functions  */
 


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