app, libgimp: new GimpChoice procedure argument.

These will replace the int arguments used in place of enums. The problem of int
arguments used as list of choices is that it makes calling PDB functions very
opaque. This is especially bad when a list is long, so you constantly have to
refer to the documentation to understand what a series of numbers mean in
argument lists.

And the second issue is that plug-in developers have to manually maintain a list
of values both in the GUI and in the documentation string. This help text may
get out-of-sync, may end up with missing values or whatnot. Also if it is used
as tooltips, it makes for very weird tooltips in the graphical interface, with
an overlong technical list of int-values mapping which should ideally only be
made visible in the PDB procedure browser listing.
This commit is contained in:
Jehan 2023-08-02 23:55:33 +02:00
parent 20923260cf
commit 4163a29af3
15 changed files with 485 additions and 1 deletions

View file

@ -240,6 +240,15 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
flags);
}
}
else if (GIMP_IS_PARAM_SPEC_CHOICE (pspec))
{
GimpParamSpecChoice *spec = GIMP_PARAM_SPEC_CHOICE (pspec);
copy = gimp_param_spec_choice (name, nick, blurb,
g_object_ref (spec->choice),
spec->default_value,
flags);
}
else if (GIMP_IS_PARAM_SPEC_RGB (pspec))
{
GimpRGB color;