48
static void gimp_plug_in_action_init (GimpPlugInAction *action);
49
static void gimp_plug_in_action_class_init (GimpPlugInActionClass *klass);
48
static void gimp_plug_in_action_finalize (GObject *object);
51
49
static void gimp_plug_in_action_set_property (GObject *object,
53
51
const GValue *value,
65
static GtkActionClass *parent_class = NULL;
66
static guint action_signals[LAST_SIGNAL] = { 0 };
70
gimp_plug_in_action_get_type (void)
72
static GType type = 0;
76
static const GTypeInfo type_info =
78
sizeof (GimpPlugInActionClass),
80
(GBaseFinalizeFunc) NULL,
81
(GClassInitFunc) gimp_plug_in_action_class_init,
82
(GClassFinalizeFunc) NULL,
84
sizeof (GimpPlugInAction),
86
(GInstanceInitFunc) gimp_plug_in_action_init,
89
type = g_type_register_static (GIMP_TYPE_ACTION,
63
G_DEFINE_TYPE (GimpPlugInAction, gimp_plug_in_action, GIMP_TYPE_ACTION)
65
#define parent_class gimp_plug_in_action_parent_class
67
static guint action_signals[LAST_SIGNAL] = { 0 };
98
71
gimp_plug_in_action_class_init (GimpPlugInActionClass *klass)
100
73
GObjectClass *object_class = G_OBJECT_CLASS (klass);
101
74
GtkActionClass *action_class = GTK_ACTION_CLASS (klass);
103
parent_class = g_type_class_peek_parent (klass);
105
object_class->set_property = gimp_plug_in_action_set_property;
106
object_class->get_property = gimp_plug_in_action_get_property;
76
object_class->finalize = gimp_plug_in_action_finalize;
77
object_class->set_property = gimp_plug_in_action_set_property;
78
object_class->get_property = gimp_plug_in_action_get_property;
108
80
action_class->activate = gimp_plug_in_action_activate;
109
81
action_class->connect_proxy = gimp_plug_in_action_connect_proxy;
111
g_object_class_install_property (object_class, PROP_PROC_DEF,
112
g_param_spec_pointer ("proc-def",
83
g_object_class_install_property (object_class, PROP_PROCEDURE,
84
g_param_spec_object ("procedure",
86
GIMP_TYPE_PLUG_IN_PROCEDURE,
87
GIMP_PARAM_READWRITE));
116
89
action_signals[SELECTED] =
117
90
g_signal_new ("selected",
118
91
G_TYPE_FROM_CLASS (klass),
119
92
G_SIGNAL_RUN_FIRST,
120
93
G_STRUCT_OFFSET (GimpPlugInActionClass, selected),
122
gimp_marshal_VOID__POINTER,
95
gimp_marshal_VOID__OBJECT,
97
GIMP_TYPE_PLUG_IN_PROCEDURE);
128
101
gimp_plug_in_action_init (GimpPlugInAction *action)
130
action->proc_def = NULL;
103
action->procedure = NULL;
107
gimp_plug_in_action_finalize (GObject *object)
109
GimpPlugInAction *action = GIMP_PLUG_IN_ACTION (object);
111
if (action->procedure)
113
g_object_unref (action->procedure);
114
action->procedure = NULL;
117
G_OBJECT_CLASS (parent_class)->finalize (object);
144
g_value_set_pointer (value, action->proc_def);
131
g_value_set_object (value, action->procedure);
147
135
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
163
action->proc_def = g_value_get_pointer (value);
151
if (action->procedure)
152
g_object_unref (action->procedure);
153
action->procedure = GIMP_PLUG_IN_PROCEDURE (g_value_dup_object (value));
166
157
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
174
165
GimpPlugInAction *plug_in_action = GIMP_PLUG_IN_ACTION (action);
176
gimp_plug_in_action_selected (plug_in_action, plug_in_action->proc_def);
167
gimp_plug_in_action_selected (plug_in_action, plug_in_action->procedure);
185
176
GTK_ACTION_CLASS (parent_class)->connect_proxy (action, proxy);
187
if (GTK_IS_IMAGE_MENU_ITEM (proxy) && plug_in_action->proc_def)
178
if (GTK_IS_IMAGE_MENU_ITEM (proxy) && plug_in_action->procedure)
189
180
GdkPixbuf *pixbuf;
191
pixbuf = plug_in_proc_def_get_pixbuf (plug_in_action->proc_def);
182
pixbuf = gimp_plug_in_procedure_get_pixbuf (plug_in_action->procedure);
195
GdkScreen *screen = gtk_widget_get_screen (proxy);
196
GtkSettings *settings = gtk_settings_get_for_screen (screen);
186
GtkSettings *settings = gtk_widget_get_settings (proxy);
199
189
GtkWidget *image;
223
213
/* public functions */
225
215
GimpPlugInAction *
226
gimp_plug_in_action_new (const gchar *name,
228
const gchar *tooltip,
229
const gchar *stock_id,
230
PlugInProcDef *proc_def)
216
gimp_plug_in_action_new (const gchar *name,
218
const gchar *tooltip,
219
const gchar *stock_id,
220
GimpPlugInProcedure *procedure)
232
222
return g_object_new (GIMP_TYPE_PLUG_IN_ACTION,
236
"stock_id", stock_id,
237
"proc-def", proc_def,
226
"stock-id", stock_id,
227
"procedure", procedure,
242
gimp_plug_in_action_selected (GimpPlugInAction *action,
243
PlugInProcDef *proc_def)
232
gimp_plug_in_action_selected (GimpPlugInAction *action,
233
GimpPlugInProcedure *procedure)
245
235
g_return_if_fail (GIMP_IS_PLUG_IN_ACTION (action));
247
g_signal_emit (action, action_signals[SELECTED], 0, proc_def);
237
g_signal_emit (action, action_signals[SELECTED], 0, procedure);