diff options
Diffstat (limited to 'app/config/gimpcoreconfig.c')
-rw-r--r-- | app/config/gimpcoreconfig.c | 1412 |
1 files changed, 1412 insertions, 0 deletions
diff --git a/app/config/gimpcoreconfig.c b/app/config/gimpcoreconfig.c new file mode 100644 index 0000000..15704b1 --- /dev/null +++ b/app/config/gimpcoreconfig.c @@ -0,0 +1,1412 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * GimpCoreConfig class + * Copyright (C) 2001 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <cairo.h> +#include <gegl.h> +#include <gdk-pixbuf/gdk-pixbuf.h> + +#ifdef G_OS_WIN32 +#include <shlobj.h> + +/* Constant available since Shell32.dll 5.0 */ +#ifndef CSIDL_LOCAL_APPDATA +#define CSIDL_LOCAL_APPDATA 0x001c +#endif + +#endif + +#include "libgimpbase/gimpbase.h" +#include "libgimpcolor/gimpcolor.h" +#include "libgimpconfig/gimpconfig.h" + +#include "config-types.h" + +#include "core/core-types.h" +#include "core/gimp-utils.h" +#include "core/gimpgrid.h" +#include "core/gimptemplate.h" + +#include "gimprc-blurbs.h" +#include "gimpcoreconfig.h" + +#include "gimp-intl.h" + + +#define GIMP_DEFAULT_BRUSH "2. Hardness 050" +#define GIMP_DEFAULT_DYNAMICS "Dynamics Off" +#define GIMP_DEFAULT_PATTERN "Pine" +#define GIMP_DEFAULT_PALETTE "Default" +#define GIMP_DEFAULT_GRADIENT "FG to BG (RGB)" +#define GIMP_DEFAULT_TOOL_PRESET "Current Options" +#define GIMP_DEFAULT_FONT "Sans-serif" +#define GIMP_DEFAULT_MYPAINT_BRUSH "Fixme" +#define GIMP_DEFAULT_COMMENT "Created with GIMP" + + +enum +{ + PROP_0, + PROP_LANGUAGE, + PROP_INTERPOLATION_TYPE, + PROP_DEFAULT_THRESHOLD, + PROP_PLUG_IN_PATH, + PROP_MODULE_PATH, + PROP_INTERPRETER_PATH, + PROP_ENVIRON_PATH, + PROP_BRUSH_PATH, + PROP_BRUSH_PATH_WRITABLE, + PROP_DYNAMICS_PATH, + PROP_DYNAMICS_PATH_WRITABLE, + PROP_MYPAINT_BRUSH_PATH, + PROP_MYPAINT_BRUSH_PATH_WRITABLE, + PROP_PATTERN_PATH, + PROP_PATTERN_PATH_WRITABLE, + PROP_PALETTE_PATH, + PROP_PALETTE_PATH_WRITABLE, + PROP_GRADIENT_PATH, + PROP_GRADIENT_PATH_WRITABLE, + PROP_TOOL_PRESET_PATH, + PROP_TOOL_PRESET_PATH_WRITABLE, + PROP_FONT_PATH, + PROP_FONT_PATH_WRITABLE, + PROP_DEFAULT_BRUSH, + PROP_DEFAULT_DYNAMICS, + PROP_DEFAULT_MYPAINT_BRUSH, + PROP_DEFAULT_PATTERN, + PROP_DEFAULT_PALETTE, + PROP_DEFAULT_GRADIENT, + PROP_DEFAULT_TOOL_PRESET, + PROP_DEFAULT_FONT, + PROP_GLOBAL_BRUSH, + PROP_GLOBAL_DYNAMICS, + PROP_GLOBAL_PATTERN, + PROP_GLOBAL_PALETTE, + PROP_GLOBAL_GRADIENT, + PROP_GLOBAL_FONT, + PROP_DEFAULT_IMAGE, + PROP_DEFAULT_GRID, + PROP_UNDO_LEVELS, + PROP_UNDO_SIZE, + PROP_UNDO_PREVIEW_SIZE, + PROP_FILTER_HISTORY_SIZE, + PROP_PLUGINRC_PATH, + PROP_LAYER_PREVIEWS, + PROP_GROUP_LAYER_PREVIEWS, + PROP_LAYER_PREVIEW_SIZE, + PROP_THUMBNAIL_SIZE, + PROP_THUMBNAIL_FILESIZE_LIMIT, + PROP_COLOR_MANAGEMENT, + PROP_SAVE_DOCUMENT_HISTORY, + PROP_QUICK_MASK_COLOR, + PROP_IMPORT_PROMOTE_FLOAT, + PROP_IMPORT_PROMOTE_DITHER, + PROP_IMPORT_ADD_ALPHA, + PROP_IMPORT_RAW_PLUG_IN, + PROP_EXPORT_FILE_TYPE, + PROP_EXPORT_COLOR_PROFILE, + PROP_EXPORT_METADATA_EXIF, + PROP_EXPORT_METADATA_XMP, + PROP_EXPORT_METADATA_IPTC, + PROP_DEBUG_POLICY, + PROP_CHECK_UPDATES, + PROP_CHECK_UPDATE_TIMESTAMP, + PROP_LAST_RELEASE_TIMESTAMP, + PROP_LAST_RELEASE_COMMENT, + PROP_LAST_REVISION, + PROP_LAST_KNOWN_RELEASE, + + /* ignored, only for backward compatibility: */ + PROP_INSTALL_COLORMAP, + PROP_MIN_COLORS +}; + + +static void gimp_core_config_finalize (GObject *object); +static void gimp_core_config_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gimp_core_config_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); +static void gimp_core_config_default_image_notify (GObject *object, + GParamSpec *pspec, + gpointer data); +static void gimp_core_config_default_grid_notify (GObject *object, + GParamSpec *pspec, + gpointer data); +static void gimp_core_config_color_management_notify (GObject *object, + GParamSpec *pspec, + gpointer data); + + +G_DEFINE_TYPE (GimpCoreConfig, gimp_core_config, GIMP_TYPE_GEGL_CONFIG) + +#define parent_class gimp_core_config_parent_class + +#ifdef G_OS_WIN32 +/* + * Taken from glib 2.35 code / gimpenv.c. + * Only temporary until the user-font folder detection can go upstream + * in fontconfig! + * XXX + */ +static gchar * +get_special_folder (int csidl) +{ + wchar_t path[MAX_PATH+1]; + HRESULT hr; + LPITEMIDLIST pidl = NULL; + BOOL b; + gchar *retval = NULL; + + hr = SHGetSpecialFolderLocation (NULL, csidl, &pidl); + if (hr == S_OK) + { + b = SHGetPathFromIDListW (pidl, path); + if (b) + retval = g_utf16_to_utf8 (path, -1, NULL, NULL, NULL); + CoTaskMemFree (pidl); + } + + return retval; +} +#endif + +static void +gimp_core_config_class_init (GimpCoreConfigClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + gchar *path; + gchar *mypaint_brushes; + GimpRGB red = { 1.0, 0, 0, 0.5 }; + guint64 undo_size; + + object_class->finalize = gimp_core_config_finalize; + object_class->set_property = gimp_core_config_set_property; + object_class->get_property = gimp_core_config_get_property; + + GIMP_CONFIG_PROP_STRING (object_class, PROP_LANGUAGE, + "language", + "Language", + LANGUAGE_BLURB, + NULL, /* take from environment */ + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_INTERPOLATION_TYPE, + "interpolation-type", + "Interpolation", + INTERPOLATION_TYPE_BLURB, + GIMP_TYPE_INTERPOLATION_TYPE, + GIMP_INTERPOLATION_CUBIC, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_INT (object_class, PROP_DEFAULT_THRESHOLD, + "default-threshold", + "Default threshold", + DEFAULT_THRESHOLD_BLURB, + 0, 255, 15, + GIMP_PARAM_STATIC_STRINGS); + + path = gimp_config_build_plug_in_path ("plug-ins"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_PLUG_IN_PATH, + "plug-in-path", + "Plug-in path", + PLUG_IN_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + g_free (path); + + path = gimp_config_build_plug_in_path ("modules"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_MODULE_PATH, + "module-path", + "Module path", + MODULE_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + g_free (path); + + path = gimp_config_build_plug_in_path ("interpreters"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_INTERPRETER_PATH, + "interpreter-path", + "Interpreter path", + INTERPRETER_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + g_free (path); + + path = gimp_config_build_plug_in_path ("environ"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_ENVIRON_PATH, + "environ-path", + "Environment path", + ENVIRON_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + g_free (path); + + path = gimp_config_build_data_path ("brushes"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_BRUSH_PATH, + "brush-path", + "Brush path", + BRUSH_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("brushes"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_BRUSH_PATH_WRITABLE, + "brush-path-writable", + "Writable brush path", + BRUSH_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("dynamics"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_DYNAMICS_PATH, + "dynamics-path", + "Dynamics path", + DYNAMICS_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("dynamics"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_DYNAMICS_PATH_WRITABLE, + "dynamics-path-writable", + "Writable dynamics path", + DYNAMICS_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + +#ifdef ENABLE_RELOCATABLE_RESOURCES + mypaint_brushes = g_build_filename ("${gimp_installation_dir}", + "share", "mypaint-data", + "1.0", "brushes", NULL); +#else + mypaint_brushes = g_strdup (MYPAINT_BRUSHES_DIR); +#endif + + path = g_build_path (G_SEARCHPATH_SEPARATOR_S, + "~/.mypaint/brushes", + mypaint_brushes, + NULL); + g_free (mypaint_brushes); + + GIMP_CONFIG_PROP_PATH (object_class, PROP_MYPAINT_BRUSH_PATH, + "mypaint-brush-path", + "MyPaint brush path", + MYPAINT_BRUSH_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = g_build_path (G_SEARCHPATH_SEPARATOR_S, + "~/.mypaint/brushes", + NULL); + GIMP_CONFIG_PROP_PATH (object_class, PROP_MYPAINT_BRUSH_PATH_WRITABLE, + "mypaint-brush-path-writable", + "Writable MyPaint brush path", + MYPAINT_BRUSH_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("patterns"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_PATTERN_PATH, + "pattern-path", + "Pattern path", + PATTERN_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("patterns"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_PATTERN_PATH_WRITABLE, + "pattern-path-writable", + "Writable pattern path", + PATTERN_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("palettes"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_PALETTE_PATH, + "palette-path", + "Palette path", + PALETTE_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("palettes"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_PALETTE_PATH_WRITABLE, + "palette-path-writable", + "Writable palette path", + PALETTE_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("gradients"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_GRADIENT_PATH, + "gradient-path", + "Gradient path", + GRADIENT_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("gradients"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_GRADIENT_PATH_WRITABLE, + "gradient-path-writable", + "Writable gradient path", + GRADIENT_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("tool-presets"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_TOOL_PRESET_PATH, + "tool-preset-path", + "Tool preset path", + TOOL_PRESET_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_writable_path ("tool-presets"); + GIMP_CONFIG_PROP_PATH (object_class, PROP_TOOL_PRESET_PATH_WRITABLE, + "tool-preset-path-writable", + "Writable tool preset path", + TOOL_PRESET_PATH_WRITABLE_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + path = gimp_config_build_data_path ("fonts"); +#if defined G_OS_WIN32 + /* XXX: since a Windows 10 update, build 17704, Microsoft added the + * concept of user-installed fonts (until now it was only possible to + * have system-wide fonts! How weird is that?). + * A feature request at fontconfig is also done, but until this gets + * implemented upstream, let's add the folder ourselves in GIMP's + * default list of folders. + * See: https://gitlab.gnome.org/GNOME/gimp/issues/2949 + * Also: https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/144 + */ + { + gchar *user_fonts_dir = get_special_folder (CSIDL_LOCAL_APPDATA); + + if (user_fonts_dir) + { + gchar *path2; + gchar *tmp; + + path2 = g_build_filename (user_fonts_dir, + "Microsoft", "Windows", "Fonts", NULL); + g_free (user_fonts_dir); + + /* G_SEARCHPATH_SEPARATOR-separated list of folders. */ + tmp = g_strconcat (path2, G_SEARCHPATH_SEPARATOR_S, path, NULL); + g_free (path2); + g_free (path); + path = tmp; + } + } +#endif + GIMP_CONFIG_PROP_PATH (object_class, PROP_FONT_PATH, + "font-path", + "Font path", + FONT_PATH_BLURB, + GIMP_CONFIG_PATH_DIR_LIST, path, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + g_free (path); + + GIMP_CONFIG_PROP_PATH (object_class, PROP_FONT_PATH_WRITABLE, + "font-path-writable", + "Writable font path", + NULL, + GIMP_CONFIG_PATH_DIR_LIST, NULL, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_IGNORE); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_BRUSH, + "default-brush", + "Default brush", + DEFAULT_BRUSH_BLURB, + GIMP_DEFAULT_BRUSH, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_DYNAMICS, + "default-dynamics", + "Default dynamics", + DEFAULT_DYNAMICS_BLURB, + GIMP_DEFAULT_DYNAMICS, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_MYPAINT_BRUSH, + "default-mypaint-brush", + "Default MyPaint brush", + DEFAULT_MYPAINT_BRUSH_BLURB, + GIMP_DEFAULT_MYPAINT_BRUSH, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_PATTERN, + "default-pattern", + "Default pattern", + DEFAULT_PATTERN_BLURB, + GIMP_DEFAULT_PATTERN, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_PALETTE, + "default-palette", + "Default palette", + DEFAULT_PALETTE_BLURB, + GIMP_DEFAULT_PALETTE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_GRADIENT, + "default-gradient", + "Default gradient", + DEFAULT_GRADIENT_BLURB, + GIMP_DEFAULT_GRADIENT, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_TOOL_PRESET, + "default-tool-preset", + "Default tool preset", + DEFAULT_TOOL_PRESET_BLURB, + GIMP_DEFAULT_TOOL_PRESET, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_DEFAULT_FONT, + "default-font", + "Default font", + DEFAULT_FONT_BLURB, + GIMP_DEFAULT_FONT, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_BRUSH, + "global-brush", + "Global brush", + GLOBAL_BRUSH_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_DYNAMICS, + "global-dynamics", + "Global dynamics", + GLOBAL_DYNAMICS_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_PATTERN, + "global-pattern", + "Global pattern", + GLOBAL_PATTERN_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_PALETTE, + "global-palette", + "Global palette", + GLOBAL_PALETTE_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_GRADIENT, + "global-gradient", + "Global gradient", + GLOBAL_GRADIENT_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_FONT, + "global-font", + "Global font", + GLOBAL_FONT_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_IMAGE, + "default-image", + "Default image", + DEFAULT_IMAGE_BLURB, + GIMP_TYPE_TEMPLATE, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_AGGREGATE); + + GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_GRID, + "default-grid", + "Default grid", + DEFAULT_GRID_BLURB, + GIMP_TYPE_GRID, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_AGGREGATE); + + GIMP_CONFIG_PROP_INT (object_class, PROP_UNDO_LEVELS, + "undo-levels", + "Undo levels", + UNDO_LEVELS_BLURB, + 0, 1 << 20, 5, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + + undo_size = gimp_get_physical_memory_size (); + + if (undo_size > 0) + undo_size = undo_size / 8; /* 1/8th of the memory */ + else + undo_size = 1 << 26; /* 64GB */ + + GIMP_CONFIG_PROP_MEMSIZE (object_class, PROP_UNDO_SIZE, + "undo-size", + "Undo size", + UNDO_SIZE_BLURB, + 0, GIMP_MAX_MEMSIZE, undo_size, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_CONFIRM); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_UNDO_PREVIEW_SIZE, + "undo-preview-size", + "Undo preview size", + UNDO_PREVIEW_SIZE_BLURB, + GIMP_TYPE_VIEW_SIZE, + GIMP_VIEW_SIZE_LARGE, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + + GIMP_CONFIG_PROP_INT (object_class, PROP_FILTER_HISTORY_SIZE, + "plug-in-history-size", /* compat name */ + "Filter history size", + FILTER_HISTORY_SIZE_BLURB, + 0, 256, 10, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + + GIMP_CONFIG_PROP_PATH (object_class, + PROP_PLUGINRC_PATH, + "pluginrc-path", + "plugninrc path", + PLUGINRC_PATH_BLURB, + GIMP_CONFIG_PATH_FILE, + "${gimp_dir}" G_DIR_SEPARATOR_S "pluginrc", + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_LAYER_PREVIEWS, + "layer-previews", + "Layer previews", + LAYER_PREVIEWS_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GROUP_LAYER_PREVIEWS, + "group-layer-previews", + "Layer group previews", + GROUP_LAYER_PREVIEWS_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_LAYER_PREVIEW_SIZE, + "layer-preview-size", + "Layer preview size", + LAYER_PREVIEW_SIZE_BLURB, + GIMP_TYPE_VIEW_SIZE, + GIMP_VIEW_SIZE_MEDIUM, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_THUMBNAIL_SIZE, + "thumbnail-size", + "Thumbnail size", + THUMBNAIL_SIZE_BLURB, + GIMP_TYPE_THUMBNAIL_SIZE, + GIMP_THUMBNAIL_SIZE_NORMAL, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_MEMSIZE (object_class, PROP_THUMBNAIL_FILESIZE_LIMIT, + "thumbnail-filesize-limit", + "Thumbnail file size limit", + THUMBNAIL_FILESIZE_LIMIT_BLURB, + 0, GIMP_MAX_MEMSIZE, 1 << 22, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_OBJECT (object_class, PROP_COLOR_MANAGEMENT, + "color-management", + "Color management", + COLOR_MANAGEMENT_BLURB, + GIMP_TYPE_COLOR_CONFIG, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_AGGREGATE); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_CHECK_UPDATES, + "check-updates", + "Check for updates", + CHECK_UPDATES_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_INT64 (object_class, PROP_CHECK_UPDATE_TIMESTAMP, + "check-update-timestamp", + "timestamp of the last update check", + CHECK_UPDATE_TIMESTAMP_BLURB, + 0, G_MAXINT64, 0, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_INT64 (object_class, PROP_LAST_RELEASE_TIMESTAMP, + "last-release-timestamp", + "timestamp of the last release", + LAST_RELEASE_TIMESTAMP_BLURB, + 0, G_MAXINT64, 0, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_LAST_RELEASE_COMMENT, + "last-release-comment", + "Comment for last release", + LAST_KNOWN_RELEASE_BLURB, + NULL, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_LAST_KNOWN_RELEASE, + "last-known-release", + "last known release of GIMP", + LAST_KNOWN_RELEASE_BLURB, + NULL, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_INT (object_class, PROP_LAST_REVISION, + "last-revision", + "Last revision of current release", + LAST_RELEASE_TIMESTAMP_BLURB, + 0, G_MAXINT, 0, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SAVE_DOCUMENT_HISTORY, + "save-document-history", + "Save document history", + SAVE_DOCUMENT_HISTORY_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_RGB (object_class, PROP_QUICK_MASK_COLOR, + "quick-mask-color", + "Quick mask color", + QUICK_MASK_COLOR_BLURB, + TRUE, &red, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_IMPORT_PROMOTE_FLOAT, + "import-promote-float", + "Import promote float", + IMPORT_PROMOTE_FLOAT_BLURB, + FALSE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_IMPORT_PROMOTE_DITHER, + "import-promote-dither", + "Import promote dither", + IMPORT_PROMOTE_DITHER_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_IMPORT_ADD_ALPHA, + "import-add-alpha", + "Import add alpha", + IMPORT_ADD_ALPHA_BLURB, + FALSE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_PATH (object_class, PROP_IMPORT_RAW_PLUG_IN, + "import-raw-plug-in", + "Import raw plug-in", + IMPORT_RAW_PLUG_IN_BLURB, + GIMP_CONFIG_PATH_FILE, + "", + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_EXPORT_FILE_TYPE, + "export-file-type", + "Default export file type", + EXPORT_FILE_TYPE_BLURB, + GIMP_TYPE_EXPORT_FILE_TYPE, + GIMP_EXPORT_FILE_PNG, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_EXPORT_COLOR_PROFILE, + "export-color-profile", + "Export Color Profile", + EXPORT_COLOR_PROFILE_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_EXPORT_METADATA_EXIF, + "export-metadata-exif", + "Export Exif metadata", + EXPORT_METADATA_EXIF_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_EXPORT_METADATA_XMP, + "export-metadata-xmp", + "Export XMP metadata", + EXPORT_METADATA_XMP_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_EXPORT_METADATA_IPTC, + "export-metadata-iptc", + "Export IPTC metadata", + EXPORT_METADATA_IPTC_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_PROP_ENUM (object_class, PROP_DEBUG_POLICY, + "debug-policy", + "Try generating backtrace upon errors", + GENERATE_BACKTRACE_BLURB, + GIMP_TYPE_DEBUG_POLICY, +#ifdef GIMP_UNSTABLE + GIMP_DEBUG_POLICY_WARNING, +#else + GIMP_DEBUG_POLICY_FATAL, +#endif + GIMP_PARAM_STATIC_STRINGS); + + /* only for backward compatibility: */ + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INSTALL_COLORMAP, + "install-colormap", + NULL, NULL, + FALSE, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_IGNORE); + + GIMP_CONFIG_PROP_INT (object_class, PROP_MIN_COLORS, + "min-colors", + NULL, NULL, + 27, 256, 144, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_IGNORE); +} + +static void +gimp_core_config_init (GimpCoreConfig *config) +{ + config->default_image = g_object_new (GIMP_TYPE_TEMPLATE, + "name", "Default Image", + "comment", GIMP_DEFAULT_COMMENT, + NULL); + g_signal_connect (config->default_image, "notify", + G_CALLBACK (gimp_core_config_default_image_notify), + config); + + config->default_grid = g_object_new (GIMP_TYPE_GRID, + "name", "Default Grid", + NULL); + g_signal_connect (config->default_grid, "notify", + G_CALLBACK (gimp_core_config_default_grid_notify), + config); + + config->color_management = g_object_new (GIMP_TYPE_COLOR_CONFIG, NULL); + g_signal_connect (config->color_management, "notify", + G_CALLBACK (gimp_core_config_color_management_notify), + config); +} + +static void +gimp_core_config_finalize (GObject *object) +{ + GimpCoreConfig *core_config = GIMP_CORE_CONFIG (object); + + g_free (core_config->language); + g_free (core_config->plug_in_path); + g_free (core_config->module_path); + g_free (core_config->interpreter_path); + g_free (core_config->environ_path); + g_free (core_config->brush_path); + g_free (core_config->brush_path_writable); + g_free (core_config->dynamics_path); + g_free (core_config->dynamics_path_writable); + g_free (core_config->pattern_path); + g_free (core_config->pattern_path_writable); + g_free (core_config->palette_path); + g_free (core_config->palette_path_writable); + g_free (core_config->gradient_path); + g_free (core_config->gradient_path_writable); + g_free (core_config->tool_preset_path); + g_free (core_config->tool_preset_path_writable); + g_free (core_config->font_path); + g_free (core_config->font_path_writable); + g_free (core_config->default_brush); + g_free (core_config->default_dynamics); + g_free (core_config->default_pattern); + g_free (core_config->default_palette); + g_free (core_config->default_gradient); + g_free (core_config->default_tool_preset); + g_free (core_config->default_font); + g_free (core_config->plug_in_rc_path); + g_free (core_config->import_raw_plug_in); + + g_clear_pointer (&core_config->last_known_release, g_free); + + g_clear_object (&core_config->default_image); + g_clear_object (&core_config->default_grid); + g_clear_object (&core_config->color_management); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +gimp_core_config_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GimpCoreConfig *core_config = GIMP_CORE_CONFIG (object); + + switch (property_id) + { + case PROP_LANGUAGE: + g_free (core_config->language); + core_config->language = g_value_dup_string (value); + break; + case PROP_INTERPOLATION_TYPE: + core_config->interpolation_type = g_value_get_enum (value); + break; + case PROP_DEFAULT_THRESHOLD: + core_config->default_threshold = g_value_get_int (value); + break; + case PROP_PLUG_IN_PATH: + g_free (core_config->plug_in_path); + core_config->plug_in_path = g_value_dup_string (value); + break; + case PROP_MODULE_PATH: + g_free (core_config->module_path); + core_config->module_path = g_value_dup_string (value); + break; + case PROP_INTERPRETER_PATH: + g_free (core_config->interpreter_path); + core_config->interpreter_path = g_value_dup_string (value); + break; + case PROP_ENVIRON_PATH: + g_free (core_config->environ_path); + core_config->environ_path = g_value_dup_string (value); + break; + case PROP_BRUSH_PATH: + g_free (core_config->brush_path); + core_config->brush_path = g_value_dup_string (value); + break; + case PROP_BRUSH_PATH_WRITABLE: + g_free (core_config->brush_path_writable); + core_config->brush_path_writable = g_value_dup_string (value); + break; + case PROP_DYNAMICS_PATH: + g_free (core_config->dynamics_path); + core_config->dynamics_path = g_value_dup_string (value); + break; + case PROP_DYNAMICS_PATH_WRITABLE: + g_free (core_config->dynamics_path_writable); + core_config->dynamics_path_writable = g_value_dup_string (value); + break; + case PROP_MYPAINT_BRUSH_PATH: + g_free (core_config->mypaint_brush_path); + core_config->mypaint_brush_path = g_value_dup_string (value); + break; + case PROP_MYPAINT_BRUSH_PATH_WRITABLE: + g_free (core_config->mypaint_brush_path_writable); + core_config->mypaint_brush_path_writable = g_value_dup_string (value); + break; + case PROP_PATTERN_PATH: + g_free (core_config->pattern_path); + core_config->pattern_path = g_value_dup_string (value); + break; + case PROP_PATTERN_PATH_WRITABLE: + g_free (core_config->pattern_path_writable); + core_config->pattern_path_writable = g_value_dup_string (value); + break; + case PROP_PALETTE_PATH: + g_free (core_config->palette_path); + core_config->palette_path = g_value_dup_string (value); + break; + case PROP_PALETTE_PATH_WRITABLE: + g_free (core_config->palette_path_writable); + core_config->palette_path_writable = g_value_dup_string (value); + break; + case PROP_GRADIENT_PATH: + g_free (core_config->gradient_path); + core_config->gradient_path = g_value_dup_string (value); + break; + case PROP_GRADIENT_PATH_WRITABLE: + g_free (core_config->gradient_path_writable); + core_config->gradient_path_writable = g_value_dup_string (value); + break; + case PROP_TOOL_PRESET_PATH: + g_free (core_config->tool_preset_path); + core_config->tool_preset_path = g_value_dup_string (value); + break; + case PROP_TOOL_PRESET_PATH_WRITABLE: + g_free (core_config->tool_preset_path_writable); + core_config->tool_preset_path_writable = g_value_dup_string (value); + break; + case PROP_FONT_PATH: + g_free (core_config->font_path); + core_config->font_path = g_value_dup_string (value); + break; + case PROP_FONT_PATH_WRITABLE: + g_free (core_config->font_path_writable); + core_config->font_path_writable = g_value_dup_string (value); + break; + case PROP_DEFAULT_BRUSH: + g_free (core_config->default_brush); + core_config->default_brush = g_value_dup_string (value); + break; + case PROP_DEFAULT_DYNAMICS: + g_free (core_config->default_dynamics); + core_config->default_dynamics = g_value_dup_string (value); + break; + case PROP_DEFAULT_MYPAINT_BRUSH: + g_free (core_config->default_mypaint_brush); + core_config->default_mypaint_brush = g_value_dup_string (value); + break; + case PROP_DEFAULT_PATTERN: + g_free (core_config->default_pattern); + core_config->default_pattern = g_value_dup_string (value); + break; + case PROP_DEFAULT_PALETTE: + g_free (core_config->default_palette); + core_config->default_palette = g_value_dup_string (value); + break; + case PROP_DEFAULT_GRADIENT: + g_free (core_config->default_gradient); + core_config->default_gradient = g_value_dup_string (value); + break; + case PROP_DEFAULT_TOOL_PRESET: + g_free (core_config->default_tool_preset); + core_config->default_tool_preset = g_value_dup_string (value); + break; + case PROP_DEFAULT_FONT: + g_free (core_config->default_font); + core_config->default_font = g_value_dup_string (value); + break; + case PROP_GLOBAL_BRUSH: + core_config->global_brush = g_value_get_boolean (value); + break; + case PROP_GLOBAL_DYNAMICS: + core_config->global_dynamics = g_value_get_boolean (value); + break; + case PROP_GLOBAL_PATTERN: + core_config->global_pattern = g_value_get_boolean (value); + break; + case PROP_GLOBAL_PALETTE: + core_config->global_palette = g_value_get_boolean (value); + break; + case PROP_GLOBAL_GRADIENT: + core_config->global_gradient = g_value_get_boolean (value); + break; + case PROP_GLOBAL_FONT: + core_config->global_font = g_value_get_boolean (value); + break; + case PROP_DEFAULT_IMAGE: + if (g_value_get_object (value)) + gimp_config_sync (g_value_get_object (value) , + G_OBJECT (core_config->default_image), 0); + break; + case PROP_DEFAULT_GRID: + if (g_value_get_object (value)) + gimp_config_sync (g_value_get_object (value), + G_OBJECT (core_config->default_grid), 0); + break; + case PROP_FILTER_HISTORY_SIZE: + core_config->filter_history_size = g_value_get_int (value); + break; + case PROP_UNDO_LEVELS: + core_config->levels_of_undo = g_value_get_int (value); + break; + case PROP_UNDO_SIZE: + core_config->undo_size = g_value_get_uint64 (value); + break; + case PROP_UNDO_PREVIEW_SIZE: + core_config->undo_preview_size = g_value_get_enum (value); + break; + case PROP_PLUGINRC_PATH: + g_free (core_config->plug_in_rc_path); + core_config->plug_in_rc_path = g_value_dup_string (value); + break; + case PROP_LAYER_PREVIEWS: + core_config->layer_previews = g_value_get_boolean (value); + break; + case PROP_GROUP_LAYER_PREVIEWS: + core_config->group_layer_previews = g_value_get_boolean (value); + break; + case PROP_LAYER_PREVIEW_SIZE: + core_config->layer_preview_size = g_value_get_enum (value); + break; + case PROP_THUMBNAIL_SIZE: + core_config->thumbnail_size = g_value_get_enum (value); + break; + case PROP_THUMBNAIL_FILESIZE_LIMIT: + core_config->thumbnail_filesize_limit = g_value_get_uint64 (value); + break; + case PROP_COLOR_MANAGEMENT: + if (g_value_get_object (value)) + gimp_config_sync (g_value_get_object (value), + G_OBJECT (core_config->color_management), 0); + break; + case PROP_CHECK_UPDATES: + core_config->check_updates = g_value_get_boolean (value); + break; + case PROP_CHECK_UPDATE_TIMESTAMP: + core_config->check_update_timestamp = g_value_get_int64 (value); + break; + case PROP_LAST_RELEASE_TIMESTAMP: + core_config->last_release_timestamp = g_value_get_int64 (value); + break; + case PROP_LAST_RELEASE_COMMENT: + core_config->last_release_comment = g_value_dup_string (value); + break; + case PROP_LAST_REVISION: + core_config->last_revision = g_value_get_int (value); + break; + case PROP_LAST_KNOWN_RELEASE: + core_config->last_known_release = g_value_dup_string (value); + break; + case PROP_SAVE_DOCUMENT_HISTORY: + core_config->save_document_history = g_value_get_boolean (value); + break; + case PROP_QUICK_MASK_COLOR: + gimp_value_get_rgb (value, &core_config->quick_mask_color); + break; + case PROP_IMPORT_PROMOTE_FLOAT: + core_config->import_promote_float = g_value_get_boolean (value); + break; + case PROP_IMPORT_PROMOTE_DITHER: + core_config->import_promote_dither = g_value_get_boolean (value); + break; + case PROP_IMPORT_ADD_ALPHA: + core_config->import_add_alpha = g_value_get_boolean (value); + break; + case PROP_IMPORT_RAW_PLUG_IN: + g_free (core_config->import_raw_plug_in); + core_config->import_raw_plug_in = g_value_dup_string (value); + break; + case PROP_EXPORT_FILE_TYPE: + core_config->export_file_type = g_value_get_enum (value); + break; + case PROP_EXPORT_COLOR_PROFILE: + core_config->export_color_profile = g_value_get_boolean (value); + break; + case PROP_EXPORT_METADATA_EXIF: + core_config->export_metadata_exif = g_value_get_boolean (value); + break; + case PROP_EXPORT_METADATA_XMP: + core_config->export_metadata_xmp = g_value_get_boolean (value); + break; + case PROP_EXPORT_METADATA_IPTC: + core_config->export_metadata_iptc = g_value_get_boolean (value); + break; + case PROP_DEBUG_POLICY: + core_config->debug_policy = g_value_get_enum (value); + break; + + case PROP_INSTALL_COLORMAP: + case PROP_MIN_COLORS: + /* ignored */ + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gimp_core_config_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GimpCoreConfig *core_config = GIMP_CORE_CONFIG (object); + + switch (property_id) + { + case PROP_LANGUAGE: + g_value_set_string (value, core_config->language); + break; + case PROP_INTERPOLATION_TYPE: + g_value_set_enum (value, core_config->interpolation_type); + break; + case PROP_DEFAULT_THRESHOLD: + g_value_set_int (value, core_config->default_threshold); + break; + case PROP_PLUG_IN_PATH: + g_value_set_string (value, core_config->plug_in_path); + break; + case PROP_MODULE_PATH: + g_value_set_string (value, core_config->module_path); + break; + case PROP_INTERPRETER_PATH: + g_value_set_string (value, core_config->interpreter_path); + break; + case PROP_ENVIRON_PATH: + g_value_set_string (value, core_config->environ_path); + break; + case PROP_BRUSH_PATH: + g_value_set_string (value, core_config->brush_path); + break; + case PROP_BRUSH_PATH_WRITABLE: + g_value_set_string (value, core_config->brush_path_writable); + break; + case PROP_DYNAMICS_PATH: + g_value_set_string (value, core_config->dynamics_path); + break; + case PROP_DYNAMICS_PATH_WRITABLE: + g_value_set_string (value, core_config->dynamics_path_writable); + break; + case PROP_MYPAINT_BRUSH_PATH: + g_value_set_string (value, core_config->mypaint_brush_path); + break; + case PROP_MYPAINT_BRUSH_PATH_WRITABLE: + g_value_set_string (value, core_config->mypaint_brush_path_writable); + break; + case PROP_PATTERN_PATH: + g_value_set_string (value, core_config->pattern_path); + break; + case PROP_PATTERN_PATH_WRITABLE: + g_value_set_string (value, core_config->pattern_path_writable); + break; + case PROP_PALETTE_PATH: + g_value_set_string (value, core_config->palette_path); + break; + case PROP_PALETTE_PATH_WRITABLE: + g_value_set_string (value, core_config->palette_path_writable); + break; + case PROP_GRADIENT_PATH: + g_value_set_string (value, core_config->gradient_path); + break; + case PROP_GRADIENT_PATH_WRITABLE: + g_value_set_string (value, core_config->gradient_path_writable); + break; + case PROP_TOOL_PRESET_PATH: + g_value_set_string (value, core_config->tool_preset_path); + break; + case PROP_TOOL_PRESET_PATH_WRITABLE: + g_value_set_string (value, core_config->tool_preset_path_writable); + break; + case PROP_FONT_PATH: + g_value_set_string (value, core_config->font_path); + break; + case PROP_FONT_PATH_WRITABLE: + g_value_set_string (value, core_config->font_path_writable); + break; + case PROP_DEFAULT_BRUSH: + g_value_set_string (value, core_config->default_brush); + break; + case PROP_DEFAULT_DYNAMICS: + g_value_set_string (value, core_config->default_dynamics); + break; + case PROP_DEFAULT_MYPAINT_BRUSH: + g_value_set_string (value, core_config->default_mypaint_brush); + break; + case PROP_DEFAULT_PATTERN: + g_value_set_string (value, core_config->default_pattern); + break; + case PROP_DEFAULT_PALETTE: + g_value_set_string (value, core_config->default_palette); + break; + case PROP_DEFAULT_GRADIENT: + g_value_set_string (value, core_config->default_gradient); + break; + case PROP_DEFAULT_TOOL_PRESET: + g_value_set_string (value, core_config->default_tool_preset); + break; + case PROP_DEFAULT_FONT: + g_value_set_string (value, core_config->default_font); + break; + case PROP_GLOBAL_BRUSH: + g_value_set_boolean (value, core_config->global_brush); + break; + case PROP_GLOBAL_DYNAMICS: + g_value_set_boolean (value, core_config->global_dynamics); + break; + case PROP_GLOBAL_PATTERN: + g_value_set_boolean (value, core_config->global_pattern); + break; + case PROP_GLOBAL_PALETTE: + g_value_set_boolean (value, core_config->global_palette); + break; + case PROP_GLOBAL_GRADIENT: + g_value_set_boolean (value, core_config->global_gradient); + break; + case PROP_GLOBAL_FONT: + g_value_set_boolean (value, core_config->global_font); + break; + case PROP_DEFAULT_IMAGE: + g_value_set_object (value, core_config->default_image); + break; + case PROP_DEFAULT_GRID: + g_value_set_object (value, core_config->default_grid); + break; + case PROP_FILTER_HISTORY_SIZE: + g_value_set_int (value, core_config->filter_history_size); + break; + case PROP_UNDO_LEVELS: + g_value_set_int (value, core_config->levels_of_undo); + break; + case PROP_UNDO_SIZE: + g_value_set_uint64 (value, core_config->undo_size); + break; + case PROP_UNDO_PREVIEW_SIZE: + g_value_set_enum (value, core_config->undo_preview_size); + break; + case PROP_PLUGINRC_PATH: + g_value_set_string (value, core_config->plug_in_rc_path); + break; + case PROP_LAYER_PREVIEWS: + g_value_set_boolean (value, core_config->layer_previews); + break; + case PROP_GROUP_LAYER_PREVIEWS: + g_value_set_boolean (value, core_config->group_layer_previews); + break; + case PROP_LAYER_PREVIEW_SIZE: + g_value_set_enum (value, core_config->layer_preview_size); + break; + case PROP_THUMBNAIL_SIZE: + g_value_set_enum (value, core_config->thumbnail_size); + break; + case PROP_THUMBNAIL_FILESIZE_LIMIT: + g_value_set_uint64 (value, core_config->thumbnail_filesize_limit); + break; + case PROP_COLOR_MANAGEMENT: + g_value_set_object (value, core_config->color_management); + break; + case PROP_CHECK_UPDATES: + g_value_set_boolean (value, core_config->check_updates); + break; + case PROP_CHECK_UPDATE_TIMESTAMP: + g_value_set_int64 (value, core_config->check_update_timestamp); + break; + case PROP_LAST_RELEASE_TIMESTAMP: + g_value_set_int64 (value, core_config->last_release_timestamp); + break; + case PROP_LAST_RELEASE_COMMENT: + g_value_set_string (value, core_config->last_release_comment); + break; + case PROP_LAST_REVISION: + g_value_set_int (value, core_config->last_revision); + break; + case PROP_LAST_KNOWN_RELEASE: + g_value_set_string (value, core_config->last_known_release); + break; + case PROP_SAVE_DOCUMENT_HISTORY: + g_value_set_boolean (value, core_config->save_document_history); + break; + case PROP_QUICK_MASK_COLOR: + gimp_value_set_rgb (value, &core_config->quick_mask_color); + break; + case PROP_IMPORT_PROMOTE_FLOAT: + g_value_set_boolean (value, core_config->import_promote_float); + break; + case PROP_IMPORT_PROMOTE_DITHER: + g_value_set_boolean (value, core_config->import_promote_dither); + break; + case PROP_IMPORT_ADD_ALPHA: + g_value_set_boolean (value, core_config->import_add_alpha); + break; + case PROP_IMPORT_RAW_PLUG_IN: + g_value_set_string (value, core_config->import_raw_plug_in); + break; + case PROP_EXPORT_FILE_TYPE: + g_value_set_enum (value, core_config->export_file_type); + break; + case PROP_EXPORT_COLOR_PROFILE: + g_value_set_boolean (value, core_config->export_color_profile); + break; + case PROP_EXPORT_METADATA_EXIF: + g_value_set_boolean (value, core_config->export_metadata_exif); + break; + case PROP_EXPORT_METADATA_XMP: + g_value_set_boolean (value, core_config->export_metadata_xmp); + break; + case PROP_EXPORT_METADATA_IPTC: + g_value_set_boolean (value, core_config->export_metadata_iptc); + break; + case PROP_DEBUG_POLICY: + g_value_set_enum (value, core_config->debug_policy); + break; + + case PROP_INSTALL_COLORMAP: + case PROP_MIN_COLORS: + /* ignored */ + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gimp_core_config_default_image_notify (GObject *object, + GParamSpec *pspec, + gpointer data) +{ + g_object_notify (G_OBJECT (data), "default-image"); +} + +static void +gimp_core_config_default_grid_notify (GObject *object, + GParamSpec *pspec, + gpointer data) +{ + g_object_notify (G_OBJECT (data), "default-grid"); +} + +static void +gimp_core_config_color_management_notify (GObject *object, + GParamSpec *pspec, + gpointer data) +{ + g_object_notify (G_OBJECT (data), "color-management"); +} |