From 6601e861c4238f2a5311011d1ff9d92af0ada0c4 Mon Sep 17 00:00:00 2001 From: Jehan Date: Wed, 16 Aug 2023 20:48:32 +0200 Subject: [PATCH] libgimp*: support having procedure arguments of generic type GimpResource. --- libgimp/gimpgpparams-body.c | 42 +++++++------------------------ libgimp/gimpprocedure-params.h | 6 +++++ libgimpconfig/gimpconfig-params.c | 1 + 3 files changed, 16 insertions(+), 33 deletions(-) diff --git a/libgimp/gimpgpparams-body.c b/libgimp/gimpgpparams-body.c index e0d2f7d41f..a958c184db 100644 --- a/libgimp/gimpgpparams-body.c +++ b/libgimp/gimpgpparams-body.c @@ -214,6 +214,10 @@ _gimp_gp_param_def_to_param_spec (const GPParamDef *param_def) param_def->meta.m_id.none_ok, flags); + if (! strcmp (param_def->type_name, "GimpParamResource")) + return gimp_param_spec_resource (name, nick, blurb, + param_def->meta.m_id.none_ok, flags); + if (! strcmp (param_def->type_name, "GimpParamBrush")) return gimp_param_spec_brush (name, nick, blurb, param_def->meta.m_id.none_ok, flags); @@ -385,39 +389,7 @@ _gimp_param_spec_to_gp_param_def (GParamSpec *pspec, param_def->meta.m_id.none_ok = ispec->none_ok; } - else if (GIMP_IS_PARAM_SPEC_BRUSH (pspec)) - { - GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec); - - param_def->param_def_type = GP_PARAM_DEF_TYPE_ID; - - param_def->meta.m_id.none_ok = rspec->none_ok; - } - else if (GIMP_IS_PARAM_SPEC_PATTERN (pspec)) - { - GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec); - - param_def->param_def_type = GP_PARAM_DEF_TYPE_ID; - - param_def->meta.m_id.none_ok = rspec->none_ok; - } - else if (GIMP_IS_PARAM_SPEC_GRADIENT (pspec)) - { - GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec); - - param_def->param_def_type = GP_PARAM_DEF_TYPE_ID; - - param_def->meta.m_id.none_ok = rspec->none_ok; - } - else if (GIMP_IS_PARAM_SPEC_PALETTE (pspec)) - { - GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec); - - param_def->param_def_type = GP_PARAM_DEF_TYPE_ID; - - param_def->meta.m_id.none_ok = rspec->none_ok; - } - else if (GIMP_IS_PARAM_SPEC_FONT (pspec)) + else if (GIMP_IS_PARAM_SPEC_RESOURCE (pspec)) { GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec); @@ -475,6 +447,10 @@ _gimp_param_spec_to_gp_param_def (GParamSpec *pspec, { type_name = "GimpParamVectors"; } + else if (value_type == GIMP_TYPE_RESOURCE) + { + type_name = "GimpParamResource"; + } else if (value_type == GIMP_TYPE_BRUSH) { type_name = "GimpParamBrush"; diff --git a/libgimp/gimpprocedure-params.h b/libgimp/gimpprocedure-params.h index 79c11ff1d2..1b6a96c5d8 100644 --- a/libgimp/gimpprocedure-params.h +++ b/libgimp/gimpprocedure-params.h @@ -888,6 +888,12 @@ G_BEGIN_DECLS /* Resource */ +#define GIMP_PROC_ARG_RESOURCE(procedure, name, nick, blurb, flags) \ + gimp_procedure_add_argument (procedure,\ + gimp_param_spec_resource (name, nick, blurb,\ + GIMP_TYPE_RESOURCE,\ + flags)) + #define GIMP_PROC_ARG_BRUSH(procedure, name, nick, blurb, flags) \ gimp_procedure_add_argument (procedure,\ gimp_param_spec_brush (name, nick, blurb,\ diff --git a/libgimpconfig/gimpconfig-params.c b/libgimpconfig/gimpconfig-params.c index 83830063e6..9dbb69008e 100644 --- a/libgimpconfig/gimpconfig-params.c +++ b/libgimpconfig/gimpconfig-params.c @@ -355,6 +355,7 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec) g_strcmp0 (type_name, "GimpLayer") == 0 || g_strcmp0 (type_name, "GimpChannel") == 0 || g_strcmp0 (type_name, "GimpSelection") == 0 || + g_strcmp0 (type_name, "GimpResource") == 0 || g_strcmp0 (type_name, "GimpBrush") == 0 || g_strcmp0 (type_name, "GimpFont") == 0 || g_strcmp0 (type_name, "GimpGradient") == 0 ||