From 28a1c8dc50d42e539d949673698754dcf38286e9 Mon Sep 17 00:00:00 2001
From: Robert Fewell <14uBobIT@gmail.com>
Date: Mon, 6 May 2024 11:22:51 +0100
Subject: [PATCH] Bug 669031 - Save the Scheduled Transactions number of months
The number of months to display is saved when the Scheduled Transaction
page is left open and reverts to the default of 12 when closed. This
commit add to the existing save layout menu so that it will save the
number of months to display to a preference setting so it will be
remembered
---
gnucash/gnome/gnc-plugin-page-sx-list.cpp | 14 ++++++++++++--
.../org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in | 5 +++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/gnucash/gnome/gnc-plugin-page-sx-list.cpp b/gnucash/gnome/gnc-plugin-page-sx-list.cpp
index 30dd267872..f498eb6c06 100644
--- a/gnucash/gnome/gnc-plugin-page-sx-list.cpp
+++ b/gnucash/gnome/gnc-plugin-page-sx-list.cpp
@@ -82,6 +82,7 @@ G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_GUI_SX;
#define PLUGIN_PAGE_SX_LIST_CM_CLASS "plugin-page-sx-list"
#define STATE_SECTION "SX Transaction List"
#define GNC_PREF_DIVIDER_POS "divider-position"
+#define GNC_PREF_NUM_OF_MONTHS "number-of-months"
typedef struct GncPluginPageSxListPrivate
{
@@ -580,8 +581,10 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
priv->gdcal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model (window, GNC_DENSE_CAL_MODEL(priv->dense_cal_model)));
g_object_ref_sink (priv->gdcal);
- gnc_dense_cal_set_months_per_col (priv->gdcal, 4);
- gnc_dense_cal_set_num_months (priv->gdcal, 12);
+ /* Set number of months from preference, default 12 */
+ gchar *num_months = gnc_prefs_get_string (GNC_PREFS_GROUP_SXED, GNC_PREF_NUM_OF_MONTHS);
+ gnc_dense_cal_set_num_months (priv->gdcal, atoi (num_months));
+ g_free (num_months);
gtk_container_add (GTK_CONTAINER(swin), GTK_WIDGET(priv->gdcal));
}
@@ -760,16 +763,23 @@ gnc_plugin_page_sx_list_cmd_save_layout (GSimpleAction *simple,
{
auto plugin_page = GNC_PLUGIN_PAGE_SX_LIST(user_data);
GncPluginPageSxListPrivate *priv;
+ gchar *num_of_months;
gint paned_position;
g_return_if_fail (GNC_IS_PLUGIN_PAGE_SX_LIST(plugin_page));
priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(plugin_page);
+ num_of_months = g_strdup_printf ("%d", gnc_dense_cal_get_num_months (priv->gdcal));
paned_position = gtk_paned_get_position (GTK_PANED(priv->widget));
gnc_prefs_set_float (GNC_PREFS_GROUP_SXED, GNC_PREF_DIVIDER_POS,
paned_position);
+
+ gnc_prefs_set_string (GNC_PREFS_GROUP_SXED, GNC_PREF_NUM_OF_MONTHS,
+ num_of_months);
+
+ g_free (num_of_months);
}
static void
diff --git a/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
index 0409834843..d965df8a83 100644
--- a/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
@@ -54,6 +54,11 @@
How many days in advance to notify the user.
How many days in advance to notify the user.
+
+ '12'
+ The number of months to be shown in editor.
+ The number of months to be shown in editor.
+
160
The horizontal position of the editor divider.