From 274dd2f8bc65f53e8920a22ac066fe8bb4414fbc Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Sun, 20 Jan 2019 12:34:36 +0000 Subject: [PATCH] Save the Account filter settings for a Budget Page Use the newly created functions to save and restore the account filter settings to the saved Budget section of the state file. --- gnucash/gnome/gnc-budget-view.c | 29 ++++++++++++++++++++++++-- gnucash/gnome/gnc-budget-view.h | 1 + gnucash/gnome/gnc-plugin-page-budget.c | 5 ++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/gnucash/gnome/gnc-budget-view.c b/gnucash/gnome/gnc-budget-view.c index 0b36e96c16..8f936806cd 100644 --- a/gnucash/gnome/gnc-budget-view.c +++ b/gnucash/gnome/gnc-budget-view.c @@ -496,6 +496,10 @@ gbv_create_widget(GncBudgetView *view) g_signal_connect(G_OBJECT(tree_view), "size-allocate", G_CALLBACK(gbv_treeview_resized_cb), view); + // Read account filter state information from budget section + gnc_tree_view_account_restore_filter (GNC_TREE_VIEW_ACCOUNT(priv->tree_view), priv->fd, + gnc_state_get_current(), gnc_tree_view_get_state_section (GNC_TREE_VIEW(priv->tree_view))); + gnc_budget_view_refresh(view); } @@ -526,7 +530,7 @@ gnc_budget_view_save(GncBudgetView *view, GKeyFile *key_file, const gchar *group priv = GNC_BUDGET_VIEW_GET_PRIVATE(view); - //FIXME + // Save the account filter and page state information to page section gnc_tree_view_account_save(GNC_TREE_VIEW_ACCOUNT(priv->tree_view), priv->fd, key_file, group_name); LEAVE(" "); @@ -586,7 +590,7 @@ gnc_budget_view_restore(GncBudgetView* view, GKeyFile *key_file, const gchar *gr /* Create the new view */ priv = GNC_BUDGET_VIEW_GET_PRIVATE(view); - //FIXME + // Restore the account filter and page state information from page section gnc_tree_view_account_restore(GNC_TREE_VIEW_ACCOUNT(priv->tree_view), priv->fd, key_file, group_name); LEAVE(" "); @@ -619,7 +623,28 @@ gnc_budget_view_delete_budget(GncBudgetView *view) LEAVE(" "); } +/*********************************************************************** + * Save the Account filter information for this budget * + * * + * @param view The view to which the budget is associated. * + **********************************************************************/ +void +gnc_budget_view_save_account_filter (GncBudgetView *view) +{ + GncBudgetViewPrivate *priv; + g_return_if_fail(view != NULL); + + ENTER("view %p", view); + + priv = GNC_BUDGET_VIEW_GET_PRIVATE (view); + + // Save account filter state information to budget section + gnc_tree_view_account_save_filter (GNC_TREE_VIEW_ACCOUNT(priv->tree_view), + priv->fd, gnc_state_get_current(), gnc_tree_view_get_state_section (GNC_TREE_VIEW(priv->tree_view))); + + LEAVE(" "); +} #if 0 /*********************************************************************** diff --git a/gnucash/gnome/gnc-budget-view.h b/gnucash/gnome/gnc-budget-view.h index 3e85b8d8ec..cbe5d47308 100644 --- a/gnucash/gnome/gnc-budget-view.h +++ b/gnucash/gnome/gnc-budget-view.h @@ -64,6 +64,7 @@ GncBudgetView *gnc_budget_view_new(GncBudget *budget, AccountFilterDialog* fd); void gnc_budget_view_save(GncBudgetView* view, GKeyFile *key_file, const gchar* group_name); void gnc_budget_view_refresh(GncBudgetView* view); void gnc_budget_view_delete_budget(GncBudgetView* view); +void gnc_budget_view_save_account_filter(GncBudgetView *view); gboolean gnc_budget_view_restore(GncBudgetView* view, GKeyFile *key_file, const gchar* group_name); GtkTreeSelection* gnc_budget_view_get_selection(GncBudgetView* view); Account* gnc_budget_view_get_account_from_path(GncBudgetView* view, GtkTreePath* path); diff --git a/gnucash/gnome/gnc-plugin-page-budget.c b/gnucash/gnome/gnc-plugin-page-budget.c index 0360bc5fc9..1906cbf517 100644 --- a/gnucash/gnome/gnc-plugin-page-budget.c +++ b/gnucash/gnome/gnc-plugin-page-budget.c @@ -480,6 +480,9 @@ gnc_plugin_page_budget_destroy_widget (GncPluginPage *plugin_page) if (priv->budget_view) { + // save the account filter state information to budget section + gnc_budget_view_save_account_filter (priv->budget_view); + if (priv->delete_budget) { gnc_budget_view_delete_budget (priv->budget_view); @@ -538,7 +541,7 @@ gnc_plugin_page_budget_save_page (GncPluginPage *plugin_page, guid_to_string_buff(gnc_budget_get_guid(priv->budget), guid_str); g_key_file_set_string(key_file, group_name, BUDGET_GUID, guid_str); - //FIXME + // Save the Budget page information to state file gnc_budget_view_save(priv->budget_view, key_file, group_name); LEAVE(" ");