Minor plug-in sensitivity refactoring

* app/plug-in/gimppluginprocedure.[ch]
  (gimp_plug_in_procedure_get_sensitive): change GimpImageType
  parameter to GimpDrawable and do the type check internally.

* app/actions/plug-in-actions.c (plug_in_actions_update): pass the
  active drawable instead of its type.
This commit is contained in:
Michael Natterer 2009-08-22 01:22:41 +02:00
parent f6eed71a5c
commit b141bcdb60
3 changed files with 17 additions and 17 deletions

View File

@ -237,19 +237,14 @@ void
plug_in_actions_update (GimpActionGroup *group, plug_in_actions_update (GimpActionGroup *group,
gpointer data) gpointer data)
{ {
GimpImage *image = action_data_get_image (data); GimpImage *image = action_data_get_image (data);
GimpPlugInManager *manager = group->gimp->plug_in_manager; GimpPlugInManager *manager = group->gimp->plug_in_manager;
GimpImageType type = -1; GimpDrawable *drawable = NULL;
GSList *list; GSList *list;
gint i; gint i;
if (image) if (image)
{ drawable = gimp_image_get_active_drawable (image);
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
if (drawable)
type = gimp_drawable_type (drawable);
}
for (list = manager->plug_in_procedures; list; list = g_slist_next (list)) for (list = manager->plug_in_procedures; list; list = g_slist_next (list))
{ {
@ -260,7 +255,7 @@ plug_in_actions_update (GimpActionGroup *group,
proc->image_types_val) proc->image_types_val)
{ {
gboolean sensitive = gimp_plug_in_procedure_get_sensitive (proc, gboolean sensitive = gimp_plug_in_procedure_get_sensitive (proc,
type); drawable);
gimp_action_group_set_action_sensitive (group, gimp_action_group_set_action_sensitive (group,
GIMP_OBJECT (proc)->name, GIMP_OBJECT (proc)->name,
@ -269,7 +264,7 @@ plug_in_actions_update (GimpActionGroup *group,
} }
if (manager->history && if (manager->history &&
gimp_plug_in_procedure_get_sensitive (manager->history->data, type)) gimp_plug_in_procedure_get_sensitive (manager->history->data, drawable))
{ {
gimp_action_group_set_action_sensitive (group, "plug-in-repeat", TRUE); gimp_action_group_set_action_sensitive (group, "plug-in-repeat", TRUE);
gimp_action_group_set_action_sensitive (group, "plug-in-reshow", TRUE); gimp_action_group_set_action_sensitive (group, "plug-in-reshow", TRUE);
@ -287,7 +282,7 @@ plug_in_actions_update (GimpActionGroup *group,
i + 1); i + 1);
gboolean sensitive; gboolean sensitive;
sensitive = gimp_plug_in_procedure_get_sensitive (proc, type); sensitive = gimp_plug_in_procedure_get_sensitive (proc, drawable);
gimp_action_group_set_action_sensitive (group, name, sensitive); gimp_action_group_set_action_sensitive (group, name, sensitive);

View File

@ -21,7 +21,7 @@
#include <string.h> #include <string.h>
#include <glib-object.h> #include <gegl.h>
#include <gdk-pixbuf/gdk-pixbuf.h> #include <gdk-pixbuf/gdk-pixbuf.h>
#include "libgimpbase/gimpbase.h" #include "libgimpbase/gimpbase.h"
@ -30,6 +30,7 @@
#include "core/gimp.h" #include "core/gimp.h"
#include "core/gimp-utils.h" #include "core/gimp-utils.h"
#include "core/gimpdrawable.h"
#include "core/gimpmarshal.h" #include "core/gimpmarshal.h"
#include "core/gimpparamspecs.h" #include "core/gimpparamspecs.h"
@ -683,11 +684,16 @@ gimp_plug_in_procedure_get_help_id (const GimpPlugInProcedure *proc)
gboolean gboolean
gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc, gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc,
GimpImageType image_type) GimpDrawable *drawable)
{ {
gboolean sensitive; GimpImageType image_type = -1;
gboolean sensitive = FALSE;
g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), FALSE); g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), FALSE);
g_return_val_if_fail (drawable == NULL || GIMP_IS_DRAWABLE (drawable), FALSE);
if (drawable)
image_type = gimp_drawable_type (drawable);
switch (image_type) switch (image_type)
{ {
@ -710,7 +716,6 @@ gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc,
sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXEDA_IMAGE; sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXEDA_IMAGE;
break; break;
default: default:
sensitive = FALSE;
break; break;
} }

View File

@ -116,7 +116,7 @@ GdkPixbuf * gimp_plug_in_procedure_get_pixbuf (const GimpPlugInProcedure
gchar * gimp_plug_in_procedure_get_help_id (const GimpPlugInProcedure *proc); gchar * gimp_plug_in_procedure_get_help_id (const GimpPlugInProcedure *proc);
gboolean gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc, gboolean gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc,
GimpImageType image_type); GimpDrawable *drawable);
void gimp_plug_in_procedure_set_image_types (GimpPlugInProcedure *proc, void gimp_plug_in_procedure_set_image_types (GimpPlugInProcedure *proc,
const gchar *image_types); const gchar *image_types);