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