gnucash maint: Multiple changes pushed

Geert Janssens gjanssens at code.gnucash.org
Tue Sep 21 11:21:20 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/f1802b6f (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b3daeecb (commit)
	 via  https://github.com/Gnucash/gnucash/commit/f21c7b6e (commit)
	 via  https://github.com/Gnucash/gnucash/commit/a203c5b2 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/d1113a45 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/02fbf217 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/6674b1bb (commit)
	from  https://github.com/Gnucash/gnucash/commit/a20f2def (commit)



commit f1802b6fdf70186f4ab7d61a663a43f218a91a92
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Tue Sep 21 16:50:22 2021 +0200

    GSettings Upgrade - add code to migrate settings
    
    The rules for migration are read from an xml file. This file was
    prepared in a previous commit. Future settings 'data model' changes can
    reuse this code by simply adding migration rules in the xml file.
    
    This replaces the hardcoded rules that were currently in place to
    migrate a few settings from 2.6 and older to 3.0. These rules are no
    longer meaningful as we require users to migrate from one major release
    series to the immediate next one. So by the time the new migration rules
    in this commit are applied by users they should already have run gnucash
    3.x at least once. That run should have taken care of the pre-3.0
    migration actions.

diff --git a/libgnucash/app-utils/gnc-gsettings.cpp b/libgnucash/app-utils/gnc-gsettings.cpp
index 19a9d5b4d..6e8bb9bd7 100644
--- a/libgnucash/app-utils/gnc-gsettings.cpp
+++ b/libgnucash/app-utils/gnc-gsettings.cpp
@@ -37,6 +37,13 @@ extern "C" {
 #include "gnc-prefs-p.h"
 }
 
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/xml_parser.hpp>
+#include <fstream>
+#include <iostream>
+
+namespace bpt = boost::property_tree;
+
 #define GSET_SCHEMA_PREFIX "org.gnucash.GnuCash"
 #define GSET_SCHEMA_OLD_PREFIX "org.gnucash"
 #define CLIENT_TAG  "%s-%s-client"
@@ -623,25 +630,167 @@ void gnc_gsettings_load_backend (void)
     LEAVE("Prefsbackend bind = %p", prefsbackend->bind);
 }
 
+
+
+static GVariant *
+gnc_gsettings_get_user_value (const gchar *schema,
+                         const gchar *key)
+{
+    GSettings *settings_ptr = gnc_gsettings_get_settings_ptr (schema);
+    g_return_val_if_fail (G_IS_SETTINGS (settings_ptr), NULL);
+
+    if (gnc_gsettings_is_valid_key (settings_ptr, key))
+        return g_settings_get_user_value (settings_ptr, key);
+    else
+    {
+        PERR ("Invalid key %s for schema %s", key, schema);
+        return NULL;
+    }
+}
+
+static void
+migrate_one_key (const std::string &oldpath, const std::string &oldkey,
+                 const std::string &newpath, const std::string &newkey)
+{
+    PINFO ("Migrating '%s:%s' to '%s:%s'", oldpath.c_str(), oldkey.c_str(),
+           newpath.c_str(), newkey.c_str());
+    auto user_value = gnc_gsettings_get_user_value (oldpath.data(), oldkey.data());
+    if (user_value)
+        gnc_gsettings_set_value (newpath.data(), newkey.data(), user_value);
+}
+
+static void
+migrate_one_node (bpt::ptree &pt)
+{
+    /* loop over top-level property tree */
+    std::for_each (pt.begin(), pt.end(),
+            [] (std::pair<bpt::ptree::key_type, bpt::ptree> node)
+            {
+                if (node.first == "<xmlattr>")
+                    return;
+                if (node.first != "migrate")
+                {
+                    DEBUG ("Skipping non-<migrate> node <%s>", node.first.c_str());
+                    return;
+                }
+
+                auto oldpath = node.second.get_optional<std::string> ("<xmlattr>.old-path");
+                auto oldkey = node.second.get_optional<std::string> ("<xmlattr>.old-key");
+                auto newpath = node.second.get_optional<std::string> ("<xmlattr>.new-path");
+                auto newkey = node.second.get_optional<std::string> ("<xmlattr>.new-key");
+                if (!oldpath || !oldkey || !newpath || !newkey)
+                {
+                    DEBUG ("Skipping migration node - missing attribute (old-path, old-key, new-path or new-key)");
+                    return;
+                }
+                migrate_one_key (*oldpath, *oldkey, *newpath, *newkey);
+            });
+}
+
+static void
+migrate_settings (int old_maj_min)
+{
+    bpt::ptree pt;
+
+    auto pkg_data_dir = gnc_path_get_pkgdatadir();
+    auto migrate_file = std::string (pkg_data_dir) + "/migratable-prefs.xml";
+    g_free (pkg_data_dir);
+
+    std::ifstream migrate_stream {migrate_file};
+    if (!migrate_stream.is_open())
+    {
+        PWARN("Failed to load settings migration file '%s'", migrate_file.c_str());
+        return;
+    }
+
+    try
+    {
+        bpt::read_xml (migrate_stream, pt);
+    }
+    catch (bpt::xml_parser_error &e) {
+        PWARN ("Failed to parse GnuCash settings migration file.\n");
+        PWARN ("Error message:\n");
+        PWARN ("%s\n", e.what());
+        return;
+    }
+    catch (...) {
+        PWARN ("Unknown error while parsing GnuCash settings migration file.\n");
+        return;
+    }
+
+    /* loop over top-level property tree */
+    std::for_each (pt.begin(), pt.end(),
+            [&old_maj_min] (std::pair<bpt::ptree::key_type, bpt::ptree> node)
+            {
+                if (node.first != "release")
+                {
+                    DEBUG ("Skipping non-<release> node <%s>", node.first.c_str());
+                    return;
+                }
+                auto version = node.second.get_optional<int> ("<xmlattr>.version");
+                if (!version)
+                {
+                    DEBUG ("Skipping <release> node - no version attribute found");
+                    return;
+                }
+                if (*version <= old_maj_min)
+                {
+                    DEBUG ("Skipping <release> node - version %i is less than current compatibility level %i", *version, old_maj_min);
+                    return;
+                }
+                DEBUG ("Retrieved version value '%i'", *version);
+
+                migrate_one_node (node.second);
+            });
+}
+
 void gnc_gsettings_version_upgrade (void)
 {
     /* Use versioning to ensure this routine will only sync once for each
-     * superseded setting */
-    int old_maj_min = gnc_gsettings_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION);
-    int cur_maj_min = PROJECT_VERSION_MAJOR * 100 + PROJECT_VERSION_MINOR;
+     * superseded setting
+     * At first run of GnuCash 4.7 or more recent *all* settings will be migrated
+     * from prefix org.gnucash to org.gnucash.GnuCash, including our GNC_PREF_VERSION setting.
+     * As the logic to determine whether or not to upgrade depends on it we have to do
+     * some extra tests to figure when exactly to start doing migrations.
+     * - if GNC_PREF_VERSION is not set under old nor new prefix, that means
+     *   gnucash has never run before on this system = no migration necessary
+     * - if GNC_PREF_VERSION is set under old prefix, but not new prefix
+     *   => full migration from old to new prefix should still be run
+     * - if GNC_PREF_VERSION is set under both prefixes
+     *   => ignore old prefix and use new prefix result to determine which
+     *   migrations would still be needed.
+     */
+    ENTER("Start of settings migration routine.");
+
+    auto ogG_maj_min = gnc_gsettings_get_user_value (GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION);
+    auto og_maj_min = gnc_gsettings_get_user_value (GSET_SCHEMA_OLD_PREFIX "." GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION);
 
-    /* Convert settings to 3.0 compatibility level */
-    if (old_maj_min < 207)
+    if (!ogG_maj_min && !og_maj_min)
     {
-        /* 'use-theme-colors' has been replaced with 'use-gnucash-color-theme'
-         * which inverts the meaning of the setting */
-        gboolean old_color_theme = gnc_gsettings_get_bool (GNC_PREFS_GROUP_GENERAL_REGISTER, GNC_PREF_USE_THEME_COLORS);
-        gnc_gsettings_set_bool (GNC_PREFS_GROUP_GENERAL_REGISTER, GNC_PREF_USE_GNUCASH_COLOR_THEME, !old_color_theme);
+        LEAVE("");
+        return;
     }
 
+    auto old_maj_min = 0;
+    if (!ogG_maj_min)
+        old_maj_min = gnc_gsettings_get_int (GSET_SCHEMA_OLD_PREFIX "." GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION);
+    else
+    {
+        g_variant_unref (ogG_maj_min);
+        old_maj_min = gnc_gsettings_get_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION);
+    }
+    g_variant_unref (og_maj_min);
+
+    PINFO ("Previous setting compatibility level: %i", old_maj_min);
+
+    migrate_settings (old_maj_min);
+
     /* Only write current version if it's more recent than what was set */
+    auto cur_maj_min = PROJECT_VERSION_MAJOR * 1000 + PROJECT_VERSION_MINOR;
     if (cur_maj_min > old_maj_min)
         gnc_gsettings_set_int (GNC_PREFS_GROUP_GENERAL, GNC_PREF_VERSION, cur_maj_min);
+
+    LEAVE("");
 }
 
 

commit b3daeecb85fc3c70b13fb0348475cb2620ab7b5c
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Mon Sep 13 22:40:25 2021 +0200

    GSettings Upgrade - Compose a list of settings that can be migrated at runtime
    
    This list consists of old and new values for gsettings paths and keys
    and will allow gnucash to migrate values from each old path and key
    to the corresponding new path and key.

diff --git a/gnucash/CMakeLists.txt b/gnucash/CMakeLists.txt
index 078d2bda8..2973dcc48 100644
--- a/gnucash/CMakeLists.txt
+++ b/gnucash/CMakeLists.txt
@@ -8,6 +8,7 @@ unset(gschema_depends CACHE)
 add_subdirectory (gnome)
 add_subdirectory (gnome-utils)
 add_subdirectory (gnome-search)
+add_subdirectory (gschemas)
 add_subdirectory (gtkbuilder)
 add_subdirectory (html)
 add_subdirectory (import-export)
@@ -15,7 +16,6 @@ add_subdirectory (python)
 add_subdirectory (register)
 add_subdirectory (report)
 add_subdirectory (ui)
-add_subdirectory (gschemas)
 
 add_definitions (-DHAVE_CONFIG_H)
 
diff --git a/gnucash/gschemas/CMakeLists.txt b/gnucash/gschemas/CMakeLists.txt
index 89fccbb98..3da1db4d8 100644
--- a/gnucash/gschemas/CMakeLists.txt
+++ b/gnucash/gschemas/CMakeLists.txt
@@ -22,6 +22,11 @@ set(gschema_SOURCES
 
 add_gschema_targets("${gschema_SOURCES}")
 
+# Provide gnucash runtime with a list of migratable preferences
+configure_file(migratable-prefs.xml ${DATADIR_BUILD}/${PROJECT_NAME}/migratable-prefs.xml COPYONLY)
+install(FILES ${DATADIR_BUILD}/${PROJECT_NAME}/migratable-prefs.xml
+        DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME})
+
 # Handle gschemas.compiled
 if (COMPILE_GSCHEMAS)
 
@@ -49,7 +54,7 @@ if (COMPILE_GSCHEMAS)
                               ${GLIB_COMPILE_SCHEMAS} \$ENV\{DESTDIR\}${CMAKE_INSTALL_FULL_DATADIR}/glib-2.0/schemas\")")
 endif()
 
-set(gschemas_DIST_local "")
+set(gschemas_DIST_local migratable-prefs.xml)
 foreach(file ${gschema_SOURCES})
     list(APPEND gschemas_DIST_local ${file}.in)
 endforeach()
diff --git a/gnucash/gschemas/migratable-prefs.xml b/gnucash/gschemas/migratable-prefs.xml
new file mode 100644
index 000000000..02b86cb8d
--- /dev/null
+++ b/gnucash/gschemas/migratable-prefs.xml
@@ -0,0 +1,1299 @@
+
+<release version="4007">
+
+<migrate old-path="org.gnucash.general"
+         old-key="prefs-version"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="prefs-version"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="save-window-geometry"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="save-window-geometry"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="account-separator"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="account-separator"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="assoc-head"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="assoc-head"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="file-compression"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="file-compression"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="autosave-show-explanation"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="autosave-show-explanation"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="autosave-interval-minutes"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="autosave-interval-minutes"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="save-on-close-expires"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="save-on-close-expires"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="save-on-close-wait-time"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="save-on-close-wait-time"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="negative-in-red"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="negative-in-red"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="auto-decimal-point"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="auto-decimal-point"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="auto-decimal-places"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="auto-decimal-places"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="force-price-decimal"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="force-price-decimal"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="retain-type-never"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="retain-type-never"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="retain-type-days"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="retain-type-days"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="retain-type-forever"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="retain-type-forever"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="retain-days"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="retain-days"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="reversed-accounts-none"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="reversed-accounts-none"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="reversed-accounts-credit"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="reversed-accounts-credit"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="reversed-accounts-incomeexpense"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="reversed-accounts-incomeexpense"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="show-account-color"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="show-account-color"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="show-account-color-tabs"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="show-account-color-tabs"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="use-accounting-labels"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="use-accounting-labels"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-close-buttons"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-close-buttons"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-width"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-width"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-open-adjacent"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-open-adjacent"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="currency-choice-locale"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="currency-choice-locale"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="currency-choice-other"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="currency-choice-other"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="currency-other"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="currency-other"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="clock-24h"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="clock-24h"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="date-format"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="date-format"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="date-completion-thisyear"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="date-completion-thisyear"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="date-completion-sliding"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="date-completion-sliding"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="date-backmonths"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="date-backmonths"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="grid-lines-horizontal"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="grid-lines-horizontal"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="grid-lines-vertical"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="grid-lines-vertical"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="show-splash-screen"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="show-splash-screen"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-position-top"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-position-top"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-position-bottom"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-position-bottom"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-position-left"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-position-left"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-position-right"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-position-right"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="summarybar-position-top"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="summarybar-position-top"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="summarybar-position-bottom"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="summarybar-position-bottom"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="tab-next-recent"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="tab-next-recent"/>
+
+<migrate old-path="org.gnucash.general"
+         old-key="num-source"
+         new-path="org.gnucash.GnuCash.general"
+         new-key="num-source"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="use-gnucash-color-theme"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="use-gnucash-color-theme"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="use-theme-colors"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="use-theme-colors"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="enter-moves-to-end"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="enter-moves-to-end"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="auto-raise-lists"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="auto-raise-lists"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="tab-to-transfer-on-memorised"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="tab-to-transfer-on-memorised"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="use-new-window"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="use-new-window"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="alternate-color-by-transaction"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="alternate-color-by-transaction"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="draw-horizontal-lines"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="draw-horizontal-lines"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="draw-vertical-lines"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="draw-vertical-lines"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="future-after-blank-transaction"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="future-after-blank-transaction"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="default-style-ledger"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="default-style-ledger"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="default-style-autoledger"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="default-style-autoledger"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="default-style-journal"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="default-style-journal"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="double-line-mode"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="double-line-mode"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="show-leaf-account-names"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="show-leaf-account-names"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="show-extra-dates"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="show-extra-dates"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="show-extra-dates-on-selection"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="show-extra-dates-on-selection"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="show-calendar-buttons"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="show-calendar-buttons"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="selection-to-blank-on-expand"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="selection-to-blank-on-expand"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="max-transactions"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="max-transactions"/>
+
+<migrate old-path="org.gnucash.general.register"
+         old-key="key-length"
+         new-path="org.gnucash.GnuCash.general.register"
+         new-key="key-length"/>
+
+<migrate old-path="org.gnucash.general.report"
+         old-key="use-new-window"
+         new-path="org.gnucash.GnuCash.general.report"
+         new-key="use-new-window"/>
+
+<migrate old-path="org.gnucash.general.report"
+         old-key="currency-choice-locale"
+         new-path="org.gnucash.GnuCash.general.report"
+         new-key="currency-choice-locale"/>
+
+<migrate old-path="org.gnucash.general.report"
+         old-key="currency-choice-other"
+         new-path="org.gnucash.GnuCash.general.report"
+         new-key="currency-choice-other"/>
+
+<migrate old-path="org.gnucash.general.report"
+         old-key="currency-other"
+         new-path="org.gnucash.GnuCash.general.report"
+         new-key="currency-other"/>
+
+<migrate old-path="org.gnucash.general.report"
+         old-key="default-zoom"
+         new-path="org.gnucash.GnuCash.general.report"
+         new-key="default-zoom"/>
+
+<migrate old-path="org.gnucash.general.report.pdf-export"
+         old-key="filename-format"
+         new-path="org.gnucash.GnuCash.general.report.pdf-export"
+         new-key="filename-format"/>
+
+<migrate old-path="org.gnucash.general.report.pdf-export"
+         old-key="filename-date-format"
+         new-path="org.gnucash.GnuCash.general.report.pdf-export"
+         new-key="filename-date-format"/>
+
+<migrate old-path="org.gnucash.dev"
+         old-key="allow-file-incompatibility"
+         new-path="org.gnucash.GnuCash.dev"
+         new-key="allow-file-incompatibility"/>
+
+<migrate old-path="org.gnucash.dialogs.account"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.account"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.imap-editor"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.imap-editor"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.find-account"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.find-account"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.preferences"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.preferences"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.price-editor"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.price-editor"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.pricedb-editor"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.pricedb-editor"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.reset-warnings"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.reset-warnings"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.tax-info"
+         old-key="paned-position"
+         new-path="org.gnucash.GnuCash.dialogs.tax-info"
+         new-key="paned-position"/>
+
+<migrate old-path="org.gnucash.dialogs.tax-info"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.tax-info"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.fincalc"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.fincalc"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.find"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.find"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.find"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.find"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.export-accounts"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.export-accounts"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.log-replay"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.log-replay"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.open-save"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.open-save"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.report"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.report"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.report-saved-configs"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.report-saved-configs"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.lot-viewer"
+         old-key="hpane-position"
+         new-path="org.gnucash.GnuCash.dialogs.lot-viewer"
+         new-key="hpane-position"/>
+
+<migrate old-path="org.gnucash.dialogs.lot-viewer"
+         old-key="vpane-position"
+         new-path="org.gnucash.GnuCash.dialogs.lot-viewer"
+         new-key="vpane-position"/>
+
+<migrate old-path="org.gnucash.dialogs.lot-viewer"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.lot-viewer"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.new-user"
+         old-key="first-startup"
+         new-path="org.gnucash.GnuCash.dialogs.new-user"
+         new-key="first-startup"/>
+
+<migrate old-path="org.gnucash.dialogs.new-hierarchy"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.new-hierarchy"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.new-hierarchy"
+         old-key="show-on-new-file"
+         new-path="org.gnucash.GnuCash.dialogs.new-hierarchy"
+         new-key="show-on-new-file"/>
+
+<migrate old-path="org.gnucash.dialogs.search"
+         old-key="new-search-limit"
+         new-path="org.gnucash.GnuCash.dialogs.search"
+         new-key="new-search-limit"/>
+
+<migrate old-path="org.gnucash.dialogs.transfer"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.transfer"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business-doclink"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business-doclink"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.trans-doclink"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.trans-doclink"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.style-sheet"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.style-sheet"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.options"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.options"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.customer-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.customer-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.customer-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.customer-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.employee-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.employee-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.employee-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.employee-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.job-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.job-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.job-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.job-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.order-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.order-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.order-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.order-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.vendor-search"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.vendor-search"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.business.vendor-search"
+         old-key="search-for-active-only"
+         new-path="org.gnucash.GnuCash.dialogs.business.vendor-search"
+         new-key="search-for-active-only"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="tax-included"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="tax-included"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="auto-pay"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="auto-pay"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="notify-when-due"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="notify-when-due"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="days-in-advance"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="days-in-advance"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="enable-toolbuttons"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="enable-toolbuttons"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="invoice-printreport"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="invoice-printreport"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="use-new-window"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="use-new-window"/>
+
+<migrate old-path="org.gnucash.dialogs.business.invoice"
+         old-key="accumulate-splits"
+         new-path="org.gnucash.GnuCash.dialogs.business.invoice"
+         new-key="accumulate-splits"/>
+
+<migrate old-path="org.gnucash.dialogs.business.bill"
+         old-key="tax-included"
+         new-path="org.gnucash.GnuCash.dialogs.business.bill"
+         new-key="tax-included"/>
+
+<migrate old-path="org.gnucash.dialogs.business.bill"
+         old-key="auto-pay"
+         new-path="org.gnucash.GnuCash.dialogs.business.bill"
+         new-key="auto-pay"/>
+
+<migrate old-path="org.gnucash.dialogs.business.bill"
+         old-key="notify-when-due"
+         new-path="org.gnucash.GnuCash.dialogs.business.bill"
+         new-key="notify-when-due"/>
+
+<migrate old-path="org.gnucash.dialogs.business.bill"
+         old-key="days-in-advance"
+         new-path="org.gnucash.GnuCash.dialogs.business.bill"
+         new-key="days-in-advance"/>
+
+<migrate old-path="org.gnucash.dialogs.business.tax-tables"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.business.tax-tables"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="check-format-guid"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="check-format-guid"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="check-position"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="check-position"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="first-page-count"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="first-page-count"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="date-format"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="date-format"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="date-format-user"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="date-format-user"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-units"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-units"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-payee"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-payee"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-date"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-date"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-amount-words"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-amount-words"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-amount-number"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-amount-number"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-address"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-address"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-notes"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-notes"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-memo"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-memo"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-translation"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-translation"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="custom-rotation"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="custom-rotation"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="splits-amount"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="splits-amount"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="splits-memo"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="splits-memo"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="splits-account"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="splits-account"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="print-date-format"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="print-date-format"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="default-font"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="default-font"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="blocking-chars"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="blocking-chars"/>
+
+<migrate old-path="org.gnucash.dialogs.checkprinting"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.checkprinting"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.commodities"
+         old-key="include-iso"
+         new-path="org.gnucash.GnuCash.dialogs.commodities"
+         new-key="include-iso"/>
+
+<migrate old-path="org.gnucash.dialogs.commodities"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.commodities"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.export.csv"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.export.csv"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.export.csv"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.export.csv"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.export.csv"
+         old-key="paned-position"
+         new-path="org.gnucash.GnuCash.dialogs.export.csv"
+         new-key="paned-position"/>
+
+<migrate old-path="org.gnucash.dialogs.import.csv"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.csv"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.csv"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.import.csv"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="enable-skip"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="enable-skip"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="enable-update"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="enable-update"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="use-bayes"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="use-bayes"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="match-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="match-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="match-date-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="match-date-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="match-date-not-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="match-date-not-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="auto-add-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="auto-add-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="auto-clear-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="auto-clear-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="atm-fee-threshold"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="atm-fee-threshold"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic"
+         old-key="auto-create-commodity"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic"
+         new-key="auto-create-commodity"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic.match-picker"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic.match-picker"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic.match-picker"
+         old-key="display-reconciled"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic.match-picker"
+         new-key="display-reconciled"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic.account-picker"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic.account-picker"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.generic.transaction-list"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.generic.transaction-list"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="default-status-notcleared"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="default-status-notcleared"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="default-status-cleared"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="default-status-cleared"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="default-status-reconciled"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="default-status-reconciled"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif"
+         old-key="show-doc"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif"
+         new-key="show-doc"/>
+
+<migrate old-path="org.gnucash.dialogs.import.qif.account-picker"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.qif.account-picker"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.reconcile"
+         old-key="check-cleared"
+         new-path="org.gnucash.GnuCash.dialogs.reconcile"
+         new-key="check-cleared"/>
+
+<migrate old-path="org.gnucash.dialogs.reconcile"
+         old-key="auto-interest-transfer"
+         new-path="org.gnucash.GnuCash.dialogs.reconcile"
+         new-key="auto-interest-transfer"/>
+
+<migrate old-path="org.gnucash.dialogs.reconcile"
+         old-key="auto-cc-payment"
+         new-path="org.gnucash.GnuCash.dialogs.reconcile"
+         new-key="auto-cc-payment"/>
+
+<migrate old-path="org.gnucash.dialogs.reconcile"
+         old-key="always-reconcile-to-today"
+         new-path="org.gnucash.GnuCash.dialogs.reconcile"
+         new-key="always-reconcile-to-today"/>
+
+<migrate old-path="org.gnucash.dialogs.reconcile"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.reconcile"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.since-last-run"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.since-last-run"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.since-last-run"
+         old-key="show-at-file-open"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.since-last-run"
+         new-key="show-at-file-open"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.since-last-run"
+         old-key="show-notify-window-at-file-open"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.since-last-run"
+         new-key="show-notify-window-at-file-open"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.since-last-run"
+         old-key="review-transactions"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.since-last-run"
+         new-key="review-transactions"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.transaction-editor"
+         old-key="create-auto"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"
+         new-key="create-auto"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.transaction-editor"
+         old-key="create-days"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"
+         new-key="create-days"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.transaction-editor"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.transaction-editor"
+         old-key="notify"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"
+         new-key="notify"/>
+
+<migrate old-path="org.gnucash.dialogs.sxs.transaction-editor"
+         old-key="remind-days"
+         new-path="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"
+         new-key="remind-days"/>
+
+<migrate old-path="org.gnucash.dialogs.totd"
+         old-key="current-tip"
+         new-path="org.gnucash.GnuCash.dialogs.totd"
+         new-key="current-tip"/>
+
+<migrate old-path="org.gnucash.dialogs.totd"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.totd"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.totd"
+         old-key="show-at-startup"
+         new-path="org.gnucash.GnuCash.dialogs.totd"
+         new-key="show-at-startup"/>
+
+<migrate old-path="org.gnucash.general.finance-quote"
+         old-key="alphavantage-api-key"
+         new-path="org.gnucash.GnuCash.general.finance-quote"
+         new-key="alphavantage-api-key"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="maxfiles"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="maxfiles"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file0"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file0"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file1"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file1"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file2"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file2"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file3"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file3"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file4"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file4"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file5"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file5"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file6"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file6"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file7"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file7"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file8"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file8"/>
+
+<migrate old-path="org.gnucash.history"
+         old-key="file9"
+         new-path="org.gnucash.GnuCash.history"
+         new-key="file9"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="checkprinting-multi-acct"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="checkprinting-multi-acct"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="closing-window-question"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="closing-window-question"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="inv-entry-mod"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="inv-entry-mod"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="inv-entry-dup"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="inv-entry-dup"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="price-comm-del"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="price-comm-del"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="price-comm-del-quotes"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="price-comm-del-quotes"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="price-quotes-del"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="price-quotes-del"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="price-quotes-replace"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="price-quotes-replace"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-is-acct-pay-rec"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-is-acct-pay-rec"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-is-read-only"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-is-read-only"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-recd-split-mod"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-recd-split-mod"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-recd-split-unrec"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-recd-split-unrec"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-split-del"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-split-del"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-split-del-recd"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-split-del-recd"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-split-del-all"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-split-del-all"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-split-del-all-recd"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-split-del-all-recd"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-trans-del"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-trans-del"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-trans-del-recd"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-trans-del-recd"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-trans-dup"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-trans-dup"/>
+
+<migrate old-path="org.gnucash.warnings.permanent"
+         old-key="reg-trans-mod"
+         new-path="org.gnucash.GnuCash.warnings.permanent"
+         new-key="reg-trans-mod"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="checkprinting-multi-acct"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="checkprinting-multi-acct"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="closing-window-question"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="closing-window-question"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="inv-entry-mod"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="inv-entry-mod"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="inv-entry-dup"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="inv-entry-dup"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="price-comm-del"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="price-comm-del"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="price-comm-del-quotes"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="price-comm-del-quotes"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="price-quotes-del"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="price-quotes-del"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="price-quotes-replace"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="price-quotes-replace"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-is-acct-pay-rec"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-is-acct-pay-rec"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-is-read-only"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-is-read-only"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-recd-split-mod"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-recd-split-mod"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-recd-split-unrec"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-recd-split-unrec"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-split-del"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-split-del"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-split-del-recd"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-split-del-recd"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-split-del-all"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-split-del-all"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-split-del-all-recd"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-split-del-all-recd"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-trans-del"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-trans-del"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-trans-del-recd"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-trans-del-recd"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-trans-dup"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-trans-dup"/>
+
+<migrate old-path="org.gnucash.warnings.temporary"
+         old-key="reg-trans-mod"
+         new-path="org.gnucash.GnuCash.warnings.temporary"
+         new-key="reg-trans-mod"/>
+
+<migrate old-path="org.gnucash.window.pages"
+         old-key="account-code-visible"
+         new-path="org.gnucash.GnuCash.window.pages"
+         new-key="account-code-visible"/>
+
+<migrate old-path="org.gnucash.window.pages"
+         old-key="account-code-width"
+         new-path="org.gnucash.GnuCash.window.pages"
+         new-key="account-code-width"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="grand-total"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="grand-total"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="non-currency"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="non-currency"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="start-choice-relative"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="start-choice-relative"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="start-choice-absolute"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="start-choice-absolute"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="start-date"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="start-date"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="start-period"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="start-period"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="end-choice-relative"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="end-choice-relative"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="end-choice-absolute"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="end-choice-absolute"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="end-date"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="end-date"/>
+
+<migrate old-path="org.gnucash.window.pages.account-tree.summary"
+         old-key="end-period"
+         new-path="org.gnucash.GnuCash.window.pages.account-tree.summary"
+         new-key="end-period"/>
+
+</release>
diff --git a/gnucash/import-export/aqb/gschemas/CMakeLists.txt b/gnucash/import-export/aqb/gschemas/CMakeLists.txt
index f423c3bd4..0265a2237 100644
--- a/gnucash/import-export/aqb/gschemas/CMakeLists.txt
+++ b/gnucash/import-export/aqb/gschemas/CMakeLists.txt
@@ -3,6 +3,13 @@ if (WITH_AQBANKING)
   set(aqb_GSCHEMA org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml org.gnucash.GnuCash.dialogs.flicker.gschema.xml)
 
   add_gschema_targets("${aqb_GSCHEMA}")
+
+  file(READ migratable-prefs.xml migratable-prefs)
+  file(APPEND ${DATADIR_BUILD}/${PROJECT_NAME}/migratable-prefs.xml ${migratable-prefs})
 endif()
 
-set_dist_list(aqbanking_gschema_DIST CMakeLists.txt org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in)
+set_dist_list(aqbanking_gschema_DIST
+  CMakeLists.txt
+  migratable-prefs.xml
+  org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in
+  org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in)
diff --git a/gnucash/import-export/aqb/gschemas/migratable-prefs.xml b/gnucash/import-export/aqb/gschemas/migratable-prefs.xml
new file mode 100644
index 000000000..2c12d75ac
--- /dev/null
+++ b/gnucash/import-export/aqb/gschemas/migratable-prefs.xml
@@ -0,0 +1,64 @@
+
+<release version="4007">
+
+<migrate old-path="org.gnucash.dialogs.flicker"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.flicker"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.ab-initial"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.ab-initial"
+         new-key="last-geometry"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="close-on-finish"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="close-on-finish"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="remember-pin"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="remember-pin"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="use-ns-transaction-text"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="use-ns-transaction-text"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="verbose-debug"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="verbose-debug"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="format-dtaus"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="format-dtaus"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="format-csv"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="format-csv"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="format-swift-mt940"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="format-swift-mt940"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="format-swift-mt942"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="format-swift-mt942"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci"
+         new-key="last-path"/>
+
+<migrate old-path="org.gnucash.dialogs.import.hbci.connection-dialog"
+         old-key="last-geometry"
+         new-path="org.gnucash.GnuCash.dialogs.import.hbci.connection-dialog"
+         new-key="last-geometry"/>
+
+</release>
diff --git a/gnucash/import-export/ofx/gschemas/CMakeLists.txt b/gnucash/import-export/ofx/gschemas/CMakeLists.txt
index 054ffdae9..3dea7b61b 100644
--- a/gnucash/import-export/ofx/gschemas/CMakeLists.txt
+++ b/gnucash/import-export/ofx/gschemas/CMakeLists.txt
@@ -3,6 +3,12 @@ if (WITH_OFX)
   set(ofx_GSCHEMA org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml)
 
   add_gschema_targets("${ofx_GSCHEMA}")
+
+  file(READ migratable-prefs.xml migratable-prefs)
+  file(APPEND ${DATADIR_BUILD}/${PROJECT_NAME}/migratable-prefs.xml ${migratable-prefs})
 endif()
 
-set_dist_list(ofx_gschema_DIST CMakeLists.txt org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in)
+set_dist_list(ofx_gschema_DIST
+  CMakeLists.txt
+  migratable-prefs.xml
+  org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in)
diff --git a/gnucash/import-export/ofx/gschemas/migratable-prefs.xml b/gnucash/import-export/ofx/gschemas/migratable-prefs.xml
new file mode 100644
index 000000000..439f75ecb
--- /dev/null
+++ b/gnucash/import-export/ofx/gschemas/migratable-prefs.xml
@@ -0,0 +1,8 @@
+
+<release version="4007">
+
+<migrate old-path="org.gnucash.dialogs.import.ofx"
+         old-key="last-path"
+         new-path="org.gnucash.GnuCash.dialogs.import.ofx"
+         new-key="last-path"/>
+</release>

commit f21c7b6e90cfdc9bf731dd23d51962f7c940049c
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 17 15:27:12 2021 +0200

    GSettings - define old prefix and check settings for the presence of both prefixes while normalizing

diff --git a/libgnucash/app-utils/gnc-gsettings.cpp b/libgnucash/app-utils/gnc-gsettings.cpp
index 969ed0afe..19a9d5b4d 100644
--- a/libgnucash/app-utils/gnc-gsettings.cpp
+++ b/libgnucash/app-utils/gnc-gsettings.cpp
@@ -38,6 +38,7 @@ extern "C" {
 }
 
 #define GSET_SCHEMA_PREFIX "org.gnucash.GnuCash"
+#define GSET_SCHEMA_OLD_PREFIX "org.gnucash"
 #define CLIENT_TAG  "%s-%s-client"
 #define NOTIFY_TAG  "%s-%s-notify_id"
 
@@ -143,7 +144,8 @@ gnc_gsettings_normalize_schema_name (const gchar *name)
         /* Need to return a newly allocated string */
         return g_strdup(GSET_SCHEMA_PREFIX);
     }
-    if (g_str_has_prefix (name, GSET_SCHEMA_PREFIX))
+    if (g_str_has_prefix (name, GSET_SCHEMA_PREFIX) ||
+       (g_str_has_prefix (name, GSET_SCHEMA_OLD_PREFIX)))
     {
         /* Need to return a newly allocated string */
         return g_strdup(name);

commit a203c5b2d561595a73c8bed71cf0548449ed5707
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 17 15:26:09 2021 +0200

    GSettings - drop logic to relocate our settings
    
    This was ported from GConf, but GSettings doesn't work that way.
    Settings locations are defined at compile time and can't be
    relocated at run time (unless you make all of the settings
    explicitly relocatable. That however is not how GSettings is meant to be
    used.)

diff --git a/gnucash/gnucash-core-app.cpp b/gnucash/gnucash-core-app.cpp
index 1592f4fb6..946ff7e8e 100644
--- a/gnucash/gnucash-core-app.cpp
+++ b/gnucash/gnucash-core-app.cpp
@@ -270,9 +270,6 @@ Gnucash::CoreApp::parse_command_line (int argc, char **argv)
 
     gnc_prefs_set_debugging (m_debug);
     gnc_prefs_set_extra (m_extra);
-
-    if (m_gsettings_prefix)
-        gnc_gsettings_set_prefix (m_gsettings_prefix->c_str());
 }
 
 /* Define command line options common to all gnucash binaries. */
@@ -292,9 +289,7 @@ Gnucash::CoreApp::add_common_program_options (void)
         ("log", bpo::value (&m_log_flags),
          _("Log level overrides, of the form \"modulename={debug,info,warn,crit,error}\"\nExamples: \"--log qof=debug\" or \"--log gnc.backend.file.sx=info\"\nThis can be invoked multiple times."))
         ("logto", bpo::value (&m_log_to_filename),
-         _("File to log into; defaults to \"/tmp/gnucash.trace\"; can be \"stderr\" or \"stdout\"."))
-        ("gsettings-prefix", bpo::value (&m_gsettings_prefix),
-         _("Set the prefix for gsettings schemas for gsettings queries. This can be useful to have a different settings tree while debugging."));
+         _("File to log into; defaults to \"/tmp/gnucash.trace\"; can be \"stderr\" or \"stdout\"."));
 
     bpo::options_description hidden_options(_("Hidden Options"));
     hidden_options.add_options()
diff --git a/libgnucash/app-utils/gnc-gsettings.cpp b/libgnucash/app-utils/gnc-gsettings.cpp
index d766569b2..969ed0afe 100644
--- a/libgnucash/app-utils/gnc-gsettings.cpp
+++ b/libgnucash/app-utils/gnc-gsettings.cpp
@@ -129,41 +129,27 @@ handlers_hash_unblock_helper (gpointer key, gpointer settings_ptr, gpointer poin
 /*                      GSettings Utilities                 */
 /************************************************************/
 
-void
-gnc_gsettings_set_prefix (const gchar *prefix)
-{
-    gsettings_prefix = prefix;
-}
-
 const gchar *
 gnc_gsettings_get_prefix (void)
 {
-    if (!gsettings_prefix)
-    {
-        const char *prefix = g_getenv("GNC_GSETTINGS_PREFIX");
-        if (prefix)
-            gsettings_prefix = prefix;
-        else
-            gsettings_prefix = GSET_SCHEMA_PREFIX;
-    }
-    return gsettings_prefix;
+    return GSET_SCHEMA_PREFIX;
 }
 
 gchar *
 gnc_gsettings_normalize_schema_name (const gchar *name)
 {
-    if (name == NULL)
+    if (!name)
     {
         /* Need to return a newly allocated string */
-        return g_strdup(gnc_gsettings_get_prefix());
+        return g_strdup(GSET_SCHEMA_PREFIX);
     }
-    if (g_str_has_prefix (name, gnc_gsettings_get_prefix ()))
+    if (g_str_has_prefix (name, GSET_SCHEMA_PREFIX))
     {
         /* Need to return a newly allocated string */
         return g_strdup(name);
     }
 
-    return g_strjoin(".", gnc_gsettings_get_prefix(), name, NULL);
+    return g_strjoin(".", GSET_SCHEMA_PREFIX, name, NULL);
 }
 
 
diff --git a/libgnucash/app-utils/gnc-gsettings.h b/libgnucash/app-utils/gnc-gsettings.h
index fcf213ed8..7f2d9f3a0 100644
--- a/libgnucash/app-utils/gnc-gsettings.h
+++ b/libgnucash/app-utils/gnc-gsettings.h
@@ -70,13 +70,6 @@
  */
 gchar *gnc_gsettings_normalize_schema_name (const gchar *name);
 
-
-/** Set the default gsettings schema prefix. This is
- *  used to generate complete schema id's if only
- *  partial id's are passed.
- */
-void gnc_gsettings_set_prefix (const gchar *prefix);
-
 /** Get the default gsettings schema prefix.
  *  If none was set explicitly, this defaults to
  *  "org.gnucash.GnuCash"

commit d1113a4534bd6e2b8bdf123c87dd4294ce899440
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Mon Sep 13 17:32:10 2021 +0200

    GSettings - build as cpp

diff --git a/libgnucash/app-utils/CMakeLists.txt b/libgnucash/app-utils/CMakeLists.txt
index 1b713a8d8..9a511ed35 100644
--- a/libgnucash/app-utils/CMakeLists.txt
+++ b/libgnucash/app-utils/CMakeLists.txt
@@ -62,7 +62,7 @@ set (app_utils_SOURCES
   gnc-entry-quickfill.c
   gnc-euro.c
   gnc-exp-parser.c
-  gnc-gsettings.c
+  gnc-gsettings.cpp
   gnc-helpers.c
   gnc-prefs-utils.c
   gnc-sx-instance-model.c
diff --git a/libgnucash/app-utils/gnc-gsettings.c b/libgnucash/app-utils/gnc-gsettings.cpp
similarity index 96%
rename from libgnucash/app-utils/gnc-gsettings.c
rename to libgnucash/app-utils/gnc-gsettings.cpp
index cff8a12f1..d766569b2 100644
--- a/libgnucash/app-utils/gnc-gsettings.c
+++ b/libgnucash/app-utils/gnc-gsettings.cpp
@@ -24,23 +24,18 @@
 
 #include <config.h>
 
+
+#include <gio/gio.h>
+#include <glib.h>
+
+extern "C" {
 #include <stdio.h>
 #include <string.h>
 #include "gnc-gsettings.h"
 #include "gnc-path.h"
 #include "qof.h"
 #include "gnc-prefs-p.h"
-
-#include <libxml/xmlmemory.h>
-#include <libxml/debugXML.h>
-#include <libxml/HTMLtree.h>
-#include <libxml/xmlIO.h>
-#include <libxml/xinclude.h>
-#include <libxml/catalog.h>
-#include <libxslt/xslt.h>
-#include <libxslt/xsltInternals.h>
-#include <libxslt/transform.h>
-#include <libxslt/xsltutils.h>
+}
 
 #define GSET_SCHEMA_PREFIX "org.gnucash.GnuCash"
 #define CLIENT_TAG  "%s-%s-client"
@@ -48,7 +43,6 @@
 
 static GHashTable *schema_hash = NULL;
 static const gchar *gsettings_prefix;
-static xmlExternalEntityLoader defaultEntityLoader = NULL;
 
 static GHashTable *registered_handlers_hash = NULL;
 
@@ -97,7 +91,7 @@ static GSettings * gnc_gsettings_get_settings_ptr (const gchar *schema_str)
     if (!schema_hash)
         schema_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
 
-    gset = g_hash_table_lookup (schema_hash, full_name);
+    gset = static_cast<GSettings*> (g_hash_table_lookup (schema_hash, full_name));
     DEBUG ("Looking for schema %s returned gsettings %p", full_name, gset);
     if (!gset)
     {
@@ -241,11 +235,11 @@ gnc_gsettings_remove_cb_by_func (const gchar *schema,
 
     handler_id = g_signal_handler_find (
                   settings_ptr,
-                  G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
+                  static_cast<GSignalMatchType> (G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA),
                   g_signal_lookup ("changed", G_TYPE_SETTINGS), /* signal_id */
                   quark,   /* signal_detail */
                   NULL, /* closure */
-                  G_CALLBACK (func), /* callback function */
+                  func, /* callback function */
                   user_data);
 
     while (handler_id)
@@ -255,11 +249,11 @@ gnc_gsettings_remove_cb_by_func (const gchar *schema,
 
         handler_id = g_signal_handler_find (
                       settings_ptr,
-                      G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
+                      static_cast<GSignalMatchType> (G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA),
                       g_signal_lookup ("changed", G_TYPE_SETTINGS), /* signal_id */
                       quark,   /* signal_detail */
                       NULL, /* closure */
-                      G_CALLBACK (func), /* callback function */
+                      func, /* callback function */
                       user_data);
     }
 
@@ -321,7 +315,7 @@ void gnc_gsettings_bind (const gchar *schema,
     g_return_if_fail (G_IS_SETTINGS (settings_ptr));
 
     if (gnc_gsettings_is_valid_key (settings_ptr, key))
-        g_settings_bind (settings_ptr, key, object, property, 0);
+        g_settings_bind (settings_ptr, key, object, property, G_SETTINGS_BIND_DEFAULT);
     else
     {
         PERR ("Invalid key %s for schema %s", key, schema);
diff --git a/libgnucash/app-utils/gnc-gsettings.h b/libgnucash/app-utils/gnc-gsettings.h
index 1bd61bddd..fcf213ed8 100644
--- a/libgnucash/app-utils/gnc-gsettings.h
+++ b/libgnucash/app-utils/gnc-gsettings.h
@@ -50,7 +50,7 @@
 #ifndef GNC_GSETTINGS_H
 #define GNC_GSETTINGS_H
 
-#include <gio/gio.h>
+#include <glib.h>
 
 /** Convert a partial schema name into a complete gsettings schema name.
  *
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 6fca8826c..e3ef23ac7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -536,7 +536,7 @@ libgnucash/app-utils/gnc-addr-quickfill.c
 libgnucash/app-utils/gnc-entry-quickfill.c
 libgnucash/app-utils/gnc-euro.c
 libgnucash/app-utils/gnc-exp-parser.c
-libgnucash/app-utils/gnc-gsettings.c
+libgnucash/app-utils/gnc-gsettings.cpp
 libgnucash/app-utils/gnc-helpers.c
 libgnucash/app-utils/gnc-help-utils.c
 libgnucash/app-utils/gnc-prefs-utils.c

commit 02fbf217f6b71284bc212c90fcc43ea2656e78cd
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Mon Sep 13 17:44:24 2021 +0200

    GSettings Upgrade - change schema prefix from org.gnucash to org.gnucash.GnuCash
    
    The latter is the prefix format prescribed by gsettings itself. The former never
    was an issue until flatpak decided to not accept the shorter prefix when
    requesting a settings migration from host system to flatpak sandbox.
    
    In order to allow for migration, keep the old schema around in
    org.gnucash.GnuCash.deprecated.gschema.in
    
    While we're at it, make the new prefix an internal implementation detail.
    There's no need for it to be visible to the rest of the gnucash code.

diff --git a/.gitignore b/.gitignore
index 22637973a..c941221ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 *.gmo
 *.go
 *.gschema.xml
-*.gschema.xml.in
 *.gschema.valid
 *.la
 *.lo
diff --git a/gnucash/gnome-utils/CMakeLists.txt b/gnucash/gnome-utils/CMakeLists.txt
index 35efced09..4bead2db2 100644
--- a/gnucash/gnome-utils/CMakeLists.txt
+++ b/gnucash/gnome-utils/CMakeLists.txt
@@ -8,7 +8,7 @@ gnc_add_swig_guile_command (swig-gnome-utils-c
     ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i ""
 )
 
-set (WARNINGS_SCHEMA ${DATADIR_BUILD}/glib-2.0/schemas/org.gnucash.warnings.gschema.xml)
+set (WARNINGS_SCHEMA ${DATADIR_BUILD}/glib-2.0/schemas/org.gnucash.GnuCash.warnings.gschema.xml)
 set (GNC_WARNINGS_C ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.c)
 set (GNC_WARNINGS_H ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.h)
 
diff --git a/gnucash/gnome-utils/make-gnc-warnings-c.xsl b/gnucash/gnome-utils/make-gnc-warnings-c.xsl
index 75c926eb0..b3856a430 100644
--- a/gnucash/gnome-utils/make-gnc-warnings-c.xsl
+++ b/gnucash/gnome-utils/make-gnc-warnings-c.xsl
@@ -9,13 +9,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  *                  displayed to the user always or once.           *
  *                                                                  *
  * ATTENTION: this file is autogenerated based on the gsettings     *
- *            schema file org.gnucash.warnings.gschema.xml.in       *
+ *    schema file org.gnucash.GnuCash.warnings.gschema.xml.in       *
  *                                                                  *
  * If you need any modifications in this file, please update the    *
  * schema source file (or the xsl translation file depending on the *
  * kind of change required) instead.                                *
  *                                                                  *
- * Copyright (C) 2013 Geert Janssens <geert at kobaltwit.be>           *
+ * Copyright (C) 2013 Geert Janssens <geert at kobaltwit.be>     *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
  * modify it under the terms of the GNU General Public License as   *
@@ -40,7 +40,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 #include <gnc-warnings.h>
 
 static GncWarningSpec warning_spec [] =
-{<xsl:for-each select="//schema[@id='org.gnucash.warnings.permanent']/key">
+{<xsl:for-each select="//schema[@id='org.gnucash.GnuCash.warnings.permanent']/key">
   { GNC_PREF_WARN_<xsl:value-of select="translate(@name,$smallcase,$uppercase)"/>,
     "<xsl:value-of select="summary"/>",
     "<xsl:value-of select="description"/>",
@@ -56,4 +56,4 @@ const GncWarningSpec *gnc_get_warnings (void)
 <xsl:variable name="smallcase" select="'-abcdefghijklmnopqrstuvwxyz'" />
 <xsl:variable name="uppercase" select="'_ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
 
-</xsl:stylesheet> 
\ No newline at end of file
+</xsl:stylesheet> 
diff --git a/gnucash/gnome-utils/make-gnc-warnings-h.xsl b/gnucash/gnome-utils/make-gnc-warnings-h.xsl
index 2f2355cca..2ff9c207e 100644
--- a/gnucash/gnome-utils/make-gnc-warnings-h.xsl
+++ b/gnucash/gnome-utils/make-gnc-warnings-h.xsl
@@ -9,13 +9,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  *                  displayed to the user always or once.           *
  *                                                                  *
  * ATTENTION: this file is autogenerated based on the gsettings     *
- *            schema file org.gnucash.warnings.gschema.xml.in       *
+ *    schema file org.gnucash.GnuCash.warnings.gschema.xml.in       *
  *                                                                  *
  * If you need any modifications in this file, please update the    *
  * schema source file (or the xsl translation file depending on the *
  * kind of change required) instead.                                *
  *                                                                  *
- * Copyright (C) 2013 Geert Janssens <geert at kobaltwit.be>           *
+ * Copyright (C) 2013 Geert Janssens <geert at kobaltwit.be>     *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
  * modify it under the terms of the GNU General Public License as   *
@@ -41,10 +41,10 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 #include <glib.h>
 
-<xsl:for-each select="//schema[@id='org.gnucash.warnings.permanent']/key">
+<xsl:for-each select="//schema[@id='org.gnucash.GnuCash.warnings.permanent']/key">
 #define GNC_PREF_WARN_<xsl:value-of select="translate(@name,$smallcase,$uppercase)"/> "<xsl:value-of select="@name"/>"</xsl:for-each>
 
-enum {<xsl:for-each select="//schema[@id='org.gnucash.warnings.permanent']/key">
+enum {<xsl:for-each select="//schema[@id='org.gnucash.GnuCash.warnings.permanent']/key">
     WARN_<xsl:value-of select="translate(@name,$smallcase,$uppercase)"/>,</xsl:for-each>
 };
 
@@ -62,4 +62,4 @@ const GncWarningSpec *gnc_get_warnings (void);
 <xsl:variable name="smallcase" select="'-abcdefghijklmnopqrstuvwxyz'" />
 <xsl:variable name="uppercase" select="'_ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
 
-</xsl:stylesheet> 
\ No newline at end of file
+</xsl:stylesheet> 
diff --git a/gnucash/gschemas/CMakeLists.txt b/gnucash/gschemas/CMakeLists.txt
index 8e8e40f21..89fccbb98 100644
--- a/gnucash/gschemas/CMakeLists.txt
+++ b/gnucash/gschemas/CMakeLists.txt
@@ -1,22 +1,23 @@
 
 set(gschema_SOURCES
-  org.gnucash.dialogs.business.gschema.xml
-  org.gnucash.dialogs.checkprinting.gschema.xml
-  org.gnucash.dialogs.commodities.gschema.xml
-  org.gnucash.dialogs.export.csv.gschema.xml
-  org.gnucash.dialogs.gschema.xml
-  org.gnucash.dialogs.import.csv.gschema.xml
-  org.gnucash.dialogs.import.generic.gschema.xml
-  org.gnucash.dialogs.import.qif.gschema.xml
-  org.gnucash.dialogs.reconcile.gschema.xml
-  org.gnucash.dialogs.sxs.gschema.xml
-  org.gnucash.dialogs.totd.gschema.xml
-  org.gnucash.general.finance-quote.gschema.xml
-  org.gnucash.gschema.xml
-  org.gnucash.history.gschema.xml
-  org.gnucash.warnings.gschema.xml
-  org.gnucash.window.pages.account.tree.gschema.xml
-  org.gnucash.window.pages.gschema.xml
+  org.gnucash.GnuCash.deprecated.gschema.xml
+  org.gnucash.GnuCash.dialogs.business.gschema.xml
+  org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml
+  org.gnucash.GnuCash.dialogs.commodities.gschema.xml
+  org.gnucash.GnuCash.dialogs.export.csv.gschema.xml
+  org.gnucash.GnuCash.dialogs.gschema.xml
+  org.gnucash.GnuCash.dialogs.import.csv.gschema.xml
+  org.gnucash.GnuCash.dialogs.import.generic.gschema.xml
+  org.gnucash.GnuCash.dialogs.import.qif.gschema.xml
+  org.gnucash.GnuCash.dialogs.reconcile.gschema.xml
+  org.gnucash.GnuCash.dialogs.sxs.gschema.xml
+  org.gnucash.GnuCash.dialogs.totd.gschema.xml
+  org.gnucash.GnuCash.general.finance-quote.gschema.xml
+  org.gnucash.GnuCash.gschema.xml
+  org.gnucash.GnuCash.history.gschema.xml
+  org.gnucash.GnuCash.warnings.gschema.xml
+  org.gnucash.GnuCash.window.pages.account.tree.gschema.xml
+  org.gnucash.GnuCash.window.pages.gschema.xml
 )
 
 add_gschema_targets("${gschema_SOURCES}")
diff --git a/gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in
new file mode 100644
index 000000000..364b66ac7
--- /dev/null
+++ b/gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in
@@ -0,0 +1,1605 @@
+<schemalist gettext-domain="@PROJECT_NAME@">
+  <schema id="org.gnucash" path="/org/gnucash/">
+    <child name="general" schema="org.gnucash.general"/>
+    <child name="dev" schema="org.gnucash.dev"/>
+  </schema>
+
+  <schema id="org.gnucash.general" path="/org/gnucash/general/">
+    <key name="prefs-version" type="i">
+      <default>0</default>
+      <summary>The version of these settings</summary>
+      <description>This is used internally to determine whether some preferences may need conversion when switching to a newer version of GnuCash.</description>
+    </key>
+    <key name="save-window-geometry" type="b">
+      <default>true</default>
+      <summary>Save window sizes and locations</summary>
+      <description>If active, the size and location of each dialog window will be saved when it is closed. The sizes and locations of content windows will be remembered when you quit GnuCash. Otherwise the sizes will not be saved.</description>
+    </key>
+    <key name="account-separator" type="s">
+      <default>'colon'</default>
+      <summary>Character to use as separator between account names</summary>
+      <description>This setting determines the character that will be used between components of an account name. Possible values are any single non-alphanumeric unicode character, or any of the following strings: "colon", "slash", "backslash", "dash" and "period".</description>
+    </key>
+    <key name="assoc-head" type="s">
+      <default>''</default>
+      <summary>Transaction Linked Files head path</summary>
+      <description>This is the path head for the Transaction Linked Files with relative paths</description>
+    </key>
+    <key name="file-compression" type="b">
+      <default>true</default>
+      <summary>Compress the data file</summary>
+      <description>Enables file compression when writing the data file.</description>
+    </key>
+    <key name="autosave-show-explanation" type="b">
+      <default>true</default>
+      <summary>Show auto-save explanation</summary>
+      <description>If active, GnuCash shows an explanation of the auto-save feature the first time that feature is started. Otherwise no extra explanation is shown.</description>
+    </key>
+    <key name="autosave-interval-minutes" type="d">
+      <default>5</default>
+      <summary>Auto-save time interval</summary>
+      <description>The number of minutes until saving of the data file to harddisk will be started automatically. If zero, no saving will be started automatically.</description>
+    </key>
+    <key name="save-on-close-expires" type="b">
+      <default>false</default>
+      <summary>Enable timeout on "Save changes on closing" question</summary>
+      <description>If enabled, the "Save changes on closing" question will only wait a limited number of seconds for an answer. If the user didn't answer within that time, the changes will be saved automatically and the question window closed.</description>
+    </key>
+    <key name="save-on-close-wait-time" type="i">
+      <default>20</default>
+      <summary>Time to wait for answer</summary>
+      <description>The number of seconds to wait before the question window will be closed and the changes saved automatically.</description>
+    </key>
+    <key name="negative-in-red" type="b">
+      <default>true</default>
+      <summary>Display negative amounts in red</summary>
+      <description>Display negative amounts in red</description>
+    </key>
+    <key name="auto-decimal-point" type="b">
+      <default>false</default>
+      <summary>Automatically insert a decimal point</summary>
+      <description>If active, GnuCash will automatically insert a decimal point into values that are entered without one. Otherwise GnuCash will not modify entered numbers.</description>
+    </key>
+    <key name="auto-decimal-places" type="i">
+      <default>2</default>
+      <summary>Number of automatic decimal places</summary>
+      <description>This field specifies the number of automatic decimal places that will be filled in.</description>
+    </key>
+    <key name='force-price-decimal' type="b">
+      <default>false</default>
+      <summary>Force prices to display as decimals even if they must be rounded.</summary>
+      <description>If active, GnuCash will round prices as necessary to display them as decimals instead of displaying the exact fraction if the fractional part cannot be exactly represented as a decimal.</description>
+    </key>
+    <key name="retain-type-never" type="b">
+      <default>false</default>
+      <summary>Do not create log/backup files.</summary>
+      <description>This setting specifies what to do with old log/backups files. "forever" means keep all old files. "never" means no old log/backup files are kept. Each time you save, older versions of the file are removed. "days" means keep old files for a number of days. How many days is defined in key 'retain-days'</description>
+    </key>
+    <key name="retain-type-days" type="b">
+      <default>true</default>
+      <summary>Delete old log/backup files after this many days (0 = never).</summary>
+      <description>This setting specifies what to do with old log/backups files. "forever" means keep all old files. "never" means no old log/backup files are kept. Each time you save, older versions of the file are removed. "days" means keep old files for a number of days. How many days is defined in key 'retain-days'</description>
+    </key>
+    <key name="retain-type-forever" type="b">
+      <default>false</default>
+      <summary>Do not delete log/backup files.</summary>
+      <description>This setting specifies what to do with old log/backups files. "forever" means keep all old files. "never" means no old log/backup files are kept. Each time you save, older versions of the file are removed. "days" means keep old files for a number of days. How many days is defined in key 'retain-days'</description>
+    </key>
+    <key name="retain-days" type="d">
+      <default>30.0</default>
+      <summary>Delete old log/backup files after this many days (0 = never)</summary>
+      <description>This setting specifies the number of days after which old log/backup files will be deleted (0 = never).</description>
+    </key>
+    <key name="reversed-accounts-none" type="b">
+      <default>false</default>
+      <summary>Don't sign reverse any accounts.</summary>
+      <description>This setting allows certain accounts to have their balances reversed in sign from positive to negative, or vice versa. The setting "income-expense" is for users who like to see negative expenses and positive income. The setting of "credit" is for users who want to see balances reflect the debit/credit status of the account. The setting "none" doesn't reverse the sign on any balances.</description>
+    </key>
+    <key name="reversed-accounts-credit" type="b">
+      <default>true</default>
+      <summary>Sign reverse balances on the following: Credit Card, Payable, Liability, Equity, and Income.</summary>
+      <description>This setting allows certain accounts to have their balances reversed in sign from positive to negative, or vice versa. The setting "income-expense" is for users who like to see negative expenses and positive income. The setting of "credit" is for users who want to see balances reflect the debit/credit status of the account. The setting "none" doesn't reverse the sign on any balances.</description>
+    </key>
+    <key name="reversed-accounts-incomeexpense" type="b">
+      <default>false</default>
+      <summary>Sign reverse balances on income and expense accounts.</summary>
+      <description>This setting allows certain accounts to have their balances reversed in sign from positive to negative, or vice versa. The setting "income-expense" is for users who like to see negative expenses and positive income. The setting of "credit" is for users who want to see balances reflect the debit/credit status of the account. The setting "none" doesn't reverse the sign on any balances.</description>
+    </key>
+    <key name="show-account-color" type="b">
+      <default>false</default>
+      <summary>Use account colors in the account hierarchy</summary>
+      <description>If active the account hierarchy will colorize the account using the account's custom color if set. This can serve as a visual aid to quickly identify accounts.</description>
+    </key>
+    <key name="show-account-color-tabs" type="b">
+      <default>false</default>
+      <summary>Use account colors in the tabs of open account registers</summary>
+      <description>If active the account register tabs will be colored using the account's custom color if set. This can serve as a visual aid to quickly identify accounts.</description>
+    </key>
+    <key name="use-accounting-labels" type="b">
+      <default>false</default>
+      <summary>Use formal account labels</summary>
+      <description>If active, formal accounting labels "Credit" and "Debit" will be used when designating fields on screen. Otherwise, informal labels such as Increase/Decrease, "Funds In"/"Funds Out", etc. will be used.</description>
+    </key>
+    <key name="tab-close-buttons" type="b">
+      <default>true</default>
+      <summary>Show close buttons on notebook tabs</summary>
+      <description>If active, a "close" button will be displayed on any notebook tab that may be closed. Otherwise, no such button will be shown on the tab. Regardless of this setting, pages can always be closed via the "close" menu item or the "close" button on toolbar.</description>
+    </key>
+    <key name="tab-width" type="d">
+      <default>30.0</default>
+      <summary>Width of notebook tabs</summary>
+      <description>This key specifies the maximum width of notebook tabs. If the text in the tab is longer than this value (the test is approximate) then the tab label will have the middle cut and replaced with an ellipsis.</description>
+    </key>
+    <key name="tab-open-adjacent" type="b">
+      <default>true</default>
+      <summary>Opens new tab adjacent to current tab instead of at the end</summary>
+      <description>If active, new tabs are opened adjacent to current tab. If inactive, the new tabs are opened instead at the end.</description>
+    </key>
+    <key name="currency-choice-locale" type="b">
+      <default>true</default>
+      <summary>Use the system locale currency for all newly created accounts.</summary>
+      <description>This setting controls the source of the default currency for new accounts. If set to "locale" then GnuCash will retrieve the default currency from the user's locale setting. If set to "other", GnuCash will use the setting specified by the currency-other key.</description>
+    </key>
+    <key name="currency-choice-other" type="b">
+      <default>false</default>
+      <summary>Use the specified currency for all newly created accounts.</summary>
+      <description>This setting controls the source of the default currency for new accounts. If set to "locale" then GnuCash will retrieve the default currency from the user's locale setting. If set to "other", GnuCash will use the setting specified by the currency-other key.</description>
+    </key>
+    <key name="currency-other" type="s">
+      <default>'USD'</default>
+      <summary>Default currency for new accounts</summary>
+      <description>This setting specifies the default currency used for new accounts if the currency-choice setting is set to "other". This field must contain the three letter ISO 4217 code for a currency (e.g. USD, GBP, RUB).</description>
+    </key>
+    <key name="clock-24h" type="b">
+      <default>false</default>
+      <summary>Use 24 hour time format</summary>
+      <description>If active, use a 24 hour time format. Otherwise use a 12 hour time format.</description>
+    </key>
+    <key name="date-format" type="i">
+      <default>4</default>
+      <summary>Date format choice</summary>
+      <description>This setting chooses the way dates are displayed in GnuCash. Possible values for this setting are "locale" to use the system locale setting, "ce" for Continental Europe style dates, "iso" for ISO 8601 standard dates , "uk" for United Kingdom style dates, and "us" for United States style dates.</description>
+    </key>
+    <key name="date-completion-thisyear" type="b">
+      <default>false</default>
+      <summary>In the current calendar year</summary>
+      <description>When a date is entered without year it can be completed so that it will be within the current calendar year or close to the current date based on a sliding window starting a set number of months backwards in time.</description>
+    </key>
+    <key name="date-completion-sliding" type="b">
+      <default>true</default>
+      <summary>In a sliding 12-month window starting a configurable number of months before the current month</summary>
+      <description>When a date is entered without year it can be completed so that it will be within the current calendar year or close to the current date based on a sliding window starting a set number of months backwards in time.</description>
+    </key>
+    <key name="date-backmonths" type="d">
+      <default>6.0</default>
+      <summary>Maximum number of months to go back.</summary>
+      <description>Dates will be completed so that they are close to the current date. Enter the maximum number of months to go backwards in time when completing dates.</description>
+    </key>
+    <key name="grid-lines-horizontal" type="b">
+      <default>false</default>
+      <summary>Show Horizontal Grid Lines</summary>
+      <description>If active, horizontal grid lines will be shown on table displays. Otherwise no horizontal grid lines will be shown.</description>
+    </key>
+    <key name="grid-lines-vertical" type="b">
+      <default>false</default>
+      <summary>Show Vertical Grid Lines</summary>
+      <description>If active, vertical grid lines will be shown on table displays. Otherwise no vertical grid lines will be shown.</description>
+    </key>
+    <key name="show-splash-screen" type="b">
+      <default>true</default>
+      <summary>Show splash screen</summary>
+      <description>If active, a splash screen will be shown at startup. Otherwise no splash screen will be shown.</description>
+    </key>
+    <key name="tab-position-top" type="b">
+      <default>true</default>
+      <summary>Display the notebook tabs at the top of the window.</summary>
+      <description>This setting determines the edge at which the tabs for switching pages in notebooks are drawn. Possible values are "top", "left", "bottom" and "right". It defaults to "top".</description>
+    </key>
+    <key name="tab-position-bottom" type="b">
+      <default>false</default>
+      <summary>Display the notebook tabs at the bottom of the window.</summary>
+      <description>This setting determines the edge at which the tabs for switching pages in notebooks are drawn. Possible values are "top", "left", "bottom" and "right". It defaults to "top".</description>
+    </key>
+    <key name="tab-position-left" type="b">
+      <default>false</default>
+      <summary>Display the notebook tabs at the left of the window.</summary>
+      <description>This setting determines the edge at which the tabs for switching pages in notebooks are drawn. Possible values are "top", "left", "bottom" and "right". It defaults to "top".</description>
+    </key>
+    <key name="tab-position-right" type="b">
+      <default>false</default>
+      <summary>Display the notebook tabs at the right of the window.</summary>
+      <description>This setting determines the edge at which the tabs for switching pages in notebooks are drawn. Possible values are "top", "left", "bottom" and "right". It defaults to "top".</description>
+    </key>
+    <key name="summarybar-position-top" type="b">
+      <default>false</default>
+      <summary>Display the summary bar at the top of the page.</summary>
+      <description>This setting determines the edge at which the summary bar for various pages is drawn. Possible values are "top" and "bottom". It defaults to "bottom".</description>
+    </key>
+    <key name="summarybar-position-bottom" type="b">
+      <default>true</default>
+      <summary>Display the summary bar at the bottom of the page.</summary>
+      <description>This setting determines the edge at which the summary bar for various pages is drawn. Possible values are "top" and "bottom". It defaults to "bottom".</description>
+    </key>
+    <key name="tab-next-recent" type="b">
+      <default>false</default>
+      <summary>Closing a tab moves to the most recently visited tab.</summary>
+      <description>If active, closing a tab moves to the most recently visited tab. Otherwise closing a tab moves one tab to the left.</description>
+    </key>
+    <key name="num-source" type="b">
+      <default>false</default>
+      <summary>Set book option on new files to use split "action" field for "Num" field on registers/reports</summary>
+      <description>If selected, the default book option for new files is set so that the 'Num' cell on registers shows/updates the split 'action' field and the transaction 'num' field is shown on the second line in double line mode (and is not visible in single line mode). Otherwise, the default book option for new files is set so that the 'Num' cell on registers shows/updates the transaction 'num' field.</description>
+    </key>
+    <child name="register" schema="org.gnucash.general.register"/>
+    <child name="report" schema="org.gnucash.general.report"/>
+  </schema>
+
+  <schema id="org.gnucash.general.register" path="/org/gnucash/general/register/">
+    <key name="use-gnucash-color-theme" type="b">
+      <default>true</default>
+      <summary>Color the register using a gnucash specific color theme</summary>
+      <description>When enabled the register will use a GnuCash specific color theme (green/yellow). Otherwise it will use the system color theme. Regardless of this setting the user can always override the color theme via a gnucash specific css file to be stored in the gnucash used config directory. More information can be found in the gnucash FAQ.</description>
+    </key>
+    <key name="use-theme-colors" type="b">
+      <default>false</default>
+      <summary>Superseded by "use-gnucash-color-theme"</summary>
+      <description>This option is temporarily kept around for backwards compatibility. It will be removed in a future version.</description>
+    </key>
+    <key name="enter-moves-to-end" type="b">
+      <default>false</default>
+      <summary>"Enter" key moves to bottom of register</summary>
+      <description>If active, pressing the enter key will move to the bottom of the register. Otherwise pressing the enter key will move to the next transaction line.</description>
+    </key>
+    <key name="auto-raise-lists" type="b">
+      <default>true</default>
+      <summary>Automatically raise the list of accounts or actions during input</summary>
+      <description>Automatically raise the list of accounts or actions during input</description>
+    </key>
+    <key name="tab-to-transfer-on-memorised" type="b">
+      <default>false</default>
+      <summary>Move to Transfer field when memorised transaction auto filled</summary>
+      <description>If active then after a memorised transaction is automatically filled in the cursor will move to the Transfer field. If not active then it skips to the value field.</description>
+    </key>
+    <key name="use-new-window" type="b">
+      <default>false</default>
+      <summary>Create a new window for each new register</summary>
+      <description>If active, each new register will be opened in a new window. Otherwise each new register will be opened as a tab in the main window.</description>
+    </key>
+    <key name="alternate-color-by-transaction" type="b">
+      <default>false</default>
+      <summary>Color all lines of a transaction the same</summary>
+      <description>If active all lines that make up a single transaction will use the same color for their background. Otherwise the background colors are alternated on each line.</description>
+    </key>
+    <key name="draw-horizontal-lines" type="b">
+      <default>true</default>
+      <summary>Show horizontal borders in a register</summary>
+      <description>Show horizontal borders between rows in a register. If active the border between cells will be indicated with a heavy line. Otherwise the border between cells will not be marked.</description>
+    </key>
+    <key name="draw-vertical-lines" type="b">
+      <default>true</default>
+      <summary>Show vertical borders in a register</summary>
+      <description>Show vertical borders between columns in a register. If active the border between cells will be indicated with a heavy line. Otherwise the border between cells will not be marked.</description>
+    </key>
+    <key name="future-after-blank-transaction" type="b">
+      <default>false</default>
+      <summary>Show future transactions after the blank transaction in a register</summary>
+      <description>Show future transactions after the blank transaction in a register. If active then transactions with a date in the future will be displayed at the bottom of the register after the blank transaction. Otherwise the blank transaction will be at the bottom of the register after all transactions.</description>
+    </key>
+    <key name="default-style-ledger" type="b">
+      <default>true</default>
+      <summary>Show all transactions on one line or in double line mode on two.</summary>
+      <description>This field specifies the default view style when opening a new register window. Possible values are "ledger", "auto-ledger" and "journal". The "ledger" setting says to show each transaction on one or two lines. The "auto-ledger" setting does the same, but also expands only the current transaction to show all splits. The "journal" setting shows all transactions in expanded form.</description>
+    </key>
+    <key name="default-style-autoledger" type="b">
+      <default>false</default>
+      <summary>Automatically expand the current transaction to show all splits. All other transactions are shown on one line or in double line mode on two.</summary>
+      <description>This field specifies the default view style when opening a new register window. Possible values are "ledger", "auto-ledger" and "journal". The "ledger" setting says to show each transaction on one or two lines. The "auto-ledger" setting does the same, but also expands only the current transaction to show all splits. The "journal" setting shows all transactions in expanded form.</description>
+    </key>
+    <key name="default-style-journal" type="b">
+      <default>false</default>
+      <summary>All transactions are expanded to show all splits.</summary>
+      <description>This field specifies the default view style when opening a new register window. Possible values are "ledger", "auto-ledger" and "journal". The "ledger" setting says to show each transaction on one or two lines. The "auto-ledger" setting does the same, but also expands only the current transaction to show all splits. The "journal" setting shows all transactions in expanded form.</description>
+    </key>
+    <key name="double-line-mode" type="b">
+      <default>false</default>
+      <summary>Show a second line with "Action", "Notes", and "Linked Documents" for each transaction.</summary>
+      <description>Show a second line with "Action", "Notes", and "Linked Documents" for each transaction in a register. This is the default setting for when a register is first opened. The setting can be changed at any time via the "View->Double Line" menu item.</description>
+    </key>
+    <key name="show-leaf-account-names" type="b">
+      <default>false</default>
+      <summary>Only display leaf account names.</summary>
+      <description>Show only the names of the leaf accounts in the register and in the account selection popup. The default behaviour is to display the full name, including the path in the account tree. Activating this option implies that you use unique leaf names.</description>
+    </key>
+    <key name="show-extra-dates" type="b">
+      <default>false</default>
+      <summary>Show the entered and reconcile dates</summary>
+      <description>Show the date when the transaction was entered below the posted date and reconciled date on split row.</description>
+    </key>
+    <key name="show-extra-dates-on-selection" type="b">
+      <default>false</default>
+      <summary>Show entered and reconciled dates on selection</summary>
+      <description>Show the entered date and reconciled date on transaction selection.</description>
+    </key>
+    <key name="show-calendar-buttons" type="b">
+      <default>false</default>
+      <summary>Show the calendar buttons</summary>
+      <description>Show the calendar buttons Cancel, Today and Select.</description>
+    </key>
+    <key name="selection-to-blank-on-expand" type="b">
+      <default>false</default>
+      <summary>Move the selection to the blank split on expand</summary>
+      <description>This will move the selection to the blank split when the transaction is expanded.</description>
+    </key>
+    <key name="max-transactions" type="d">
+      <default>0.0</default>
+      <summary>Number of transactions to show in a register.</summary>
+      <description>Show this many transactions in a register. A value of zero means show all transactions.</description>
+    </key>
+    <key name="key-length" type="d">
+      <default>2.0</default>
+      <summary>Number of characters for auto complete.</summary>
+      <description>This sets the number of characters before auto complete starts for description, notes and memo fields.</description>
+    </key>
+  </schema>
+  
+  <schema id="org.gnucash.general.report" path="/org/gnucash/general/report/">
+    <key name="use-new-window" type="b">
+      <default>false</default>
+      <summary>Create a new window for each new report</summary>
+      <description>If active, each new report will be opened in its own window. Otherwise new reports will be opened as tabs in the main window.</description>
+    </key>
+    <key name="currency-choice-locale" type="b">
+      <default>true</default>
+      <summary>Use the system locale currency for all newly created reports.</summary>
+      <description>This setting controls the default currency used for reports. If set to "locale" then GnuCash will retrieve the default currency from the user's locale setting. If set to "other", GnuCash will use the setting specified by the currency-other key.</description>
+    </key>
+    <key name="currency-choice-other" type="b">
+      <default>false</default>
+      <summary>Use the specified currency for all newly created reports.</summary>
+      <description>This setting controls the source of the default currency for new accounts. If set to "locale" then GnuCash will retrieve the default currency from the user's locale setting. If set to "other", GnuCash will use the setting specified by the currency-other key.</description>
+    </key>
+    <key name="currency-other" type="s">
+      <default>'USD'</default>
+      <summary>Default currency for new reports</summary>
+      <description>This setting controls the default currency used for reports. If set to "locale" then GnuCash will retrieve the default currency from the user's locale setting. If set to "other", GnuCash will use the setting specified by the currency-other key.</description>
+    </key>
+    <key name="default-zoom" type="d">
+      <default>1.0</default>
+      <summary>Zoom factor to use by default for reports.</summary>
+      <description>On high resolution screens reports tend to be hard to read.
+This option allows you to scale reports up by the set factor.
+For example setting this to 2.0 will display reports at twice their typical size.</description>
+    </key>
+    <child name="pdf-export" schema="org.gnucash.general.report.pdf-export"/>
+  </schema>
+  <schema id="org.gnucash.general.report.pdf-export" path="/org/gnucash/general/report/pdf-export/">
+    <key name="filename-format" type="s">
+      <default>'%1$s-%2$s-%3$s'</default>
+      <summary>PDF export file name format</summary>
+      <description>This setting chooses the file name for PDF export. This is a sprintf(3) string with three arguments: "%1$s" is the report name such as "Invoice". "%2$s" is the number of the report, which for an invoice report is the invoice number. "%3$s" is the date of the report, formatted according to the filename-date-format setting. Note: Any characters that are not allowed in filenames, such as '/', will be replaced with underscores '_' in the resulting file name.</description>
+    </key>
+    <key name="filename-date-format" type="s">
+      <default>'locale'</default>
+      <summary>PDF export file name date format choice</summary>
+      <description>This setting chooses the way dates are used in the filename of PDF export. Possible values for this setting are "locale" to use the system locale setting, "ce" for Continental Europe style dates, "iso" for ISO 8601 standard dates , "uk" for United Kingdom style dates, and "us" for United States style dates.</description>
+    </key>
+  </schema>
+  <schema id="org.gnucash.dev" path="/org/gnucash/dev/">
+    <key name="allow-file-incompatibility" type="b">
+      <default>false</default>
+      <summary>Allow file incompatibility with older versions.</summary>
+      <description>If active, gnucash will be allowed to intentionally break file compatibility with older versions, so that a data file saved in this version cannot be read by an older version again. Otherwise gnucash will write data files only in formats that can be read by older versions as well.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs" path="/org/gnucash/dialogs/">
+    <child name="account" schema="org.gnucash.dialogs.account"/>
+    <child name="imap-editor" schema="org.gnucash.dialogs.imap-editor"/>
+    <child name="preferences" schema="org.gnucash.dialogs.preferences"/>
+    <child name="price-editor" schema="org.gnucash.dialogs.price-editor"/>
+    <child name="pricedb-editor" schema="org.gnucash.dialogs.pricedb-editor"/>
+    <child name="reset-warnings" schema="org.gnucash.dialogs.reset-warnings"/>
+    <child name="tax-info" schema="org.gnucash.dialogs.tax-info"/>
+    <child name="fincalc" schema="org.gnucash.dialogs.fincalc"/>
+    <child name="find" schema="org.gnucash.dialogs.find"/>
+    <child name="find-account" schema="org.gnucash.dialogs.find-account"/>
+    <child name="export-accounts" schema="org.gnucash.dialogs.export-accounts"/>
+    <child name="log-replay" schema="org.gnucash.dialogs.log-replay"/>
+    <child name="open-save" schema="org.gnucash.dialogs.open-save"/>
+    <child name="report" schema="org.gnucash.dialogs.report"/>
+    <child name="report-saved-configs" schema="org.gnucash.dialogs.report-saved-configs"/>
+    <child name="lot-viewer" schema="org.gnucash.dialogs.lot-viewer"/>
+    <child name="new-user" schema="org.gnucash.dialogs.new-user"/>
+    <child name="new-hierarchy" schema="org.gnucash.dialogs.new-hierarchy"/>
+    <child name="search" schema="org.gnucash.dialogs.search"/>
+    <child name="transfer" schema="org.gnucash.dialogs.transfer"/>
+    <child name="business-doclink" schema="org.gnucash.dialogs.business-doclink"/>
+    <child name="trans-doclink" schema="org.gnucash.dialogs.trans-doclink"/>
+    <child name="style-sheet" schema="org.gnucash.dialogs.style-sheet"/>
+    <child name="options" schema="org.gnucash.dialogs.options"/>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.account" path="/org/gnucash/dialogs/account/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.imap-editor" path="/org/gnucash/dialogs/imap-editor/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.find-account" path="/org/gnucash/dialogs/find-account/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.preferences" path="/org/gnucash/dialogs/preferences/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.price-editor" path="/org/gnucash/dialogs/price-editor/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+  
+  <schema id="org.gnucash.dialogs.pricedb-editor" path="/org/gnucash/dialogs/pricedb-editor/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.reset-warnings" path="/org/gnucash/dialogs/reset-warnings/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.tax-info" path="/org/gnucash/dialogs/tax-info/">
+    <key name="paned-position" type="i">
+      <default>0</default>
+      <summary>Position of the horizontal pane divider.</summary>
+      <description>Position of the horizontal pane divider.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.fincalc" path="/org/gnucash/dialogs/fincalc/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.find" path="/org/gnucash/dialogs/find/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>This setting indicates whether to search in all items in the current class, or only in 'active' items in the current class.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.export-accounts" path="/org/gnucash/dialogs/export-accounts/">
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.log-replay" path="/org/gnucash/dialogs/log-replay/">
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.open-save" path="/org/gnucash/dialogs/open-save/">
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.report" path="/org/gnucash/dialogs/report/">
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.report-saved-configs" path="/org/gnucash/dialogs/report-saved-configs/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.lot-viewer" path="/org/gnucash/dialogs/lot-viewer/">
+    <key name="hpane-position" type="i">
+      <default>200</default>
+      <summary>Position of the horizontal pane divider.</summary>
+      <description>Position of the horizontal pane divider.</description>
+    </key>
+    <key name="vpane-position" type="i">
+      <default>200</default>
+      <summary>Position of the vertical pane divider.</summary>
+      <description>Position of the vertical pane divider.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.new-user" path="/org/gnucash/dialogs/new-user/">
+    <key name="first-startup" type="b">
+      <default>true</default>
+      <summary>Show the new user window</summary>
+      <description>If active, the new user window will be shown. Otherwise it will not be shown.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.new-hierarchy" path="/org/gnucash/dialogs/new-hierarchy/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="show-on-new-file" type="b">
+      <default>true</default>
+      <summary>New hierarchy window on "New File"</summary>
+      <description>If active, the "New Hierarchy" window will be shown whenever the "New File" menu item is chosen. Otherwise it will not be shown.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.search" path="/org/gnucash/dialogs/search/">
+    <key name="new-search-limit" type="d">
+      <default>1.0</default>
+      <summary>Default to 'new search' if fewer than this number of items is returned</summary>
+      <description>Default to 'new search' if fewer than this number of items is returned</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.transfer" path="/org/gnucash/dialogs/transfer/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business-doclink" path="/org/gnucash/dialogs/business-doclink/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.trans-doclink" path="/org/gnucash/dialogs/trans-doclink/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.style-sheet" path="/org/gnucash/dialogs/style-sheet/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.options" path="/org/gnucash/dialogs/options/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business" path="/org/gnucash/dialogs/business/">
+    <child name="customer-search" schema="org.gnucash.dialogs.business.customer-search"/>
+    <child name="employee-search" schema="org.gnucash.dialogs.business.employee-search"/>
+    <child name="invoice-search" schema="org.gnucash.dialogs.business.invoice-search"/>
+    <child name="job-search" schema="org.gnucash.dialogs.business.job-search"/>
+    <child name="order-search" schema="org.gnucash.dialogs.business.order-search"/>
+    <child name="vendor-search" schema="org.gnucash.dialogs.business.vendor-search"/>
+    <child name="invoice" schema="org.gnucash.dialogs.business.invoice"/>
+    <child name="bill" schema="org.gnucash.dialogs.business.bill"/>
+    <child name="tax-tables" schema="org.gnucash.dialogs.business.tax-tables"/>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.customer-search" path="/org/gnucash/dialogs/business/customer-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.employee-search" path="/org/gnucash/dialogs/business/employee-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.invoice-search" path="/org/gnucash/dialogs/business/invoice-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.job-search" path="/org/gnucash/dialogs/business/job-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.order-search" path="/org/gnucash/dialogs/business/order-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.vendor-search" path="/org/gnucash/dialogs/business/vendor-search/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="search-for-active-only" type="b">
+      <default>false</default>
+      <summary>Search only in active items</summary>
+      <description>If active, only the 'active' items in the current class will be searched. Otherwise all items in the current class will be searched.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.invoice" path="/org/gnucash/dialogs/business/invoice/">
+    <key name="tax-included" type="b">
+      <default>true</default>
+      <summary>Is tax included in this type of business entry?</summary>
+      <description>If set to active then tax is included by default in entries of this type. This setting is inherited by new customers and vendors.</description>
+    </key>
+    <key name="auto-pay" type="b">
+      <default>false</default>
+      <summary>Auto pay when posting.</summary>
+      <description>At post time, automatically attempt to pay customer documents with outstanding pre-payments and counter documents. The pre-payments and documents obviously have to be against the same customer. Counter documents are documents with opposite sign. For example for an invoice, customer credit notes and negative invoices are considered counter documents.</description>
+    </key>
+    <key name="notify-when-due" type="b">
+      <default>true</default>
+      <summary>Show invoices due reminder at startup</summary>
+      <description>If active, at startup GnuCash will check to see whether any invoices will become due soon. If so, it will present the user with a reminder dialog. The definition of "soon" is controlled by the "Days in Advance" setting. Otherwise GnuCash does not check for due invoices.</description>
+    </key>
+    <key name="days-in-advance" type="d">
+      <default>7.0</default>
+      <summary>Show invoices due within this many days</summary>
+      <description>This field defines the number of days in advance that GnuCash will check for due invoices. Its value is only used if the "Notify when due" setting is active.</description>
+    </key>
+    <key name="enable-toolbuttons" type="b">
+      <default>false</default>
+      <summary>Enable extra toolbar buttons for business</summary>
+      <description>If active, extra toolbar buttons for common business functions are shown as well. Otherwise they are not shown.</description>
+    </key>
+    <key name="invoice-printreport" type="i">
+      <default>0</default>
+      <summary>The invoice report to be used for printing.</summary>
+      <description>The name of the report to be used for invoice printing.</description>
+    </key>
+    <key name="use-new-window" type="b">
+      <default>false</default>
+      <summary>Open new invoice in new window</summary>
+      <description>If active, each new invoice will be opened in a new window. Otherwise a new invoice will be opened as a tab in the main window.</description>
+    </key>
+    <key name="accumulate-splits" type="b">
+      <default>true</default>
+      <summary>Accumulate multiple splits into one</summary>
+      <description>If this field is active then multiple entries in an invoice that transfer to the same account will be accumulated into a single split. This field can be overridden per invoice in the Posting dialog.</description>
+    </key>
+  </schema>
+  <schema id="org.gnucash.dialogs.business.bill" path="/org/gnucash/dialogs/business/bill/">
+    <key name="tax-included" type="b">
+      <default>true</default>
+      <summary>Is tax included in this type of business entry?</summary>
+      <description>If set to active then tax is included by default in entries of this type. This setting is inherited by new customers and vendors.</description>
+    </key>
+    <key name="auto-pay" type="b">
+      <default>false</default>
+      <summary>Auto pay when posting.</summary>
+      <description>At post time, automatically attempt to pay vendor documents with outstanding pre-payments and counter documents. The pre-payments and documents obviously have to be against the same vendor. Counter documents are documents with opposite sign. For example for a bill, vendor credit notes and negative bills are considered counter documents.</description>
+    </key>
+    <key name="notify-when-due" type="b">
+      <default>true</default>
+      <summary>Show bills due reminder at startup</summary>
+      <description>If active, at startup GnuCash will check to see whether any bills will become due soon. If so, it will present the user with a reminder dialog. The definition of "soon" is controlled by the "Days in Advance" setting. Otherwise GnuCash does not check for due bills.</description>
+    </key>
+    <key name="days-in-advance" type="d">
+      <default>7.0</default>
+      <summary>Show bills due within this many days</summary>
+      <description>This field defines the number of days in advance that GnuCash will check for due bills. Its value is only used if the "Notify when due" setting is active.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.business.tax-tables" path="/org/gnucash/dialogs/business/tax-tables/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.checkprinting" path="/org/gnucash/dialogs/print-checks/">
+    <key name="check-format-guid" type="s">
+      <default>''</default>
+      <summary>GUID of predefined check format to use</summary>
+      <description>This value specifies the predefined check format to use. The number is the guid of a known check format.</description>
+    </key>
+    <key name="check-position" type="i">
+      <default>0</default>
+      <summary>Which check position to print</summary>
+      <description>On preprinted checks containing multiple checks per page, this setting specifies which check position to print. The possible values are 0, 1 and 2, corresponding to the top, middle and bottom checks on the page.</description>
+    </key>
+    <key name="first-page-count" type="i">
+      <default>0</default>
+      <summary>Number of checks to print on the first page.</summary>
+      <description>Number of checks to print on the first page.</description>
+    </key>
+    <key name="date-format" type="i">
+      <default>7</default>
+      <summary>Date format to use</summary>
+      <description>This is the numerical identifier of the predefined date format to use.</description>
+    </key>
+    <key name="date-format-user" type="s">
+      <default>'0'</default>
+      <summary>Custom date format</summary>
+      <description>If the date format is set to indicate a custom date format, this value is used as an argument to strftime to produce the date to be printed. It may be any valid strftime string; for more information about this format, read the manual page of strftime by "man 3 strftime".</description>
+    </key>
+    <key name="custom-units" type="i">
+      <default>0</default>
+      <summary>Units in which the custom coordinates are expressed</summary>
+      <description>Units in which the custom coordinates are expressed (inches, mm, ...).</description>
+    </key>
+    <key name="custom-payee" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of payee name</summary>
+      <description>This value contains the X,Y coordinates for the start of the payee line on the check.</description>
+    </key>
+    <key name="custom-date" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of date line</summary>
+      <description>This value contains the X,Y coordinates for the start of the date line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-amount-words" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of check amount in words</summary>
+      <description>This value contains the X,Y coordinates for the start of the written amount line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-amount-number" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of check amount in numbers</summary>
+      <description>This value contains the X,Y coordinates for the start of the numerical amount line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-address" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of payee address</summary>
+      <description>This value contains the X,Y coordinates for the start of the payee address line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-notes" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of notes line</summary>
+      <description>This value contains the X,Y coordinates for the start of the notes line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-memo" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of memo line</summary>
+      <description>This value contains the X,Y coordinates for the start of the memo line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-translation" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Offset for complete check</summary>
+      <description>This value contains the X,Y offset for the complete check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="custom-rotation" type="d">
+      <default>0.0</default>
+      <summary>Rotation angle</summary>
+      <description>Number of degrees to rotate the check.</description>
+    </key>
+    <key name="splits-amount" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of split's amount in numbers</summary>
+      <description>This value contains the X,Y coordinates for the start of the split's amount line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="splits-memo" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of split's memo line</summary>
+      <description>This value contains the X,Y coordinates for the start of the split's memo line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="splits-account" type="(dd)">
+      <default>(0,0)</default>
+      <summary>Position of split's account line</summary>
+      <description>This value contains the X,Y coordinates for the start of the split's account line on the check. Coordinates are from the lower left corner of the specified check position.</description>
+    </key>
+    <key name="print-date-format" type="b">
+      <default>false</default>
+      <summary>Print the date format below the date.</summary>
+      <description>Each time the date is printed, print the date format immediately below in 8 point type using the characters Y, M, and D.</description>
+    </key>
+    <key name="default-font" type="s">
+      <default>'sans 10'</default>
+      <summary>The default check printing font</summary>
+      <description>The default font to use when printing checks. This value will be overridden by any font specified in a check description file.</description>
+    </key>
+    <key name="blocking-chars" type="b">
+      <default>false</default>
+      <summary>Print '***' before and after text.</summary>
+      <description>Print '***' before and after text.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.commodities" path="/org/gnucash/dialogs/commodities/">
+    <key name="include-iso" type="b">
+      <default>false</default>
+      <summary>Show currencies in this dialog</summary>
+      <description>Show currencies in this dialog</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.export.csv" path="/org/gnucash/dialogs/export/csv/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+    <key name="paned-position" type="i">
+      <default>0</default>
+      <summary>Window geometry</summary>
+      <description>The position of paned window when it was last closed.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.csv" path="/org/gnucash/dialogs/import/csv/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.generic" path="/org/gnucash/dialogs/import/generic/">
+    <key name="enable-skip" type="b">
+      <default>true</default>
+      <summary>Enable SKIP transaction action</summary>
+      <description>Enable the SKIP action in the transaction matcher. If enabled, a transaction whose best match's score is in the yellow zone (above the Auto-ADD threshold but below the Auto-CLEAR threshold) will be skipped by default.</description>
+    </key>
+    <key name="enable-update" type="b">
+      <default>true</default>
+      <summary>Enable UPDATE match action</summary>
+      <description>Enable the UPDATE AND RECONCILE action in the transaction matcher. If enabled, a transaction whose best match's score is above the Auto-CLEAR threshold and has a different date or amount than the matching existing transaction will cause the existing transaction to be updated and cleared by default.</description>
+    </key>
+    <key name="use-bayes" type="b">
+      <default>true</default>
+      <summary>Use bayesian matching</summary>
+      <description>Enables bayesian matching when matching imported transaction against existing transactions. Otherwise a less sophisticated rule-based matching mechanism will be used.</description>
+    </key>
+    <key name="match-threshold" type="d">
+      <default>1.0</default>
+      <summary>Minimum score to be displayed</summary>
+      <description>This field specifies the minimum matching score a potential matching transaction must have to be displayed in the match list.</description>
+    </key>
+    <key name="match-date-threshold" type="d">
+      <default>4.0</default>
+      <summary>Likely matching transaction within these days</summary>
+      <description>This field specifies the maximum number of days a transaction is likely to be a match in the list.</description>
+    </key>
+    <key name="match-date-not-threshold" type="d">
+      <default>14.0</default>
+      <summary>UnLikely matching a transaction outside of these days</summary>
+      <description>This field specifies the minimum number of days a transaction is unlikely to be a match in the list.</description>
+    </key>
+    <key name="auto-add-threshold" type="d">
+      <default>3.0</default>
+      <summary>Add matching transactions below this score</summary>
+      <description>This field specifies the threshold below which a matching transaction will be added automatically. A transaction whose best match's score is in the red zone (above the display minimum score but below or equal to the Add match score) will be added to the GnuCash file by default.</description>
+    </key>
+    <key name="auto-clear-threshold" type="d">
+      <default>6.0</default>
+      <summary>Clear matching transactions above this score</summary>
+      <description>This field specifies the threshold above which a matching transaction will be cleared by default. A transaction whose best match's score is in the green zone (above or equal to this Clear threshold) will be cleared by default.</description>
+    </key>
+    <key name="atm-fee-threshold" type="d">
+      <default>2.0</default>
+      <summary>Maximum ATM fee amount in your area</summary>
+      <description>This field specifies the extra fee that is taken into account when matching imported transactions. In some places commercial ATMs (not belonging to a financial institution) are installed in places like convenience stores. These ATMs add their fee directly to the amount instead of showing up as a separate transaction or in your monthly banking fees. For example, you withdraw $100, and you are charged $101,50 plus Interac fees. If you manually entered that $100, the amounts won't match. You should set this to whatever is the maximum such fee in your area (in units of your local currency), so the transaction will be recognised as a match.</description>
+    </key>
+    <key name="auto-create-commodity" type="b">
+      <default>false</default>
+      <summary>Automatically create new commodities</summary>
+      <description>Enables the automatic creation of new commodities if any unknown commodity is encountered during import. Otherwise the user will be asked what to do with each unknown commodity.</description>
+    </key>
+    <child name="match-picker" schema="org.gnucash.dialogs.import.generic.match-picker"/>
+    <child name="transaction-list" schema="org.gnucash.dialogs.import.generic.transaction-list"/>
+    <child name="account-picker" schema="org.gnucash.dialogs.import.generic.account-picker"/>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.generic.match-picker" path="/org/gnucash/dialogs/import/generic/match-picker/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="display-reconciled" type="b">
+     <default>true</default>
+     <summary>Display or hide reconciled matches</summary>
+     <description>Shows or hides transactions from the match picker which are already of some reconciled state.</description>
+   </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.generic.account-picker" path="/org/gnucash/dialogs/import/generic/account-picker/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.generic.transaction-list" path="/org/gnucash/dialogs/import/generic/transaction-list/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.qif" path="/org/gnucash/dialogs/import/qif/">
+    <key name="default-status-notcleared" type="b">
+      <default>true</default>
+      <summary>Default QIF transaction status</summary>
+      <description>Default status for QIF transaction when not specified in QIF file.</description>
+    </key>
+    <key name="default-status-cleared" type="b">
+      <default>false</default>
+      <summary>Default QIF transaction status</summary>
+      <description>Default status for QIF transaction when not specified in QIF file.</description>
+    </key>
+    <key name="default-status-reconciled" type="b">
+      <default>false</default>
+      <summary>When the status is not specified in a QIF file, the transactions are marked as reconciled.</summary>
+      <description>Default status for QIF transaction when not specified in QIF file.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="last-path" type="s">
+      <default>''</default>
+      <summary>Last pathname used</summary>
+      <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
+    </key>
+    <key name="show-doc" type="b">
+      <default>true</default>
+      <summary>Show documentation</summary>
+      <description>Show some documentation-only pages in QIF Import assistant.</description>
+    </key>
+    <child name="account-picker" schema="org.gnucash.dialogs.import.qif.account-picker"/>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.import.qif.account-picker" path="/org/gnucash/dialogs/import/qif/account-picker/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.reconcile" path="/org/gnucash/dialogs/reconcile/">
+    <key name="check-cleared" type="b">
+      <default>true</default>
+      <summary>Pre-select cleared transactions</summary>
+      <description>If active, all transactions marked as cleared in the register will appear already selected in the reconcile dialog. Otherwise no transactions will be initially selected.</description>
+    </key>
+    <key name="auto-interest-transfer" type="b">
+      <default>false</default>
+      <summary>Prompt for interest charges</summary>
+      <description>Prior to reconciling an account which charges or pays interest, prompt the user to enter a transaction for the interest charge or payment. Currently only enabled for Bank, Credit, Mutual, Asset, Receivable, Payable, and Liability accounts.</description>
+    </key>
+    <key name="auto-cc-payment" type="b">
+      <default>true</default>
+      <summary>Prompt for credit card payment</summary>
+      <description>If active, after reconciling a credit card account, prompt the user to enter a credit card payment. Otherwise do not prompt the user for this.</description>
+    </key>
+    <key name="always-reconcile-to-today" type="b">
+      <default>false</default>
+      <summary>Always reconcile to today</summary>
+      <description>If active, always open the reconcile dialog using today's date for the statement date, regardless of previous reconciliations.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.sxs" path="/org/gnucash/dialogs/scheduled-trans/">
+    <child name="since-last-run" schema="org.gnucash.dialogs.sxs.since-last-run"/>
+    <child name="transaction-editor" schema="org.gnucash.dialogs.sxs.transaction-editor"/>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.sxs.since-last-run" path="/org/gnucash/dialogs/scheduled-trans/since-last-run/">
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="show-at-file-open" type="b">
+      <default>true</default>
+      <summary>Run "since last run" dialog when a file is opened.</summary>
+      <description>This setting controls whether the scheduled transactions "since last run" processing is run automatically when a data file is opened. This includes the initial opening of the data file when GnuCash starts. If this setting is active, run the "since last run" process, otherwise it is not run.</description>
+    </key>
+    <key name="show-notify-window-at-file-open" type="b">
+      <default>true</default>
+      <summary>Show "since last run" notification dialog when a file is opened.</summary>
+      <description>This setting controls whether the scheduled transactions notification-only "since last run" dialog is shown when a data file is opened (if "since last run" processing is enabled on file open).  This includes the initial opening of the data file when GnuCash starts.  If this setting is active, show the dialog, otherwise it is not shown.</description>
+    </key>
+    <key name="review-transactions" type="b">
+      <default>false</default>
+      <summary>Set "Review Created Transactions" as the default for the "since last run" dialog.</summary>
+      <description>This setting controls whether as default the "review created transactions" is set for the "since last run" dialog.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.sxs.transaction-editor" path="/org/gnucash/dialogs/scheduled-trans/transaction-editor/">
+    <key name="create-auto" type="b">
+      <default>false</default>
+      <summary>Set the "auto create" flag by default</summary>
+      <description>If active, any newly created scheduled transaction will have its 'auto create' flag set active by default. The user can change this flag during transaction creation, or at any later time by editing the scheduled transaction.</description>
+    </key>
+    <key name="create-days" type="d">
+      <default>0</default>
+      <summary>How many days in advance to notify the user.</summary>
+      <description>How many days in advance to notify the user.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="notify" type="b">
+      <default>true</default>
+      <summary>Set the "notify" flag by default</summary>
+      <description>If active, any newly created scheduled transaction will have its 'notify' flag set by default. The user can change this flag during transaction creation, or at any later time by editing the scheduled transaction. This setting only has meaning if the create-auto setting is active.</description>
+    </key>
+    <key name="remind-days" type="d">
+      <default>0</default>
+      <summary>How many days in advance to remind the user.</summary>
+      <description>How many days in advance to remind the user.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.dialogs.totd" path="/org/gnucash/dialogs/tip-of-the-day/">
+    <key name="current-tip" type="i">
+      <default>0</default>
+      <summary>The next tip to show.</summary>
+      <description>The next tip to show.</description>
+    </key>
+    <key name="last-geometry" type="(iiii)">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+    <key name="show-at-startup" type="b">
+      <default>true</default>
+      <summary>Show "Tip Of The Day" at GnuCash start</summary>
+      <description>Enables the "Tip Of The Day" when GnuCash starts up. If active, the dialog will be shown. Otherwise it will not be shown.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.general.finance-quote" path="/org/gnucash/general/finance-quote/">
+    <key name="alphavantage-api-key" type="s">
+      <default>''</default>
+      <summary>Alpha Vantage API key</summary>
+      <description>To retrieve online quotes from Alphavantage, this key needs to be set. A key can be retrieved from the Alpha Vantage website.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.history" path="/org/gnucash/history/">
+    <key name="maxfiles" type="i">
+      <default>4</default>
+      <summary>Number of files in history</summary>
+      <description>This setting contains the number of files to keep in the Recently Opened Files menu. This value may be set to zero to disable the file history. This number has a maximum value of 10.</description>
+    </key>
+    <key name="file0" type="s">
+      <default>''</default>
+      <summary>Most recently opened file</summary>
+      <description>This field contains the full path of the most recently opened file.</description>
+    </key>
+    <key name="file1" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file2" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file3" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file4" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file5" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file6" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file7" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file8" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+    <key name="file9" type="s">
+      <default>''</default>
+      <summary>Next most recently opened file</summary>
+      <description>This field contains the full path of the next most recently opened file.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.warnings" path="/org/gnucash/warnings/">
+    <child name="permanent" schema="org.gnucash.warnings.permanent"/>
+    <child name="temporary" schema="org.gnucash.warnings.temporary"/>
+  </schema>
+  <schema id="org.gnucash.warnings.permanent" path="/org/gnucash/warnings/permanent/">
+    <key name="checkprinting-multi-acct" type="i">
+      <default>0</default>
+      <summary>Print checks from multiple accounts</summary>
+      <description>This dialog is presented if you try to print checks from multiple accounts at the same time.</description>
+    </key>
+    <key name="closing-window-question" type="i">
+      <default>0</default>
+      <summary>Confirm Window Close</summary>
+      <description>This dialog is presented when there is more than one window.</description>
+    </key>
+    <key name="inv-entry-mod" type="i">
+      <default>0</default>
+      <summary>Commit changes to a invoice entry</summary>
+      <description>This dialog is presented when you attempt to move out of a modified invoice entry. The changed data must be either saved or discarded.</description>
+    </key>
+    <key name="inv-entry-dup" type="i">
+      <default>0</default>
+      <summary>Duplicating a changed invoice entry</summary>
+      <description>This dialog is presented when you attempt to duplicate a modified invoice entry. The changed data must be saved or the duplication canceled.</description>
+    </key>
+    <key name="price-comm-del" type="i">
+      <default>0</default>
+      <summary>Delete a commodity</summary>
+      <description>This dialog is presented before allowing you to delete a commodity.</description>
+    </key>
+    <key name="price-comm-del-quotes" type="i">
+      <default>0</default>
+      <summary>Delete a commodity with price quotes</summary>
+      <description>This dialog is presented before allowing you to delete a commodity that has price quotes attached. Deleting the commodity will delete the quotes as well.</description>
+    </key>
+    <key name="price-quotes-del" type="i">
+      <default>0</default>
+      <summary>Delete multiple price quotes</summary>
+      <description>This dialog is presented before allowing you to delete multiple price quotes at one time.</description>
+    </key>
+    <key name="price-quotes-replace" type="i">
+      <default>0</default>
+      <summary>Replace existing price</summary>
+      <description>This dialog is presented before allowing you to replace an existing price.</description>
+    </key>
+    <key name="reg-is-acct-pay-rec" type="i">
+      <default>0</default>
+      <summary>Edit account payable/accounts receivable register</summary>
+      <description>This dialog is presented before allowing you to edit an accounts payable/accounts receivable account. These account types are reserved for the business features and should rarely be manipulated manually.</description>
+    </key>
+    <key name="reg-is-read-only" type="i">
+      <default>0</default>
+      <summary>Read only register</summary>
+      <description>This dialog is presented when a read-only register is opened.</description>
+    </key>
+    <key name="reg-recd-split-mod" type="i">
+      <default>0</default>
+      <summary>Change contents of reconciled split</summary>
+      <description>This dialog is presented before allowing you to change the contents of a reconciled split. Allowing these changes can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-recd-split-unrec" type="i">
+      <default>0</default>
+      <summary>Mark transaction split as unreconciled</summary>
+      <description>This dialog is presented before allowing you to mark a transaction split as unreconciled. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-split-del" type="i">
+      <default>0</default>
+      <summary>Remove a split from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove a split from a transaction.</description>
+    </key>
+    <key name="reg-split-del-recd" type="i">
+      <default>0</default>
+      <summary>Remove a reconciled split from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove a reconciled split from a transaction. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-split-del-all" type="i">
+      <default>0</default>
+      <summary>Remove all the splits from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove all splits from a transaction.</description>
+    </key>
+    <key name="reg-split-del-all-recd" type="i">
+      <default>0</default>
+      <summary>Remove all the splits from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove all splits (including some reconciled splits) from a transaction. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-trans-del" type="i">
+      <default>0</default>
+      <summary>Delete a transaction</summary>
+      <description>This dialog is presented before allowing you to delete a transaction.</description>
+    </key>
+    <key name="reg-trans-del-recd" type="i">
+      <default>0</default>
+      <summary>Delete a transaction with reconciled splits</summary>
+      <description>This dialog is presented before allowing you to delete a transaction that contains reconciled splits. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-trans-dup" type="i">
+      <default>0</default>
+      <summary>Duplicating a changed transaction</summary>
+      <description>This dialog is presented when you attempt to duplicate a modified transaction. The changed data must be saved or the duplication canceled.</description>
+    </key>
+    <key name="reg-trans-mod" type="i">
+      <default>0</default>
+      <summary>Commit changes to a transaction</summary>
+      <description>This dialog is presented when you attempt to move out of a modified transaction. The changed data must be either saved or discarded.</description>
+    </key>
+  </schema>
+  
+  <schema id="org.gnucash.warnings.temporary" path="/org/gnucash/warnings/temporary/">
+    <key name="checkprinting-multi-acct" type="i">
+      <default>0</default>
+      <summary>Print checks from multiple accounts</summary>
+      <description>This dialog is presented if you try to print checks from multiple accounts at the same time.</description>
+    </key>
+    <key name="closing-window-question" type="i">
+      <default>0</default>
+      <summary>Confirm Window Close</summary>
+      <description>This dialog is presented when there is more than one window.</description>
+    </key>
+    <key name="inv-entry-mod" type="i">
+      <default>0</default>
+      <summary>Commit changes to a invoice entry</summary>
+      <description>This dialog is presented when you attempt to move out of a modified invoice entry. The changed data must be either saved or discarded.</description>
+    </key>
+    <key name="inv-entry-dup" type="i">
+      <default>0</default>
+      <summary>Duplicating a changed invoice entry</summary>
+      <description>This dialog is presented when you attempt to duplicate a modified invoice entry. The changed data must be saved or the duplication canceled.</description>
+    </key>
+    <key name="price-comm-del" type="i">
+      <default>0</default>
+      <summary>Delete a commodity</summary>
+      <description>This dialog is presented before allowing you to delete a commodity.</description>
+    </key>
+    <key name="price-comm-del-quotes" type="i">
+      <default>0</default>
+      <summary>Delete a commodity with price quotes</summary>
+      <description>This dialog is presented before allowing you to delete a commodity that has price quotes attached. Deleting the commodity will delete the quotes as well.</description>
+    </key>
+    <key name="price-quotes-del" type="i">
+      <default>0</default>
+      <summary>Delete multiple price quotes</summary>
+      <description>This dialog is presented before allowing you to delete multiple price quotes at one time.</description>
+    </key>
+    <key name="price-quotes-replace" type="i">
+      <default>0</default>
+      <summary>Replace existing price</summary>
+      <description>This dialog is presented before allowing you to replace an existing price.</description>
+    </key>
+    <key name="reg-is-acct-pay-rec" type="i">
+      <default>0</default>
+      <summary>Edit account payable/accounts receivable register</summary>
+      <description>This dialog is presented before allowing you to edit an accounts payable/accounts receivable account. These account types are reserved for the business features and should rarely be manipulated manually.</description>
+    </key>
+    <key name="reg-is-read-only" type="i">
+      <default>0</default>
+      <summary>Read only register</summary>
+      <description>This dialog is presented when a read-only register is opened.</description>
+    </key>
+    <key name="reg-recd-split-mod" type="i">
+      <default>0</default>
+      <summary>Change contents of reconciled split</summary>
+      <description>This dialog is presented before allowing you to change the contents of a reconciled split. Allowing these changes can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-recd-split-unrec" type="i">
+      <default>0</default>
+      <summary>Mark transaction split as unreconciled</summary>
+      <description>This dialog is presented before allowing you to mark a transaction split as unreconciled. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-split-del" type="i">
+      <default>0</default>
+      <summary>Remove a split from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove a split from a transaction.</description>
+    </key>
+    <key name="reg-split-del-recd" type="i">
+      <default>0</default>
+      <summary>Remove a reconciled split from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove a reconciled split from a transaction. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-split-del-all" type="i">
+      <default>0</default>
+      <summary>Remove all the splits from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove all splits from a transaction.</description>
+    </key>
+    <key name="reg-split-del-all-recd" type="i">
+      <default>0</default>
+      <summary>Remove all the splits from a transaction</summary>
+      <description>This dialog is presented before allowing you to remove all splits (including some reconciled splits) from a transaction. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-trans-del" type="i">
+      <default>0</default>
+      <summary>Delete a transaction</summary>
+      <description>This dialog is presented before allowing you to delete a transaction.</description>
+    </key>
+    <key name="reg-trans-del-recd" type="i">
+      <default>0</default>
+      <summary>Delete a transaction with reconciled splits</summary>
+      <description>This dialog is presented before allowing you to delete a transaction that contains reconciled splits. Doing so will throw off the reconciled value of the register and can make it hard to perform future reconciliations.</description>
+    </key>
+    <key name="reg-trans-dup" type="i">
+      <default>0</default>
+      <summary>Duplicating a changed transaction</summary>
+      <description>This dialog is presented when you attempt to duplicate a modified transaction. The changed data must be saved or the duplication canceled.</description>
+    </key>
+    <key name="reg-trans-mod" type="i">
+      <default>0</default>
+      <summary>Commit changes to a transaction</summary>
+      <description>This dialog is presented when you attempt to move out of a modified transaction. The changed data must be either saved or discarded.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.window.pages" path="/org/gnucash/window/pages/account-tree/">
+    <key name="account-code-visible" type="b">
+      <default>false</default>
+      <summary>Display this column</summary>
+      <description>This setting controls whether the given column will be visible in the view. TRUE means visible, FALSE means hidden.</description>
+    </key>
+    <key name="account-code-width" type="i">
+      <default>0</default>
+      <summary>Width of this column</summary>
+      <description>This setting stores the width of the given column in pixels.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnucash.window.pages.account-tree.summary" path="/org/gnucash/window/pages/account-tree/summary/">
+    <key name="grand-total" type="b">
+      <default>true</default>
+      <summary>Show a grand total of all accounts converted to the default report currency</summary>
+      <description>Show a grand total of all accounts converted to the default report currency</description>
+    </key>
+    <key name="non-currency" type="b">
+      <default>true</default>
+      <summary>Show non currency commodities</summary>
+      <description>If active, non currency commodities (stocks) will be shown. Otherwise they will be hidden.</description>
+    </key>
+    <key name="start-choice-relative" type="b">
+      <default>true</default>
+      <summary>Use relative profit/loss starting date</summary>
+      <description>This setting controls the type of starting date used in profit/loss calculations. If set to "absolute" then GnuCash will retrieve the starting date specified by the start-date key. If set to anything else, GnuCash will retrieve the starting date specified by the start-period key.</description>
+    </key>
+    <key name="start-choice-absolute" type="b">
+      <default>false</default>
+      <summary>Use absolute profit/loss starting date</summary>
+      <description>This setting controls the type of starting date used in profit/loss calculations. If set to "absolute" then GnuCash will retrieve the starting date specified by the start-date key. If set to anything else, GnuCash will retrieve the starting date specified by the start-period key.</description>
+    </key>
+    <key name="start-date" type="x">
+      <default>0</default>
+      <summary>Starting date (in seconds from Jan 1, 1970)</summary>
+      <description>This setting controls the starting date set in profit/loss calculations if the start-choice setting is set to "absolute". This field should contain a date as represented in seconds from January 1st, 1970.</description>
+    </key>
+    <key name="start-period" type="i">
+      <default>5</default>
+      <summary>Starting time period identifier</summary>
+      <description>This setting controls the starting date set in profit/loss calculations if the start-choice setting is set to anything other than "absolute". This field should contain a value between 0 and 8.</description>
+    </key>
+    <key name="end-choice-relative" type="b">
+      <default>true</default>
+      <summary>Use relative profit/loss ending date</summary>
+      <description>This setting controls the type of ending date used in profit/loss calculations. If set to "absolute" then GnuCash will retrieve the ending date specified by the end-date key. If set to anything else, GnuCash will retrieve the ending date specified by the end-period key.</description>
+    </key>
+    <key name="end-choice-absolute" type="b">
+      <default>false</default>
+      <summary>Use absolute profit/loss ending date</summary>
+      <description>This setting controls the type of ending date used in profit/loss calculations. If set to "absolute" then GnuCash will retrieve the ending date specified by the end-date key. If set to anything else, GnuCash will retrieve the ending date specified by the end-period key.</description>
+    </key>
+    <key name="end-date" type="x">
+      <default>0</default>
+      <summary>Ending date (in seconds from Jan 1, 1970)</summary>
+      <description>This setting controls the ending date set in profit/loss calculations if the end-choice setting is set to "absolute". This field should contain a date as represented in seconds from January 1st, 1970.</description>
+    </key>
+    <key name="end-period" type="i">
+      <default>5</default>
+      <summary>Ending time period identifier</summary>
+      <description>This setting controls the ending date set in profit/loss calculations if the end-choice setting is set to anything other than "absolute". This field should contain a value between 0 and 8.</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.business.gschema.xml.in
similarity index 82%
rename from gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.business.gschema.xml.in
index 9bc12664b..3a9329e22 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.business.gschema.xml.in
@@ -1,17 +1,17 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.business" path="/org/gnucash/dialogs/business/">
-    <child name="customer-search" schema="org.gnucash.dialogs.business.customer-search"/>
-    <child name="employee-search" schema="org.gnucash.dialogs.business.employee-search"/>
-    <child name="invoice-search" schema="org.gnucash.dialogs.business.invoice-search"/>
-    <child name="job-search" schema="org.gnucash.dialogs.business.job-search"/>
-    <child name="order-search" schema="org.gnucash.dialogs.business.order-search"/>
-    <child name="vendor-search" schema="org.gnucash.dialogs.business.vendor-search"/>
-    <child name="invoice" schema="org.gnucash.dialogs.business.invoice"/>
-    <child name="bill" schema="org.gnucash.dialogs.business.bill"/>
-    <child name="tax-tables" schema="org.gnucash.dialogs.business.tax-tables"/>
+  <schema id="org.gnucash.GnuCash.dialogs.business" path="/org/gnucash/GnuCash/dialogs/business/">
+    <child name="customer-search" schema="org.gnucash.GnuCash.dialogs.business.customer-search"/>
+    <child name="employee-search" schema="org.gnucash.GnuCash.dialogs.business.employee-search"/>
+    <child name="invoice-search" schema="org.gnucash.GnuCash.dialogs.business.invoice-search"/>
+    <child name="job-search" schema="org.gnucash.GnuCash.dialogs.business.job-search"/>
+    <child name="order-search" schema="org.gnucash.GnuCash.dialogs.business.order-search"/>
+    <child name="vendor-search" schema="org.gnucash.GnuCash.dialogs.business.vendor-search"/>
+    <child name="invoice" schema="org.gnucash.GnuCash.dialogs.business.invoice"/>
+    <child name="bill" schema="org.gnucash.GnuCash.dialogs.business.bill"/>
+    <child name="tax-tables" schema="org.gnucash.GnuCash.dialogs.business.tax-tables"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.customer-search" path="/org/gnucash/dialogs/business/customer-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.customer-search" path="/org/gnucash/GnuCash/dialogs/business/customer-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -26,7 +26,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.employee-search" path="/org/gnucash/dialogs/business/employee-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.employee-search" path="/org/gnucash/GnuCash/dialogs/business/employee-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -41,7 +41,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.invoice-search" path="/org/gnucash/dialogs/business/invoice-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.invoice-search" path="/org/gnucash/GnuCash/dialogs/business/invoice-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -56,7 +56,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.job-search" path="/org/gnucash/dialogs/business/job-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.job-search" path="/org/gnucash/GnuCash/dialogs/business/job-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -71,7 +71,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.order-search" path="/org/gnucash/dialogs/business/order-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.order-search" path="/org/gnucash/GnuCash/dialogs/business/order-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -86,7 +86,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.vendor-search" path="/org/gnucash/dialogs/business/vendor-search/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.vendor-search" path="/org/gnucash/GnuCash/dialogs/business/vendor-search/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -101,7 +101,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.invoice" path="/org/gnucash/dialogs/business/invoice/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.invoice" path="/org/gnucash/GnuCash/dialogs/business/invoice/">
     <key name="tax-included" type="b">
       <default>true</default>
       <summary>Is tax included in this type of business entry?</summary>
@@ -143,7 +143,7 @@
       <description>If this field is active then multiple entries in an invoice that transfer to the same account will be accumulated into a single split. This field can be overridden per invoice in the Posting dialog.</description>
     </key>
   </schema>
-  <schema id="org.gnucash.dialogs.business.bill" path="/org/gnucash/dialogs/business/bill/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.bill" path="/org/gnucash/GnuCash/dialogs/business/bill/">
     <key name="tax-included" type="b">
       <default>true</default>
       <summary>Is tax included in this type of business entry?</summary>
@@ -166,7 +166,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business.tax-tables" path="/org/gnucash/dialogs/business/tax-tables/">
+  <schema id="org.gnucash.GnuCash.dialogs.business.tax-tables" path="/org/gnucash/GnuCash/dialogs/business/tax-tables/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml.in
similarity index 98%
rename from gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml.in
index 89f2de242..2cb7811ae 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.checkprinting" path="/org/gnucash/dialogs/print-checks/">
+  <schema id="org.gnucash.GnuCash.dialogs.checkprinting" path="/org/gnucash/GnuCash/dialogs/print-checks/">
     <key name="check-format-guid" type="s">
       <default>''</default>
       <summary>GUID of predefined check format to use</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.commodities.gschema.xml.in
similarity index 86%
rename from gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.commodities.gschema.xml.in
index 83eda98f6..45c40bbf4 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.commodities.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.commodities" path="/org/gnucash/dialogs/commodities/">
+  <schema id="org.gnucash.GnuCash.dialogs.commodities" path="/org/gnucash/GnuCash/dialogs/commodities/">
     <key name="include-iso" type="b">
       <default>false</default>
       <summary>Show currencies in this dialog</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.export.csv.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.export.csv.gschema.xml.in
similarity index 90%
rename from gnucash/gschemas/org.gnucash.dialogs.export.csv.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.export.csv.gschema.xml.in
index 7a69d4fe3..39d744b40 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.export.csv.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.export.csv.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.export.csv" path="/org/gnucash/dialogs/export/csv/">
+  <schema id="org.gnucash.GnuCash.dialogs.export.csv" path="/org/gnucash/GnuCash/dialogs/export/csv/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in
similarity index 70%
rename from gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in
index 54db9ec6d..8442f4f43 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in
@@ -1,32 +1,32 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs" path="/org/gnucash/dialogs/">
-    <child name="account" schema="org.gnucash.dialogs.account"/>
-    <child name="imap-editor" schema="org.gnucash.dialogs.imap-editor"/>
-    <child name="preferences" schema="org.gnucash.dialogs.preferences"/>
-    <child name="price-editor" schema="org.gnucash.dialogs.price-editor"/>
-    <child name="pricedb-editor" schema="org.gnucash.dialogs.pricedb-editor"/>
-    <child name="reset-warnings" schema="org.gnucash.dialogs.reset-warnings"/>
-    <child name="tax-info" schema="org.gnucash.dialogs.tax-info"/>
-    <child name="fincalc" schema="org.gnucash.dialogs.fincalc"/>
-    <child name="find" schema="org.gnucash.dialogs.find"/>
-    <child name="find-account" schema="org.gnucash.dialogs.find-account"/>
-    <child name="export-accounts" schema="org.gnucash.dialogs.export-accounts"/>
-    <child name="log-replay" schema="org.gnucash.dialogs.log-replay"/>
-    <child name="open-save" schema="org.gnucash.dialogs.open-save"/>
-    <child name="report" schema="org.gnucash.dialogs.report"/>
-    <child name="report-saved-configs" schema="org.gnucash.dialogs.report-saved-configs"/>
-    <child name="lot-viewer" schema="org.gnucash.dialogs.lot-viewer"/>
-    <child name="new-user" schema="org.gnucash.dialogs.new-user"/>
-    <child name="new-hierarchy" schema="org.gnucash.dialogs.new-hierarchy"/>
-    <child name="search" schema="org.gnucash.dialogs.search"/>
-    <child name="transfer" schema="org.gnucash.dialogs.transfer"/>
-    <child name="business-doclink" schema="org.gnucash.dialogs.business-doclink"/>
-    <child name="trans-doclink" schema="org.gnucash.dialogs.trans-doclink"/>
-    <child name="style-sheet" schema="org.gnucash.dialogs.style-sheet"/>
-    <child name="options" schema="org.gnucash.dialogs.options"/>
+  <schema id="org.gnucash.GnuCash.dialogs" path="/org/gnucash/GnuCash/dialogs/">
+    <child name="account" schema="org.gnucash.GnuCash.dialogs.account"/>
+    <child name="imap-editor" schema="org.gnucash.GnuCash.dialogs.imap-editor"/>
+    <child name="preferences" schema="org.gnucash.GnuCash.dialogs.preferences"/>
+    <child name="price-editor" schema="org.gnucash.GnuCash.dialogs.price-editor"/>
+    <child name="pricedb-editor" schema="org.gnucash.GnuCash.dialogs.pricedb-editor"/>
+    <child name="reset-warnings" schema="org.gnucash.GnuCash.dialogs.reset-warnings"/>
+    <child name="tax-info" schema="org.gnucash.GnuCash.dialogs.tax-info"/>
+    <child name="fincalc" schema="org.gnucash.GnuCash.dialogs.fincalc"/>
+    <child name="find" schema="org.gnucash.GnuCash.dialogs.find"/>
+    <child name="find-account" schema="org.gnucash.GnuCash.dialogs.find-account"/>
+    <child name="export-accounts" schema="org.gnucash.GnuCash.dialogs.export-accounts"/>
+    <child name="log-replay" schema="org.gnucash.GnuCash.dialogs.log-replay"/>
+    <child name="open-save" schema="org.gnucash.GnuCash.dialogs.open-save"/>
+    <child name="report" schema="org.gnucash.GnuCash.dialogs.report"/>
+    <child name="report-saved-configs" schema="org.gnucash.GnuCash.dialogs.report-saved-configs"/>
+    <child name="lot-viewer" schema="org.gnucash.GnuCash.dialogs.lot-viewer"/>
+    <child name="new-user" schema="org.gnucash.GnuCash.dialogs.new-user"/>
+    <child name="new-hierarchy" schema="org.gnucash.GnuCash.dialogs.new-hierarchy"/>
+    <child name="search" schema="org.gnucash.GnuCash.dialogs.search"/>
+    <child name="transfer" schema="org.gnucash.GnuCash.dialogs.transfer"/>
+    <child name="business-doclink" schema="org.gnucash.GnuCash.dialogs.business-doclink"/>
+    <child name="trans-doclink" schema="org.gnucash.GnuCash.dialogs.trans-doclink"/>
+    <child name="style-sheet" schema="org.gnucash.GnuCash.dialogs.style-sheet"/>
+    <child name="options" schema="org.gnucash.GnuCash.dialogs.options"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.account" path="/org/gnucash/dialogs/account/">
+  <schema id="org.gnucash.GnuCash.dialogs.account" path="/org/gnucash/GnuCash/dialogs/account/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -36,7 +36,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.imap-editor" path="/org/gnucash/dialogs/imap-editor/">
+  <schema id="org.gnucash.GnuCash.dialogs.imap-editor" path="/org/gnucash/GnuCash/dialogs/imap-editor/">
     <key type="(iiii)" name="last-geometry">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -46,7 +46,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.find-account" path="/org/gnucash/dialogs/find-account/">
+  <schema id="org.gnucash.GnuCash.dialogs.find-account" path="/org/gnucash/GnuCash/dialogs/find-account/">
     <key type="(iiii)" name="last-geometry">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -56,7 +56,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.preferences" path="/org/gnucash/dialogs/preferences/">
+  <schema id="org.gnucash.GnuCash.dialogs.preferences" path="/org/gnucash/GnuCash/dialogs/preferences/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -66,7 +66,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.price-editor" path="/org/gnucash/dialogs/price-editor/">
+  <schema id="org.gnucash.GnuCash.dialogs.price-editor" path="/org/gnucash/GnuCash/dialogs/price-editor/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -76,7 +76,7 @@
     </key>
   </schema>
   
-  <schema id="org.gnucash.dialogs.pricedb-editor" path="/org/gnucash/dialogs/pricedb-editor/">
+  <schema id="org.gnucash.GnuCash.dialogs.pricedb-editor" path="/org/gnucash/GnuCash/dialogs/pricedb-editor/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -86,7 +86,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.reset-warnings" path="/org/gnucash/dialogs/reset-warnings/">
+  <schema id="org.gnucash.GnuCash.dialogs.reset-warnings" path="/org/gnucash/GnuCash/dialogs/reset-warnings/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -96,7 +96,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.tax-info" path="/org/gnucash/dialogs/tax-info/">
+  <schema id="org.gnucash.GnuCash.dialogs.tax-info" path="/org/gnucash/GnuCash/dialogs/tax-info/">
     <key name="paned-position" type="i">
       <default>0</default>
       <summary>Position of the horizontal pane divider.</summary>
@@ -111,7 +111,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.fincalc" path="/org/gnucash/dialogs/fincalc/">
+  <schema id="org.gnucash.GnuCash.dialogs.fincalc" path="/org/gnucash/GnuCash/dialogs/fincalc/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -121,7 +121,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.find" path="/org/gnucash/dialogs/find/">
+  <schema id="org.gnucash.GnuCash.dialogs.find" path="/org/gnucash/GnuCash/dialogs/find/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -136,7 +136,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.export-accounts" path="/org/gnucash/dialogs/export-accounts/">
+  <schema id="org.gnucash.GnuCash.dialogs.export-accounts" path="/org/gnucash/GnuCash/dialogs/export-accounts/">
     <key name="last-path" type="s">
       <default>''</default>
       <summary>Last pathname used</summary>
@@ -144,7 +144,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.log-replay" path="/org/gnucash/dialogs/log-replay/">
+  <schema id="org.gnucash.GnuCash.dialogs.log-replay" path="/org/gnucash/GnuCash/dialogs/log-replay/">
     <key name="last-path" type="s">
       <default>''</default>
       <summary>Last pathname used</summary>
@@ -152,7 +152,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.open-save" path="/org/gnucash/dialogs/open-save/">
+  <schema id="org.gnucash.GnuCash.dialogs.open-save" path="/org/gnucash/GnuCash/dialogs/open-save/">
     <key name="last-path" type="s">
       <default>''</default>
       <summary>Last pathname used</summary>
@@ -160,7 +160,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.report" path="/org/gnucash/dialogs/report/">
+  <schema id="org.gnucash.GnuCash.dialogs.report" path="/org/gnucash/GnuCash/dialogs/report/">
     <key name="last-path" type="s">
       <default>''</default>
       <summary>Last pathname used</summary>
@@ -168,7 +168,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.report-saved-configs" path="/org/gnucash/dialogs/report-saved-configs/">
+  <schema id="org.gnucash.GnuCash.dialogs.report-saved-configs" path="/org/gnucash/GnuCash/dialogs/report-saved-configs/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -178,7 +178,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.lot-viewer" path="/org/gnucash/dialogs/lot-viewer/">
+  <schema id="org.gnucash.GnuCash.dialogs.lot-viewer" path="/org/gnucash/GnuCash/dialogs/lot-viewer/">
     <key name="hpane-position" type="i">
       <default>200</default>
       <summary>Position of the horizontal pane divider.</summary>
@@ -198,7 +198,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.new-user" path="/org/gnucash/dialogs/new-user/">
+  <schema id="org.gnucash.GnuCash.dialogs.new-user" path="/org/gnucash/GnuCash/dialogs/new-user/">
     <key name="first-startup" type="b">
       <default>true</default>
       <summary>Show the new user window</summary>
@@ -206,7 +206,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.new-hierarchy" path="/org/gnucash/dialogs/new-hierarchy/">
+  <schema id="org.gnucash.GnuCash.dialogs.new-hierarchy" path="/org/gnucash/GnuCash/dialogs/new-hierarchy/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -221,7 +221,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.search" path="/org/gnucash/dialogs/search/">
+  <schema id="org.gnucash.GnuCash.dialogs.search" path="/org/gnucash/GnuCash/dialogs/search/">
     <key name="new-search-limit" type="d">
       <default>1.0</default>
       <summary>Default to 'new search' if fewer than this number of items is returned</summary>
@@ -229,7 +229,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.transfer" path="/org/gnucash/dialogs/transfer/">
+  <schema id="org.gnucash.GnuCash.dialogs.transfer" path="/org/gnucash/GnuCash/dialogs/transfer/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -239,7 +239,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.business-doclink" path="/org/gnucash/dialogs/business-doclink/">
+  <schema id="org.gnucash.GnuCash.dialogs.business-doclink" path="/org/gnucash/GnuCash/dialogs/business-doclink/">
     <key type="(iiii)" name="last-geometry">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -249,7 +249,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.trans-doclink" path="/org/gnucash/dialogs/trans-doclink/">
+  <schema id="org.gnucash.GnuCash.dialogs.trans-doclink" path="/org/gnucash/GnuCash/dialogs/trans-doclink/">
     <key type="(iiii)" name="last-geometry">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -259,7 +259,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.style-sheet" path="/org/gnucash/dialogs/style-sheet/">
+  <schema id="org.gnucash.GnuCash.dialogs.style-sheet" path="/org/gnucash/GnuCash/dialogs/style-sheet/">
     <key type="(iiii)" name="last-geometry">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -269,7 +269,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.options" path="/org/gnucash/dialogs/options/">
+  <schema id="org.gnucash.GnuCash.dialogs.options" path="/org/gnucash/GnuCash/dialogs/options/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.import.csv.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.csv.gschema.xml.in
similarity index 88%
rename from gnucash/gschemas/org.gnucash.dialogs.import.csv.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.csv.gschema.xml.in
index ed71e4752..eab6bbcd0 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.import.csv.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.csv.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.import.csv" path="/org/gnucash/dialogs/import/csv/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.csv" path="/org/gnucash/GnuCash/dialogs/import/csv/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.import.generic.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in
similarity index 87%
rename from gnucash/gschemas/org.gnucash.dialogs.import.generic.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in
index b4d67047d..0d8e39126 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.import.generic.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.import.generic" path="/org/gnucash/dialogs/import/generic/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.generic" path="/org/gnucash/GnuCash/dialogs/import/generic/">
     <key name="enable-skip" type="b">
       <default>true</default>
       <summary>Enable SKIP transaction action</summary>
@@ -50,12 +50,12 @@
       <summary>Automatically create new commodities</summary>
       <description>Enables the automatic creation of new commodities if any unknown commodity is encountered during import. Otherwise the user will be asked what to do with each unknown commodity.</description>
     </key>
-    <child name="match-picker" schema="org.gnucash.dialogs.import.generic.match-picker"/>
-    <child name="transaction-list" schema="org.gnucash.dialogs.import.generic.transaction-list"/>
-    <child name="account-picker" schema="org.gnucash.dialogs.import.generic.account-picker"/>
+    <child name="match-picker" schema="org.gnucash.GnuCash.dialogs.import.generic.match-picker"/>
+    <child name="transaction-list" schema="org.gnucash.GnuCash.dialogs.import.generic.transaction-list"/>
+    <child name="account-picker" schema="org.gnucash.GnuCash.dialogs.import.generic.account-picker"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.generic.match-picker" path="/org/gnucash/dialogs/import/generic/match-picker/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.generic.match-picker" path="/org/gnucash/GnuCash/dialogs/import/generic/match-picker/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -70,7 +70,7 @@
    </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.generic.account-picker" path="/org/gnucash/dialogs/import/generic/account-picker/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.generic.account-picker" path="/org/gnucash/GnuCash/dialogs/import/generic/account-picker/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -80,7 +80,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.generic.transaction-list" path="/org/gnucash/dialogs/import/generic/transaction-list/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.generic.transaction-list" path="/org/gnucash/GnuCash/dialogs/import/generic/transaction-list/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.import.qif.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.qif.gschema.xml.in
similarity index 86%
rename from gnucash/gschemas/org.gnucash.dialogs.import.qif.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.qif.gschema.xml.in
index fb5d8630b..8c4544a6d 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.import.qif.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.qif.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.import.qif" path="/org/gnucash/dialogs/import/qif/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.qif" path="/org/gnucash/GnuCash/dialogs/import/qif/">
     <key name="default-status-notcleared" type="b">
       <default>true</default>
       <summary>Default QIF transaction status</summary>
@@ -32,10 +32,10 @@
       <summary>Show documentation</summary>
       <description>Show some documentation-only pages in QIF Import assistant.</description>
     </key>
-    <child name="account-picker" schema="org.gnucash.dialogs.import.qif.account-picker"/>
+    <child name="account-picker" schema="org.gnucash.GnuCash.dialogs.import.qif.account-picker"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.qif.account-picker" path="/org/gnucash/dialogs/import/qif/account-picker/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.qif.account-picker" path="/org/gnucash/GnuCash/dialogs/import/qif/account-picker/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.reconcile.gschema.xml.in
similarity index 94%
rename from gnucash/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.reconcile.gschema.xml.in
index 400bf185e..3e78eee93 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.reconcile.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.reconcile" path="/org/gnucash/dialogs/reconcile/">
+  <schema id="org.gnucash.GnuCash.dialogs.reconcile" path="/org/gnucash/GnuCash/dialogs/reconcile/">
     <key name="check-cleared" type="b">
       <default>true</default>
       <summary>Pre-select cleared transactions</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
similarity index 86%
rename from gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
index bdd25e2eb..641e64ce4 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
@@ -1,10 +1,10 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.sxs" path="/org/gnucash/dialogs/scheduled-trans/">
-    <child name="since-last-run" schema="org.gnucash.dialogs.sxs.since-last-run"/>
-    <child name="transaction-editor" schema="org.gnucash.dialogs.sxs.transaction-editor"/>
+  <schema id="org.gnucash.GnuCash.dialogs.sxs" path="/org/gnucash/GnuCash/dialogs/scheduled-trans/">
+    <child name="since-last-run" schema="org.gnucash.GnuCash.dialogs.sxs.since-last-run"/>
+    <child name="transaction-editor" schema="org.gnucash.GnuCash.dialogs.sxs.transaction-editor"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.sxs.since-last-run" path="/org/gnucash/dialogs/scheduled-trans/since-last-run/">
+  <schema id="org.gnucash.GnuCash.dialogs.sxs.since-last-run" path="/org/gnucash/GnuCash/dialogs/scheduled-trans/since-last-run/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -29,7 +29,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.sxs.transaction-editor" path="/org/gnucash/dialogs/scheduled-trans/transaction-editor/">
+  <schema id="org.gnucash.GnuCash.dialogs.sxs.transaction-editor" path="/org/gnucash/GnuCash/dialogs/scheduled-trans/transaction-editor/">
     <key name="create-auto" type="b">
       <default>false</default>
       <summary>Set the "auto create" flag by default</summary>
diff --git a/gnucash/gschemas/org.gnucash.dialogs.totd.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.totd.gschema.xml.in
similarity index 90%
rename from gnucash/gschemas/org.gnucash.dialogs.totd.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.dialogs.totd.gschema.xml.in
index 27ba1b27d..4f1d2015e 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.totd.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.totd.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.totd" path="/org/gnucash/dialogs/tip-of-the-day/">
+  <schema id="org.gnucash.GnuCash.dialogs.totd" path="/org/gnucash/GnuCash/dialogs/tip-of-the-day/">
     <key name="current-tip" type="i">
       <default>0</default>
       <summary>The next tip to show.</summary>
diff --git a/gnucash/gschemas/org.gnucash.general.finance-quote.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.general.finance-quote.gschema.xml.in
similarity index 76%
rename from gnucash/gschemas/org.gnucash.general.finance-quote.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.general.finance-quote.gschema.xml.in
index e4191bc40..2248bc3d0 100644
--- a/gnucash/gschemas/org.gnucash.general.finance-quote.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.general.finance-quote.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.general.finance-quote" path="/org/gnucash/general/finance-quote/">
+  <schema id="org.gnucash.GnuCash.general.finance-quote" path="/org/gnucash/GnuCash/general/finance-quote/">
     <key name="alphavantage-api-key" type="s">
       <default>''</default>
       <summary>Alpha Vantage API key</summary>
diff --git a/gnucash/gschemas/org.gnucash.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in
similarity index 97%
rename from gnucash/gschemas/org.gnucash.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in
index 7598dbaaf..385ece719 100644
--- a/gnucash/gschemas/org.gnucash.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in
@@ -1,10 +1,10 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash" path="/org/gnucash/">
-    <child name="general" schema="org.gnucash.general"/>
-    <child name="dev" schema="org.gnucash.dev"/>
+  <schema id="org.gnucash.GnuCash" path="/org/gnucash/GnuCash/">
+    <child name="general" schema="org.gnucash.GnuCash.general"/>
+    <child name="dev" schema="org.gnucash.GnuCash.dev"/>
   </schema>
 
-  <schema id="org.gnucash.general" path="/org/gnucash/general/">
+  <schema id="org.gnucash.GnuCash.general" path="/org/gnucash/GnuCash/general/">
     <key name="prefs-version" type="i">
       <default>0</default>
       <summary>The version of these settings</summary>
@@ -230,11 +230,11 @@
       <summary>Set book option on new files to use split "action" field for "Num" field on registers/reports</summary>
       <description>If selected, the default book option for new files is set so that the 'Num' cell on registers shows/updates the split 'action' field and the transaction 'num' field is shown on the second line in double line mode (and is not visible in single line mode). Otherwise, the default book option for new files is set so that the 'Num' cell on registers shows/updates the transaction 'num' field.</description>
     </key>
-    <child name="register" schema="org.gnucash.general.register"/>
-    <child name="report" schema="org.gnucash.general.report"/>
+    <child name="register" schema="org.gnucash.GnuCash.general.register"/>
+    <child name="report" schema="org.gnucash.GnuCash.general.report"/>
   </schema>
 
-  <schema id="org.gnucash.general.register" path="/org/gnucash/general/register/">
+  <schema id="org.gnucash.GnuCash.general.register" path="/org/gnucash/GnuCash/general/register/">
     <key name="use-gnucash-color-theme" type="b">
       <default>true</default>
       <summary>Color the register using a gnucash specific color theme</summary>
@@ -342,7 +342,7 @@
     </key>
   </schema>
   
-  <schema id="org.gnucash.general.report" path="/org/gnucash/general/report/">
+  <schema id="org.gnucash.GnuCash.general.report" path="/org/gnucash/GnuCash/general/report/">
     <key name="use-new-window" type="b">
       <default>false</default>
       <summary>Create a new window for each new report</summary>
@@ -370,9 +370,9 @@
 This option allows you to scale reports up by the set factor.
 For example setting this to 2.0 will display reports at twice their typical size.</description>
     </key>
-    <child name="pdf-export" schema="org.gnucash.general.report.pdf-export"/>
+    <child name="pdf-export" schema="org.gnucash.GnuCash.general.report.pdf-export"/>
   </schema>
-  <schema id="org.gnucash.general.report.pdf-export" path="/org/gnucash/general/report/pdf-export/">
+  <schema id="org.gnucash.GnuCash.general.report.pdf-export" path="/org/gnucash/GnuCash/general/report/pdf-export/">
     <key name="filename-format" type="s">
       <default>'%1$s-%2$s-%3$s'</default>
       <summary>PDF export file name format</summary>
@@ -384,7 +384,7 @@ For example setting this to 2.0 will display reports at twice their typical size
       <description>This setting chooses the way dates are used in the filename of PDF export. Possible values for this setting are "locale" to use the system locale setting, "ce" for Continental Europe style dates, "iso" for ISO 8601 standard dates , "uk" for United Kingdom style dates, and "us" for United States style dates.</description>
     </key>
   </schema>
-  <schema id="org.gnucash.dev" path="/org/gnucash/dev/">
+  <schema id="org.gnucash.GnuCash.dev" path="/org/gnucash/GnuCash/dev/">
     <key name="allow-file-incompatibility" type="b">
       <default>false</default>
       <summary>Allow file incompatibility with older versions.</summary>
diff --git a/gnucash/gschemas/org.gnucash.history.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.history.gschema.xml.in
similarity index 97%
rename from gnucash/gschemas/org.gnucash.history.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.history.gschema.xml.in
index 65ecefa89..544d9539b 100644
--- a/gnucash/gschemas/org.gnucash.history.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.history.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.history" path="/org/gnucash/history/">
+  <schema id="org.gnucash.GnuCash.history" path="/org/gnucash/GnuCash/history/">
     <key name="maxfiles" type="i">
       <default>4</default>
       <summary>Number of files in history</summary>
diff --git a/gnucash/gschemas/org.gnucash.warnings.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.warnings.gschema.xml.in
similarity index 96%
rename from gnucash/gschemas/org.gnucash.warnings.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.warnings.gschema.xml.in
index cc85417a4..a599be194 100644
--- a/gnucash/gschemas/org.gnucash.warnings.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.warnings.gschema.xml.in
@@ -1,9 +1,9 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.warnings" path="/org/gnucash/warnings/">
-    <child name="permanent" schema="org.gnucash.warnings.permanent"/>
-    <child name="temporary" schema="org.gnucash.warnings.temporary"/>
+  <schema id="org.gnucash.GnuCash.warnings" path="/org/gnucash/GnuCash/warnings/">
+    <child name="permanent" schema="org.gnucash.GnuCash.warnings.permanent"/>
+    <child name="temporary" schema="org.gnucash.GnuCash.warnings.temporary"/>
   </schema>
-  <schema id="org.gnucash.warnings.permanent" path="/org/gnucash/warnings/permanent/">
+  <schema id="org.gnucash.GnuCash.warnings.permanent" path="/org/gnucash/GnuCash/warnings/permanent/">
     <key name="checkprinting-multi-acct" type="i">
       <default>0</default>
       <summary>Print checks from multiple accounts</summary>
@@ -106,7 +106,7 @@
     </key>
   </schema>
   
-  <schema id="org.gnucash.warnings.temporary" path="/org/gnucash/warnings/temporary/">
+  <schema id="org.gnucash.GnuCash.warnings.temporary" path="/org/gnucash/GnuCash/warnings/temporary/">
     <key name="checkprinting-multi-acct" type="i">
       <default>0</default>
       <summary>Print checks from multiple accounts</summary>
diff --git a/gnucash/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.window.pages.account.tree.gschema.xml.in
similarity index 96%
rename from gnucash/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.window.pages.account.tree.gschema.xml.in
index 21bbc2555..9b1bf121a 100644
--- a/gnucash/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.window.pages.account.tree.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.window.pages.account-tree.summary" path="/org/gnucash/window/pages/account-tree/summary/">
+  <schema id="org.gnucash.GnuCash.window.pages.account-tree.summary" path="/org/gnucash/GnuCash/window/pages/account-tree/summary/">
     <key name="grand-total" type="b">
       <default>true</default>
       <summary>Show a grand total of all accounts converted to the default report currency</summary>
diff --git a/gnucash/gschemas/org.gnucash.window.pages.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.window.pages.gschema.xml.in
similarity index 84%
rename from gnucash/gschemas/org.gnucash.window.pages.gschema.xml.in
rename to gnucash/gschemas/org.gnucash.GnuCash.window.pages.gschema.xml.in
index e8c97ba0d..898bae042 100644
--- a/gnucash/gschemas/org.gnucash.window.pages.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.window.pages.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.window.pages" path="/org/gnucash/window/pages/account-tree/">
+  <schema id="org.gnucash.GnuCash.window.pages" path="/org/gnucash/GnuCash/window/pages/account-tree/">
     <key name="account-code-visible" type="b">
       <default>false</default>
       <summary>Display this column</summary>
diff --git a/gnucash/import-export/aqb/gschemas/CMakeLists.txt b/gnucash/import-export/aqb/gschemas/CMakeLists.txt
index 6ded5fd8d..f423c3bd4 100644
--- a/gnucash/import-export/aqb/gschemas/CMakeLists.txt
+++ b/gnucash/import-export/aqb/gschemas/CMakeLists.txt
@@ -1,8 +1,8 @@
 
 if (WITH_AQBANKING)
-  set(aqb_GSCHEMA org.gnucash.dialogs.import.hbci.gschema.xml org.gnucash.dialogs.flicker.gschema.xml)
+  set(aqb_GSCHEMA org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml org.gnucash.GnuCash.dialogs.flicker.gschema.xml)
 
   add_gschema_targets("${aqb_GSCHEMA}")
 endif()
 
-set_dist_list(aqbanking_gschema_DIST CMakeLists.txt org.gnucash.dialogs.import.hbci.gschema.xml.in org.gnucash.dialogs.flicker.gschema.xml.in)
+set_dist_list(aqbanking_gschema_DIST CMakeLists.txt org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in)
diff --git a/gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.flicker.gschema.xml.in b/gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in
similarity index 83%
rename from gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.flicker.gschema.xml.in
rename to gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in
index d8e183f97..de0a64330 100644
--- a/gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.flicker.gschema.xml.in
+++ b/gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in
@@ -1,6 +1,6 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
 
-  <schema id="org.gnucash.dialogs.flicker" path="/org/gnucash/dialogs/flicker/">
+  <schema id="org.gnucash.GnuCash.dialogs.flicker" path="/org/gnucash/GnuCash/dialogs/flicker/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.import.hbci.gschema.xml.in b/gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in
similarity index 89%
rename from gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.import.hbci.gschema.xml.in
rename to gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in
index 65ab38c87..853c4e480 100644
--- a/gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.import.hbci.gschema.xml.in
+++ b/gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.ab-initial" path="/org/gnucash/dialogs/ab-initial/">
+  <schema id="org.gnucash.GnuCash.dialogs.ab-initial" path="/org/gnucash/GnuCash/dialogs/ab-initial/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
@@ -9,7 +9,7 @@
     </key>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.hbci" path="/org/gnucash/dialogs/import/hbci/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.hbci" path="/org/gnucash/GnuCash/dialogs/import/hbci/">
     <key name="close-on-finish" type="b">
       <default>true</default>
       <summary>Close window when finished</summary>
@@ -55,10 +55,10 @@
       <summary>Last pathname used</summary>
       <description>This field contains the last pathname used by this window. It will be used as the initial filename/pathname the next time this window is opened.</description>
     </key>
-    <child name="connection-dialog" schema="org.gnucash.dialogs.import.hbci.connection-dialog"/>
+    <child name="connection-dialog" schema="org.gnucash.GnuCash.dialogs.import.hbci.connection-dialog"/>
   </schema>
 
-  <schema id="org.gnucash.dialogs.import.hbci.connection-dialog" path="/org/gnucash/dialogs/import/hbci/connection-dialog/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.hbci.connection-dialog" path="/org/gnucash/GnuCash/dialogs/import/hbci/connection-dialog/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
       <summary>Last window position and size</summary>
diff --git a/gnucash/import-export/ofx/gschemas/CMakeLists.txt b/gnucash/import-export/ofx/gschemas/CMakeLists.txt
index bed4fd6cc..054ffdae9 100644
--- a/gnucash/import-export/ofx/gschemas/CMakeLists.txt
+++ b/gnucash/import-export/ofx/gschemas/CMakeLists.txt
@@ -1,8 +1,8 @@
 
 if (WITH_OFX)
-  set(ofx_GSCHEMA org.gnucash.dialogs.import.ofx.gschema.xml)
+  set(ofx_GSCHEMA org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml)
 
   add_gschema_targets("${ofx_GSCHEMA}")
 endif()
 
-set_dist_list(ofx_gschema_DIST CMakeLists.txt org.gnucash.dialogs.import.ofx.gschema.xml.in)
+set_dist_list(ofx_gschema_DIST CMakeLists.txt org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in)
diff --git a/gnucash/import-export/ofx/gschemas/org.gnucash.dialogs.import.ofx.gschema.xml.in b/gnucash/import-export/ofx/gschemas/org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in
similarity index 78%
rename from gnucash/import-export/ofx/gschemas/org.gnucash.dialogs.import.ofx.gschema.xml.in
rename to gnucash/import-export/ofx/gschemas/org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in
index 5cbaa1edc..ad06e560c 100644
--- a/gnucash/import-export/ofx/gschemas/org.gnucash.dialogs.import.ofx.gschema.xml.in
+++ b/gnucash/import-export/ofx/gschemas/org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in
@@ -1,5 +1,5 @@
 <schemalist gettext-domain="@PROJECT_NAME@">
-  <schema id="org.gnucash.dialogs.import.ofx" path="/org/gnucash/dialogs/import/ofx/">
+  <schema id="org.gnucash.GnuCash.dialogs.import.ofx" path="/org/gnucash/GnuCash/dialogs/import/ofx/">
     <key name="last-path" type="s">
       <default>''</default>
       <summary>Last pathname used</summary>
diff --git a/libgnucash/app-utils/gnc-gsettings.c b/libgnucash/app-utils/gnc-gsettings.c
index ca7ffc6c9..cff8a12f1 100644
--- a/libgnucash/app-utils/gnc-gsettings.c
+++ b/libgnucash/app-utils/gnc-gsettings.c
@@ -42,6 +42,7 @@
 #include <libxslt/transform.h>
 #include <libxslt/xsltutils.h>
 
+#define GSET_SCHEMA_PREFIX "org.gnucash.GnuCash"
 #define CLIENT_TAG  "%s-%s-client"
 #define NOTIFY_TAG  "%s-%s-notify_id"
 
@@ -609,8 +610,10 @@ void gnc_gsettings_load_backend (void)
     if (g_strcmp0 (g_getenv ("GNC_UNINSTALLED"), "1") == 0)
         return;
 
-    if (!prefsbackend)
-        prefsbackend = g_new0 (PrefsBackend, 1);
+    if (prefsbackend)
+        g_free (prefsbackend);
+
+    prefsbackend = g_new0 (PrefsBackend, 1);
 
     prefsbackend->register_cb = gnc_gsettings_register_cb;
     prefsbackend->remove_cb_by_func = gnc_gsettings_remove_cb_by_func;
diff --git a/libgnucash/app-utils/gnc-gsettings.h b/libgnucash/app-utils/gnc-gsettings.h
index 7f058684e..1bd61bddd 100644
--- a/libgnucash/app-utils/gnc-gsettings.h
+++ b/libgnucash/app-utils/gnc-gsettings.h
@@ -52,8 +52,6 @@
 
 #include <gio/gio.h>
 
-#define GSET_SCHEMA_PREFIX            "org.gnucash"
-
 /** Convert a partial schema name into a complete gsettings schema name.
  *
  *  This function takes a partial gsettings schema name and converts
@@ -81,7 +79,7 @@ void gnc_gsettings_set_prefix (const gchar *prefix);
 
 /** Get the default gsettings schema prefix.
  *  If none was set explicitly, this defaults to
- *  "org.gnucash"
+ *  "org.gnucash.GnuCash"
  */
 const gchar *gnc_gsettings_get_prefix (void);
 
diff --git a/libgnucash/app-utils/gnc-prefs-utils.c b/libgnucash/app-utils/gnc-prefs-utils.c
index c74405b70..90fd918d2 100644
--- a/libgnucash/app-utils/gnc-prefs-utils.c
+++ b/libgnucash/app-utils/gnc-prefs-utils.c
@@ -84,7 +84,7 @@ void gnc_prefs_init (void)
     gnc_gsettings_load_backend();
 
     /* Initialize the core preferences by reading their values from the loaded backend.
-     * Note: of no backend was loaded, these functions will return sane default values.
+     * Note: if no backend was loaded, these functions will return sane default values.
      */
     file_retain_changed_cb (NULL, NULL, NULL);
     file_retain_type_changed_cb (NULL, NULL, NULL);
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d2f2ba6f5..6fca8826c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -216,23 +216,24 @@ gnucash/gnucash-commands.cpp
 gnucash/gnucash-core-app.cpp
 gnucash/gnucash.cpp
 gnucash/gnucash-locale-windows.c
-gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.export.csv.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.import.csv.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.import.generic.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.import.qif.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in
-gnucash/gschemas/org.gnucash.dialogs.totd.gschema.xml.in
-gnucash/gschemas/org.gnucash.general.finance-quote.gschema.xml.in
-gnucash/gschemas/org.gnucash.gschema.xml.in
-gnucash/gschemas/org.gnucash.history.gschema.xml.in
-gnucash/gschemas/org.gnucash.warnings.gschema.xml.in
-gnucash/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in
-gnucash/gschemas/org.gnucash.window.pages.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.business.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.commodities.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.export.csv.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.csv.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.qif.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.reconcile.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.dialogs.totd.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.general.finance-quote.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.history.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.warnings.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.window.pages.account.tree.gschema.xml.in
+gnucash/gschemas/org.gnucash.GnuCash.window.pages.gschema.xml.in
 gnucash/gtkbuilder/assistant-acct-period.glade
 gnucash/gtkbuilder/assistant-csv-account-import.glade
 gnucash/gtkbuilder/assistant-csv-export.glade
@@ -318,8 +319,8 @@ gnucash/import-export/aqb/gnc-flicker-gui.c
 gnucash/import-export/aqb/gnc-gwen-gui.c
 gnucash/import-export/aqb/gncmod-aqbanking.c
 gnucash/import-export/aqb/gnc-plugin-aqbanking.c
-gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.flicker.gschema.xml.in
-gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.import.hbci.gschema.xml.in
+gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in
+gnucash/import-export/aqb/gschemas/org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in
 gnucash/import-export/bi-import/dialog-bi-import.c
 gnucash/import-export/bi-import/dialog-bi-import-gui.c
 gnucash/import-export/bi-import/dialog-bi-import-helper.c
@@ -364,7 +365,7 @@ gnucash/import-export/log-replay/gnc-plugin-log-replay.c
 gnucash/import-export/ofx/gncmod-ofx-import.c
 gnucash/import-export/ofx/gnc-ofx-import.c
 gnucash/import-export/ofx/gnc-plugin-ofx.c
-gnucash/import-export/ofx/gschemas/org.gnucash.dialogs.import.ofx.gschema.xml.in
+gnucash/import-export/ofx/gschemas/org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in
 gnucash/import-export/qif-imp/assistant-qif-import.c
 gnucash/import-export/qif-imp/dialog-account-picker.c
 gnucash/import-export/qif-imp/gnc-plugin-qif-import.c

commit 6674b1bb6b6acc6234d3550eb44d0431835919cc
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 10 16:57:25 2021 +0200

    Cleanup - minimal glib=2.56.1 - drop all conditionals on older versions

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ad007c262..e84b22a39 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -762,10 +762,6 @@ set(PLATFORM_OSX 1)
 set(HAVE_OSX_KEYCHAIN 1)
 endif()
 
-if(GLIB2_VERSION VERSION_GREATER_EQUAL 2.46.0)
-set(HAVE_GLIB_2_46 1)
-endif()
-
 if(DISABLE_DEPRECATED_GNOME)
 set(GNOME_DISABLE_DEPRECATED 1)
 endif()
diff --git a/common/config.h.cmake.in b/common/config.h.cmake.in
index a68408b05..feb0a98f9 100644
--- a/common/config.h.cmake.in
+++ b/common/config.h.cmake.in
@@ -108,9 +108,6 @@
 /* Define to 1 if you have the `getuid' function. */
 #cmakedefine HAVE_GETUID 1
 
-/* Configure g_settings_list_keys deprecation */
-#cmakedefine HAVE_GLIB_2_46 1
-
 /* Define to 1 if you have the <glob.h> header file. */
 #cmakedefine HAVE_GLOB_H 1
 
diff --git a/gnucash/import-export/test/test-import-pending-matches.cpp b/gnucash/import-export/test/test-import-pending-matches.cpp
index 3d3d61dfc..56a52d392 100644
--- a/gnucash/import-export/test/test-import-pending-matches.cpp
+++ b/gnucash/import-export/test/test-import-pending-matches.cpp
@@ -52,9 +52,6 @@ teardown (Fixture *fixture, gconstpointer pData)
     test_clear_error_list();
 }
 
-/* The excluded tests all rely on g_assert_true which was only introduced
- * in glib 2.38 */
-#ifdef HAVE_GLIB_2_38
 static void
 test_pending_matches_match_types (Fixture *fixture, gconstpointer pData)
 {
@@ -117,7 +114,6 @@ test_pending_matches_keeps_count (Fixture *fixture, gconstpointer pData)
 
     gnc_import_PendingMatches_delete (matches);
 }
-#endif
 
 int
 main (int argc, char *argv[])
@@ -126,16 +122,12 @@ main (int argc, char *argv[])
     qof_init();
     g_test_init (&argc, &argv, NULL);
 
-    /* The excluded tests all rely on g_assert_true which was only introduced
-     * in glib 2.38 */
-#ifdef HAVE_GLIB_2_38
     GNC_TEST_ADD (suitename, "match_types", Fixture, NULL, setup,
                   test_pending_matches_match_types, teardown);
     GNC_TEST_ADD (suitename, "prefer_manual_match", Fixture, NULL, setup,
                   test_pending_matches_prefer_manual_match, teardown);
     GNC_TEST_ADD (suitename, "keeps_count", Fixture, NULL, setup,
                   test_pending_matches_keeps_count, teardown);
-#endif
     result =  g_test_run();
 
     qof_close();
diff --git a/libgnucash/app-utils/gnc-gsettings.c b/libgnucash/app-utils/gnc-gsettings.c
index 5d639dd40..ca7ffc6c9 100644
--- a/libgnucash/app-utils/gnc-gsettings.c
+++ b/libgnucash/app-utils/gnc-gsettings.c
@@ -62,28 +62,17 @@ static gboolean gnc_gsettings_is_valid_key(GSettings *settings, const gchar *key
     gchar **keys = NULL;
     gint i = 0;
     gboolean found = FALSE;
-#ifdef HAVE_GLIB_2_46
     GSettingsSchema *schema;
-#endif
 
     // Check if the key is valid key within settings
     if (!G_IS_SETTINGS(settings))
         return FALSE;
 
-#ifdef HAVE_GLIB_2_46
     g_object_get (settings, "settings-schema", &schema, NULL);
-
     if (!schema)
         return FALSE;
-#endif
-
-    // Get list of keys
-#ifdef HAVE_GLIB_2_46
-    keys = g_settings_schema_list_keys(schema);
-#else
-    keys = g_settings_list_keys(settings);
-#endif
 
+    keys = g_settings_schema_list_keys (schema);
     while (keys && keys[i])
     {
         if (!g_strcmp0(key, keys[i]))
@@ -93,8 +82,6 @@ static gboolean gnc_gsettings_is_valid_key(GSettings *settings, const gchar *key
         }
         i++;
     }
-
-    // Free keys
     g_strfreev(keys);
 
     return found;
@@ -588,27 +575,17 @@ gnc_gsettings_reset_schema (const gchar *schema_str)
 {
     gchar **keys;
     gint counter = 0;
-
-#ifdef HAVE_GLIB_2_46
     GSettingsSchema *schema;
-#endif
     GSettings *settings = gnc_gsettings_get_settings_ptr (schema_str);
 
     if (!settings)
         return;
 
-#ifdef HAVE_GLIB_2_46
     g_object_get (settings, "settings-schema", &schema, NULL);
-
     if (!schema)
         return;
 
     keys = g_settings_schema_list_keys (schema);
-#else
-    keys = g_settings_list_keys (settings);
-#endif
-
-
     if (!keys)
         return;
 



Summary of changes:
 .gitignore                                         |    1 -
 CMakeLists.txt                                     |    4 -
 common/config.h.cmake.in                           |    3 -
 gnucash/CMakeLists.txt                             |    2 +-
 gnucash/gnome-utils/CMakeLists.txt                 |    2 +-
 gnucash/gnome-utils/make-gnc-warnings-c.xsl        |    8 +-
 gnucash/gnome-utils/make-gnc-warnings-h.xsl        |   10 +-
 gnucash/gnucash-core-app.cpp                       |    7 +-
 gnucash/gschemas/CMakeLists.txt                    |   42 +-
 gnucash/gschemas/migratable-prefs.xml              | 1299 ++++++++++++++++
 .../org.gnucash.GnuCash.deprecated.gschema.xml.in  | 1605 ++++++++++++++++++++
 ...nucash.GnuCash.dialogs.business.gschema.xml.in} |   38 +-
 ...h.GnuCash.dialogs.checkprinting.gschema.xml.in} |    2 +-
 ...ash.GnuCash.dialogs.commodities.gschema.xml.in} |    2 +-
 ...cash.GnuCash.dialogs.export.csv.gschema.xml.in} |    2 +-
 ... => org.gnucash.GnuCash.dialogs.gschema.xml.in} |   98 +-
 ...cash.GnuCash.dialogs.import.csv.gschema.xml.in} |    2 +-
 ....GnuCash.dialogs.import.generic.gschema.xml.in} |   14 +-
 ...cash.GnuCash.dialogs.import.qif.gschema.xml.in} |    6 +-
 ...ucash.GnuCash.dialogs.reconcile.gschema.xml.in} |    2 +-
 ...org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in} |   10 +-
 ...rg.gnucash.GnuCash.dialogs.totd.gschema.xml.in} |    2 +-
 ...h.GnuCash.general.finance-quote.gschema.xml.in} |    2 +-
 ...a.xml.in => org.gnucash.GnuCash.gschema.xml.in} |   22 +-
 ... => org.gnucash.GnuCash.history.gschema.xml.in} |    2 +-
 ...=> org.gnucash.GnuCash.warnings.gschema.xml.in} |   10 +-
 ...uCash.window.pages.account.tree.gschema.xml.in} |    2 +-
 ...rg.gnucash.GnuCash.window.pages.gschema.xml.in} |    2 +-
 gnucash/import-export/aqb/gschemas/CMakeLists.txt  |   11 +-
 .../aqb/gschemas/migratable-prefs.xml              |   64 +
 ...gnucash.GnuCash.dialogs.flicker.gschema.xml.in} |    2 +-
 ...ash.GnuCash.dialogs.import.hbci.gschema.xml.in} |    8 +-
 gnucash/import-export/ofx/gschemas/CMakeLists.txt  |   10 +-
 .../ofx/gschemas/migratable-prefs.xml              |    8 +
 ...cash.GnuCash.dialogs.import.ofx.gschema.xml.in} |    2 +-
 .../test/test-import-pending-matches.cpp           |    8 -
 libgnucash/app-utils/CMakeLists.txt                |    2 +-
 .../{gnc-gsettings.c => gnc-gsettings.cpp}         |  253 ++-
 libgnucash/app-utils/gnc-gsettings.h               |   13 +-
 libgnucash/app-utils/gnc-prefs-utils.c             |    2 +-
 po/POTFILES.in                                     |   43 +-
 41 files changed, 3352 insertions(+), 275 deletions(-)
 create mode 100644 gnucash/gschemas/migratable-prefs.xml
 create mode 100644 gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in
 rename gnucash/gschemas/{org.gnucash.dialogs.business.gschema.xml.in => org.gnucash.GnuCash.dialogs.business.gschema.xml.in} (82%)
 rename gnucash/gschemas/{org.gnucash.dialogs.checkprinting.gschema.xml.in => org.gnucash.GnuCash.dialogs.checkprinting.gschema.xml.in} (98%)
 rename gnucash/gschemas/{org.gnucash.dialogs.commodities.gschema.xml.in => org.gnucash.GnuCash.dialogs.commodities.gschema.xml.in} (86%)
 rename gnucash/gschemas/{org.gnucash.dialogs.export.csv.gschema.xml.in => org.gnucash.GnuCash.dialogs.export.csv.gschema.xml.in} (90%)
 rename gnucash/gschemas/{org.gnucash.dialogs.gschema.xml.in => org.gnucash.GnuCash.dialogs.gschema.xml.in} (70%)
 rename gnucash/gschemas/{org.gnucash.dialogs.import.csv.gschema.xml.in => org.gnucash.GnuCash.dialogs.import.csv.gschema.xml.in} (88%)
 rename gnucash/gschemas/{org.gnucash.dialogs.import.generic.gschema.xml.in => org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in} (87%)
 rename gnucash/gschemas/{org.gnucash.dialogs.import.qif.gschema.xml.in => org.gnucash.GnuCash.dialogs.import.qif.gschema.xml.in} (86%)
 rename gnucash/gschemas/{org.gnucash.dialogs.reconcile.gschema.xml.in => org.gnucash.GnuCash.dialogs.reconcile.gschema.xml.in} (94%)
 rename gnucash/gschemas/{org.gnucash.dialogs.sxs.gschema.xml.in => org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in} (86%)
 rename gnucash/gschemas/{org.gnucash.dialogs.totd.gschema.xml.in => org.gnucash.GnuCash.dialogs.totd.gschema.xml.in} (90%)
 rename gnucash/gschemas/{org.gnucash.general.finance-quote.gschema.xml.in => org.gnucash.GnuCash.general.finance-quote.gschema.xml.in} (76%)
 rename gnucash/gschemas/{org.gnucash.gschema.xml.in => org.gnucash.GnuCash.gschema.xml.in} (97%)
 rename gnucash/gschemas/{org.gnucash.history.gschema.xml.in => org.gnucash.GnuCash.history.gschema.xml.in} (97%)
 rename gnucash/gschemas/{org.gnucash.warnings.gschema.xml.in => org.gnucash.GnuCash.warnings.gschema.xml.in} (96%)
 rename gnucash/gschemas/{org.gnucash.window.pages.account.tree.gschema.xml.in => org.gnucash.GnuCash.window.pages.account.tree.gschema.xml.in} (96%)
 rename gnucash/gschemas/{org.gnucash.window.pages.gschema.xml.in => org.gnucash.GnuCash.window.pages.gschema.xml.in} (84%)
 create mode 100644 gnucash/import-export/aqb/gschemas/migratable-prefs.xml
 rename gnucash/import-export/aqb/gschemas/{org.gnucash.dialogs.flicker.gschema.xml.in => org.gnucash.GnuCash.dialogs.flicker.gschema.xml.in} (83%)
 rename gnucash/import-export/aqb/gschemas/{org.gnucash.dialogs.import.hbci.gschema.xml.in => org.gnucash.GnuCash.dialogs.import.hbci.gschema.xml.in} (89%)
 create mode 100644 gnucash/import-export/ofx/gschemas/migratable-prefs.xml
 rename gnucash/import-export/ofx/gschemas/{org.gnucash.dialogs.import.ofx.gschema.xml.in => org.gnucash.GnuCash.dialogs.import.ofx.gschema.xml.in} (78%)
 rename libgnucash/app-utils/{gnc-gsettings.c => gnc-gsettings.cpp} (74%)



More information about the gnucash-changes mailing list