1 /* GIMP - The GNU Image Manipulation Program
2 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
3 *
4 * GimpDisplayConfig class
5 * Copyright (C) 2001 Sven Neumann <sven@gimp.org>
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21 #include "config.h"
22
23 #include <cairo.h>
24 #include <gegl.h>
25 #include <gdk-pixbuf/gdk-pixbuf.h>
26
27 #include "libgimpbase/gimpbase.h"
28 #include "libgimpcolor/gimpcolor.h"
29 #include "libgimpconfig/gimpconfig.h"
30
31 #include "config-types.h"
32
33 #include "gimprc-blurbs.h"
34 #include "gimpdisplayconfig.h"
35 #include "gimpdisplayoptions.h"
36
37 #include "gimp-intl.h"
38
39
40 #define DEFAULT_ACTIVATE_ON_FOCUS TRUE
41 #define DEFAULT_MONITOR_RESOLUTION 96.0
42 #define DEFAULT_MARCHING_ANTS_SPEED 200
43 #define DEFAULT_USE_EVENT_HISTORY FALSE
44
45 enum
46 {
47 PROP_0,
48 PROP_TRANSPARENCY_SIZE,
49 PROP_TRANSPARENCY_TYPE,
50 PROP_SNAP_DISTANCE,
51 PROP_MARCHING_ANTS_SPEED,
52 PROP_RESIZE_WINDOWS_ON_ZOOM,
53 PROP_RESIZE_WINDOWS_ON_RESIZE,
54 PROP_DEFAULT_SHOW_ALL,
55 PROP_DEFAULT_DOT_FOR_DOT,
56 PROP_INITIAL_ZOOM_TO_FIT,
57 PROP_CURSOR_MODE,
58 PROP_CURSOR_UPDATING,
59 PROP_SHOW_BRUSH_OUTLINE,
60 PROP_SNAP_BRUSH_OUTLINE,
61 PROP_SHOW_PAINT_TOOL_CURSOR,
62 PROP_IMAGE_TITLE_FORMAT,
63 PROP_IMAGE_STATUS_FORMAT,
64 PROP_MONITOR_XRESOLUTION,
65 PROP_MONITOR_YRESOLUTION,
66 PROP_MONITOR_RES_FROM_GDK,
67 PROP_NAV_PREVIEW_SIZE,
68 PROP_DEFAULT_VIEW,
69 PROP_DEFAULT_FULLSCREEN_VIEW,
70 PROP_ACTIVATE_ON_FOCUS,
71 PROP_SPACE_BAR_ACTION,
72 PROP_ZOOM_QUALITY,
73 PROP_USE_EVENT_HISTORY,
74
75 /* ignored, only for backward compatibility: */
76 PROP_DEFAULT_SNAP_TO_GUIDES,
77 PROP_DEFAULT_SNAP_TO_GRID,
78 PROP_DEFAULT_SNAP_TO_CANVAS,
79 PROP_DEFAULT_SNAP_TO_PATH,
80 PROP_CONFIRM_ON_CLOSE,
81 PROP_XOR_COLOR,
82 PROP_PERFECT_MOUSE
83 };
84
85
86 static void gimp_display_config_finalize (GObject *object);
87 static void gimp_display_config_set_property (GObject *object,
88 guint property_id,
89 const GValue *value,
90 GParamSpec *pspec);
91 static void gimp_display_config_get_property (GObject *object,
92 guint property_id,
93 GValue *value,
94 GParamSpec *pspec);
95
96 static void gimp_display_config_view_notify (GObject *object,
97 GParamSpec *pspec,
98 gpointer data);
99 static void gimp_display_config_fullscreen_notify (GObject *object,
100 GParamSpec *pspec,
101 gpointer data);
102
103
G_DEFINE_TYPE(GimpDisplayConfig,gimp_display_config,GIMP_TYPE_CORE_CONFIG)104 G_DEFINE_TYPE (GimpDisplayConfig, gimp_display_config, GIMP_TYPE_CORE_CONFIG)
105
106 #define parent_class gimp_display_config_parent_class
107
108
109 static void
110 gimp_display_config_class_init (GimpDisplayConfigClass *klass)
111 {
112 GObjectClass *object_class = G_OBJECT_CLASS (klass);
113 GimpRGB color = { 0, 0, 0, 0 };
114
115 object_class->finalize = gimp_display_config_finalize;
116 object_class->set_property = gimp_display_config_set_property;
117 object_class->get_property = gimp_display_config_get_property;
118
119 GIMP_CONFIG_PROP_ENUM (object_class, PROP_TRANSPARENCY_SIZE,
120 "transparency-size",
121 "Transparency size",
122 TRANSPARENCY_SIZE_BLURB,
123 GIMP_TYPE_CHECK_SIZE,
124 GIMP_CHECK_SIZE_MEDIUM_CHECKS,
125 GIMP_PARAM_STATIC_STRINGS);
126
127 GIMP_CONFIG_PROP_ENUM (object_class, PROP_TRANSPARENCY_TYPE,
128 "transparency-type",
129 "Transparency type",
130 TRANSPARENCY_TYPE_BLURB,
131 GIMP_TYPE_CHECK_TYPE,
132 GIMP_CHECK_TYPE_GRAY_CHECKS,
133 GIMP_PARAM_STATIC_STRINGS);
134
135 GIMP_CONFIG_PROP_INT (object_class, PROP_SNAP_DISTANCE,
136 "snap-distance",
137 "Snap distance",
138 DEFAULT_SNAP_DISTANCE_BLURB,
139 1, 255, 8,
140 GIMP_PARAM_STATIC_STRINGS);
141
142 GIMP_CONFIG_PROP_INT (object_class, PROP_MARCHING_ANTS_SPEED,
143 "marching-ants-speed",
144 "Marching ants speed",
145 MARCHING_ANTS_SPEED_BLURB,
146 10, 10000, DEFAULT_MARCHING_ANTS_SPEED,
147 GIMP_PARAM_STATIC_STRINGS);
148
149 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_RESIZE_WINDOWS_ON_ZOOM,
150 "resize-windows-on-zoom",
151 "Resize windows on zoom",
152 RESIZE_WINDOWS_ON_ZOOM_BLURB,
153 FALSE,
154 GIMP_PARAM_STATIC_STRINGS);
155
156 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_RESIZE_WINDOWS_ON_RESIZE,
157 "resize-windows-on-resize",
158 "Resize windows on resize",
159 RESIZE_WINDOWS_ON_RESIZE_BLURB,
160 FALSE,
161 GIMP_PARAM_STATIC_STRINGS);
162
163 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_SHOW_ALL,
164 "default-show-all",
165 "Default show-all",
166 DEFAULT_SHOW_ALL_BLURB,
167 FALSE,
168 GIMP_PARAM_STATIC_STRINGS);
169
170 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_DOT_FOR_DOT,
171 "default-dot-for-dot",
172 "Default dot-for-dot",
173 DEFAULT_DOT_FOR_DOT_BLURB,
174 TRUE,
175 GIMP_PARAM_STATIC_STRINGS);
176
177 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INITIAL_ZOOM_TO_FIT,
178 "initial-zoom-to-fit",
179 "Initial zoom-to-fit",
180 INITIAL_ZOOM_TO_FIT_BLURB,
181 TRUE,
182 GIMP_PARAM_STATIC_STRINGS);
183
184 GIMP_CONFIG_PROP_ENUM (object_class, PROP_CURSOR_MODE,
185 "cursor-mode",
186 "Cursor mode",
187 CURSOR_MODE_BLURB,
188 GIMP_TYPE_CURSOR_MODE,
189 GIMP_CURSOR_MODE_TOOL_CROSSHAIR,
190 GIMP_PARAM_STATIC_STRINGS);
191
192 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_CURSOR_UPDATING,
193 "cursor-updating",
194 "Cursor updating",
195 CURSOR_UPDATING_BLURB,
196 TRUE,
197 GIMP_PARAM_STATIC_STRINGS);
198
199 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_BRUSH_OUTLINE,
200 "show-brush-outline",
201 "Show brush outline",
202 SHOW_BRUSH_OUTLINE_BLURB,
203 TRUE,
204 GIMP_PARAM_STATIC_STRINGS);
205
206 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SNAP_BRUSH_OUTLINE,
207 "snap-brush-outline",
208 "Snap brush outline",
209 SNAP_BRUSH_OUTLINE_BLURB,
210 FALSE,
211 GIMP_PARAM_STATIC_STRINGS);
212
213 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_PAINT_TOOL_CURSOR,
214 "show-paint-tool-cursor",
215 "Show paint tool cursor",
216 SHOW_PAINT_TOOL_CURSOR_BLURB,
217 TRUE,
218 GIMP_PARAM_STATIC_STRINGS);
219
220 GIMP_CONFIG_PROP_STRING (object_class, PROP_IMAGE_TITLE_FORMAT,
221 "image-title-format",
222 "Image title format",
223 IMAGE_TITLE_FORMAT_BLURB,
224 GIMP_CONFIG_DEFAULT_IMAGE_TITLE_FORMAT,
225 GIMP_PARAM_STATIC_STRINGS);
226
227 GIMP_CONFIG_PROP_STRING (object_class, PROP_IMAGE_STATUS_FORMAT,
228 "image-status-format",
229 "Image statusbar format",
230 IMAGE_STATUS_FORMAT_BLURB,
231 GIMP_CONFIG_DEFAULT_IMAGE_STATUS_FORMAT,
232 GIMP_PARAM_STATIC_STRINGS);
233
234 GIMP_CONFIG_PROP_RESOLUTION (object_class, PROP_MONITOR_XRESOLUTION,
235 "monitor-xresolution",
236 "Monitor resolution X",
237 MONITOR_XRESOLUTION_BLURB,
238 DEFAULT_MONITOR_RESOLUTION,
239 GIMP_PARAM_STATIC_STRINGS);
240
241 GIMP_CONFIG_PROP_RESOLUTION (object_class, PROP_MONITOR_YRESOLUTION,
242 "monitor-yresolution",
243 "Monitor resolution Y",
244 MONITOR_YRESOLUTION_BLURB,
245 DEFAULT_MONITOR_RESOLUTION,
246 GIMP_PARAM_STATIC_STRINGS);
247
248 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_MONITOR_RES_FROM_GDK,
249 "monitor-resolution-from-windowing-system",
250 "Monitor resolution from windowing system",
251 MONITOR_RES_FROM_GDK_BLURB,
252 TRUE,
253 GIMP_PARAM_STATIC_STRINGS);
254
255 GIMP_CONFIG_PROP_ENUM (object_class, PROP_NAV_PREVIEW_SIZE,
256 "navigation-preview-size",
257 "Navigation preview size",
258 NAVIGATION_PREVIEW_SIZE_BLURB,
259 GIMP_TYPE_VIEW_SIZE,
260 GIMP_VIEW_SIZE_MEDIUM,
261 GIMP_PARAM_STATIC_STRINGS);
262
263 GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_VIEW,
264 "default-view",
265 "Default view options",
266 DEFAULT_VIEW_BLURB,
267 GIMP_TYPE_DISPLAY_OPTIONS,
268 GIMP_PARAM_STATIC_STRINGS |
269 GIMP_CONFIG_PARAM_AGGREGATE);
270
271 GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_FULLSCREEN_VIEW,
272 "default-fullscreen-view",
273 "Default fullscreen view options",
274 DEFAULT_FULLSCREEN_VIEW_BLURB,
275 GIMP_TYPE_DISPLAY_OPTIONS,
276 GIMP_PARAM_STATIC_STRINGS |
277 GIMP_CONFIG_PARAM_AGGREGATE);
278
279 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_ACTIVATE_ON_FOCUS,
280 "activate-on-focus",
281 "Activate on focus",
282 ACTIVATE_ON_FOCUS_BLURB,
283 DEFAULT_ACTIVATE_ON_FOCUS,
284 GIMP_PARAM_STATIC_STRINGS);
285
286 GIMP_CONFIG_PROP_ENUM (object_class, PROP_SPACE_BAR_ACTION,
287 "space-bar-action",
288 "Space bar action",
289 SPACE_BAR_ACTION_BLURB,
290 GIMP_TYPE_SPACE_BAR_ACTION,
291 GIMP_SPACE_BAR_ACTION_PAN,
292 GIMP_PARAM_STATIC_STRINGS);
293
294 GIMP_CONFIG_PROP_ENUM (object_class, PROP_ZOOM_QUALITY,
295 "zoom-quality",
296 "Zoom quality",
297 ZOOM_QUALITY_BLURB,
298 GIMP_TYPE_ZOOM_QUALITY,
299 GIMP_ZOOM_QUALITY_HIGH,
300 GIMP_PARAM_STATIC_STRINGS);
301
302 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_USE_EVENT_HISTORY,
303 "use-event-history",
304 "Use event history",
305 DEFAULT_USE_EVENT_HISTORY_BLURB,
306 DEFAULT_USE_EVENT_HISTORY,
307 GIMP_PARAM_STATIC_STRINGS);
308
309 /* only for backward compatibility: */
310 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_SNAP_TO_GUIDES,
311 "default-snap-to-guides",
312 NULL, NULL,
313 TRUE,
314 GIMP_PARAM_STATIC_STRINGS |
315 GIMP_CONFIG_PARAM_IGNORE);
316
317 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_SNAP_TO_GRID,
318 "default-snap-to-grid",
319 NULL, NULL,
320 FALSE,
321 GIMP_PARAM_STATIC_STRINGS |
322 GIMP_CONFIG_PARAM_IGNORE);
323
324 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_SNAP_TO_CANVAS,
325 "default-snap-to-canvas",
326 NULL, NULL,
327 FALSE,
328 GIMP_PARAM_STATIC_STRINGS |
329 GIMP_CONFIG_PARAM_IGNORE);
330
331 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DEFAULT_SNAP_TO_PATH,
332 "default-snap-to-path",
333 NULL, NULL,
334 FALSE,
335 GIMP_PARAM_STATIC_STRINGS |
336 GIMP_CONFIG_PARAM_IGNORE);
337
338 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_CONFIRM_ON_CLOSE,
339 "confirm-on-close",
340 NULL, NULL,
341 TRUE,
342 GIMP_PARAM_STATIC_STRINGS |
343 GIMP_CONFIG_PARAM_IGNORE);
344
345 GIMP_CONFIG_PROP_RGB (object_class, PROP_XOR_COLOR,
346 "xor-color",
347 NULL, NULL,
348 FALSE, &color,
349 GIMP_PARAM_STATIC_STRINGS |
350 GIMP_CONFIG_PARAM_IGNORE);
351
352 GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_PERFECT_MOUSE,
353 "perfect-mouse",
354 NULL, NULL,
355 TRUE,
356 GIMP_PARAM_STATIC_STRINGS |
357 GIMP_CONFIG_PARAM_IGNORE);
358 }
359
360 static void
gimp_display_config_init(GimpDisplayConfig * config)361 gimp_display_config_init (GimpDisplayConfig *config)
362 {
363 config->default_view =
364 g_object_new (GIMP_TYPE_DISPLAY_OPTIONS, NULL);
365
366 g_signal_connect (config->default_view, "notify",
367 G_CALLBACK (gimp_display_config_view_notify),
368 config);
369
370 config->default_fullscreen_view =
371 g_object_new (GIMP_TYPE_DISPLAY_OPTIONS, NULL);
372
373 g_signal_connect (config->default_fullscreen_view, "notify",
374 G_CALLBACK (gimp_display_config_fullscreen_notify),
375 config);
376 }
377
378 static void
gimp_display_config_finalize(GObject * object)379 gimp_display_config_finalize (GObject *object)
380 {
381 GimpDisplayConfig *display_config = GIMP_DISPLAY_CONFIG (object);
382
383 g_free (display_config->image_title_format);
384 g_free (display_config->image_status_format);
385
386 g_clear_object (&display_config->default_view);
387 g_clear_object (&display_config->default_fullscreen_view);
388
389 G_OBJECT_CLASS (parent_class)->finalize (object);
390 }
391
392 static void
gimp_display_config_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)393 gimp_display_config_set_property (GObject *object,
394 guint property_id,
395 const GValue *value,
396 GParamSpec *pspec)
397 {
398 GimpDisplayConfig *display_config = GIMP_DISPLAY_CONFIG (object);
399
400 switch (property_id)
401 {
402 case PROP_TRANSPARENCY_SIZE:
403 display_config->transparency_size = g_value_get_enum (value);
404 break;
405 case PROP_TRANSPARENCY_TYPE:
406 display_config->transparency_type = g_value_get_enum (value);
407 break;
408 case PROP_SNAP_DISTANCE:
409 display_config->snap_distance = g_value_get_int (value);
410 break;
411 case PROP_MARCHING_ANTS_SPEED:
412 display_config->marching_ants_speed = g_value_get_int (value);
413 break;
414 case PROP_RESIZE_WINDOWS_ON_ZOOM:
415 display_config->resize_windows_on_zoom = g_value_get_boolean (value);
416 break;
417 case PROP_RESIZE_WINDOWS_ON_RESIZE:
418 display_config->resize_windows_on_resize = g_value_get_boolean (value);
419 break;
420 case PROP_DEFAULT_SHOW_ALL:
421 display_config->default_show_all = g_value_get_boolean (value);
422 break;
423 case PROP_DEFAULT_DOT_FOR_DOT:
424 display_config->default_dot_for_dot = g_value_get_boolean (value);
425 break;
426 case PROP_INITIAL_ZOOM_TO_FIT:
427 display_config->initial_zoom_to_fit = g_value_get_boolean (value);
428 break;
429 case PROP_CURSOR_MODE:
430 display_config->cursor_mode = g_value_get_enum (value);
431 break;
432 case PROP_CURSOR_UPDATING:
433 display_config->cursor_updating = g_value_get_boolean (value);
434 break;
435 case PROP_SHOW_BRUSH_OUTLINE:
436 display_config->show_brush_outline = g_value_get_boolean (value);
437 break;
438 case PROP_SNAP_BRUSH_OUTLINE:
439 display_config->snap_brush_outline = g_value_get_boolean (value);
440 break;
441 case PROP_SHOW_PAINT_TOOL_CURSOR:
442 display_config->show_paint_tool_cursor = g_value_get_boolean (value);
443 break;
444 case PROP_IMAGE_TITLE_FORMAT:
445 g_free (display_config->image_title_format);
446 display_config->image_title_format = g_value_dup_string (value);
447 break;
448 case PROP_IMAGE_STATUS_FORMAT:
449 g_free (display_config->image_status_format);
450 display_config->image_status_format = g_value_dup_string (value);
451 break;
452 case PROP_MONITOR_XRESOLUTION:
453 display_config->monitor_xres = g_value_get_double (value);
454 break;
455 case PROP_MONITOR_YRESOLUTION:
456 display_config->monitor_yres = g_value_get_double (value);
457 break;
458 case PROP_MONITOR_RES_FROM_GDK:
459 display_config->monitor_res_from_gdk = g_value_get_boolean (value);
460 break;
461 case PROP_NAV_PREVIEW_SIZE:
462 display_config->nav_preview_size = g_value_get_enum (value);
463 break;
464 case PROP_DEFAULT_VIEW:
465 if (g_value_get_object (value))
466 gimp_config_sync (g_value_get_object (value),
467 G_OBJECT (display_config->default_view), 0);
468 break;
469 case PROP_DEFAULT_FULLSCREEN_VIEW:
470 if (g_value_get_object (value))
471 gimp_config_sync (g_value_get_object (value),
472 G_OBJECT (display_config->default_fullscreen_view),
473 0);
474 break;
475 case PROP_ACTIVATE_ON_FOCUS:
476 display_config->activate_on_focus = g_value_get_boolean (value);
477 break;
478 case PROP_SPACE_BAR_ACTION:
479 display_config->space_bar_action = g_value_get_enum (value);
480 break;
481 case PROP_ZOOM_QUALITY:
482 display_config->zoom_quality = g_value_get_enum (value);
483 break;
484 case PROP_USE_EVENT_HISTORY:
485 display_config->use_event_history = g_value_get_boolean (value);
486 break;
487
488 case PROP_DEFAULT_SNAP_TO_GUIDES:
489 case PROP_DEFAULT_SNAP_TO_GRID:
490 case PROP_DEFAULT_SNAP_TO_CANVAS:
491 case PROP_DEFAULT_SNAP_TO_PATH:
492 case PROP_CONFIRM_ON_CLOSE:
493 case PROP_XOR_COLOR:
494 case PROP_PERFECT_MOUSE:
495 /* ignored */
496 break;
497
498 default:
499 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
500 break;
501 }
502 }
503
504 static void
gimp_display_config_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)505 gimp_display_config_get_property (GObject *object,
506 guint property_id,
507 GValue *value,
508 GParamSpec *pspec)
509 {
510 GimpDisplayConfig *display_config = GIMP_DISPLAY_CONFIG (object);
511
512 switch (property_id)
513 {
514 case PROP_TRANSPARENCY_SIZE:
515 g_value_set_enum (value, display_config->transparency_size);
516 break;
517 case PROP_TRANSPARENCY_TYPE:
518 g_value_set_enum (value, display_config->transparency_type);
519 break;
520 case PROP_SNAP_DISTANCE:
521 g_value_set_int (value, display_config->snap_distance);
522 break;
523 case PROP_MARCHING_ANTS_SPEED:
524 g_value_set_int (value, display_config->marching_ants_speed);
525 break;
526 case PROP_RESIZE_WINDOWS_ON_ZOOM:
527 g_value_set_boolean (value, display_config->resize_windows_on_zoom);
528 break;
529 case PROP_RESIZE_WINDOWS_ON_RESIZE:
530 g_value_set_boolean (value, display_config->resize_windows_on_resize);
531 break;
532 case PROP_DEFAULT_SHOW_ALL:
533 g_value_set_boolean (value, display_config->default_show_all);
534 break;
535 case PROP_DEFAULT_DOT_FOR_DOT:
536 g_value_set_boolean (value, display_config->default_dot_for_dot);
537 break;
538 case PROP_INITIAL_ZOOM_TO_FIT:
539 g_value_set_boolean (value, display_config->initial_zoom_to_fit);
540 break;
541 case PROP_CURSOR_MODE:
542 g_value_set_enum (value, display_config->cursor_mode);
543 break;
544 case PROP_CURSOR_UPDATING:
545 g_value_set_boolean (value, display_config->cursor_updating);
546 break;
547 case PROP_SHOW_BRUSH_OUTLINE:
548 g_value_set_boolean (value, display_config->show_brush_outline);
549 break;
550 case PROP_SNAP_BRUSH_OUTLINE:
551 g_value_set_boolean (value, display_config->snap_brush_outline);
552 break;
553 case PROP_SHOW_PAINT_TOOL_CURSOR:
554 g_value_set_boolean (value, display_config->show_paint_tool_cursor);
555 break;
556 case PROP_IMAGE_TITLE_FORMAT:
557 g_value_set_string (value, display_config->image_title_format);
558 break;
559 case PROP_IMAGE_STATUS_FORMAT:
560 g_value_set_string (value, display_config->image_status_format);
561 break;
562 case PROP_MONITOR_XRESOLUTION:
563 g_value_set_double (value, display_config->monitor_xres);
564 break;
565 case PROP_MONITOR_YRESOLUTION:
566 g_value_set_double (value, display_config->monitor_yres);
567 break;
568 case PROP_MONITOR_RES_FROM_GDK:
569 g_value_set_boolean (value, display_config->monitor_res_from_gdk);
570 break;
571 case PROP_NAV_PREVIEW_SIZE:
572 g_value_set_enum (value, display_config->nav_preview_size);
573 break;
574 case PROP_DEFAULT_VIEW:
575 g_value_set_object (value, display_config->default_view);
576 break;
577 case PROP_DEFAULT_FULLSCREEN_VIEW:
578 g_value_set_object (value, display_config->default_fullscreen_view);
579 break;
580 case PROP_ACTIVATE_ON_FOCUS:
581 g_value_set_boolean (value, display_config->activate_on_focus);
582 break;
583 case PROP_SPACE_BAR_ACTION:
584 g_value_set_enum (value, display_config->space_bar_action);
585 break;
586 case PROP_ZOOM_QUALITY:
587 g_value_set_enum (value, display_config->zoom_quality);
588 break;
589 case PROP_USE_EVENT_HISTORY:
590 g_value_set_boolean (value, display_config->use_event_history);
591 break;
592
593 case PROP_DEFAULT_SNAP_TO_GUIDES:
594 case PROP_DEFAULT_SNAP_TO_GRID:
595 case PROP_DEFAULT_SNAP_TO_CANVAS:
596 case PROP_DEFAULT_SNAP_TO_PATH:
597 case PROP_CONFIRM_ON_CLOSE:
598 case PROP_XOR_COLOR:
599 case PROP_PERFECT_MOUSE:
600 /* ignored */
601 break;
602
603 default:
604 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
605 break;
606 }
607 }
608
609 static void
gimp_display_config_view_notify(GObject * object,GParamSpec * pspec,gpointer data)610 gimp_display_config_view_notify (GObject *object,
611 GParamSpec *pspec,
612 gpointer data)
613 {
614 g_object_notify (G_OBJECT (data), "default-view");
615 }
616
617 static void
gimp_display_config_fullscreen_notify(GObject * object,GParamSpec * pspec,gpointer data)618 gimp_display_config_fullscreen_notify (GObject *object,
619 GParamSpec *pspec,
620 gpointer data)
621 {
622 g_object_notify (G_OBJECT (data), "default-fullscreen-view");
623 }
624