app/tools/gimpgegltool.c (gimp_param_spec_duplicate) add support for

2008-02-06  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpgegltool.c (gimp_param_spec_duplicate)
	* app/widgets/gimppropwidgets.c (gimp_prop_table_new): add support
	for GParamSpecEnum.

	* app/core/gimpimagemap.c (gimp_image_map_apply): add even better
	checks for input and output pads of the passed operation.


svn path=/trunk/; revision=24824
This commit is contained in:
Michael Natterer 2008-02-06 18:38:29 +00:00 committed by Michael Natterer
parent f4272e69e7
commit fdb9060f73
4 changed files with 44 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2008-02-06 Michael Natterer <mitch@gimp.org>
* app/tools/gimpgegltool.c (gimp_param_spec_duplicate)
* app/widgets/gimppropwidgets.c (gimp_prop_table_new): add support
for GParamSpecEnum.
* app/core/gimpimagemap.c (gimp_image_map_apply): add even better
checks for input and output pads of the passed operation.
2008-02-06 Michael Natterer <mitch@gimp.org>
* app/paint/gimpclone.c

View File

@ -465,16 +465,24 @@ gimp_image_map_apply (GimpImageMap *image_map,
g_object_unref (sink_operation);
}
if (gegl_node_get_pad (image_map->operation, "input"))
if (gegl_node_get_pad (image_map->operation, "input") &&
gegl_node_get_pad (image_map->operation, "output"))
{
/* if there are input and output pads we probably have a
* filter OP, connect it on both ends.
*/
gegl_node_link_many (image_map->input,
image_map->shift,
image_map->operation,
image_map->output,
NULL);
}
else
else if (gegl_node_get_pad (image_map->operation, "output"))
{
/* if there is only an output pad we probably have a
* source OP, blend its result on top of the original
* pixels.
*/
GeglNode *over = gegl_node_new_child (image_map->gegl,
"operation", "over",
NULL);
@ -488,6 +496,15 @@ gimp_image_map_apply (GimpImageMap *image_map,
gegl_node_connect_to (image_map->operation, "output",
over, "aux");
}
else
{
/* otherwise we just construct a silly nop pipleline
*/
gegl_node_link_many (image_map->input,
image_map->shift,
image_map->output,
NULL);
}
}
gegl_node_set (image_map->input,

View File

@ -350,6 +350,17 @@ gimp_param_spec_duplicate (GParamSpec *pspec)
spec->default_value,
pspec->flags);
}
else if (G_IS_PARAM_SPEC_ENUM (pspec))
{
GParamSpecEnum *spec = G_PARAM_SPEC_ENUM (pspec);
return g_param_spec_enum (pspec->name,
g_param_spec_get_nick (pspec),
g_param_spec_get_blurb (pspec),
G_TYPE_FROM_CLASS (spec->enum_class),
spec->default_value,
pspec->flags);
}
else if (G_IS_PARAM_SPEC_DOUBLE (pspec))
{
GParamSpecDouble *spec = G_PARAM_SPEC_DOUBLE (pspec);

View File

@ -792,6 +792,11 @@ gimp_prop_table_new (GObject *config,
widget = gimp_prop_check_button_new (config, pspec->name,
g_param_spec_get_nick (pspec));
}
else if (G_IS_PARAM_SPEC_ENUM (pspec))
{
widget = gimp_prop_enum_combo_box_new (config, pspec->name, 0, 0);
label = g_param_spec_get_nick (pspec);
}
else if (G_IS_PARAM_SPEC_INT (pspec) ||
G_IS_PARAM_SPEC_UINT (pspec) ||
G_IS_PARAM_SPEC_FLOAT (pspec) ||