From 839c46e19ac4aa00b619a185ad48ee977162ef2c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 8 May 2024 10:16:47 +0200 Subject: Merging upstream version 2.10.38. Signed-off-by: Daniel Baumann --- app/config/Makefile.am | 4 +- app/config/Makefile.in | 18 +-- app/config/config-types.h | 2 +- app/config/gimpcoreconfig.c | 43 ++++++ app/config/gimpcoreconfig.h | 3 + app/config/gimpearlyrc.c | 346 ++++++++++++++++++++++++++++++++++++++++++++ app/config/gimpearlyrc.h | 71 +++++++++ app/config/gimplangrc.c | 280 ----------------------------------- app/config/gimplangrc.h | 60 -------- app/config/gimprc-blurbs.h | 3 + 10 files changed, 478 insertions(+), 352 deletions(-) create mode 100644 app/config/gimpearlyrc.c create mode 100644 app/config/gimpearlyrc.h delete mode 100644 app/config/gimplangrc.c delete mode 100644 app/config/gimplangrc.h (limited to 'app/config') diff --git a/app/config/Makefile.am b/app/config/Makefile.am index 04ac126..0a1266c 100644 --- a/app/config/Makefile.am +++ b/app/config/Makefile.am @@ -46,12 +46,12 @@ libappconfig_a_sources = \ gimpdisplayconfig.h \ gimpdisplayoptions.c \ gimpdisplayoptions.h \ + gimpearlyrc.c \ + gimpearlyrc.h \ gimpgeglconfig.c \ gimpgeglconfig.h \ gimpguiconfig.c \ gimpguiconfig.h \ - gimplangrc.c \ - gimplangrc.h \ gimppluginconfig.c \ gimppluginconfig.h \ gimprc.c \ diff --git a/app/config/Makefile.in b/app/config/Makefile.in index ab37152..8caafdc 100644 --- a/app/config/Makefile.in +++ b/app/config/Makefile.in @@ -120,8 +120,8 @@ am__objects_1 = config-enums.$(OBJEXT) am__objects_2 = gimpconfig-dump.$(OBJEXT) gimpconfig-file.$(OBJEXT) \ gimpconfig-utils.$(OBJEXT) gimpcoreconfig.$(OBJEXT) \ gimpdialogconfig.$(OBJEXT) gimpdisplayconfig.$(OBJEXT) \ - gimpdisplayoptions.$(OBJEXT) gimpgeglconfig.$(OBJEXT) \ - gimpguiconfig.$(OBJEXT) gimplangrc.$(OBJEXT) \ + gimpdisplayoptions.$(OBJEXT) gimpearlyrc.$(OBJEXT) \ + gimpgeglconfig.$(OBJEXT) gimpguiconfig.$(OBJEXT) \ gimppluginconfig.$(OBJEXT) gimprc.$(OBJEXT) \ gimprc-deserialize.$(OBJEXT) gimprc-serialize.$(OBJEXT) \ gimprc-unknown.$(OBJEXT) gimpxmlparser.$(OBJEXT) @@ -157,9 +157,9 @@ am__depfiles_remade = ./$(DEPDIR)/config-enums.Po \ ./$(DEPDIR)/gimpconfig-utils.Po ./$(DEPDIR)/gimpcoreconfig.Po \ ./$(DEPDIR)/gimpdialogconfig.Po \ ./$(DEPDIR)/gimpdisplayconfig.Po \ - ./$(DEPDIR)/gimpdisplayoptions.Po \ + ./$(DEPDIR)/gimpdisplayoptions.Po ./$(DEPDIR)/gimpearlyrc.Po \ ./$(DEPDIR)/gimpgeglconfig.Po ./$(DEPDIR)/gimpguiconfig.Po \ - ./$(DEPDIR)/gimplangrc.Po ./$(DEPDIR)/gimppluginconfig.Po \ + ./$(DEPDIR)/gimppluginconfig.Po \ ./$(DEPDIR)/gimprc-deserialize.Po \ ./$(DEPDIR)/gimprc-serialize.Po ./$(DEPDIR)/gimprc-unknown.Po \ ./$(DEPDIR)/gimprc.Po ./$(DEPDIR)/gimpxmlparser.Po \ @@ -876,12 +876,12 @@ libappconfig_a_sources = \ gimpdisplayconfig.h \ gimpdisplayoptions.c \ gimpdisplayoptions.h \ + gimpearlyrc.c \ + gimpearlyrc.h \ gimpgeglconfig.c \ gimpgeglconfig.h \ gimpguiconfig.c \ gimpguiconfig.h \ - gimplangrc.c \ - gimplangrc.h \ gimppluginconfig.c \ gimppluginconfig.h \ gimprc.c \ @@ -1020,9 +1020,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdialogconfig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdisplayconfig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdisplayoptions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpearlyrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpgeglconfig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpguiconfig.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimplangrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimppluginconfig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimprc-deserialize.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimprc-serialize.Po@am__quote@ # am--include-marker @@ -1365,9 +1365,9 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/gimpdialogconfig.Po -rm -f ./$(DEPDIR)/gimpdisplayconfig.Po -rm -f ./$(DEPDIR)/gimpdisplayoptions.Po + -rm -f ./$(DEPDIR)/gimpearlyrc.Po -rm -f ./$(DEPDIR)/gimpgeglconfig.Po -rm -f ./$(DEPDIR)/gimpguiconfig.Po - -rm -f ./$(DEPDIR)/gimplangrc.Po -rm -f ./$(DEPDIR)/gimppluginconfig.Po -rm -f ./$(DEPDIR)/gimprc-deserialize.Po -rm -f ./$(DEPDIR)/gimprc-serialize.Po @@ -1428,9 +1428,9 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/gimpdialogconfig.Po -rm -f ./$(DEPDIR)/gimpdisplayconfig.Po -rm -f ./$(DEPDIR)/gimpdisplayoptions.Po + -rm -f ./$(DEPDIR)/gimpearlyrc.Po -rm -f ./$(DEPDIR)/gimpgeglconfig.Po -rm -f ./$(DEPDIR)/gimpguiconfig.Po - -rm -f ./$(DEPDIR)/gimplangrc.Po -rm -f ./$(DEPDIR)/gimppluginconfig.Po -rm -f ./$(DEPDIR)/gimprc-deserialize.Po -rm -f ./$(DEPDIR)/gimprc-serialize.Po diff --git a/app/config/config-types.h b/app/config/config-types.h index 40b0802..1fe5594 100644 --- a/app/config/config-types.h +++ b/app/config/config-types.h @@ -36,7 +36,7 @@ typedef struct _GimpCoreConfig GimpCoreConfig; typedef struct _GimpDisplayConfig GimpDisplayConfig; typedef struct _GimpGuiConfig GimpGuiConfig; typedef struct _GimpDialogConfig GimpDialogConfig; -typedef struct _GimpLangRc GimpLangRc; +typedef struct _GimpEarlyRc GimpEarlyRc; typedef struct _GimpPluginConfig GimpPluginConfig; typedef struct _GimpRc GimpRc; diff --git a/app/config/gimpcoreconfig.c b/app/config/gimpcoreconfig.c index 823e808..3e033c2 100644 --- a/app/config/gimpcoreconfig.c +++ b/app/config/gimpcoreconfig.c @@ -133,6 +133,9 @@ enum PROP_LAST_RELEASE_COMMENT, PROP_LAST_REVISION, PROP_LAST_KNOWN_RELEASE, +#ifdef G_OS_WIN32 + PROP_WIN32_POINTER_INPUT_API, +#endif /* ignored, only for backward compatibility: */ PROP_INSTALL_COLORMAP, @@ -815,6 +818,17 @@ gimp_core_config_class_init (GimpCoreConfigClass *klass) #endif GIMP_PARAM_STATIC_STRINGS); +#ifdef G_OS_WIN32 + GIMP_CONFIG_PROP_ENUM (object_class, PROP_WIN32_POINTER_INPUT_API, + "win32-pointer-input-api", + "Pointer Input API", + WIN32_POINTER_INPUT_API_BLURB, + GIMP_TYPE_WIN32_POINTER_INPUT_API, + GIMP_WIN32_POINTER_INPUT_API_WINTAB, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); +#endif + /* only for backward compatibility: */ GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INSTALL_COLORMAP, "install-colormap", @@ -1152,6 +1166,30 @@ gimp_core_config_set_property (GObject *object, case PROP_DEBUG_POLICY: core_config->debug_policy = g_value_get_enum (value); break; +#ifdef G_OS_WIN32 + case PROP_WIN32_POINTER_INPUT_API: + { + GimpWin32PointerInputAPI api = g_value_get_enum (value); + gboolean have_wintab = gimp_win32_have_wintab (); + gboolean have_windows_ink = gimp_win32_have_windows_ink (); + gboolean api_is_wintab = (api == GIMP_WIN32_POINTER_INPUT_API_WINTAB); + gboolean api_is_windows_ink = (api == GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK); + + if (api_is_wintab && !have_wintab && have_windows_ink) + { + core_config->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK; + } + else if (api_is_windows_ink && !have_windows_ink && have_wintab) + { + core_config->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINTAB; + } + else + { + core_config->win32_pointer_input_api = api; + } + } + break; +#endif case PROP_INSTALL_COLORMAP: case PROP_MIN_COLORS: @@ -1378,6 +1416,11 @@ gimp_core_config_get_property (GObject *object, case PROP_DEBUG_POLICY: g_value_set_enum (value, core_config->debug_policy); break; +#ifdef G_OS_WIN32 + case PROP_WIN32_POINTER_INPUT_API: + g_value_set_enum (value, core_config->win32_pointer_input_api); + break; +#endif case PROP_INSTALL_COLORMAP: case PROP_MIN_COLORS: diff --git a/app/config/gimpcoreconfig.h b/app/config/gimpcoreconfig.h index f413ae4..22d2f3f 100644 --- a/app/config/gimpcoreconfig.h +++ b/app/config/gimpcoreconfig.h @@ -102,6 +102,9 @@ struct _GimpCoreConfig gboolean export_metadata_xmp; gboolean export_metadata_iptc; GimpDebugPolicy debug_policy; +#ifdef G_OS_WIN32 + GimpWin32PointerInputAPI win32_pointer_input_api; +#endif gboolean check_updates; gint64 check_update_timestamp; diff --git a/app/config/gimpearlyrc.c b/app/config/gimpearlyrc.c new file mode 100644 index 0000000..f9e83d5 --- /dev/null +++ b/app/config/gimpearlyrc.c @@ -0,0 +1,346 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * GimpEarlyRc: pre-parsing of gimprc suitable for use during early + * initialization, when the gimp singleton is not constructed yet. + * + * Copyright (C) 2017 Jehan + * + * 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 . + */ + +#include "config.h" + +#include + +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" + +#include "config-types.h" + +#include "core/core-types.h" +#include "core/gimp-utils.h" + +#include "gimpearlyrc.h" + +enum +{ + PROP_0, + PROP_VERBOSE, + PROP_SYSTEM_GIMPRC, + PROP_USER_GIMPRC, + PROP_LANGUAGE, +#ifdef G_OS_WIN32 + PROP_WIN32_POINTER_INPUT_API, +#endif +}; + + +static void gimp_early_rc_constructed (GObject *object); +static void gimp_early_rc_finalize (GObject *object); +static void gimp_early_rc_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gimp_early_rc_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + + +/* Just use GimpConfig interface's default implementation which will + * fill the properties. */ +G_DEFINE_TYPE_WITH_CODE (GimpEarlyRc, gimp_early_rc, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (GIMP_TYPE_CONFIG, NULL)) + +#define parent_class gimp_early_rc_parent_class + + +static void +gimp_early_rc_class_init (GimpEarlyRcClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructed = gimp_early_rc_constructed; + object_class->finalize = gimp_early_rc_finalize; + object_class->set_property = gimp_early_rc_set_property; + object_class->get_property = gimp_early_rc_get_property; + + g_object_class_install_property (object_class, PROP_VERBOSE, + g_param_spec_boolean ("verbose", + NULL, NULL, + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, PROP_SYSTEM_GIMPRC, + g_param_spec_object ("system-gimprc", + NULL, NULL, + G_TYPE_FILE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, PROP_USER_GIMPRC, + g_param_spec_object ("user-gimprc", + NULL, NULL, + G_TYPE_FILE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + GIMP_CONFIG_PROP_STRING (object_class, PROP_LANGUAGE, + "language", NULL, NULL, NULL, + GIMP_PARAM_STATIC_STRINGS); + +#ifdef G_OS_WIN32 + GIMP_CONFIG_PROP_ENUM (object_class, PROP_WIN32_POINTER_INPUT_API, + "win32-pointer-input-api", NULL, NULL, + GIMP_TYPE_WIN32_POINTER_INPUT_API, + GIMP_WIN32_POINTER_INPUT_API_WINTAB, + GIMP_PARAM_STATIC_STRINGS | + GIMP_CONFIG_PARAM_RESTART); +#endif +} + +static void +gimp_early_rc_init (GimpEarlyRc *rc) +{ +} + +static void +gimp_early_rc_constructed (GObject *object) +{ + GimpEarlyRc *rc = GIMP_EARLY_RC (object); + GError *error = NULL; + + if (rc->verbose) + g_print ("Parsing '%s' for configuration data required during early initialization.\n", + gimp_file_get_utf8_name (rc->system_gimprc)); + + if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc), + rc->system_gimprc, NULL, &error)) + { + if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT) + g_message ("%s", error->message); + + g_clear_error (&error); + } + + if (rc->verbose) + g_print ("Parsing '%s' for configuration data required during early initialization.\n", + gimp_file_get_utf8_name (rc->user_gimprc)); + + if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc), + rc->user_gimprc, NULL, &error)) + { + if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT) + g_message ("%s", error->message); + + g_clear_error (&error); + } + + if (rc->verbose) + { + if (rc->language) + g_print ("Language property found: %s.\n", rc->language); + else + g_print ("No language property found.\n"); + } +} + +static void +gimp_early_rc_finalize (GObject *object) +{ + GimpEarlyRc *rc = GIMP_EARLY_RC (object); + + g_clear_object (&rc->system_gimprc); + g_clear_object (&rc->user_gimprc); + + g_clear_pointer (&rc->language, g_free); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +gimp_early_rc_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GimpEarlyRc *rc = GIMP_EARLY_RC (object); + + switch (property_id) + { + case PROP_VERBOSE: + rc->verbose = g_value_get_boolean (value); + break; + + case PROP_SYSTEM_GIMPRC: + if (rc->system_gimprc) + g_object_unref (rc->system_gimprc); + + if (g_value_get_object (value)) + rc->system_gimprc = g_value_dup_object (value); + else + rc->system_gimprc = gimp_sysconf_directory_file ("gimprc", NULL); + break; + + case PROP_USER_GIMPRC: + if (rc->user_gimprc) + g_object_unref (rc->user_gimprc); + + if (g_value_get_object (value)) + rc->user_gimprc = g_value_dup_object (value); + else + rc->user_gimprc = gimp_directory_file ("gimprc", NULL); + break; + + case PROP_LANGUAGE: + if (rc->language) + g_free (rc->language); + rc->language = g_value_dup_string (value); + break; + +#ifdef G_OS_WIN32 + case PROP_WIN32_POINTER_INPUT_API: + { + GimpWin32PointerInputAPI api = g_value_get_enum (value); + gboolean have_wintab = gimp_win32_have_wintab (); + gboolean have_windows_ink = gimp_win32_have_windows_ink (); + gboolean api_is_wintab = (api == GIMP_WIN32_POINTER_INPUT_API_WINTAB); + gboolean api_is_windows_ink = (api == GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK); + + if (api_is_wintab && !have_wintab && have_windows_ink) + { + rc->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK; + } + else if (api_is_windows_ink && !have_windows_ink && have_wintab) + { + rc->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINTAB; + } + else + { + rc->win32_pointer_input_api = api; + } + } + break; +#endif + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gimp_early_rc_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GimpEarlyRc *rc = GIMP_EARLY_RC (object); + + switch (property_id) + { + case PROP_VERBOSE: + g_value_set_boolean (value, rc->verbose); + break; + case PROP_SYSTEM_GIMPRC: + g_value_set_object (value, rc->system_gimprc); + break; + case PROP_USER_GIMPRC: + g_value_set_object (value, rc->user_gimprc); + break; + case PROP_LANGUAGE: + g_value_set_string (value, rc->language); + break; + +#ifdef G_OS_WIN32 + case PROP_WIN32_POINTER_INPUT_API: + g_value_set_enum (value, rc->win32_pointer_input_api); + break; +#endif + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +/** + * gimp_early_rc_new: + * @system_gimprc: the name of the system-wide gimprc file or %NULL to + * use the standard location + * @user_gimprc: the name of the user gimprc file or %NULL to use the + * standard location + * @verbose: enable console messages about loading the preferences + * + * Creates a new GimpEarlyRc object which looks for some configuration + * data required in the early initialization steps + * + * Returns: the new #GimpEarlyRc. + */ +GimpEarlyRc * +gimp_early_rc_new (GFile *system_gimprc, + GFile *user_gimprc, + gboolean verbose) +{ + GimpEarlyRc *rc; + + g_return_val_if_fail (system_gimprc == NULL || G_IS_FILE (system_gimprc), + NULL); + g_return_val_if_fail (user_gimprc == NULL || G_IS_FILE (user_gimprc), + NULL); + + rc = g_object_new (GIMP_TYPE_EARLY_RC, + "verbose", verbose, + "system-gimprc", system_gimprc, + "user-gimprc", user_gimprc, + NULL); + + return rc; +} + +/** + * gimp_early_rc_get_language: + * @rc: a #GimpEarlyRc object. + * + * This function looks up the language set in `gimprc`. + * + * Return value: a newly allocated string representing the language or + * %NULL if the key couldn't be found. + **/ +gchar * +gimp_early_rc_get_language (GimpEarlyRc *rc) +{ + return rc->language ? g_strdup (rc->language) : NULL; +} + +#ifdef G_OS_WIN32 + +/** + * gimp_early_rc_get_win32_pointer_input_api: + * @rc: a #GimpEarlyRc object. + * + * This function looks up the win32-specific pointer input API + * set in `gimprc`. + * + * Returns: the selected win32-specific pointer input API + **/ +GimpWin32PointerInputAPI +gimp_early_rc_get_win32_pointer_input_api (GimpEarlyRc *rc) +{ + return rc->win32_pointer_input_api; +} + +#endif diff --git a/app/config/gimpearlyrc.h b/app/config/gimpearlyrc.h new file mode 100644 index 0000000..b10835d --- /dev/null +++ b/app/config/gimpearlyrc.h @@ -0,0 +1,71 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * GimpEarlyRc: pre-parsing of gimprc suitable for use during early + * initialization, when the gimp singleton is not constructed yet + * + * Copyright (C) 2017 Jehan + * + * 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 . + */ + +#ifndef __GIMP_EARLY_RC_H__ +#define __GIMP_EARLY_RC_H__ + +#include "core/core-enums.h" + +#define GIMP_TYPE_EARLY_RC (gimp_early_rc_get_type ()) +#define GIMP_EARLY_RC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_EARLY_RC, GimpEarlyRc)) +#define GIMP_EARLY_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_EARLY_RC, GimpEarlyRcClass)) +#define GIMP_IS_EARLY_RC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_EARLY_RC)) +#define GIMP_IS_EARLY_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_EARLY_RC)) + + +typedef struct _GimpEarlyRcClass GimpEarlyRcClass; + +struct _GimpEarlyRc +{ + GObject parent_instance; + + GFile *user_gimprc; + GFile *system_gimprc; + gboolean verbose; + + gchar *language; + +#ifdef G_OS_WIN32 + GimpWin32PointerInputAPI win32_pointer_input_api; +#endif +}; + +struct _GimpEarlyRcClass +{ + GObjectClass parent_class; +}; + + +GType gimp_early_rc_get_type (void) G_GNUC_CONST; + +GimpEarlyRc * gimp_early_rc_new (GFile *system_gimprc, + GFile *user_gimprc, + gboolean verbose); +gchar * gimp_early_rc_get_language (GimpEarlyRc *rc); + +#ifdef G_OS_WIN32 +GimpWin32PointerInputAPI gimp_early_rc_get_win32_pointer_input_api (GimpEarlyRc *rc); +#endif + + +#endif /* GIMP_EARLY_RC_H__ */ + diff --git a/app/config/gimplangrc.c b/app/config/gimplangrc.c deleted file mode 100644 index 34e26f4..0000000 --- a/app/config/gimplangrc.c +++ /dev/null @@ -1,280 +0,0 @@ -/* GIMP - The GNU Image Manipulation Program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * GimpLangRc: pre-parsing of gimprc returning the language. - * Copyright (C) 2017 Jehan - * - * 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 . - */ - -#include "config.h" - -#include - -#include "libgimpbase/gimpbase.h" -#include "libgimpconfig/gimpconfig.h" - -#include "config-types.h" - -#include "gimplangrc.h" - -enum -{ - PROP_0, - PROP_VERBOSE, - PROP_SYSTEM_GIMPRC, - PROP_USER_GIMPRC, - PROP_LANGUAGE -}; - - -static void gimp_lang_rc_constructed (GObject *object); -static void gimp_lang_rc_finalize (GObject *object); -static void gimp_lang_rc_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gimp_lang_rc_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec); - - -/* Just use GimpConfig interface's default implementation which will - * fill the PROP_LANGUAGE property. */ -G_DEFINE_TYPE_WITH_CODE (GimpLangRc, gimp_lang_rc, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (GIMP_TYPE_CONFIG, NULL)) - -#define parent_class gimp_lang_rc_parent_class - - -static void -gimp_lang_rc_class_init (GimpLangRcClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->constructed = gimp_lang_rc_constructed; - object_class->finalize = gimp_lang_rc_finalize; - object_class->set_property = gimp_lang_rc_set_property; - object_class->get_property = gimp_lang_rc_get_property; - - g_object_class_install_property (object_class, PROP_VERBOSE, - g_param_spec_boolean ("verbose", - NULL, NULL, - FALSE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); - - g_object_class_install_property (object_class, PROP_SYSTEM_GIMPRC, - g_param_spec_object ("system-gimprc", - NULL, NULL, - G_TYPE_FILE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); - - g_object_class_install_property (object_class, PROP_USER_GIMPRC, - g_param_spec_object ("user-gimprc", - NULL, NULL, - G_TYPE_FILE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); - - GIMP_CONFIG_PROP_STRING (object_class, PROP_LANGUAGE, - "language", NULL, NULL, NULL, - GIMP_PARAM_STATIC_STRINGS); - -} - -static void -gimp_lang_rc_init (GimpLangRc *rc) -{ -} - -static void -gimp_lang_rc_constructed (GObject *object) -{ - GimpLangRc *rc = GIMP_LANG_RC (object); - GError *error = NULL; - - if (rc->verbose) - g_print ("Parsing '%s' for configured language.\n", - gimp_file_get_utf8_name (rc->system_gimprc)); - - if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc), - rc->system_gimprc, NULL, &error)) - { - if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT) - g_message ("%s", error->message); - - g_clear_error (&error); - } - - if (rc->verbose) - g_print ("Parsing '%s' for configured language.\n", - gimp_file_get_utf8_name (rc->user_gimprc)); - - if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc), - rc->user_gimprc, NULL, &error)) - { - if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT) - g_message ("%s", error->message); - - g_clear_error (&error); - } - - if (rc->verbose) - { - if (rc->language) - g_print ("Language property found: %s.\n", rc->language); - else - g_print ("No language property found.\n"); - } -} - -static void -gimp_lang_rc_finalize (GObject *object) -{ - GimpLangRc *rc = GIMP_LANG_RC (object); - - g_clear_object (&rc->system_gimprc); - g_clear_object (&rc->user_gimprc); - - g_clear_pointer (&rc->language, g_free); - - G_OBJECT_CLASS (parent_class)->finalize (object); -} - -static void -gimp_lang_rc_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GimpLangRc *rc = GIMP_LANG_RC (object); - - switch (property_id) - { - case PROP_VERBOSE: - rc->verbose = g_value_get_boolean (value); - break; - - case PROP_SYSTEM_GIMPRC: - if (rc->system_gimprc) - g_object_unref (rc->system_gimprc); - - if (g_value_get_object (value)) - rc->system_gimprc = g_value_dup_object (value); - else - rc->system_gimprc = gimp_sysconf_directory_file ("gimprc", NULL); - break; - - case PROP_USER_GIMPRC: - if (rc->user_gimprc) - g_object_unref (rc->user_gimprc); - - if (g_value_get_object (value)) - rc->user_gimprc = g_value_dup_object (value); - else - rc->user_gimprc = gimp_directory_file ("gimprc", NULL); - break; - - case PROP_LANGUAGE: - if (rc->language) - g_free (rc->language); - rc->language = g_value_dup_string (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gimp_lang_rc_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GimpLangRc *rc = GIMP_LANG_RC (object); - - switch (property_id) - { - case PROP_VERBOSE: - g_value_set_boolean (value, rc->verbose); - break; - case PROP_SYSTEM_GIMPRC: - g_value_set_object (value, rc->system_gimprc); - break; - case PROP_USER_GIMPRC: - g_value_set_object (value, rc->user_gimprc); - break; - case PROP_LANGUAGE: - g_value_set_string (value, rc->language); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -/** - * gimp_lang_rc_new: - * @system_gimprc: the name of the system-wide gimprc file or %NULL to - * use the standard location - * @user_gimprc: the name of the user gimprc file or %NULL to use the - * standard location - * @verbose: enable console messages about loading the language - * - * Creates a new GimpLangRc object which only looks for the configure - * language. - * - * Returns: the new #GimpLangRc. - */ -GimpLangRc * -gimp_lang_rc_new (GFile *system_gimprc, - GFile *user_gimprc, - gboolean verbose) -{ - GimpLangRc *rc; - - g_return_val_if_fail (system_gimprc == NULL || G_IS_FILE (system_gimprc), - NULL); - g_return_val_if_fail (user_gimprc == NULL || G_IS_FILE (user_gimprc), - NULL); - - rc = g_object_new (GIMP_TYPE_LANG_RC, - "verbose", verbose, - "system-gimprc", system_gimprc, - "user-gimprc", user_gimprc, - NULL); - - return rc; -} - -/** - * gimp_lang_rc_get_language: - * @lang_rc: a #GimpLangRc object. - * - * This function looks up the language set in `gimprc`. - * - * Return value: a newly allocated string representing the language or - * %NULL if the key couldn't be found. - **/ -gchar * -gimp_lang_rc_get_language (GimpLangRc *rc) -{ - return rc->language ? g_strdup (rc->language) : NULL; -} diff --git a/app/config/gimplangrc.h b/app/config/gimplangrc.h deleted file mode 100644 index 62412fd..0000000 --- a/app/config/gimplangrc.h +++ /dev/null @@ -1,60 +0,0 @@ -/* GIMP - The GNU Image Manipulation Program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * GimpLangRc: pre-parsing of gimprc returning the language. - * Copyright (C) 2017 Jehan - * - * 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 . - */ - -#ifndef __GIMP_LANG_RC_H__ -#define __GIMP_LANG_RC_H__ - - -#define GIMP_TYPE_LANG_RC (gimp_lang_rc_get_type ()) -#define GIMP_LANG_RC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_LANG_RC, GimpLangRc)) -#define GIMP_LANG_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_LANG_RC, GimpLangRcClass)) -#define GIMP_IS_LANG_RC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_LANG_RC)) -#define GIMP_IS_LANG_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_LANG_RC)) - - -typedef struct _GimpLangRcClass GimpLangRcClass; - -struct _GimpLangRc -{ - GObject parent_instance; - - GFile *user_gimprc; - GFile *system_gimprc; - gboolean verbose; - - gchar *language; -}; - -struct _GimpLangRcClass -{ - GObjectClass parent_class; -}; - - -GType gimp_lang_rc_get_type (void) G_GNUC_CONST; - -GimpLangRc * gimp_lang_rc_new (GFile *system_gimprc, - GFile *user_gimprc, - gboolean verbose); -gchar * gimp_lang_rc_get_language (GimpLangRc *rc); - - -#endif /* GIMP_LANG_RC_H__ */ - diff --git a/app/config/gimprc-blurbs.h b/app/config/gimprc-blurbs.h index 51b771a..3d5f5d0 100644 --- a/app/config/gimprc-blurbs.h +++ b/app/config/gimprc-blurbs.h @@ -247,6 +247,9 @@ _("Export IPTC metadata by default.") #define GENERATE_BACKTRACE_BLURB \ _("Try generating debug data for bug reporting when appropriate.") +#define WIN32_POINTER_INPUT_API_BLURB \ +_("Sets the preferred pen and touch input API.") + #define INITIAL_ZOOM_TO_FIT_BLURB \ _("When enabled, this will ensure that the full image is visible after a " \ "file is opened, otherwise it will be displayed with a scale of 1:1.") -- cgit v1.2.3