app: get rid of one more usage of get_active_item() abstract method.

This commit is contained in:
Jehan 2022-10-12 22:37:14 +02:00
parent 6441008fa5
commit 0508148580
3 changed files with 43 additions and 15 deletions

View File

@ -119,16 +119,16 @@ plug_in_run_cmd_callback (GimpAction *action,
{
GimpItemTreeView *view = GIMP_ITEM_TREE_VIEW (data);
GimpImage *image;
GimpItem *item;
GList *items;
image = gimp_item_tree_view_get_image (view);
if (image)
item = GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_active_item (image);
items = GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_selected_items (image);
else
item = NULL;
items = NULL;
args = procedure_commands_get_item_args (procedure, image, item);
args = procedure_commands_get_items_args (procedure, image, items);
}
else
{

View File

@ -149,9 +149,9 @@ procedure_commands_get_image_args (GimpProcedure *procedure,
}
GimpValueArray *
procedure_commands_get_item_args (GimpProcedure *procedure,
GimpImage *image,
GimpItem *item)
procedure_commands_get_items_args (GimpProcedure *procedure,
GimpImage *image,
GList *items_list)
{
GimpValueArray *args;
gint n_args = 0;
@ -178,21 +178,49 @@ procedure_commands_get_item_args (GimpProcedure *procedure,
if (gimp_value_array_length (args) > n_args &&
GIMP_IS_PARAM_SPEC_ITEM (procedure->args[n_args]))
{
if (item &&
g_type_is_a (G_TYPE_FROM_INSTANCE (item),
G_PARAM_SPEC_VALUE_TYPE (procedure->args[n_args])))
if (items_list)
{
g_printerr ("%s: plug-in procedures expecting a single item are deprecated!\n",
G_STRFUNC);
g_value_set_object (gimp_value_array_index (args, n_args),
item);
items_list->data);
n_args++;
}
else
{
g_warning ("Uh-oh, no active item for the plug-in!");
g_warning ("Uh-oh, no selected items for the plug-in!");
gimp_value_array_unref (args);
return NULL;
}
}
else if (gimp_value_array_length (args) > n_args + 1 &&
G_IS_PARAM_SPEC_INT (procedure->args[n_args]) &&
GIMP_IS_PARAM_SPEC_OBJECT_ARRAY (procedure->args[n_args + 1]))
{
GimpItem **items = NULL;
gint n_items;
n_items = g_list_length (items_list);
g_value_set_int (gimp_value_array_index (args, n_args++),
n_items);
if (items_list)
{
GList *iter;
gint i;
items = g_new (GimpItem *, n_items);
for (iter = items_list, i = 0; iter; iter = iter->next, i++)
items[i] = iter->data;
}
gimp_value_set_object_array (gimp_value_array_index (args, n_args++),
GIMP_TYPE_ITEM,
(GObject **) items, n_items);
g_free (items);
}
}
}
@ -262,7 +290,7 @@ procedure_commands_get_display_args (GimpProcedure *procedure,
}
else
{
g_warning ("Uh-oh, no active drawable for the plug-in!");
g_warning ("Uh-oh, no selected drawables for the plug-in!");
gimp_value_array_unref (args);
g_list_free (drawables_list);

View File

@ -24,9 +24,9 @@ GimpValueArray * procedure_commands_get_data_args (GimpProcedure *procedure,
GimpObject *object);
GimpValueArray * procedure_commands_get_image_args (GimpProcedure *procedure,
GimpImage *image);
GimpValueArray * procedure_commands_get_item_args (GimpProcedure *procedure,
GimpValueArray * procedure_commands_get_items_args (GimpProcedure *procedure,
GimpImage *image,
GimpItem *item);
GList *items);
GimpValueArray * procedure_commands_get_display_args (GimpProcedure *procedure,
GimpDisplay *display,
GimpObject *settings);