1 /* GIMP - The GNU Image Manipulation Program
2 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18 #include "config.h"
19
20 #include <string.h>
21
22 #include <gegl.h>
23 #include <gtk/gtk.h>
24
25 #include "libgimpwidgets/gimpwidgets.h"
26
27 #include "actions-types.h"
28
29 #include "core/gimp.h"
30 #include "core/gimpcontainer.h"
31 #include "core/gimpcontext.h"
32 #include "core/gimptoolinfo.h"
33
34 #include "widgets/gimpaction.h"
35 #include "widgets/gimpactiongroup.h"
36 #include "widgets/gimphelp-ids.h"
37
38 #include "actions.h"
39 #include "tools-actions.h"
40 #include "tools-commands.h"
41
42 #include "gimp-intl.h"
43
44
45 static const GimpActionEntry tools_actions[] =
46 {
47 { "tools-menu", NULL, NC_("tools-action", "_Tools") },
48 { "tools-select-menu", NULL, NC_("tools-action", "_Selection Tools") },
49 { "tools-paint-menu", NULL, NC_("tools-action", "_Paint Tools") },
50 { "tools-transform-menu", NULL, NC_("tools-action", "_Transform Tools") },
51 { "tools-color-menu", NULL, NC_("tools-action", "_Color Tools") },
52 };
53
54 static const GimpStringActionEntry tools_alternative_actions[] =
55 {
56 { "tools-by-color-select-short", GIMP_ICON_TOOL_BY_COLOR_SELECT,
57 NC_("tools-action", "_By Color"), NULL,
58 NC_("tools-action", "Select regions with similar colors"),
59 "gimp-by-color-select-tool",
60 GIMP_HELP_TOOL_BY_COLOR_SELECT },
61
62 { "tools-rotate-arbitrary", GIMP_ICON_TOOL_ROTATE,
63 NC_("tools-action", "_Arbitrary Rotation..."), "",
64 NC_("tools-action", "Rotate drawable by an arbitrary angle"),
65 "gimp-rotate-layer",
66 GIMP_HELP_TOOL_ROTATE },
67
68 { "tools-rotate-image-arbitrary", GIMP_ICON_TOOL_ROTATE,
69 NC_("tools-action", "_Arbitrary Rotation..."), "",
70 NC_("tools-action", "Rotate image by an arbitrary angle"),
71 "gimp-rotate-image",
72 GIMP_HELP_TOOL_ROTATE }
73 };
74
75 static const GimpEnumActionEntry tools_color_average_radius_actions[] =
76 {
77 { "tools-color-average-radius-set", GIMP_ICON_TOOL_COLOR_PICKER,
78 "Set Color Picker Radius", NULL, NULL,
79 GIMP_ACTION_SELECT_SET, TRUE,
80 NULL }
81 };
82
83 static const GimpEnumActionEntry tools_paintbrush_size_actions[] =
84 {
85 { "tools-paintbrush-size-set", GIMP_ICON_TOOL_PAINTBRUSH,
86 "Set Brush Size", NULL, NULL,
87 GIMP_ACTION_SELECT_SET, TRUE,
88 NULL }
89 };
90
91 static const GimpEnumActionEntry tools_paintbrush_aspect_ratio_actions[] =
92 {
93 { "tools-paintbrush-aspect-ratio-set", GIMP_ICON_TOOL_PAINTBRUSH,
94 "Set Brush Aspect Ratio", NULL, NULL,
95 GIMP_ACTION_SELECT_SET, TRUE,
96 NULL }
97 };
98
99 static const GimpEnumActionEntry tools_paintbrush_angle_actions[] =
100 {
101 { "tools-paintbrush-angle-set", GIMP_ICON_TOOL_PAINTBRUSH,
102 "Set Brush Angle", NULL, NULL,
103 GIMP_ACTION_SELECT_SET, TRUE,
104 NULL }
105 };
106
107 static const GimpEnumActionEntry tools_paintbrush_spacing_actions[] =
108 {
109 { "tools-paintbrush-spacing-set", GIMP_ICON_TOOL_PAINTBRUSH,
110 "Set Brush Spacing", NULL, NULL,
111 GIMP_ACTION_SELECT_SET, TRUE,
112 NULL }
113 };
114
115 static const GimpEnumActionEntry tools_paintbrush_hardness_actions[] =
116 {
117 { "tools-paintbrush-hardness-set", GIMP_ICON_TOOL_PAINTBRUSH,
118 "Set Brush Hardness", NULL, NULL,
119 GIMP_ACTION_SELECT_SET, TRUE,
120 NULL }
121 };
122
123 static const GimpEnumActionEntry tools_paintbrush_force_actions[] =
124 {
125 { "tools-paintbrush-force-set", GIMP_ICON_TOOL_PAINTBRUSH,
126 "Set Brush Force", NULL, NULL,
127 GIMP_ACTION_SELECT_SET, TRUE,
128 NULL }
129 };
130
131 static const GimpEnumActionEntry tools_ink_blob_size_actions[] =
132 {
133 { "tools-ink-blob-size-set", GIMP_ICON_TOOL_INK,
134 "Set Ink Blob Size", NULL, NULL,
135 GIMP_ACTION_SELECT_SET, TRUE,
136 NULL }
137 };
138
139 static const GimpEnumActionEntry tools_ink_blob_aspect_actions[] =
140 {
141 { "tools-ink-blob-aspect-set", GIMP_ICON_TOOL_INK,
142 "Set Ink Blob Aspect", NULL, NULL,
143 GIMP_ACTION_SELECT_SET, TRUE,
144 NULL }
145 };
146
147 static const GimpEnumActionEntry tools_ink_blob_angle_actions[] =
148 {
149 { "tools-ink-blob-angle-set", GIMP_ICON_TOOL_INK,
150 "Set Ink Blob Angle", NULL, NULL,
151 GIMP_ACTION_SELECT_SET, TRUE,
152 NULL }
153 };
154
155 static const GimpEnumActionEntry tools_airbrush_rate_actions[] =
156 {
157 { "tools-airbrush-rate-set", GIMP_ICON_TOOL_AIRBRUSH,
158 NC_("tools-action", "Airbrush Rate: Set"), NULL, NULL,
159 GIMP_ACTION_SELECT_SET, TRUE,
160 NULL },
161 { "tools-airbrush-rate-minimum", GIMP_ICON_TOOL_AIRBRUSH,
162 NC_("tools-action", "Airbrush Rate: Set to Minimum"), NULL, NULL,
163 GIMP_ACTION_SELECT_FIRST, FALSE,
164 NULL },
165 { "tools-airbrush-rate-maximum", GIMP_ICON_TOOL_AIRBRUSH,
166 NC_("tools-action", "Airbrush Rate: Set to Maximum"), NULL, NULL,
167 GIMP_ACTION_SELECT_LAST, FALSE,
168 NULL },
169 { "tools-airbrush-rate-decrease", GIMP_ICON_TOOL_AIRBRUSH,
170 NC_("tools-action", "Airbrush Rate: Decrease by 1"), NULL, NULL,
171 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
172 NULL },
173 { "tools-airbrush-rate-increase", GIMP_ICON_TOOL_AIRBRUSH,
174 NC_("tools-action", "Airbrush Rate: Increase by 1"), NULL, NULL,
175 GIMP_ACTION_SELECT_NEXT, FALSE,
176 NULL },
177 { "tools-airbrush-rate-decrease-skip", GIMP_ICON_TOOL_AIRBRUSH,
178 NC_("tools-action", "Airbrush Rate: Decrease by 10"), NULL, NULL,
179 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
180 NULL },
181 { "tools-airbrush-rate-increase-skip", GIMP_ICON_TOOL_AIRBRUSH,
182 NC_("tools-action", "Airbrush Rate: Increase by 10"), NULL, NULL,
183 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
184 NULL }
185 };
186
187 static const GimpEnumActionEntry tools_airbrush_flow_actions[] =
188 {
189 { "tools-airbrush-flow-set", GIMP_ICON_TOOL_AIRBRUSH,
190 NC_("tools-action", "Airbrush Flow: Set"), NULL, NULL,
191 GIMP_ACTION_SELECT_SET, TRUE,
192 NULL },
193 { "tools-airbrush-flow-minimum", GIMP_ICON_TOOL_AIRBRUSH,
194 NC_("tools-action", "Airbrush Flow: Set to Minimum"), NULL, NULL,
195 GIMP_ACTION_SELECT_FIRST, FALSE,
196 NULL },
197 { "tools-airbrush-flow-maximum", GIMP_ICON_TOOL_AIRBRUSH,
198 NC_("tools-action", "Airbrush Flow: Set to Maximum"), NULL, NULL,
199 GIMP_ACTION_SELECT_LAST, FALSE,
200 NULL },
201 { "tools-airbrush-flow-decrease", GIMP_ICON_TOOL_AIRBRUSH,
202 NC_("tools-action", "Airbrush Flow: Decrease by 1"), NULL, NULL,
203 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
204 NULL },
205 { "tools-airbrush-flow-increase", GIMP_ICON_TOOL_AIRBRUSH,
206 NC_("tools-action", "Airbrush Flow: Increase by 1"), NULL, NULL,
207 GIMP_ACTION_SELECT_NEXT, FALSE,
208 NULL },
209 { "tools-airbrush-flow-decrease-skip", GIMP_ICON_TOOL_AIRBRUSH,
210 NC_("tools-action", "Airbrush Flow: Decrease by 10"), NULL, NULL,
211 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
212 NULL },
213 { "tools-airbrush-flow-increase-skip", GIMP_ICON_TOOL_AIRBRUSH,
214 NC_("tools-action", "Airbrush Flow: Increase by 10"), NULL, NULL,
215 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
216 NULL }
217 };
218
219 static const GimpEnumActionEntry tools_mybrush_radius_actions[] =
220 {
221 { "tools-mypaint-brush-radius-set", GIMP_ICON_TOOL_MYPAINT_BRUSH,
222 "Set MyPaint Brush Radius", NULL, NULL,
223 GIMP_ACTION_SELECT_SET, TRUE,
224 NULL }
225 };
226
227 static const GimpEnumActionEntry tools_mybrush_hardness_actions[] =
228 {
229 { "tools-mypaint-brush-hardness-set", GIMP_ICON_TOOL_MYPAINT_BRUSH,
230 "Set MyPaint Brush Hardness", NULL, NULL,
231 GIMP_ACTION_SELECT_SET, TRUE,
232 NULL }
233 };
234
235 static const GimpEnumActionEntry tools_foreground_select_brush_size_actions[] =
236 {
237 { "tools-foreground-select-brush-size-set",
238 GIMP_ICON_TOOL_FOREGROUND_SELECT,
239 "Set Foreground Select Brush Size", NULL, NULL,
240 GIMP_ACTION_SELECT_SET, TRUE,
241 NULL }
242 };
243
244 static const GimpEnumActionEntry tools_transform_preview_opacity_actions[] =
245 {
246 { "tools-transform-preview-opacity-set", GIMP_ICON_TOOL_PERSPECTIVE,
247 "Set Transform Tool Preview Opacity", NULL, NULL,
248 GIMP_ACTION_SELECT_SET, TRUE,
249 NULL }
250 };
251
252 static const GimpEnumActionEntry tools_warp_effect_size_actions[] =
253 {
254 { "tools-warp-effect-size-set", GIMP_ICON_TOOL_WARP,
255 "Set Warp Effect Size", NULL, NULL,
256 GIMP_ACTION_SELECT_SET, TRUE,
257 NULL }
258 };
259
260 static const GimpEnumActionEntry tools_warp_effect_hardness_actions[] =
261 {
262 { "tools-warp-effect-hardness-set", GIMP_ICON_TOOL_WARP,
263 "Set Warp Effect Hardness", NULL, NULL,
264 GIMP_ACTION_SELECT_SET, TRUE,
265 NULL }
266 };
267
268 static const GimpEnumActionEntry tools_opacity_actions[] =
269 {
270 { "tools-opacity-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
271 NC_("tools-action", "Tool's Opacity: Set"), NULL, NULL,
272 GIMP_ACTION_SELECT_SET, TRUE,
273 NULL },
274 { "tools-opacity-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
275 NC_("tools-action", "Tool's Opacity: Set to Default Value"), NULL, NULL,
276 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
277 NULL },
278 { "tools-opacity-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
279 NC_("tools-action", "Tool's Opacity: Minimize"), NULL, NULL,
280 GIMP_ACTION_SELECT_FIRST, FALSE,
281 NULL },
282 { "tools-opacity-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
283 NC_("tools-action", "Tool's Opacity: Maximize"), NULL, NULL,
284 GIMP_ACTION_SELECT_LAST, FALSE,
285 NULL },
286 { "tools-opacity-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
287 NC_("tools-action", "Tool's Opacity: Decrease by 1"), "less", NULL,
288 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
289 NULL },
290 { "tools-opacity-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
291 NC_("tools-action", "Tool's Opacity: Increase by 1"), "greater", NULL,
292 GIMP_ACTION_SELECT_NEXT, FALSE,
293 NULL },
294 { "tools-opacity-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
295 NC_("tools-action", "Tool's Opacity: Decrease by 10"), "<primary>less", NULL,
296 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
297 NULL },
298 { "tools-opacity-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
299 NC_("tools-action", "Tool's Opacity: Increase by 10"), "<primary>greater", NULL,
300 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
301 NULL },
302 { "tools-opacity-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
303 NC_("tools-action", "Tool's Opacity: Decrease Relative"), NULL, NULL,
304 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
305 NULL },
306 { "tools-opacity-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
307 NC_("tools-action", "Tool's Opacity: Increase Relative"), NULL, NULL,
308 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
309 NULL },
310 };
311
312 static const GimpEnumActionEntry tools_size_actions[] =
313 {
314 { "tools-size-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
315 NC_("tools-action", "Tool's Size: Set"), NULL, NULL,
316 GIMP_ACTION_SELECT_SET, TRUE,
317 NULL },
318 { "tools-size-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
319 NC_("tools-action", "Tool's Size: Set to Default Value"), "backslash", NULL,
320 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
321 NULL },
322 { "tools-size-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
323 NC_("tools-action", "Tool's Size: Minimize"), NULL, NULL,
324 GIMP_ACTION_SELECT_FIRST, FALSE,
325 NULL },
326 { "tools-size-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
327 NC_("tools-action", "Tool's Size: Maximize"), NULL, NULL,
328 GIMP_ACTION_SELECT_LAST, FALSE,
329 NULL },
330 { "tools-size-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
331 NC_("tools-action", "Tool's Size: Decrease by 1"), "bracketleft", NULL,
332 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
333 NULL },
334 { "tools-size-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
335 NC_("tools-action", "Tool's Size: Increase by 1"), "bracketright", NULL,
336 GIMP_ACTION_SELECT_NEXT, FALSE,
337 NULL },
338 { "tools-size-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
339 NC_("tools-action", "Tool's Size: Decrease by 10"), "braceleft", NULL,
340 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
341 NULL },
342 { "tools-size-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
343 NC_("tools-action", "Tool's Size: Increase by 10"), "braceright", NULL,
344 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
345 NULL },
346 { "tools-size-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
347 NC_("tools-action", "Tool's Size: Decrease Relative"), NULL, NULL,
348 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
349 NULL },
350 { "tools-size-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
351 NC_("tools-action", "Tool's Size: Increase Relative"), NULL, NULL,
352 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
353 NULL },
354 };
355
356 static const GimpEnumActionEntry tools_aspect_actions[] =
357 {
358 { "tools-aspect-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
359 NC_("tools-action", "Tool's Aspect Ratio: Set"), NULL, NULL,
360 GIMP_ACTION_SELECT_SET, TRUE,
361 NULL },
362 { "tools-aspect-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
363 NC_("tools-action", "Tool's Aspect Ratio: Set To Default Value"), NULL, NULL,
364 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
365 NULL },
366 { "tools-aspect-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
367 NC_("tools-action", "Tool's Aspect Ratio: Minimize"), NULL, NULL,
368 GIMP_ACTION_SELECT_FIRST, FALSE,
369 NULL },
370 { "tools-aspect-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
371 NC_("tools-action", "Tool's Aspect Ratio: Maximize"), NULL, NULL,
372 GIMP_ACTION_SELECT_LAST, FALSE,
373 NULL },
374 { "tools-aspect-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
375 NC_("tools-action", "Tool's Aspect Ratio: Decrease by 0.1"), NULL, NULL,
376 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
377 NULL },
378 { "tools-aspect-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
379 NC_("tools-action", "Tool's Aspect Ratio: Increase by 0.1"), NULL, NULL,
380 GIMP_ACTION_SELECT_NEXT, FALSE,
381 NULL },
382 { "tools-aspect-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
383 NC_("tools-action", "Tool's Aspect Ratio: Decrease by 1"), NULL, NULL,
384 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
385 NULL },
386 { "tools-aspect-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
387 NC_("tools-action", "Tool's Aspect Ratio: Increase by 1"), NULL, NULL,
388 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
389 NULL },
390 { "tools-aspect-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
391 NC_("tools-action", "Tool's Aspect Ratio: Decrease Relative"), NULL, NULL,
392 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
393 NULL },
394 { "tools-aspect-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
395 NC_("tools-action", "Tool's Aspect Ratio: Increase Relative"), NULL, NULL,
396 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
397 NULL },
398 };
399
400 static const GimpEnumActionEntry tools_angle_actions[] =
401 {
402 { "tools-angle-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
403 NC_("tools-action", "Tool's Angle: Set"), NULL, NULL,
404 GIMP_ACTION_SELECT_SET, TRUE,
405 NULL },
406 { "tools-angle-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
407 NC_("tools-action", "Tool's Angle: Set Angle To Default Value"), NULL, NULL,
408 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
409 NULL },
410 { "tools-angle-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
411 NC_("tools-action", "Tool's Angle: Minimize"), NULL, NULL,
412 GIMP_ACTION_SELECT_FIRST, FALSE,
413 NULL },
414 { "tools-angle-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
415 NC_("tools-action", "Tool's Angle: Maximize"), NULL, NULL,
416 GIMP_ACTION_SELECT_LAST, FALSE,
417 NULL },
418 { "tools-angle-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
419 NC_("tools-action", "Tool's Angle: Decrease by 1°"), NULL, NULL,
420 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
421 NULL },
422 { "tools-angle-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
423 NC_("tools-action", "Tool's Angle: Increase by 1°"), NULL, NULL,
424 GIMP_ACTION_SELECT_NEXT, FALSE,
425 NULL },
426 { "tools-angle-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
427 NC_("tools-action", "Tool's Angle: Decrease by 15°"), NULL, NULL,
428 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
429 NULL },
430 { "tools-angle-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
431 NC_("tools-action", "Tool's Angle: Increase by 15°"), NULL, NULL,
432 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
433 NULL },
434 { "tools-angle-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
435 NC_("tools-action", "Tool's Angle: Decrease Relative"), NULL, NULL,
436 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
437 NULL },
438 { "tools-angle-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
439 NC_("tools-action", "Tool's Angle: Increase Relative"), NULL, NULL,
440 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
441 NULL },
442 };
443
444 static const GimpEnumActionEntry tools_spacing_actions[] =
445 {
446 { "tools-spacing-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
447 NC_("tools-action", "Tool's Spacing: Set"), NULL, NULL,
448 GIMP_ACTION_SELECT_SET, TRUE,
449 NULL },
450 { "tools-spacing-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
451 NC_("tools-action", "Tool's Spacing: Set To Default Value"), NULL, NULL,
452 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
453 NULL },
454 { "tools-spacing-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
455 NC_("tools-action", "Tool's Spacing: Minimize"), NULL, NULL,
456 GIMP_ACTION_SELECT_FIRST, FALSE,
457 NULL },
458 { "tools-spacing-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
459 NC_("tools-action", "Tool's Spacing: Maximize"), NULL, NULL,
460 GIMP_ACTION_SELECT_LAST, FALSE,
461 NULL },
462 { "tools-spacing-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
463 NC_("tools-action", "Tool's Spacing: Decrease by 1"), NULL, NULL,
464 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
465 NULL },
466 { "tools-spacing-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
467 NC_("tools-action", "Tool's Spacing: Increase by 1"), NULL, NULL,
468 GIMP_ACTION_SELECT_NEXT, FALSE,
469 NULL },
470 { "tools-spacing-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
471 NC_("tools-action", "Tool's Spacing: Decrease by 10"), NULL, NULL,
472 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
473 NULL },
474 { "tools-spacing-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
475 NC_("tools-action", "Tool's Spacing: Increase by 10"), NULL, NULL,
476 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
477 NULL },
478 { "tools-spacing-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
479 NC_("tools-action", "Tool's Spacing: Decrease Relative"), NULL, NULL,
480 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
481 NULL },
482 { "tools-spacing-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
483 NC_("tools-action", "Tool's Spacing: Increase Relative"), NULL, NULL,
484 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
485 NULL },
486 };
487
488 static const GimpEnumActionEntry tools_hardness_actions[] =
489 {
490 { "tools-hardness-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
491 NC_("tools-action", "Tool's Hardness: Set"), NULL, NULL,
492 GIMP_ACTION_SELECT_SET, TRUE,
493 NULL },
494 { "tools-hardness-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
495 NC_("tools-action", "Tool's Hardness: Set to Default Value"), NULL, NULL,
496 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
497 NULL },
498 { "tools-hardness-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
499 NC_("tools-action", "Tool's Hardness: Minimize"), NULL, NULL,
500 GIMP_ACTION_SELECT_FIRST, FALSE,
501 NULL },
502 { "tools-hardness-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
503 NC_("tools-action", "Tool's Hardness: Maximize"), NULL, NULL,
504 GIMP_ACTION_SELECT_LAST, FALSE,
505 NULL },
506 { "tools-hardness-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
507 NC_("tools-action", "Tool's Hardness: Decrease by 1"), NULL, NULL,
508 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
509 NULL },
510 { "tools-hardness-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
511 NC_("tools-action", "Tool's Hardness: Increase by 1"), NULL, NULL,
512 GIMP_ACTION_SELECT_NEXT, FALSE,
513 NULL },
514 { "tools-hardness-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
515 NC_("tools-action", "Tool's Hardness: Decrease by 10"), NULL, NULL,
516 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
517 NULL },
518 { "tools-hardness-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
519 NC_("tools-action", "Tool's Hardness: Increase by 10"), NULL, NULL,
520 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
521 NULL },
522 { "tools-hardness-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
523 NC_("tools-action", "Tool's Hardness: Decrease Relative"), NULL, NULL,
524 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
525 NULL },
526 { "tools-hardness-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
527 NC_("tools-action", "Tool's Hardness: Increase Relative"), NULL, NULL,
528 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
529 NULL },
530 };
531
532 static const GimpEnumActionEntry tools_force_actions[] =
533 {
534 { "tools-force-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
535 NC_("tools-action", "Tool's Force: Set"), NULL, NULL,
536 GIMP_ACTION_SELECT_SET, TRUE,
537 NULL },
538 { "tools-force-set-to-default", GIMP_ICON_DIALOG_TOOL_OPTIONS,
539 NC_("tools-action", "Tool's Force: Set to Default Value"), NULL, NULL,
540 GIMP_ACTION_SELECT_SET_TO_DEFAULT, FALSE,
541 NULL },
542 { "tools-force-minimum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
543 NC_("tools-action", "Tool's Force: Minimize"), NULL, NULL,
544 GIMP_ACTION_SELECT_FIRST, FALSE,
545 NULL },
546 { "tools-force-maximum", GIMP_ICON_DIALOG_TOOL_OPTIONS,
547 NC_("tools-action", "Tool's Force: Maximize"), NULL, NULL,
548 GIMP_ACTION_SELECT_LAST, FALSE,
549 NULL },
550 { "tools-force-decrease", GIMP_ICON_DIALOG_TOOL_OPTIONS,
551 NC_("tools-action", "Tool's Force: Decrease by 1"), NULL, NULL,
552 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
553 NULL },
554 { "tools-force-increase", GIMP_ICON_DIALOG_TOOL_OPTIONS,
555 NC_("tools-action", "Tool's Force: Increase by 1"), NULL, NULL,
556 GIMP_ACTION_SELECT_NEXT, FALSE,
557 NULL },
558 { "tools-force-decrease-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
559 NC_("tools-action", "Tool's Force: Decrease by 10"), NULL, NULL,
560 GIMP_ACTION_SELECT_SKIP_PREVIOUS, FALSE,
561 NULL },
562 { "tools-force-increase-skip", GIMP_ICON_DIALOG_TOOL_OPTIONS,
563 NC_("tools-action", "Tool's Force: Increase by 10"), NULL, NULL,
564 GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
565 NULL },
566 { "tools-force-decrease-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
567 NC_("tools-action", "Tool's Force: Decrease Relative"), NULL, NULL,
568 GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
569 NULL },
570 { "tools-force-increase-percent", GIMP_ICON_DIALOG_TOOL_OPTIONS,
571 NC_("tools-action", "Tool's Force: Increase Relative"), NULL, NULL,
572 GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
573 NULL },
574 };
575
576 static const GimpEnumActionEntry tools_object_1_actions[] =
577 {
578 { "tools-object-1-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
579 "Select Object 1 by Index", NULL, NULL,
580 GIMP_ACTION_SELECT_SET, TRUE,
581 NULL },
582 { "tools-object-1-first", GIMP_ICON_DIALOG_TOOL_OPTIONS,
583 "First Object 1", NULL, NULL,
584 GIMP_ACTION_SELECT_FIRST, FALSE,
585 NULL },
586 { "tools-object-1-last", GIMP_ICON_DIALOG_TOOL_OPTIONS,
587 "Last Object 1", NULL, NULL,
588 GIMP_ACTION_SELECT_LAST, FALSE,
589 NULL },
590 { "tools-object-1-previous", GIMP_ICON_DIALOG_TOOL_OPTIONS,
591 "Previous Object 1", NULL, NULL,
592 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
593 NULL },
594 { "tools-object-1-next", GIMP_ICON_DIALOG_TOOL_OPTIONS,
595 "Next Object 1", NULL, NULL,
596 GIMP_ACTION_SELECT_NEXT, FALSE,
597 NULL }
598 };
599
600 static const GimpEnumActionEntry tools_object_2_actions[] =
601 {
602 { "tools-object-2-set", GIMP_ICON_DIALOG_TOOL_OPTIONS,
603 "Select Object 2 by Index", NULL, NULL,
604 GIMP_ACTION_SELECT_SET, TRUE,
605 NULL },
606 { "tools-object-2-first", GIMP_ICON_DIALOG_TOOL_OPTIONS,
607 "First Object 2", NULL, NULL,
608 GIMP_ACTION_SELECT_FIRST, FALSE,
609 NULL },
610 { "tools-object-2-last", GIMP_ICON_DIALOG_TOOL_OPTIONS,
611 "Last Object 2", NULL, NULL,
612 GIMP_ACTION_SELECT_LAST, FALSE,
613 NULL },
614 { "tools-object-2-previous", GIMP_ICON_DIALOG_TOOL_OPTIONS,
615 "Previous Object 2", NULL, NULL,
616 GIMP_ACTION_SELECT_PREVIOUS, FALSE,
617 NULL },
618 { "tools-object-2-next", GIMP_ICON_DIALOG_TOOL_OPTIONS,
619 "Next Object 2", NULL, NULL,
620 GIMP_ACTION_SELECT_NEXT, FALSE,
621 NULL }
622 };
623
624
625 void
tools_actions_setup(GimpActionGroup * group)626 tools_actions_setup (GimpActionGroup *group)
627 {
628 GimpAction *action;
629 GList *list;
630
631 gimp_action_group_add_actions (group, "tools-action",
632 tools_actions,
633 G_N_ELEMENTS (tools_actions));
634
635 gimp_action_group_add_string_actions (group, "tools-action",
636 tools_alternative_actions,
637 G_N_ELEMENTS (tools_alternative_actions),
638 tools_select_cmd_callback);
639
640 action = gimp_action_group_get_action (group,
641 "tools-by-color-select-short");
642 gimp_action_set_accel_path (action, "<Actions>/tools/tools-by-color-select");
643
644 gimp_action_group_add_enum_actions (group, NULL,
645 tools_color_average_radius_actions,
646 G_N_ELEMENTS (tools_color_average_radius_actions),
647 tools_color_average_radius_cmd_callback);
648
649 gimp_action_group_add_enum_actions (group, NULL,
650 tools_paintbrush_size_actions,
651 G_N_ELEMENTS (tools_paintbrush_size_actions),
652 tools_paintbrush_size_cmd_callback);
653 gimp_action_group_add_enum_actions (group, NULL,
654 tools_paintbrush_aspect_ratio_actions,
655 G_N_ELEMENTS (tools_paintbrush_aspect_ratio_actions),
656 tools_paintbrush_aspect_ratio_cmd_callback);
657 gimp_action_group_add_enum_actions (group, NULL,
658 tools_paintbrush_angle_actions,
659 G_N_ELEMENTS (tools_paintbrush_angle_actions),
660 tools_paintbrush_angle_cmd_callback);
661 gimp_action_group_add_enum_actions (group, NULL,
662 tools_paintbrush_spacing_actions,
663 G_N_ELEMENTS (tools_paintbrush_spacing_actions),
664 tools_paintbrush_spacing_cmd_callback);
665 gimp_action_group_add_enum_actions (group, NULL,
666 tools_paintbrush_hardness_actions,
667 G_N_ELEMENTS (tools_paintbrush_hardness_actions),
668 tools_paintbrush_hardness_cmd_callback);
669 gimp_action_group_add_enum_actions (group, NULL,
670 tools_paintbrush_force_actions,
671 G_N_ELEMENTS (tools_paintbrush_force_actions),
672 tools_paintbrush_force_cmd_callback);
673
674 gimp_action_group_add_enum_actions (group, NULL,
675 tools_ink_blob_size_actions,
676 G_N_ELEMENTS (tools_ink_blob_size_actions),
677 tools_ink_blob_size_cmd_callback);
678 gimp_action_group_add_enum_actions (group, NULL,
679 tools_ink_blob_aspect_actions,
680 G_N_ELEMENTS (tools_ink_blob_aspect_actions),
681 tools_ink_blob_aspect_cmd_callback);
682 gimp_action_group_add_enum_actions (group, NULL,
683 tools_ink_blob_angle_actions,
684 G_N_ELEMENTS (tools_ink_blob_angle_actions),
685 tools_ink_blob_angle_cmd_callback);
686
687 gimp_action_group_add_enum_actions (group, "tools-action",
688 tools_airbrush_rate_actions,
689 G_N_ELEMENTS (tools_airbrush_rate_actions),
690 tools_airbrush_rate_cmd_callback);
691 gimp_action_group_add_enum_actions (group, "tools-action",
692 tools_airbrush_flow_actions,
693 G_N_ELEMENTS (tools_airbrush_flow_actions),
694 tools_airbrush_flow_cmd_callback);
695
696 gimp_action_group_add_enum_actions (group, NULL,
697 tools_mybrush_radius_actions,
698 G_N_ELEMENTS (tools_mybrush_radius_actions),
699 tools_mybrush_radius_cmd_callback);
700 gimp_action_group_add_enum_actions (group, NULL,
701 tools_mybrush_hardness_actions,
702 G_N_ELEMENTS (tools_mybrush_hardness_actions),
703 tools_mybrush_hardness_cmd_callback);
704
705 gimp_action_group_add_enum_actions (group, NULL,
706 tools_foreground_select_brush_size_actions,
707 G_N_ELEMENTS (tools_foreground_select_brush_size_actions),
708 tools_fg_select_brush_size_cmd_callback);
709
710 gimp_action_group_add_enum_actions (group, NULL,
711 tools_transform_preview_opacity_actions,
712 G_N_ELEMENTS (tools_transform_preview_opacity_actions),
713 tools_transform_preview_opacity_cmd_callback);
714
715 gimp_action_group_add_enum_actions (group, NULL,
716 tools_warp_effect_size_actions,
717 G_N_ELEMENTS (tools_warp_effect_size_actions),
718 tools_warp_effect_size_cmd_callback);
719 gimp_action_group_add_enum_actions (group, NULL,
720 tools_warp_effect_hardness_actions,
721 G_N_ELEMENTS (tools_warp_effect_hardness_actions),
722 tools_warp_effect_hardness_cmd_callback);
723
724 gimp_action_group_add_enum_actions (group, "tools-action",
725 tools_opacity_actions,
726 G_N_ELEMENTS (tools_opacity_actions),
727 tools_opacity_cmd_callback);
728 gimp_action_group_add_enum_actions (group, "tools-action",
729 tools_size_actions,
730 G_N_ELEMENTS (tools_size_actions),
731 tools_size_cmd_callback);
732 gimp_action_group_add_enum_actions (group, "tools-action",
733 tools_aspect_actions,
734 G_N_ELEMENTS (tools_aspect_actions),
735 tools_aspect_cmd_callback);
736 gimp_action_group_add_enum_actions (group, "tools-action",
737 tools_angle_actions,
738 G_N_ELEMENTS (tools_angle_actions),
739 tools_angle_cmd_callback);
740 gimp_action_group_add_enum_actions (group, "tools-action",
741 tools_spacing_actions,
742 G_N_ELEMENTS (tools_spacing_actions),
743 tools_spacing_cmd_callback);
744 gimp_action_group_add_enum_actions (group, "tools-action",
745 tools_hardness_actions,
746 G_N_ELEMENTS (tools_hardness_actions),
747 tools_hardness_cmd_callback);
748 gimp_action_group_add_enum_actions (group, "tools-action",
749 tools_force_actions,
750 G_N_ELEMENTS (tools_force_actions),
751 tools_force_cmd_callback);
752
753 gimp_action_group_add_enum_actions (group, NULL,
754 tools_object_1_actions,
755 G_N_ELEMENTS (tools_object_1_actions),
756 tools_object_1_cmd_callback);
757 gimp_action_group_add_enum_actions (group, NULL,
758 tools_object_2_actions,
759 G_N_ELEMENTS (tools_object_2_actions),
760 tools_object_2_cmd_callback);
761
762 for (list = gimp_get_tool_info_iter (group->gimp);
763 list;
764 list = g_list_next (list))
765 {
766 GimpToolInfo *tool_info = list->data;
767
768 if (tool_info->menu_label)
769 {
770 GimpStringActionEntry entry;
771 gchar *name;
772 const gchar *icon_name;
773 const gchar *identifier;
774
775 name = gimp_tool_info_get_action_name (tool_info);
776 icon_name = gimp_viewable_get_icon_name (GIMP_VIEWABLE (tool_info));
777 identifier = gimp_object_get_name (tool_info);
778
779 entry.name = name;
780 entry.icon_name = icon_name;
781 entry.label = tool_info->menu_label;
782 entry.accelerator = tool_info->menu_accel;
783 entry.tooltip = tool_info->tooltip;
784 entry.help_id = tool_info->help_id;
785 entry.value = identifier;
786
787 gimp_action_group_add_string_actions (group, NULL,
788 &entry, 1,
789 tools_select_cmd_callback);
790
791 g_free (name);
792 }
793 }
794 }
795
796 void
tools_actions_update(GimpActionGroup * group,gpointer data)797 tools_actions_update (GimpActionGroup *group,
798 gpointer data)
799 {
800 }
801