24
24
#include <glib-object.h>
26
26
#include "pdb-types.h"
27
#include "procedural_db.h"
28
#include "gimpprocedure.h"
29
#include "core/gimpparamspecs.h"
29
31
#include "core/gimp.h"
30
32
#include "core/gimpdatafactory.h"
32
static ProcRecord brushes_popup_proc;
33
static ProcRecord brushes_close_popup_proc;
34
static ProcRecord brushes_set_popup_proc;
37
register_brush_select_procs (Gimp *gimp)
39
procedural_db_register (gimp, &brushes_popup_proc);
40
procedural_db_register (gimp, &brushes_close_popup_proc);
41
procedural_db_register (gimp, &brushes_set_popup_proc);
45
brushes_popup_invoker (Gimp *gimp,
47
GimpProgress *progress,
34
#include "internal_procs.h"
38
brushes_popup_invoker (GimpProcedure *procedure,
41
GimpProgress *progress,
42
const GValueArray *args)
50
44
gboolean success = TRUE;
51
gchar *brush_callback;
45
const gchar *brush_callback;
46
const gchar *popup_title;
47
const gchar *initial_brush;
58
brush_callback = (gchar *) args[0].value.pdb_pointer;
59
if (brush_callback == NULL || !g_utf8_validate (brush_callback, -1, NULL))
62
popup_title = (gchar *) args[1].value.pdb_pointer;
63
if (popup_title == NULL || !g_utf8_validate (popup_title, -1, NULL))
66
initial_brush = (gchar *) args[2].value.pdb_pointer;
67
if (initial_brush && !g_utf8_validate (initial_brush, -1, NULL))
70
opacity = args[3].value.pdb_float;
71
if (opacity < 0.0 || opacity > 100.0)
74
spacing = args[4].value.pdb_int;
78
paint_mode = args[5].value.pdb_int;
79
if (paint_mode < GIMP_NORMAL_MODE || paint_mode > GIMP_COLOR_ERASE_MODE)
52
brush_callback = g_value_get_string (&args->values[0]);
53
popup_title = g_value_get_string (&args->values[1]);
54
initial_brush = g_value_get_string (&args->values[2]);
55
opacity = g_value_get_double (&args->values[3]);
56
spacing = g_value_get_int (&args->values[4]);
57
paint_mode = g_value_get_enum (&args->values[5]);
84
61
if (gimp->no_interface ||
85
! procedural_db_lookup (gimp, brush_callback) ||
86
! gimp_pdb_dialog_new (gimp, context, gimp->brush_factory->container,
62
! gimp_pdb_lookup_procedure (gimp->pdb, brush_callback) ||
63
! gimp_pdb_dialog_new (gimp, context, progress,
64
gimp->brush_factory->container,
87
65
popup_title, brush_callback, initial_brush,
88
66
"opacity", opacity / 100.0,
89
67
"paint-mode", paint_mode,
95
return procedural_db_return_args (&brushes_popup_proc, success);
73
return gimp_procedure_get_return_values (procedure, success);
98
static ProcArg brushes_popup_inargs[] =
103
"The callback PDB proc to call when brush selection is made"
108
"Title to give the brush popup window"
113
"The name of the brush to set as the first selected"
118
"The initial opacity of the brush"
123
"The initial spacing of the brush (if < 0 then use brush default spacing)"
128
"The initial paint mode: { GIMP_NORMAL_MODE (0), GIMP_DISSOLVE_MODE (1), GIMP_BEHIND_MODE (2), GIMP_MULTIPLY_MODE (3), GIMP_SCREEN_MODE (4), GIMP_OVERLAY_MODE (5), GIMP_DIFFERENCE_MODE (6), GIMP_ADDITION_MODE (7), GIMP_SUBTRACT_MODE (8), GIMP_DARKEN_ONLY_MODE (9), GIMP_LIGHTEN_ONLY_MODE (10), GIMP_HUE_MODE (11), GIMP_SATURATION_MODE (12), GIMP_COLOR_MODE (13), GIMP_VALUE_MODE (14), GIMP_DIVIDE_MODE (15), GIMP_DODGE_MODE (16), GIMP_BURN_MODE (17), GIMP_HARDLIGHT_MODE (18), GIMP_SOFTLIGHT_MODE (19), GIMP_GRAIN_EXTRACT_MODE (20), GIMP_GRAIN_MERGE_MODE (21), GIMP_COLOR_ERASE_MODE (22) }"
132
static ProcRecord brushes_popup_proc =
134
"gimp_brushes_popup",
135
"Invokes the Gimp brush selection.",
136
"This procedure popups the brush selection dialog.",
143
brushes_popup_inargs,
146
{ { brushes_popup_invoker } }
150
brushes_close_popup_invoker (Gimp *gimp,
151
GimpContext *context,
152
GimpProgress *progress,
77
brushes_close_popup_invoker (GimpProcedure *procedure,
80
GimpProgress *progress,
81
const GValueArray *args)
155
83
gboolean success = TRUE;
156
gchar *brush_callback;
84
const gchar *brush_callback;
158
brush_callback = (gchar *) args[0].value.pdb_pointer;
159
if (brush_callback == NULL || !g_utf8_validate (brush_callback, -1, NULL))
86
brush_callback = g_value_get_string (&args->values[0]);
164
90
if (gimp->no_interface ||
165
! procedural_db_lookup (gimp, brush_callback) ||
91
! gimp_pdb_lookup_procedure (gimp->pdb, brush_callback) ||
166
92
! gimp_pdb_dialog_close (gimp, gimp->brush_factory->container,
171
return procedural_db_return_args (&brushes_close_popup_proc, success);
97
return gimp_procedure_get_return_values (procedure, success);
174
static ProcArg brushes_close_popup_inargs[] =
179
"The name of the callback registered for this popup"
183
static ProcRecord brushes_close_popup_proc =
185
"gimp_brushes_close_popup",
186
"Popdown the Gimp brush selection.",
187
"This procedure closes an opened brush selection dialog.",
194
brushes_close_popup_inargs,
197
{ { brushes_close_popup_invoker } }
201
brushes_set_popup_invoker (Gimp *gimp,
202
GimpContext *context,
203
GimpProgress *progress,
101
brushes_set_popup_invoker (GimpProcedure *procedure,
103
GimpContext *context,
104
GimpProgress *progress,
105
const GValueArray *args)
206
107
gboolean success = TRUE;
207
gchar *brush_callback;
108
const gchar *brush_callback;
109
const gchar *brush_name;
211
112
gint32 paint_mode;
213
brush_callback = (gchar *) args[0].value.pdb_pointer;
214
if (brush_callback == NULL || !g_utf8_validate (brush_callback, -1, NULL))
217
brush_name = (gchar *) args[1].value.pdb_pointer;
218
if (brush_name == NULL || !g_utf8_validate (brush_name, -1, NULL))
221
opacity = args[2].value.pdb_float;
222
if (opacity < 0.0 || opacity > 100.0)
225
spacing = args[3].value.pdb_int;
229
paint_mode = args[4].value.pdb_int;
230
if (paint_mode < GIMP_NORMAL_MODE || paint_mode > GIMP_COLOR_ERASE_MODE)
114
brush_callback = g_value_get_string (&args->values[0]);
115
brush_name = g_value_get_string (&args->values[1]);
116
opacity = g_value_get_double (&args->values[2]);
117
spacing = g_value_get_int (&args->values[3]);
118
paint_mode = g_value_get_enum (&args->values[4]);
235
122
if (gimp->no_interface ||
236
! procedural_db_lookup (gimp, brush_callback) ||
123
! gimp_pdb_lookup_procedure (gimp->pdb, brush_callback) ||
237
124
! gimp_pdb_dialog_set (gimp, gimp->brush_factory->container,
238
125
brush_callback, brush_name,
239
126
"opacity", opacity / 100.0,
246
return procedural_db_return_args (&brushes_set_popup_proc, success);
249
static ProcArg brushes_set_popup_inargs[] =
254
"The name of the callback registered for this popup"
259
"The name of the brush to set as selected"
264
"The initial opacity of the brush"
269
"The initial spacing of the brush (if < 0 then use brush default spacing)"
274
"The initial paint mode: { GIMP_NORMAL_MODE (0), GIMP_DISSOLVE_MODE (1), GIMP_BEHIND_MODE (2), GIMP_MULTIPLY_MODE (3), GIMP_SCREEN_MODE (4), GIMP_OVERLAY_MODE (5), GIMP_DIFFERENCE_MODE (6), GIMP_ADDITION_MODE (7), GIMP_SUBTRACT_MODE (8), GIMP_DARKEN_ONLY_MODE (9), GIMP_LIGHTEN_ONLY_MODE (10), GIMP_HUE_MODE (11), GIMP_SATURATION_MODE (12), GIMP_COLOR_MODE (13), GIMP_VALUE_MODE (14), GIMP_DIVIDE_MODE (15), GIMP_DODGE_MODE (16), GIMP_BURN_MODE (17), GIMP_HARDLIGHT_MODE (18), GIMP_SOFTLIGHT_MODE (19), GIMP_GRAIN_EXTRACT_MODE (20), GIMP_GRAIN_MERGE_MODE (21), GIMP_COLOR_ERASE_MODE (22) }"
278
static ProcRecord brushes_set_popup_proc =
280
"gimp_brushes_set_popup",
281
"Sets the current brush selection in a popup.",
282
"Sets the current brush selection in a popup.",
289
brushes_set_popup_inargs,
292
{ { brushes_set_popup_invoker } }
133
return gimp_procedure_get_return_values (procedure, success);
137
register_brush_select_procs (GimpPDB *pdb)
139
GimpProcedure *procedure;
144
procedure = gimp_procedure_new (brushes_popup_invoker);
145
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-brushes-popup");
146
gimp_procedure_set_static_strings (procedure,
147
"gimp-brushes-popup",
148
"Invokes the Gimp brush selection.",
149
"This procedure opens the brush selection dialog.",
154
gimp_procedure_add_argument (procedure,
155
gimp_param_spec_string ("brush-callback",
157
"The callback PDB proc to call when brush selection is made",
160
GIMP_PARAM_READWRITE));
161
gimp_procedure_add_argument (procedure,
162
gimp_param_spec_string ("popup-title",
164
"Title of the brush selection dialog",
167
GIMP_PARAM_READWRITE));
168
gimp_procedure_add_argument (procedure,
169
gimp_param_spec_string ("initial-brush",
171
"The name of the brush to set as the first selected",
174
GIMP_PARAM_READWRITE));
175
gimp_procedure_add_argument (procedure,
176
g_param_spec_double ("opacity",
178
"The initial opacity of the brush",
180
GIMP_PARAM_READWRITE));
181
gimp_procedure_add_argument (procedure,
182
gimp_param_spec_int32 ("spacing",
184
"The initial spacing of the brush (if < 0 then use brush default spacing)",
186
GIMP_PARAM_READWRITE));
187
gimp_procedure_add_argument (procedure,
188
g_param_spec_enum ("paint-mode",
190
"The initial paint mode",
191
GIMP_TYPE_LAYER_MODE_EFFECTS,
193
GIMP_PARAM_READWRITE));
194
gimp_pdb_register_procedure (pdb, procedure);
195
g_object_unref (procedure);
198
* gimp-brushes-close-popup
200
procedure = gimp_procedure_new (brushes_close_popup_invoker);
201
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-brushes-close-popup");
202
gimp_procedure_set_static_strings (procedure,
203
"gimp-brushes-close-popup",
204
"Close the brush selection dialog.",
205
"This procedure closes an opened brush selection dialog.",
210
gimp_procedure_add_argument (procedure,
211
gimp_param_spec_string ("brush-callback",
213
"The name of the callback registered for this pop-up",
216
GIMP_PARAM_READWRITE));
217
gimp_pdb_register_procedure (pdb, procedure);
218
g_object_unref (procedure);
221
* gimp-brushes-set-popup
223
procedure = gimp_procedure_new (brushes_set_popup_invoker);
224
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-brushes-set-popup");
225
gimp_procedure_set_static_strings (procedure,
226
"gimp-brushes-set-popup",
227
"Sets the current brush in a brush selection dialog.",
228
"Sets the current brush in a brush selection dialog.",
233
gimp_procedure_add_argument (procedure,
234
gimp_param_spec_string ("brush-callback",
236
"The name of the callback registered for this pop-up",
239
GIMP_PARAM_READWRITE));
240
gimp_procedure_add_argument (procedure,
241
gimp_param_spec_string ("brush-name",
243
"The name of the brush to set as selected",
246
GIMP_PARAM_READWRITE));
247
gimp_procedure_add_argument (procedure,
248
g_param_spec_double ("opacity",
250
"The initial opacity of the brush",
252
GIMP_PARAM_READWRITE));
253
gimp_procedure_add_argument (procedure,
254
gimp_param_spec_int32 ("spacing",
256
"The initial spacing of the brush (if < 0 then use brush default spacing)",
258
GIMP_PARAM_READWRITE));
259
gimp_procedure_add_argument (procedure,
260
g_param_spec_enum ("paint-mode",
262
"The initial paint mode",
263
GIMP_TYPE_LAYER_MODE_EFFECTS,
265
GIMP_PARAM_READWRITE));
266
gimp_pdb_register_procedure (pdb, procedure);
267
g_object_unref (procedure);