25
25
#include "gimptoolcontrol.h"
28
static void gimp_tool_control_class_init (GimpToolControlClass *klass);
29
static void gimp_tool_control_init (GimpToolControl *tool);
32
static GimpObjectClass *parent_class = NULL;
36
gimp_tool_control_get_type (void)
38
static GType tool_control_type = 0;
40
if (! tool_control_type)
42
static const GTypeInfo tool_control_info =
44
sizeof (GimpToolControlClass),
46
(GBaseFinalizeFunc) NULL,
47
(GClassInitFunc) gimp_tool_control_class_init,
48
NULL, /* class_finalize */
49
NULL, /* class_data */
50
sizeof (GimpToolControl),
52
(GInstanceInitFunc) gimp_tool_control_init,
55
tool_control_type = g_type_register_static (GIMP_TYPE_OBJECT,
57
&tool_control_info, 0);
60
return tool_control_type;
28
static void gimp_tool_control_finalize (GObject *object);
31
G_DEFINE_TYPE (GimpToolControl, gimp_tool_control, GIMP_TYPE_OBJECT)
33
#define parent_class gimp_tool_control_parent_class
64
37
gimp_tool_control_class_init (GimpToolControlClass *klass)
66
parent_class = g_type_class_peek_parent (klass);
39
GObjectClass *object_class = G_OBJECT_CLASS (klass);
41
object_class->finalize = gimp_tool_control_finalize;
72
47
control->active = FALSE;
73
48
control->paused_count = 0;
75
control->toggled = FALSE;
50
control->preserve = TRUE;
77
51
control->scroll_lock = FALSE;
52
control->handle_empty_image = FALSE;
54
control->dirty_mask = GIMP_DIRTY_NONE;
55
control->motion_mode = GIMP_MOTION_MODE_HINT;
78
57
control->auto_snap_to = TRUE;
79
58
control->snap_offset_x = 0;
80
59
control->snap_offset_y = 0;
81
60
control->snap_width = 0;
82
61
control->snap_height = 0;
84
control->preserve = TRUE;
85
control->dirty_mask = GIMP_DIRTY_NONE;
86
control->handle_empty_image = FALSE;
87
control->motion_mode = GIMP_MOTION_MODE_HINT;
63
control->toggled = FALSE;
89
65
control->cursor = GIMP_CURSOR_MOUSE;
90
66
control->tool_cursor = GIMP_TOOL_CURSOR_NONE;
91
67
control->cursor_modifier = GIMP_CURSOR_MODIFIER_NONE;
93
control->toggle_cursor = GIMP_CURSOR_MOUSE;
94
control->toggle_tool_cursor = GIMP_TOOL_CURSOR_NONE;
95
control->toggle_cursor_modifier = GIMP_CURSOR_MODIFIER_NONE;
99
gimp_tool_control_pause (GimpToolControl *control)
101
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
103
control->paused_count++;
107
gimp_tool_control_resume (GimpToolControl *control)
109
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
111
control->paused_count--;
115
gimp_tool_control_is_paused (GimpToolControl *control)
117
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
119
return control->paused_count > 0;
69
control->toggle_cursor = -1;
70
control->toggle_tool_cursor = -1;
71
control->toggle_cursor_modifier = -1;
73
control->action_value_1 = NULL;
74
control->action_value_2 = NULL;
75
control->action_value_3 = NULL;
76
control->action_value_4 = NULL;
78
control->action_object_1 = NULL;
79
control->action_object_2 = NULL;
83
gimp_tool_control_finalize (GObject *object)
85
GimpToolControl *control = GIMP_TOOL_CONTROL (object);
87
g_free (control->action_value_1);
88
g_free (control->action_value_2);
89
g_free (control->action_value_3);
90
g_free (control->action_value_4);
91
g_free (control->action_object_1);
92
g_free (control->action_object_2);
94
G_OBJECT_CLASS (parent_class)->finalize (object);
98
/* public functions */
123
101
gimp_tool_control_activate (GimpToolControl *control)
153
gimp_tool_control_set_toggle (GimpToolControl *control,
156
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
158
control->toggled = toggled ? TRUE : FALSE;
162
gimp_tool_control_set_handles_empty_image (GimpToolControl *control,
163
gboolean handle_empty)
131
gimp_tool_control_pause (GimpToolControl *control)
133
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
135
control->paused_count++;
139
gimp_tool_control_resume (GimpToolControl *control)
141
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
143
control->paused_count--;
147
gimp_tool_control_is_paused (GimpToolControl *control)
149
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
151
return control->paused_count > 0;
155
gimp_tool_control_set_preserve (GimpToolControl *control,
158
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
160
control->preserve = preserve ? TRUE : FALSE;
164
gimp_tool_control_get_preserve (GimpToolControl *control)
166
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
168
return control->preserve;
172
gimp_tool_control_set_scroll_lock (GimpToolControl *control,
173
gboolean scroll_lock)
175
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
177
control->scroll_lock = scroll_lock ? TRUE : FALSE;
181
gimp_tool_control_get_scroll_lock (GimpToolControl *control)
183
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
185
return control->scroll_lock;
189
gimp_tool_control_set_handle_empty_image (GimpToolControl *control,
190
gboolean handle_empty)
165
192
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
167
194
control->handle_empty_image = handle_empty ? TRUE : FALSE;
198
gimp_tool_control_get_handle_empty_image (GimpToolControl *control)
200
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
202
return control->handle_empty_image;
206
gimp_tool_control_set_wants_click (GimpToolControl *control,
207
gboolean wants_click)
209
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
211
control->wants_click = wants_click ? TRUE : FALSE;
215
gimp_tool_control_get_wants_click (GimpToolControl *control)
217
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
219
return control->wants_click;
223
gimp_tool_control_set_dirty_mask (GimpToolControl *control,
224
GimpDirtyMask dirty_mask)
226
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
228
control->dirty_mask = dirty_mask;
232
gimp_tool_control_get_dirty_mask (GimpToolControl *control)
234
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), GIMP_DIRTY_NONE);
236
return control->dirty_mask;
240
gimp_tool_control_set_motion_mode (GimpToolControl *control,
241
GimpMotionMode motion_mode)
243
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
245
control->motion_mode = motion_mode;
249
gimp_tool_control_get_motion_mode (GimpToolControl *control)
251
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), GIMP_MOTION_MODE_HINT);
253
return control->motion_mode;
171
257
gimp_tool_control_set_snap_to (GimpToolControl *control,
172
258
gboolean snap_to)
195
gimp_tool_control_set_motion_mode (GimpToolControl *control,
196
GimpMotionMode motion_mode)
198
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
200
control->motion_mode = motion_mode;
204
gimp_tool_control_set_preserve (GimpToolControl *control,
207
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
209
control->preserve = preserve ? TRUE : FALSE;
213
gimp_tool_control_set_dirty_mask (GimpToolControl *control,
214
GimpDirtyMask dirty_mask)
216
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
218
control->dirty_mask = dirty_mask;
289
gimp_tool_control_get_snap_offsets (GimpToolControl *control,
295
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
297
if (offset_x) *offset_x = control->snap_offset_x;
298
if (offset_y) *offset_y = control->snap_offset_y;
299
if (width) *width = control->snap_width;
300
if (height) *height = control->snap_height;
304
gimp_tool_control_set_toggled (GimpToolControl *control,
307
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
309
control->toggled = toggled ? TRUE : FALSE;
313
gimp_tool_control_get_toggled (GimpToolControl *control)
315
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
317
return control->toggled;
267
366
gimp_tool_control_set_toggle_cursor_modifier (GimpToolControl *control,
268
GimpCursorModifier cmodifier)
270
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
272
control->toggle_cursor_modifier = cmodifier;
276
gimp_tool_control_set_scroll_lock (GimpToolControl *control,
277
gboolean scroll_lock)
279
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
281
control->scroll_lock = scroll_lock ? TRUE : FALSE;
286
gimp_tool_control_motion_mode (GimpToolControl *control)
288
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), GIMP_MOTION_MODE_HINT);
290
return control->motion_mode;
294
gimp_tool_control_handles_empty_image (GimpToolControl *control)
296
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
298
return control->handle_empty_image;
302
gimp_tool_control_auto_snap_to (GimpToolControl *control)
304
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
306
return control->auto_snap_to;
310
gimp_tool_control_snap_offsets (GimpToolControl *control,
316
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
318
if (offset_x) *offset_x = control->snap_offset_x;
319
if (offset_y) *offset_y = control->snap_offset_y;
320
if (width) *width = control->snap_width;
321
if (height) *height = control->snap_height;
325
gimp_tool_control_preserve (GimpToolControl *control)
327
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
329
return control->preserve;
333
gimp_tool_control_dirty_mask (GimpToolControl *control)
335
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), GIMP_DIRTY_NONE);
337
return control->dirty_mask;
341
gimp_tool_control_scroll_lock (GimpToolControl *control)
343
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
345
return control->scroll_lock;
349
gimp_tool_control_is_toggled (GimpToolControl *control)
351
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
353
return control->toggled;
367
GimpCursorModifier modifier)
369
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
371
control->toggle_cursor_modifier = modifier;
359
377
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
379
if (control->toggled && control->toggle_cursor != -1)
380
return control->toggle_cursor;
361
382
return control->cursor;
365
gimp_tool_control_get_toggle_cursor (GimpToolControl *control)
367
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
369
return control->toggle_cursor;
372
385
GimpToolCursorType
373
386
gimp_tool_control_get_tool_cursor (GimpToolControl *control)
375
388
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
390
if (control->toggled && control->toggle_tool_cursor != -1)
391
return control->toggle_tool_cursor;
377
393
return control->tool_cursor;
381
gimp_tool_control_get_toggle_tool_cursor (GimpToolControl *control)
383
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
385
return control->toggle_tool_cursor;
388
396
GimpCursorModifier
389
397
gimp_tool_control_get_cursor_modifier (GimpToolControl *control)
391
399
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
401
if (control->toggled && control->toggle_cursor_modifier != -1)
402
return control->toggle_cursor_modifier;
393
404
return control->cursor_modifier;
397
gimp_tool_control_get_toggle_cursor_modifier (GimpToolControl *control)
399
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), FALSE);
401
return control->toggle_cursor_modifier;
408
gimp_tool_control_set_action_value_1 (GimpToolControl *control,
411
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
413
if (action != control->action_value_1)
415
g_free (control->action_value_1);
416
control->action_value_1 = g_strdup (action);
421
gimp_tool_control_get_action_value_1 (GimpToolControl *control)
423
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
425
return control->action_value_1;
429
gimp_tool_control_set_action_value_2 (GimpToolControl *control,
432
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
434
if (action != control->action_value_2)
436
g_free (control->action_value_2);
437
control->action_value_2 = g_strdup (action);
442
gimp_tool_control_get_action_value_2 (GimpToolControl *control)
444
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
446
return control->action_value_2;
450
gimp_tool_control_set_action_value_3 (GimpToolControl *control,
453
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
455
if (action != control->action_value_3)
457
g_free (control->action_value_3);
458
control->action_value_3 = g_strdup (action);
463
gimp_tool_control_get_action_value_3 (GimpToolControl *control)
465
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
467
return control->action_value_3;
471
gimp_tool_control_set_action_value_4 (GimpToolControl *control,
474
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
476
if (action != control->action_value_4)
478
g_free (control->action_value_4);
479
control->action_value_4 = g_strdup (action);
484
gimp_tool_control_get_action_value_4 (GimpToolControl *control)
486
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
488
return control->action_value_4;
492
gimp_tool_control_set_action_object_1 (GimpToolControl *control,
495
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
497
if (action != control->action_object_1)
499
g_free (control->action_object_1);
500
control->action_object_1 = g_strdup (action);
505
gimp_tool_control_get_action_object_1 (GimpToolControl *control)
507
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
509
return control->action_object_1;
513
gimp_tool_control_set_action_object_2 (GimpToolControl *control,
516
g_return_if_fail (GIMP_IS_TOOL_CONTROL (control));
518
if (action != control->action_object_2)
520
g_free (control->action_object_2);
521
control->action_object_2 = g_strdup (action);
526
gimp_tool_control_get_action_object_2 (GimpToolControl *control)
528
g_return_val_if_fail (GIMP_IS_TOOL_CONTROL (control), NULL);
530
return control->action_object_2;