gnucash maint: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Mon Mar 14 12:40:35 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/4f956844 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/8ee0bee6 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/f96585b8 (commit)
	from  https://github.com/Gnucash/gnucash/commit/d55eee55 (commit)



commit 4f956844f369f7b49b0c9b4f5d34be8d5130cea5
Merge: d55eee556 8ee0bee6d
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Mar 14 09:39:00 2022 -0700

    Merge Chris Lam's 'budget-sensitive-readonly' into maint.


commit 8ee0bee6d2ac4372c781f21a158a71cbda5911e4
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Jan 11 20:46:05 2022 +0800

    Also update main menu Budget actions sensitivity

diff --git a/gnucash/gnome/gnc-plugin-budget.c b/gnucash/gnome/gnc-plugin-budget.c
index 6632a8d11..b4cf127b9 100644
--- a/gnucash/gnome/gnc-plugin-budget.c
+++ b/gnucash/gnome/gnc-plugin-budget.c
@@ -85,6 +85,16 @@ static GtkActionEntry gnc_plugin_actions [] =
 };
 static guint gnc_plugin_n_actions = G_N_ELEMENTS (gnc_plugin_actions);
 
+
+static const gchar *plugin_writeable_actions[] =
+{
+    /* actions which must be disabled on a readonly book. */
+    "NewBudgetAction",
+    "CopyBudgetAction",
+    "DeleteBudgetAction",
+    NULL
+};
+
 typedef struct GncPluginBudgetPrivate
 {
     gpointer dummy;
@@ -109,6 +119,28 @@ GncPlugin * gnc_plugin_budget_new (void)
     return GNC_PLUGIN(plugin);
 }
 
+static void page_changed (GncMainWindow *window, GncPluginPage *page,
+                          gpointer user_data)
+{
+    GtkActionGroup *action_group =
+        gnc_main_window_get_action_group (window, PLUGIN_ACTIONS_NAME);
+
+    if (qof_book_is_readonly (gnc_get_current_book()))
+        gnc_plugin_update_actions (action_group, plugin_writeable_actions,
+                                   "sensitive", FALSE);
+}
+
+static void add_to_window (GncPlugin *plugin, GncMainWindow *mainwindow, GQuark type)
+{
+    g_signal_connect (mainwindow, "page_changed", G_CALLBACK (page_changed), plugin);
+}
+
+static void remove_from_window (GncPlugin *plugin, GncMainWindow *window, GQuark type)
+{
+    g_signal_handlers_disconnect_by_func (window, G_CALLBACK(page_changed), plugin);
+    PWARN ("removed");
+}
+
 G_DEFINE_TYPE_WITH_PRIVATE(GncPluginBudget, gnc_plugin_budget, GNC_TYPE_PLUGIN)
 
 static void
@@ -126,6 +158,8 @@ gnc_plugin_budget_class_init (GncPluginBudgetClass *klass)
     plugin_class->actions      = gnc_plugin_actions;
     plugin_class->n_actions    = gnc_plugin_n_actions;
     plugin_class->ui_filename  = PLUGIN_UI_FILENAME;
+    plugin_class->add_to_window = add_to_window;
+    plugin_class->remove_from_window = remove_from_window;
 
     LEAVE (" ");
 }

commit f96585b863b1cb3b7be76cdd9577f799cd2ab3d5
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Jan 10 22:08:59 2022 +0800

    Budgets are sensitive to readonly status
    
    Disable some budget features if book is readonly

diff --git a/gnucash/gnome/gnc-budget-view.c b/gnucash/gnome/gnc-budget-view.c
index fd17bccf8..cecaf18e6 100644
--- a/gnucash/gnome/gnc-budget-view.c
+++ b/gnucash/gnome/gnc-budget-view.c
@@ -1265,6 +1265,9 @@ budget_col_edited (Account *account, GtkTreeViewColumn *col,
     guint period_num;
     gnc_numeric numeric = gnc_numeric_error (GNC_ERROR_ARG);
 
+    if (qof_book_is_readonly (gnc_get_current_book ()))
+        return;
+
     if (!xaccParseAmount (new_text, TRUE, &numeric, NULL) &&
                 !(new_text && *new_text == '\0'))
         return;
diff --git a/gnucash/gnome/gnc-plugin-page-budget.c b/gnucash/gnome/gnc-plugin-page-budget.c
index 60e4b12ea..b30755688 100644
--- a/gnucash/gnome/gnc-plugin-page-budget.c
+++ b/gnucash/gnome/gnc-plugin-page-budget.c
@@ -202,6 +202,17 @@ static GtkActionEntry gnc_plugin_page_budget_actions [] =
 
 };
 
+static const gchar *writeable_actions[] =
+{
+    /* actions which must be disabled on a readonly book. */
+    "DeleteBudgetAction",
+    "OptionsBudgetAction",
+    "EstimateBudgetAction",
+    "AllPeriodsBudgetAction",
+    "BudgetNoteAction",
+    NULL
+};
+
 static guint gnc_plugin_page_budget_n_actions =
     G_N_ELEMENTS(gnc_plugin_page_budget_actions);
 
@@ -366,6 +377,10 @@ gnc_plugin_page_budget_init (GncPluginPageBudget *plugin_page)
                                   plugin_page);
     gnc_plugin_init_short_names (action_group, toolbar_labels);
 
+    if (qof_book_is_readonly (gnc_get_current_book()))
+        gnc_plugin_update_actions (action_group, writeable_actions,
+                                   "sensitive", FALSE);
+
     /* Visible types */
     priv->fd.visible_types = -1; /* Start with all types */
     priv->fd.show_hidden = FALSE;



Summary of changes:
 gnucash/gnome/gnc-budget-view.c        |  3 +++
 gnucash/gnome/gnc-plugin-budget.c      | 34 ++++++++++++++++++++++++++++++++++
 gnucash/gnome/gnc-plugin-page-budget.c | 15 +++++++++++++++
 3 files changed, 52 insertions(+)



More information about the gnucash-changes mailing list