libgimp: plugins: fix #10950 resource defaults not effective

Now you can declare a default value when declaring resource arguments to
a PDB procedure.

Add default behavior to GimpParamSpecResource.
Add field and override g_param_spec_value_set_default.

Fix the plugins that have resource arguments.
Some plugins temporarily use a hardcoded default instead of declared default.
ScriptFu plugins, TODO.

Misc fix to the test plugin for this case: test-dialog.py.
Dev>Demo>Test dialog...

TODO 10822 Lava plugin issue depends on this.

Note film.c fixed but still doesn't work.
This commit is contained in:
bootchk 2024-07-27 08:18:54 -04:00 committed by Jehan
parent 4dcf141739
commit 73733335c8
30 changed files with 405 additions and 49 deletions

View File

@ -793,6 +793,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -823,6 +824,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -846,6 +848,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_boolean ("generated",
@ -875,6 +878,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("width",
@ -922,6 +926,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("width",
@ -981,6 +986,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("spacing",
@ -1010,6 +1016,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("spacing",
@ -1039,6 +1046,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_enum ("shape",
@ -1069,6 +1077,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_enum ("shape-in",
@ -1106,6 +1115,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_double ("radius",
@ -1135,6 +1145,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("radius-in",
@ -1170,6 +1181,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("spikes",
@ -1199,6 +1211,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("spikes-in",
@ -1234,6 +1247,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_double ("hardness",
@ -1263,6 +1277,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("hardness-in",
@ -1298,6 +1313,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_double ("aspect-ratio",
@ -1327,6 +1343,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("aspect-ratio-in",
@ -1362,6 +1379,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_double ("angle",
@ -1391,6 +1409,7 @@ register_brush_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("angle-in",

View File

@ -174,6 +174,7 @@ register_brush_select_procs (GimpPDB *pdb)
"initial brush",
"The brush to set as the initial choice",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_boxed ("parent-window",
@ -234,6 +235,7 @@ register_brush_select_procs (GimpPDB *pdb)
"brush",
"The brush to set as selected",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -3843,6 +3843,7 @@ register_context_procs (GimpPDB *pdb)
"brush",
"The active brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -3866,6 +3867,7 @@ register_context_procs (GimpPDB *pdb)
"brush",
"The brush",
FALSE,
NULL,
GIMP_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4359,6 +4361,7 @@ register_context_procs (GimpPDB *pdb)
"pattern",
"The active pattern",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4382,6 +4385,7 @@ register_context_procs (GimpPDB *pdb)
"pattern",
"The pattern",
FALSE,
NULL,
GIMP_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4405,6 +4409,7 @@ register_context_procs (GimpPDB *pdb)
"gradient",
"The active gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4428,6 +4433,7 @@ register_context_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4661,6 +4667,7 @@ register_context_procs (GimpPDB *pdb)
"palette",
"The active palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4684,6 +4691,7 @@ register_context_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4707,6 +4715,7 @@ register_context_procs (GimpPDB *pdb)
"font",
"The active font",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -4730,6 +4739,7 @@ register_context_procs (GimpPDB *pdb)
"font",
"The font",
FALSE,
NULL,
GIMP_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -5774,6 +5784,7 @@ register_context_procs (GimpPDB *pdb)
"resource",
"The active resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -174,6 +174,7 @@ register_font_procs (GimpPDB *pdb)
"font",
"GimpFont object",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_string ("lookup-name",
@ -213,6 +214,7 @@ register_font_procs (GimpPDB *pdb)
"font",
"The font",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -176,6 +176,7 @@ register_font_select_procs (GimpPDB *pdb)
"initial font",
"The name of the initial font choice.",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_boxed ("parent-window",
@ -236,6 +237,7 @@ register_font_select_procs (GimpPDB *pdb)
"font",
"The font to set as selected",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -1284,6 +1284,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -1314,6 +1315,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -1337,6 +1339,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("num-segments",
@ -1366,6 +1369,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("num-samples",
@ -1412,6 +1416,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("num-samples",
@ -1464,6 +1469,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1501,6 +1507,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1538,6 +1545,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1575,6 +1583,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1612,6 +1621,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1648,6 +1658,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1690,6 +1701,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1726,6 +1738,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1768,6 +1781,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1804,6 +1818,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1846,6 +1861,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1883,6 +1899,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("segment",
@ -1920,6 +1937,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -1963,6 +1981,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2006,6 +2025,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2042,6 +2062,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2084,6 +2105,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2120,6 +2142,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2162,6 +2185,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2198,6 +2222,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2234,6 +2259,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2270,6 +2296,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",
@ -2306,6 +2333,7 @@ register_gradient_procs (GimpPDB *pdb)
"gradient",
"The gradient",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("start-segment",

View File

@ -180,6 +180,7 @@ register_gradient_select_procs (GimpPDB *pdb)
"initial gradient",
"The initial gradient choice",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_boxed ("parent-window",
@ -240,6 +241,7 @@ register_gradient_select_procs (GimpPDB *pdb)
"gradient",
"The gradient to set as selected",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -4331,6 +4331,7 @@ register_image_procs (GimpPDB *pdb)
"colormap",
"The image's colormap.",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -484,6 +484,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -514,6 +515,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -537,6 +539,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("num-colors",
@ -566,6 +569,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_boxed ("colors",
@ -595,6 +599,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("num-columns",
@ -624,6 +629,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("columns",
@ -653,6 +659,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
gimp_param_spec_string ("entry-name",
@ -697,6 +704,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("entry-num",
@ -726,6 +734,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("entry-num",
@ -762,6 +771,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("entry-num",
@ -798,6 +808,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("entry-num",
@ -834,6 +845,7 @@ register_palette_procs (GimpPDB *pdb)
"palette",
"The palette",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_int ("entry-num",

View File

@ -174,6 +174,7 @@ register_palette_select_procs (GimpPDB *pdb)
"initial palette",
"The palette to set as the initial choice.",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_boxed ("parent-window",
@ -234,6 +235,7 @@ register_palette_select_procs (GimpPDB *pdb)
"palette",
"The palette to set as selected",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -199,6 +199,7 @@ register_pattern_procs (GimpPDB *pdb)
"pattern",
"The pattern",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -222,6 +223,7 @@ register_pattern_procs (GimpPDB *pdb)
"pattern",
"The pattern",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("width",
@ -263,6 +265,7 @@ register_pattern_procs (GimpPDB *pdb)
"pattern",
"The pattern",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("width",

View File

@ -174,6 +174,7 @@ register_pattern_select_procs (GimpPDB *pdb)
"initial pattern",
"The pattern to set as the initial choice",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_boxed ("parent-window",
@ -234,6 +235,7 @@ register_pattern_select_procs (GimpPDB *pdb)
"pattern",
"The pattern to set as selected",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -543,6 +543,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
TRUE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -593,6 +594,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -792,6 +794,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_string ("name",
@ -824,6 +827,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_boolean ("is-internal",
@ -867,6 +871,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_boolean ("editable",
@ -896,12 +901,14 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_resource ("resource-copy",
"resource copy",
"A copy of the resource.",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -925,6 +932,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
gimp_param_spec_string ("new-name",
@ -955,6 +963,7 @@ register_resource_procs (GimpPDB *pdb)
"resource",
"The resource",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -1028,6 +1028,7 @@ register_text_layer_procs (GimpPDB *pdb)
"font",
"The font to write the text with",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("size",
@ -1198,6 +1199,7 @@ register_text_layer_procs (GimpPDB *pdb)
"font",
"The font which is used in the specified text layer.",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
@ -1227,6 +1229,7 @@ register_text_layer_procs (GimpPDB *pdb)
"font",
"The new font to use",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);

View File

@ -216,6 +216,7 @@ register_text_tool_procs (GimpPDB *pdb)
"font",
"The font",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_layer ("text-layer",
@ -260,6 +261,7 @@ register_text_tool_procs (GimpPDB *pdb)
"font",
"The name of the font",
FALSE,
NULL,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_int ("width",

View File

@ -263,29 +263,33 @@ _gimp_gp_param_def_to_param_spec (const GPParamDef *param_def)
param_def->meta.m_id.none_ok,
flags);
/* When send GimpParamResource or subclass over wire, pass NULL name_of_default.
* Neither core nor libgimp seems to use it.
* Args to PDB procedures are not sent as GimpParamResource crossing wire.
*/
if (! strcmp (param_def->type_name, "GimpParamResource"))
return gimp_param_spec_resource (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
if (! strcmp (param_def->type_name, "GimpParamBrush"))
return gimp_param_spec_brush (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
if (! strcmp (param_def->type_name, "GimpParamFont"))
return gimp_param_spec_font (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
if (! strcmp (param_def->type_name, "GimpParamGradient"))
return gimp_param_spec_gradient (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
if (! strcmp (param_def->type_name, "GimpParamPalette"))
return gimp_param_spec_palette (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
if (! strcmp (param_def->type_name, "GimpParamPattern"))
return gimp_param_spec_pattern (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
param_def->meta.m_id.none_ok, NULL, flags);
break;
case GP_PARAM_DEF_TYPE_ID_ARRAY:

View File

@ -984,6 +984,36 @@ gimp_param_spec_display (const gchar *name,
return G_PARAM_SPEC (dspec);
}
/* Notes about GimpParamResource
*
* Similar to GimpParamColor.
* Except this does not define convenience method: get_default returning GimpResource.
* There is only value_get_default, which returns a GValue.
*
* GParamSpec and derived classes are used not only to describe args to
* long-lived GimpProcedure (which are often properties of a config)
* but to describe other properties
* and to describe args of short-lived temporary procedures (e.g. callbacks.)
* In the other uses, the default field is often not used,
* Thus the default field can be NULL.
* See gimpgpparamspecs-body.c where the default is always NULL.
*
* g_param_spec_get_default_value: this is unusual and subtle
* and not documented without reading GObject code!!!
* g_param_spec_get_default_value is a method of the superclass GParamSpec.
* It is virtual, but not pure virtual i.e. need not be reimplemented,
* and has a base implementation.
* Its implementation calls g_param_value_set_default, a virtual method
* of the superclass that subclasses should override.
* Note that it is named value_set_default, not just set_default.
* The method g_param_value_set_default does NOT set any field in a GParamSpec,
* but sets an OUT GValue.
* In pattern/idiom terms, GParamSpec.get_default_value is a "template" method.
* It calls the "abstract primitive operation" value_set_default.
* If a subclass of GParamSpec does NOT override value_set_default,
* then method GParamSpec.get_default_value calls the base implementation
* of value_set_default which returns a zero'd GValue.
*/
/*
* GIMP_TYPE_PARAM_RESOURCE
@ -991,9 +1021,12 @@ gimp_param_spec_display (const gchar *name,
static void gimp_param_resource_class_init (GParamSpecClass *klass);
static void gimp_param_resource_init (GParamSpec *pspec);
static void gimp_param_resource_finalize (GParamSpec *pspec);
static gboolean gimp_param_resource_validate (GParamSpec *pspec,
GValue *value);
static void gimp_param_resource_value_set_default
(GParamSpec *pspec,
GValue *value);
GType
gimp_param_resource_get_type (void)
{
@ -1022,8 +1055,10 @@ gimp_param_spec_display (const gchar *name,
static void
gimp_param_resource_class_init (GParamSpecClass *klass)
{
klass->value_type = GIMP_TYPE_RESOURCE;
klass->value_validate = gimp_param_resource_validate;
klass->value_type = GIMP_TYPE_RESOURCE;
klass->finalize = gimp_param_resource_finalize;
klass->value_validate = gimp_param_resource_validate;
klass->value_set_default = gimp_param_resource_value_set_default;
}
static void
@ -1032,6 +1067,19 @@ gimp_param_resource_init (GParamSpec *pspec)
GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec);
rspec->none_ok = FALSE;
rspec->default_value = NULL;
}
static void
gimp_param_resource_finalize (GParamSpec *pspec)
{
GimpParamSpecResource *rspec = GIMP_PARAM_SPEC_RESOURCE (pspec);
GParamSpecClass *parent_class = g_type_class_peek (
g_type_parent (GIMP_TYPE_PARAM_RESOURCE));
g_clear_object (&rspec->default_value);
parent_class->finalize (pspec);
}
static gboolean
@ -1055,12 +1103,47 @@ gimp_param_resource_validate (GParamSpec *pspec,
return FALSE;
}
/* Set gvalue from pspec's default value.
*
* Implements virtual method GParamSpec.value_get_default,
* which is called by superclass method GParamSpec.get_default_value,
* which yields a GValue that will
* "remain valid for the life of p-spec and must not be modified."
* Without this, the base implementation of GParamSpec.get_default_value
* returns a zero'ed GValue value.
*
* This does nothing on the core side.
* Core does not use the defaulting mechanism of GParamSpec for objects.
*
* When the pspec is not valid, or the pspec has a NULL default_value,
* may return with gvalue's value==NULL.
*
* Inherited by subclasses of GimpParamSpecResource.
*/
static void
gimp_param_resource_value_set_default (GParamSpec *pspec,
GValue *value)
{
#ifdef LIBGIMP_COMPILATION
g_return_if_fail ( GIMP_IS_PARAM_SPEC_RESOURCE (pspec));
/* not transfer ownership */
g_value_set_object (value, GIMP_PARAM_SPEC_RESOURCE (pspec)->default_value);
#endif
/* Whether on core or libgimp, the OUT GValue might hold a NULL object pointer. */
}
/**
* gimp_param_spec_resource:
* @name: Canonical name of the property specified.
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default resource
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecResource specifying a
@ -1068,16 +1151,29 @@ gimp_param_resource_validate (GParamSpec *pspec,
*
* See g_param_spec_internal() for details on property names.
*
* The default_value is mainly used when declaring interactive plugin args.
* When such a param spec has a NULL default_value,
* a GimpResource chooser widget in the plugin's dialog
* will initially show a value from the context,
* and not have a choice such as "None", and will return a non-NULL value.
* Also plugins that are in the context menu of a resource browser (dockable)
* should declare a NULL default_value.
* Then the value will be the user selected item in the browser.
*
* For declaring args for non-interactive use, none_ok TRUE means
* the procedure receiving the argument will handle NULL gracefully.
*
* Returns: (transfer full): The newly created #GimpParamSpecResource.
*
* Since: 3.0
**/
GParamSpec *
gimp_param_spec_resource (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GParamFlags flags)
gimp_param_spec_resource (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpResource *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1088,6 +1184,10 @@ gimp_param_spec_resource (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = default_value;
if (default_value)
g_object_ref (default_value);
return G_PARAM_SPEC (rspec);
}
@ -1141,12 +1241,15 @@ gimp_param_brush_init (GParamSpec *pspec)
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default brush
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecBrush specifying a
* [type@Brush] property.
*
* See g_param_spec_internal() for details on property names.
* See gimp_param_spec_resource() for details on none-ok
* and NULL default_value.
*
* Returns: (transfer full): The newly created #GimpParamSpecBrush.
*
@ -1157,6 +1260,7 @@ gimp_param_spec_brush (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpBrush *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1168,6 +1272,10 @@ gimp_param_spec_brush (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = GIMP_RESOURCE (default_value);
if (default_value)
g_object_ref (default_value);
return G_PARAM_SPEC (rspec);
}
@ -1221,12 +1329,15 @@ gimp_param_pattern_init (GParamSpec *pspec)
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default pattern
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecPattern specifying a
* [type@Pattern] property.
*
* See g_param_spec_internal() for details on property names.
* See gimp_param_spec_resource() for details on none-ok
* and NULL default_value.
*
* Returns: (transfer full): The newly created #GimpParamSpecPattern.
*
@ -1237,6 +1348,7 @@ gimp_param_spec_pattern (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPattern *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1248,6 +1360,10 @@ gimp_param_spec_pattern (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = GIMP_RESOURCE (default_value);
if (default_value)
g_object_ref (default_value);
return G_PARAM_SPEC (rspec);
}
@ -1301,23 +1417,27 @@ gimp_param_gradient_init (GParamSpec *pspec)
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default gradient
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecGradient specifying a
* [type@Gradient] property.
*
* See g_param_spec_internal() for details on property names.
* See gimp_param_spec_resource() for details on none-ok
* and NULL default_value.
*
* Returns: (transfer full): The newly created #GimpParamSpecGradient.
*
* Since: 3.0
**/
GParamSpec *
gimp_param_spec_gradient (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GParamFlags flags)
gimp_param_spec_gradient (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpGradient *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1328,6 +1448,8 @@ gimp_param_spec_gradient (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = GIMP_RESOURCE (default_value);
return G_PARAM_SPEC (rspec);
}
@ -1381,12 +1503,15 @@ gimp_param_palette_init (GParamSpec *pspec)
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default palette
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecPalette specifying a
* [type@Palette] property.
*
* See g_param_spec_internal() for details on property names.
* See gimp_param_spec_resource() for details on none-ok
* and NULL default_value.
*
* Returns: (transfer full): The newly created #GimpParamSpecPalette.
*
@ -1397,6 +1522,7 @@ gimp_param_spec_palette (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPalette *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1408,6 +1534,10 @@ gimp_param_spec_palette (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = GIMP_RESOURCE (default_value);
if (default_value)
g_object_ref (default_value);
return G_PARAM_SPEC (rspec);
}
@ -1461,12 +1591,15 @@ gimp_param_font_init (GParamSpec *pspec)
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @none_ok: Whether %NULL is a valid value.
* @default_value: (nullable): default font
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecFont specifying a
* [type@Font] property.
*
* See g_param_spec_internal() for details on property names.
* See gimp_param_spec_resource() for details on none-ok
* and NULL default_value.
*
* Returns: (transfer full): The newly created #GimpParamSpecFont.
*
@ -1477,6 +1610,7 @@ gimp_param_spec_font (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpFont *default_value,
GParamFlags flags)
{
GimpParamSpecResource *rspec;
@ -1488,5 +1622,9 @@ gimp_param_spec_font (const gchar *name,
rspec->none_ok = none_ok ? TRUE : FALSE;
rspec->default_value = GIMP_RESOURCE (default_value);
if (default_value)
g_object_ref (default_value);
return G_PARAM_SPEC (rspec);
}

View File

@ -351,6 +351,7 @@ struct _GimpParamSpecResource
GParamSpecObject parent_instance;
gboolean none_ok;
GimpResource *default_value;
};
GType gimp_param_resource_get_type (void) G_GNUC_CONST;
@ -359,6 +360,7 @@ GParamSpec * gimp_param_spec_resource (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpResource *default_value,
GParamFlags flags);
@ -386,6 +388,7 @@ GParamSpec * gimp_param_spec_brush (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpBrush *default_value,
GParamFlags flags);
@ -413,6 +416,7 @@ GParamSpec * gimp_param_spec_pattern (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPattern *default_value,
GParamFlags flags);
@ -440,6 +444,7 @@ GParamSpec * gimp_param_spec_gradient (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpGradient *default_value,
GParamFlags flags);
@ -467,6 +472,7 @@ GParamSpec * gimp_param_spec_palette (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPalette *default_value,
GParamFlags flags);
@ -494,6 +500,7 @@ GParamSpec * gimp_param_spec_font (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpFont *default_value,
GParamFlags flags);

View File

@ -2353,6 +2353,7 @@ gimp_procedure_add_file_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpResource argument to @procedure.
@ -2365,11 +2366,14 @@ gimp_procedure_add_resource_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpResource *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_resource (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2378,6 +2382,7 @@ gimp_procedure_add_resource_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpResource auxiliary argument to @procedure.
@ -2389,11 +2394,14 @@ gimp_procedure_add_resource_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpResource *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_resource (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2417,7 +2425,7 @@ gimp_procedure_add_resource_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_resource (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}
/**
@ -2427,6 +2435,7 @@ gimp_procedure_add_resource_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpBrush argument to @procedure.
@ -2439,11 +2448,14 @@ gimp_procedure_add_brush_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpBrush *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_brush (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2452,6 +2464,7 @@ gimp_procedure_add_brush_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpBrush auxiliary argument to @procedure.
@ -2463,11 +2476,14 @@ gimp_procedure_add_brush_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpBrush *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_brush (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2491,7 +2507,7 @@ gimp_procedure_add_brush_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_brush (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}
/**
@ -2501,6 +2517,7 @@ gimp_procedure_add_brush_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpFont argument to @procedure.
@ -2513,11 +2530,14 @@ gimp_procedure_add_font_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpFont *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_font (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2526,6 +2546,7 @@ gimp_procedure_add_font_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpFont auxiliary argument to @procedure.
@ -2537,11 +2558,14 @@ gimp_procedure_add_font_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpFont *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_font (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2565,7 +2589,7 @@ gimp_procedure_add_font_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_font (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}
/**
@ -2575,6 +2599,7 @@ gimp_procedure_add_font_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpGradient argument to @procedure.
@ -2587,11 +2612,14 @@ gimp_procedure_add_gradient_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpGradient *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_gradient (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2600,6 +2628,7 @@ gimp_procedure_add_gradient_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpGradient auxiliary argument to @procedure.
@ -2611,11 +2640,14 @@ gimp_procedure_add_gradient_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpGradient *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_gradient (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2639,7 +2671,7 @@ gimp_procedure_add_gradient_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_gradient (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}
/**
@ -2649,6 +2681,7 @@ gimp_procedure_add_gradient_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpPalette argument to @procedure.
@ -2661,11 +2694,14 @@ gimp_procedure_add_palette_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPalette *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_palette (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2674,6 +2710,7 @@ gimp_procedure_add_palette_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpPalette auxiliary argument to @procedure.
@ -2685,11 +2722,14 @@ gimp_procedure_add_palette_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpPalette *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_palette (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2713,7 +2753,7 @@ gimp_procedure_add_palette_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_palette (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}
/**
@ -2723,6 +2763,7 @@ gimp_procedure_add_palette_return_value (GimpProcedure *procedure,
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @none_ok: whether %NULL is a valid value.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpPattern argument to @procedure.
@ -2735,11 +2776,14 @@ gimp_procedure_add_pattern_argument (GimpProcedure *procedure,
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPattern *default_value,
GParamFlags flags)
{
_gimp_procedure_add_argument (procedure,
gimp_param_spec_pattern (name, nick, blurb,
none_ok, flags));
none_ok,
default_value,
flags));
}
/**
@ -2748,6 +2792,7 @@ gimp_procedure_add_pattern_argument (GimpProcedure *procedure,
* @name: the name of the argument to be created.
* @nick: the label used in #GimpProcedureDialog.
* @blurb: a more detailed help description.
* @default_value: (nullable): default value
* @flags: argument flags.
*
* Add a new #GimpPattern auxiliary argument to @procedure.
@ -2759,11 +2804,14 @@ gimp_procedure_add_pattern_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpPattern *default_value,
GParamFlags flags)
{
_gimp_procedure_add_aux_argument (procedure,
gimp_param_spec_pattern (name, nick, blurb,
TRUE, flags));
TRUE,
default_value,
flags));
}
/**
@ -2787,5 +2835,5 @@ gimp_procedure_add_pattern_return_value (GimpProcedure *procedure,
{
_gimp_procedure_add_return_value (procedure,
gimp_param_spec_pattern (name, nick, blurb,
TRUE, flags));
TRUE, NULL, flags));
}

View File

@ -1005,11 +1005,13 @@ void gimp_procedure_add_resource_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpResource *default_value,
GParamFlags flags);
void gimp_procedure_add_resource_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpResource *default_value,
GParamFlags flags);
void gimp_procedure_add_resource_return_value (GimpProcedure *procedure,
const gchar *name,
@ -1022,11 +1024,13 @@ void gimp_procedure_add_brush_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpBrush *default_value,
GParamFlags flags);
void gimp_procedure_add_brush_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpBrush *default_value,
GParamFlags flags);
void gimp_procedure_add_brush_return_value (GimpProcedure *procedure,
const gchar *name,
@ -1039,11 +1043,13 @@ void gimp_procedure_add_font_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpFont *default_value,
GParamFlags flags);
void gimp_procedure_add_font_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpFont *default_value,
GParamFlags flags);
void gimp_procedure_add_font_return_value (GimpProcedure *procedure,
const gchar *name,
@ -1056,11 +1062,13 @@ void gimp_procedure_add_gradient_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpGradient *default_value,
GParamFlags flags);
void gimp_procedure_add_gradient_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpGradient *default_value,
GParamFlags flags);
void gimp_procedure_add_gradient_return_value (GimpProcedure *procedure,
const gchar *name,
@ -1073,11 +1081,13 @@ void gimp_procedure_add_palette_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPalette *default_value,
GParamFlags flags);
void gimp_procedure_add_palette_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpPalette *default_value,
GParamFlags flags);
void gimp_procedure_add_palette_return_value (GimpProcedure *procedure,
const gchar *name,
@ -1090,11 +1100,13 @@ void gimp_procedure_add_pattern_argument (GimpProcedure *procedure
const gchar *nick,
const gchar *blurb,
gboolean none_ok,
GimpPattern *default_value,
GParamFlags flags);
void gimp_procedure_add_pattern_aux_argument (GimpProcedure *procedure,
const gchar *name,
const gchar *nick,
const gchar *blurb,
GimpPattern *default_value,
GParamFlags flags);
void gimp_procedure_add_pattern_return_value (GimpProcedure *procedure,
const gchar *name,

View File

@ -189,6 +189,7 @@ gimp_resource_chooser_class_init (GimpResourceChooserClass *klass)
"Resource",
"The currently selected resource",
TRUE, /* none_ok */
NULL, /* no default for this property. */
GIMP_PARAM_READWRITE);
g_object_class_install_properties (object_class,

View File

@ -115,7 +115,9 @@ create_callback_PDB_procedure_params (GimpProcedure *procedure,
{
gimp_procedure_add_resource_argument (procedure, "resource",
"Resource", "The resource",
TRUE, G_PARAM_READWRITE);
TRUE,
NULL, /* no default*/
G_PARAM_READWRITE);
/* Create args for the extra, superfluous args that core is passing.*/
if (g_type_is_a (resource_type, GIMP_TYPE_FONT))

View File

@ -241,61 +241,73 @@ CODE
}
elsif ($pdbtype eq 'resource') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_resource ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}
elsif ($pdbtype eq 'brush') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_brush ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}
elsif ($pdbtype eq 'font') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_font ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}
elsif ($pdbtype eq 'gradient') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_gradient ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}
elsif ($pdbtype eq 'palette') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_palette ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}
elsif ($pdbtype eq 'pattern') {
$none_ok = exists $arg->{none_ok} ? 'TRUE' : 'FALSE';
$default = exists $arg->{default} ? $arg->{default} : NULL;
$pspec = <<CODE;
gimp_param_spec_pattern ("$name",
"$nick",
"$blurb",
$none_ok,
$default,
$flags)
CODE
}

View File

@ -165,12 +165,15 @@ film_create_procedure (GimpPlugIn *plug_in,
GeglColor *default_film_color;
GeglColor *default_number_color;
gdouble default_number_rgb[4] = { 0.93, 0.61, 0.0, 1.0 };
GimpFont *default_font = NULL;
gegl_init (NULL, NULL);
default_film_color = gegl_color_new ("black");
default_number_color = gegl_color_new (NULL);
gegl_color_set_pixel (default_number_color, babl_format ("R'G'B'A double"), default_number_rgb);
default_font = gimp_font_get_by_name ("Serif");
if (! strcmp (name, PLUG_IN_PROC))
{
procedure = gimp_image_procedure_new (plug_in, name,
@ -217,7 +220,9 @@ film_create_procedure (GimpPlugIn *plug_in,
gimp_procedure_add_font_argument (procedure, "number-font",
_("Number _font"),
_("Font for drawing numbers"),
FALSE, G_PARAM_READWRITE);
FALSE, /* none_ok */
default_font,
G_PARAM_READWRITE);
gimp_procedure_add_color_argument (procedure, "number-color",
_("_Number color"),

View File

@ -203,7 +203,9 @@ class GradientsSaveAsCSS (Gimp.PlugIn):
Gimp.RunMode.NONINTERACTIVE,
GObject.ParamFlags.READWRITE)
procedure.add_gradient_argument ("gradient", _("_Gradient to use"),
"", True, GObject.ParamFlags.READWRITE)
"", True,
None, # Default to context.
GObject.ParamFlags.READWRITE)
procedure.add_file_argument ("file", _("_File"),
"", GObject.ParamFlags.READWRITE)
return procedure

View File

@ -58,6 +58,7 @@ class PaletteOffset (Gimp.PlugIn):
GObject.ParamFlags.READWRITE)
procedure.add_palette_argument ("palette", _("_Palette"),
_("Palette"), True,
None, # Default to context.
GObject.ParamFlags.READWRITE)
procedure.add_int_argument ("amount", _("O_ffset"), _("Offset"),
1, GLib.MAXINT, 1, GObject.ParamFlags.READWRITE)

View File

@ -357,6 +357,7 @@ class PaletteSort (Gimp.PlugIn):
GObject.ParamFlags.READWRITE)
procedure.add_palette_argument ("palette", _("_Palette"),
_("Palette"), True,
None, # Default to context.
GObject.ParamFlags.READWRITE)
selection_choice = Gimp.Choice.new()

View File

@ -146,6 +146,7 @@ class PaletteToGradient (Gimp.PlugIn):
GObject.ParamFlags.READWRITE)
procedure.add_palette_argument ("palette", _("_Palette"),
_("Palette"), True,
None, # Default to context.
GObject.ParamFlags.READWRITE)
procedure.add_gradient_return_value ("new-gradient", _("The newly created gradient"),
_("The newly created gradient"),

View File

@ -105,7 +105,6 @@ def test_dialog(procedure, run_mode, image, n_drawables, drawables, config, data
dialog.fill(None)
if not dialog.run():
dialog.destroy()
config.end_run(Gimp.PDBStatusType.CANCEL)
return procedure.new_return_values(Gimp.PDBStatusType.CANCEL, GLib.Error())
else:
dialog.destroy()
@ -153,17 +152,22 @@ class TestDialogPlugin (Gimp.PlugIn):
procedure.add_menu_path ("<Image>/Filters/Development/Demos")
procedure.add_brush_argument ("brush", "_Brush", "Brush", True,
Gimp.Font.get_by_name ("2. Hardness 025"),
GObject.ParamFlags.READWRITE)
procedure.add_font_argument ("font", "_Font", "Font", True,
Gimp.Font.get_by_name ("Serif"),
GObject.ParamFlags.READWRITE)
procedure.add_gradient_argument ("gradient", "_Gradient",
"Gradient", True,
Gimp.Gradient.get_by_name ("Incandescent"),
GObject.ParamFlags.READWRITE)
procedure.add_palette_argument ("palette", "_Palette",
"Palette", True,
Gimp.Palette.get_by_name ("Default"),
GObject.ParamFlags.READWRITE)
procedure.add_pattern_argument ("pattern", "Pa_ttern",
"Pattern", True,
Gimp.Pattern.get_by_name ("Paper"),
GObject.ParamFlags.READWRITE)
return procedure

View File

@ -109,13 +109,14 @@ script_fu_arg_free (SFArg *arg)
case SF_DISPLAY:
case SF_COLOR:
case SF_TOGGLE:
break;
case SF_BRUSH:
case SF_FONT:
case SF_GRADIENT:
case SF_PALETTE:
case SF_PATTERN:
/* FUTURE: call method to free resource */
break;
case SF_VALUE:
@ -171,12 +172,6 @@ script_fu_arg_reset (SFArg *arg, gboolean should_reset_ids)
case SF_VECTORS:
case SF_DISPLAY:
case SF_BRUSH:
case SF_FONT:
case SF_GRADIENT:
case SF_PALETTE:
case SF_PATTERN:
if (should_reset_ids)
{
/* !!! Use field name "sfa_image"; all these cases have same type in union.
@ -188,6 +183,14 @@ script_fu_arg_reset (SFArg *arg, gboolean should_reset_ids)
break;
case SF_BRUSH:
case SF_FONT:
case SF_GRADIENT:
case SF_PALETTE:
case SF_PATTERN:
/* FUTURE call method to reset arg from default. */
break;
case SF_COLOR:
g_clear_object (&value->sfa_color);
value->sfa_color = gegl_color_duplicate (default_value->sfa_color);
@ -325,17 +328,20 @@ script_fu_arg_add_argument (SFArg *arg,
*
* FIXME: after the param_spec takes a default
* each should pass arg sf_resource_get_name_of_default (arg).
* For now, a default defined here e.g. "Default"
*/
case SF_FONT:
gimp_procedure_add_font_argument (procedure, name,
nick, arg->label,
FALSE, /* none OK */
gimp_font_get_by_name ("Serif"),
G_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE);
break;
case SF_PALETTE:
gimp_procedure_add_palette_argument (procedure, name,
nick, arg->label,
FALSE, /* none OK */
gimp_palette_get_by_name ("Default"),
G_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE);
break;
@ -343,6 +349,7 @@ script_fu_arg_add_argument (SFArg *arg,
gimp_procedure_add_pattern_argument (procedure, name,
nick, arg->label,
FALSE, /* none OK */
gimp_pattern_get_by_name ("Paper"),
G_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE);
break;
@ -350,6 +357,7 @@ script_fu_arg_add_argument (SFArg *arg,
gimp_procedure_add_gradient_argument (procedure, name,
nick, arg->label,
FALSE, /* none OK */
gimp_gradient_get_by_name ("Incandescent"),
G_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE);
break;
@ -357,6 +365,7 @@ script_fu_arg_add_argument (SFArg *arg,
gimp_procedure_add_brush_argument (procedure, name,
nick, arg->label,
FALSE, /* none OK */
gimp_brush_get_by_name ("2. Hardness 025"),
G_PARAM_READWRITE | GIMP_PARAM_NO_VALIDATE);
break;
@ -606,6 +615,8 @@ script_fu_arg_append_repr_from_self (SFArg *arg,
case SF_CHANNEL:
case SF_VECTORS:
case SF_DISPLAY:
g_string_append_printf (result_string, "%d", arg_value->sfa_image);
break;
case SF_BRUSH:
case SF_FONT:
@ -613,6 +624,13 @@ script_fu_arg_append_repr_from_self (SFArg *arg,
case SF_PALETTE:
case SF_PATTERN:
g_string_append_printf (result_string, "%d", arg_value->sfa_image);
/* FUTURE
{
gchar *repr = sf_resource_get_repr (&arg_value->sfa_resource);
g_string_append (result_string, repr);
g_free (repr);
}
*/
break;
case SF_COLOR:
@ -820,7 +838,7 @@ script_fu_arg_generate_name_and_nick (SFArg *arg,
*returned_nick = arg->label;
}
/* FUTURE this goes away or moves to script_fu_resource.c */
/* Init the value of an SFArg that is a resource.
* In case user does not touch a widget.
* Cannot be called at registration time.