gnucash stable: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Fri Aug 11 23:16:48 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/9fea6a87 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/8d3b2d8c (commit)
	 via  https://github.com/Gnucash/gnucash/commit/bda9ab71 (commit)
	from  https://github.com/Gnucash/gnucash/commit/f8546dc4 (commit)



commit 9fea6a87c58c6594b9acd327c34af68824243d78
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Thu Aug 10 22:34:12 2023 +0800

    [gnucash-cli] doesn't need gnc-gnome-utils anymore
    
    removing 4k from the gnucash-cli file

diff --git a/gnucash/CMakeLists.txt b/gnucash/CMakeLists.txt
index 95ff42cd8f..a9461979b3 100644
--- a/gnucash/CMakeLists.txt
+++ b/gnucash/CMakeLists.txt
@@ -140,7 +140,7 @@ add_dependencies (gnucash-cli gnucash)
 target_compile_definitions(gnucash-cli PRIVATE -DG_LOG_DOMAIN=\"gnc.bin\")
 
 target_link_libraries (gnucash-cli
-   gnc-gnome-utils gnc-app-utils
+   gnc-app-utils
    gnc-engine gnc-core-utils gnucash-guile gnc-report
    ${GUILE_LDFLAGS} PkgConfig::GLIB2
    ${Boost_LIBRARIES}

commit 8d3b2d8c6b663a0976389e9f168335f9a6086a6c
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Thu Aug 10 22:33:48 2023 +0800

    [gnucash-commands] gnucash-cli has customised gnc_shutdown
    
    which doesn't need to shut down ui

diff --git a/gnucash/gnucash-commands.cpp b/gnucash/gnucash-commands.cpp
index ff43d57f1c..7f1fe371d3 100644
--- a/gnucash/gnucash-commands.cpp
+++ b/gnucash/gnucash-commands.cpp
@@ -36,7 +36,6 @@
 #include <gnc-engine-guile.h>
 #include <gnc-prefs.h>
 #include <gnc-prefs-utils.h>
-#include <gnc-gnome-utils.h>
 #include <gnc-session.h>
 #include <qoflog.h>
 
@@ -74,12 +73,19 @@ cleanup_and_exit_with_failure (QofSession *session)
     return 1;
 }
 
+static void gnc_shutdown_cli (int exit_status)
+{
+    gnc_hook_run (HOOK_SHUTDOWN, NULL);
+    gnc_engine_shutdown ();
+    exit (exit_status);
+}
+
 /* scm_boot_guile doesn't expect to return, so call shutdown ourselves here */
 static void
 scm_cleanup_and_exit_with_failure (QofSession *session)
 {
     cleanup_and_exit_with_failure (session);
-    gnc_shutdown (1);
+    gnc_shutdown_cli (1);
 }
 
 static void
@@ -238,7 +244,7 @@ return a document object with export-string or export-error.") << std::endl;
     qof_session_destroy (session);
 
     qof_event_resume ();
-    gnc_shutdown (0);
+    gnc_shutdown_cli (0);
     return;
 }
 
@@ -278,7 +284,7 @@ scm_report_show (void *data,
     scm_call_2 (scm_c_eval_string ("gnc:cmdline-report-show"),
                 scm_from_locale_string (args->show_report.c_str ()),
                 scm_current_output_port ());
-    gnc_shutdown (0);
+    gnc_shutdown_cli (0);
     return;
 }
 
@@ -295,7 +301,7 @@ scm_report_list ([[maybe_unused]] void *data,
 
     scm_call_1 (scm_c_eval_string ("gnc:cmdline-report-list"),
                 scm_current_output_port ());
-    gnc_shutdown (0);
+    gnc_shutdown_cli (0);
     return;
 }
 

commit bda9ab71e89aea17837e39a67033c9919caea819
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Thu Aug 10 22:32:25 2023 +0800

    [gnucash-core-app.cpp] gnc_load_scm_config has callback to show/log message
    
    thus the cli gnucash-commands.cpp sends a customised callback which
    doesn't update splash screen.

diff --git a/gnucash/gnucash-commands.cpp b/gnucash/gnucash-commands.cpp
index 661a2b51c1..ff43d57f1c 100644
--- a/gnucash/gnucash-commands.cpp
+++ b/gnucash/gnucash-commands.cpp
@@ -130,7 +130,7 @@ scm_run_report (void *data,
     scm_c_use_module ("gnucash reports");
 
     gnc_report_init ();
-    Gnucash::gnc_load_scm_config();
+    Gnucash::gnc_load_scm_config ([](const gchar *msg){ PINFO ("%s", msg); });
     gnc_prefs_init ();
     qof_event_suspend ();
 
@@ -259,7 +259,7 @@ scm_report_show (void *data,
     scm_c_use_module ("gnucash app-utils");
     scm_c_use_module ("gnucash reports");
     gnc_report_init ();
-    Gnucash::gnc_load_scm_config();
+    Gnucash::gnc_load_scm_config ([](const gchar *msg){ PINFO ("%s", msg); });
 
     if (!args->file_to_load.empty())
     {
@@ -291,7 +291,7 @@ scm_report_list ([[maybe_unused]] void *data,
     scm_c_use_module ("gnucash app-utils");
     scm_c_use_module ("gnucash reports");
     gnc_report_init ();
-    Gnucash::gnc_load_scm_config();
+    Gnucash::gnc_load_scm_config ([](const gchar *msg){ PINFO ("%s", msg); });
 
     scm_call_1 (scm_c_eval_string ("gnc:cmdline-report-list"),
                 scm_current_output_port ());
diff --git a/gnucash/gnucash-core-app.cpp b/gnucash/gnucash-core-app.cpp
index 4746765d09..c8d84afaae 100644
--- a/gnucash/gnucash-core-app.cpp
+++ b/gnucash/gnucash-core-app.cpp
@@ -41,7 +41,6 @@
 #include <gnc-path.h>
 #include <gnc-prefs.h>
 #include <gnc-gsettings.h>
-#include <gnc-splash.h>
 #include <gnc-version.h>
 #include "gnucash-locale-platform.h"
 
@@ -84,22 +83,15 @@ gnc_print_unstable_message(void)
               << bl::format (std::string{_("To find the last stable version, please refer to {1}")}) % PACKAGE_URL << "\n";
 }
 
-static void
-update_message(const gchar *msg)
-{
-    gnc_update_splash_screen(msg, GNC_SPLASH_PERCENTAGE_UNKNOWN);
-    PINFO("%s", msg);
-}
-
 void
-Gnucash::gnc_load_scm_config (void)
+Gnucash::gnc_load_scm_config (MessageCb update_message_cb)
 {
     static auto is_system_config_loaded = false;
     if (!is_system_config_loaded)
     {
         /* Translators: Guile is the programming language of the reports */
         auto msg = _("Loading system wide Guile extensions…");
-        update_message (msg);
+        update_message_cb (msg);
         auto system_config_dir = gnc_path_get_pkgsysconfdir ();
         auto system_config = g_build_filename (system_config_dir, "config", nullptr);
         is_system_config_loaded = gfec_try_load (system_config);
@@ -111,7 +103,7 @@ Gnucash::gnc_load_scm_config (void)
     if (!is_user_config_loaded)
     {
         auto msg = _("Loading user specific Guile extensions…");
-        update_message (msg);
+        update_message_cb (msg);
         auto config_filename = g_build_filename (gnc_userconfig_dir (), "config-user.scm", nullptr);
         is_user_config_loaded = gfec_try_load (config_filename);
         g_free (config_filename);
diff --git a/gnucash/gnucash-core-app.hpp b/gnucash/gnucash-core-app.hpp
index 4a4ded5102..b9ba65dec9 100644
--- a/gnucash/gnucash-core-app.hpp
+++ b/gnucash/gnucash-core-app.hpp
@@ -70,6 +70,8 @@ private:
     char *sys_locale = nullptr;
 };
 
-void gnc_load_scm_config(void);
+using MessageCb = std::function<void(const char*)>;
+
+void gnc_load_scm_config (MessageCb update_message);
 }
 #endif
diff --git a/gnucash/gnucash.cpp b/gnucash/gnucash.cpp
index 856e4d2beb..1110b05baa 100644
--- a/gnucash/gnucash.cpp
+++ b/gnucash/gnucash.cpp
@@ -155,7 +155,11 @@ scm_run_gnucash (void *data, [[maybe_unused]] int argc, [[maybe_unused]] char **
     /* Load the scm config files before starting up the gui. This ensures that
      * custom reports have been read into memory before the Reports
      * menu is created. */
-    Gnucash::gnc_load_scm_config();
+    Gnucash::gnc_load_scm_config ([](const gchar *msg)
+    {
+        gnc_update_splash_screen (msg, GNC_SPLASH_PERCENTAGE_UNKNOWN);
+        PINFO ("%s", msg);
+    });
 
     /* Setting-up the report menu must come after the module
      loading but before the gui initialization. */



Summary of changes:
 gnucash/CMakeLists.txt       |  2 +-
 gnucash/gnucash-commands.cpp | 22 ++++++++++++++--------
 gnucash/gnucash-core-app.cpp | 14 +++-----------
 gnucash/gnucash-core-app.hpp |  4 +++-
 gnucash/gnucash.cpp          |  6 +++++-
 5 files changed, 26 insertions(+), 22 deletions(-)



More information about the gnucash-changes mailing list