app: add GimpProcedure::get_sensntive()
to replace gimp_plug_in_procedure_get_seisitive().
This commit is contained in:
@ -28,7 +28,7 @@
|
|||||||
#include "core/gimpimage.h"
|
#include "core/gimpimage.h"
|
||||||
#include "core/gimplayermask.h"
|
#include "core/gimplayermask.h"
|
||||||
|
|
||||||
#include "plug-in/gimppluginprocedure.h" /* FIXME history */
|
#include "pdb/gimpprocedure.h"
|
||||||
|
|
||||||
#include "widgets/gimpactiongroup.h"
|
#include "widgets/gimpactiongroup.h"
|
||||||
#include "widgets/gimphelp-ids.h"
|
#include "widgets/gimphelp-ids.h"
|
||||||
@ -717,8 +717,7 @@ filters_actions_update (GimpActionGroup *group,
|
|||||||
GimpProcedure *proc = gimp_filter_history_nth (group->gimp, 0);
|
GimpProcedure *proc = gimp_filter_history_nth (group->gimp, 0);
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
/* FIXME history */
|
if (proc && gimp_procedure_get_sensitive (proc, GIMP_OBJECT (drawable)))
|
||||||
if (proc && gimp_plug_in_procedure_get_sensitive (GIMP_PLUG_IN_PROCEDURE (proc), drawable))
|
|
||||||
{
|
{
|
||||||
gimp_action_group_set_action_sensitive (group, "filters-repeat", TRUE);
|
gimp_action_group_set_action_sensitive (group, "filters-repeat", TRUE);
|
||||||
gimp_action_group_set_action_sensitive (group, "filters-reshow", TRUE);
|
gimp_action_group_set_action_sensitive (group, "filters-reshow", TRUE);
|
||||||
@ -736,8 +735,7 @@ filters_actions_update (GimpActionGroup *group,
|
|||||||
|
|
||||||
proc = gimp_filter_history_nth (group->gimp, i);
|
proc = gimp_filter_history_nth (group->gimp, i);
|
||||||
|
|
||||||
/* FIXME history */
|
sensitive = gimp_procedure_get_sensitive (proc, GIMP_OBJECT (drawable));
|
||||||
sensitive = gimp_plug_in_procedure_get_sensitive (GIMP_PLUG_IN_PROCEDURE (proc), drawable);
|
|
||||||
|
|
||||||
gimp_action_group_set_action_sensitive (group, name, sensitive);
|
gimp_action_group_set_action_sensitive (group, name, sensitive);
|
||||||
|
|
||||||
|
|||||||
@ -156,8 +156,9 @@ plug_in_actions_update (GimpActionGroup *group,
|
|||||||
! proc->file_proc &&
|
! proc->file_proc &&
|
||||||
proc->image_types_val)
|
proc->image_types_val)
|
||||||
{
|
{
|
||||||
gboolean sensitive = gimp_plug_in_procedure_get_sensitive (proc,
|
gboolean sensitive =
|
||||||
drawable);
|
gimp_procedure_get_sensitive (GIMP_PROCEDURE (proc),
|
||||||
|
GIMP_OBJECT (drawable));
|
||||||
|
|
||||||
gimp_action_group_set_action_sensitive (group,
|
gimp_action_group_set_action_sensitive (group,
|
||||||
gimp_object_get_name (proc),
|
gimp_object_get_name (proc),
|
||||||
@ -373,7 +374,8 @@ plug_in_actions_add_proc (GimpActionGroup *group,
|
|||||||
if (image)
|
if (image)
|
||||||
drawable = gimp_image_get_active_drawable (image);
|
drawable = gimp_image_get_active_drawable (image);
|
||||||
|
|
||||||
sensitive = gimp_plug_in_procedure_get_sensitive (proc, drawable);
|
sensitive = gimp_procedure_get_sensitive (GIMP_PROCEDURE (proc),
|
||||||
|
GIMP_OBJECT (drawable));
|
||||||
|
|
||||||
gimp_action_group_set_action_sensitive (group,
|
gimp_action_group_set_action_sensitive (group,
|
||||||
gimp_object_get_name (proc),
|
gimp_object_get_name (proc),
|
||||||
|
|||||||
@ -51,6 +51,8 @@ static gint64 gimp_procedure_get_memsize (GimpObject *object
|
|||||||
static const gchar * gimp_procedure_real_get_label (GimpProcedure *procedure);
|
static const gchar * gimp_procedure_real_get_label (GimpProcedure *procedure);
|
||||||
static const gchar * gimp_procedure_real_get_menu_label (GimpProcedure *procedure);
|
static const gchar * gimp_procedure_real_get_menu_label (GimpProcedure *procedure);
|
||||||
static const gchar * gimp_procedure_real_get_blurb (GimpProcedure *procedure);
|
static const gchar * gimp_procedure_real_get_blurb (GimpProcedure *procedure);
|
||||||
|
static gboolean gimp_procedure_real_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object);
|
||||||
static GimpValueArray * gimp_procedure_real_execute (GimpProcedure *procedure,
|
static GimpValueArray * gimp_procedure_real_execute (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
GimpContext *context,
|
GimpContext *context,
|
||||||
@ -91,6 +93,7 @@ gimp_procedure_class_init (GimpProcedureClass *klass)
|
|||||||
klass->get_label = gimp_procedure_real_get_label;
|
klass->get_label = gimp_procedure_real_get_label;
|
||||||
klass->get_menu_label = gimp_procedure_real_get_menu_label;
|
klass->get_menu_label = gimp_procedure_real_get_menu_label;
|
||||||
klass->get_blurb = gimp_procedure_real_get_blurb;
|
klass->get_blurb = gimp_procedure_real_get_blurb;
|
||||||
|
klass->get_sensitive = gimp_procedure_real_get_sensitive;
|
||||||
klass->execute = gimp_procedure_real_execute;
|
klass->execute = gimp_procedure_real_execute;
|
||||||
klass->execute_async = gimp_procedure_real_execute_async;
|
klass->execute_async = gimp_procedure_real_execute_async;
|
||||||
}
|
}
|
||||||
@ -181,6 +184,13 @@ gimp_procedure_real_get_blurb (GimpProcedure *procedure)
|
|||||||
return procedure->blurb;
|
return procedure->blurb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gimp_procedure_real_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object)
|
||||||
|
{
|
||||||
|
return TRUE /* random fallback */;
|
||||||
|
}
|
||||||
|
|
||||||
static GimpValueArray *
|
static GimpValueArray *
|
||||||
gimp_procedure_real_execute (GimpProcedure *procedure,
|
gimp_procedure_real_execute (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
@ -343,6 +353,17 @@ gimp_procedure_get_blurb (GimpProcedure *procedure)
|
|||||||
return GIMP_PROCEDURE_GET_CLASS (procedure)->get_blurb (procedure);
|
return GIMP_PROCEDURE_GET_CLASS (procedure)->get_blurb (procedure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_procedure_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), FALSE);
|
||||||
|
g_return_val_if_fail (object == NULL || GIMP_IS_OBJECT (object), FALSE);
|
||||||
|
|
||||||
|
return GIMP_PROCEDURE_GET_CLASS (procedure)->get_sensitive (procedure,
|
||||||
|
object);
|
||||||
|
}
|
||||||
|
|
||||||
GimpValueArray *
|
GimpValueArray *
|
||||||
gimp_procedure_execute (GimpProcedure *procedure,
|
gimp_procedure_execute (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
|
|||||||
@ -72,6 +72,8 @@ struct _GimpProcedureClass
|
|||||||
const gchar * (* get_label) (GimpProcedure *procedure);
|
const gchar * (* get_label) (GimpProcedure *procedure);
|
||||||
const gchar * (* get_menu_label) (GimpProcedure *procedure);
|
const gchar * (* get_menu_label) (GimpProcedure *procedure);
|
||||||
const gchar * (* get_blurb) (GimpProcedure *procedure);
|
const gchar * (* get_blurb) (GimpProcedure *procedure);
|
||||||
|
gboolean (* get_sensitive) (GimpProcedure *procedure,
|
||||||
|
GimpObject *object);
|
||||||
|
|
||||||
GimpValueArray * (* execute) (GimpProcedure *procedure,
|
GimpValueArray * (* execute) (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
@ -120,6 +122,8 @@ void gimp_procedure_take_strings (GimpProcedure *procedure,
|
|||||||
const gchar * gimp_procedure_get_label (GimpProcedure *procedure);
|
const gchar * gimp_procedure_get_label (GimpProcedure *procedure);
|
||||||
const gchar * gimp_procedure_get_menu_label (GimpProcedure *procedure);
|
const gchar * gimp_procedure_get_menu_label (GimpProcedure *procedure);
|
||||||
const gchar * gimp_procedure_get_blurb (GimpProcedure *procedure);
|
const gchar * gimp_procedure_get_blurb (GimpProcedure *procedure);
|
||||||
|
gboolean gimp_procedure_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object);
|
||||||
|
|
||||||
void gimp_procedure_add_argument (GimpProcedure *procedure,
|
void gimp_procedure_add_argument (GimpProcedure *procedure,
|
||||||
GParamSpec *pspec);
|
GParamSpec *pspec);
|
||||||
|
|||||||
@ -65,6 +65,8 @@ static const gchar * gimp_plug_in_procedure_get_label (GimpProcedure *procedur
|
|||||||
static const gchar * gimp_plug_in_procedure_get_menu_label
|
static const gchar * gimp_plug_in_procedure_get_menu_label
|
||||||
(GimpProcedure *procedure);
|
(GimpProcedure *procedure);
|
||||||
static const gchar * gimp_plug_in_procedure_get_blurb (GimpProcedure *procedure);
|
static const gchar * gimp_plug_in_procedure_get_blurb (GimpProcedure *procedure);
|
||||||
|
static gboolean gimp_plug_in_procedure_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object);
|
||||||
static GimpValueArray * gimp_plug_in_procedure_execute (GimpProcedure *procedure,
|
static GimpValueArray * gimp_plug_in_procedure_execute (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
GimpContext *context,
|
GimpContext *context,
|
||||||
@ -117,6 +119,7 @@ gimp_plug_in_procedure_class_init (GimpPlugInProcedureClass *klass)
|
|||||||
proc_class->get_label = gimp_plug_in_procedure_get_label;
|
proc_class->get_label = gimp_plug_in_procedure_get_label;
|
||||||
proc_class->get_menu_label = gimp_plug_in_procedure_get_menu_label;
|
proc_class->get_menu_label = gimp_plug_in_procedure_get_menu_label;
|
||||||
proc_class->get_blurb = gimp_plug_in_procedure_get_blurb;
|
proc_class->get_blurb = gimp_plug_in_procedure_get_blurb;
|
||||||
|
proc_class->get_sensitive = gimp_plug_in_procedure_get_sensitive;
|
||||||
proc_class->execute = gimp_plug_in_procedure_execute;
|
proc_class->execute = gimp_plug_in_procedure_execute;
|
||||||
proc_class->execute_async = gimp_plug_in_procedure_execute_async;
|
proc_class->execute_async = gimp_plug_in_procedure_execute_async;
|
||||||
|
|
||||||
@ -302,6 +305,53 @@ gimp_plug_in_procedure_get_blurb (GimpProcedure *procedure)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gimp_plug_in_procedure_get_sensitive (GimpProcedure *procedure,
|
||||||
|
GimpObject *object)
|
||||||
|
{
|
||||||
|
GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (procedure);
|
||||||
|
GimpDrawable *drawable;
|
||||||
|
GimpImageType image_type = -1;
|
||||||
|
gboolean sensitive = FALSE;
|
||||||
|
|
||||||
|
g_return_val_if_fail (object == NULL || GIMP_IS_DRAWABLE (object), FALSE);
|
||||||
|
|
||||||
|
drawable = GIMP_DRAWABLE (object);
|
||||||
|
|
||||||
|
if (drawable)
|
||||||
|
{
|
||||||
|
const Babl *format = gimp_drawable_get_format (drawable);
|
||||||
|
|
||||||
|
image_type = gimp_babl_format_get_image_type (format);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (image_type)
|
||||||
|
{
|
||||||
|
case GIMP_RGB_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_RGB_IMAGE;
|
||||||
|
break;
|
||||||
|
case GIMP_RGBA_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_RGBA_IMAGE;
|
||||||
|
break;
|
||||||
|
case GIMP_GRAY_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_GRAY_IMAGE;
|
||||||
|
break;
|
||||||
|
case GIMP_GRAYA_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_GRAYA_IMAGE;
|
||||||
|
break;
|
||||||
|
case GIMP_INDEXED_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXED_IMAGE;
|
||||||
|
break;
|
||||||
|
case GIMP_INDEXEDA_IMAGE:
|
||||||
|
sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXEDA_IMAGE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sensitive ? TRUE : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static GimpValueArray *
|
static GimpValueArray *
|
||||||
gimp_plug_in_procedure_execute (GimpProcedure *procedure,
|
gimp_plug_in_procedure_execute (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
@ -737,50 +787,6 @@ gimp_plug_in_procedure_get_help_id (const GimpPlugInProcedure *proc)
|
|||||||
return g_strdup (gimp_object_get_name (proc));
|
return g_strdup (gimp_object_get_name (proc));
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
|
||||||
gimp_plug_in_procedure_get_sensitive (const GimpPlugInProcedure *proc,
|
|
||||||
GimpDrawable *drawable)
|
|
||||||
{
|
|
||||||
GimpImageType image_type = -1;
|
|
||||||
gboolean sensitive = 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)
|
|
||||||
{
|
|
||||||
const Babl *format = gimp_drawable_get_format (drawable);
|
|
||||||
|
|
||||||
image_type = gimp_babl_format_get_image_type (format);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (image_type)
|
|
||||||
{
|
|
||||||
case GIMP_RGB_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_RGB_IMAGE;
|
|
||||||
break;
|
|
||||||
case GIMP_RGBA_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_RGBA_IMAGE;
|
|
||||||
break;
|
|
||||||
case GIMP_GRAY_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_GRAY_IMAGE;
|
|
||||||
break;
|
|
||||||
case GIMP_GRAYA_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_GRAYA_IMAGE;
|
|
||||||
break;
|
|
||||||
case GIMP_INDEXED_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXED_IMAGE;
|
|
||||||
break;
|
|
||||||
case GIMP_INDEXEDA_IMAGE:
|
|
||||||
sensitive = proc->image_types_val & GIMP_PLUG_IN_INDEXEDA_IMAGE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sensitive ? TRUE : FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GimpPlugInImageType
|
static GimpPlugInImageType
|
||||||
image_types_parse (const gchar *name,
|
image_types_parse (const gchar *name,
|
||||||
const gchar *image_types)
|
const gchar *image_types)
|
||||||
|
|||||||
@ -112,9 +112,6 @@ void gimp_plug_in_procedure_take_icon (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,
|
|
||||||
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);
|
||||||
void gimp_plug_in_procedure_set_file_proc (GimpPlugInProcedure *proc,
|
void gimp_plug_in_procedure_set_file_proc (GimpPlugInProcedure *proc,
|
||||||
|
|||||||
Reference in New Issue
Block a user