From 8913e9329d2caabf929e1a2b5f2a7f88786709b6 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Fri, 17 Apr 2020 20:11:38 +0800 Subject: [PATCH] Adds "Delete Budget" menu item It calls gnc_budget_gui_select_budget to request a budget, and calls gnc_budget_gui_delete_budget to offer second chance before deleting a budget. --- gnucash/gnome/gnc-plugin-budget.c | 28 ++++++++++++++++++++++++++++ gnucash/ui/gnc-plugin-budget-ui.xml | 1 + 2 files changed, 29 insertions(+) diff --git a/gnucash/gnome/gnc-plugin-budget.c b/gnucash/gnome/gnc-plugin-budget.c index ab7364f9a2..bdbd9b21e8 100644 --- a/gnucash/gnome/gnc-plugin-budget.c +++ b/gnucash/gnome/gnc-plugin-budget.c @@ -54,6 +54,8 @@ static void gnc_plugin_budget_cmd_open_budget (GtkAction *action, GncMainWindowActionData *data); static void gnc_plugin_budget_cmd_copy_budget (GtkAction *action, GncMainWindowActionData *data); +static void gnc_plugin_budget_cmd_delete_budget (GtkAction *action, + GncMainWindowActionData *data); static GtkActionEntry gnc_plugin_actions [] = { @@ -74,6 +76,12 @@ static GtkActionEntry gnc_plugin_actions [] = N_("Copy an existing Budget"), G_CALLBACK(gnc_plugin_budget_cmd_copy_budget) }, + { + "DeleteBudgetAction", NULL, N_("Delete Budget"), NULL, + N_("Deletes an existing Budget"), + G_CALLBACK(gnc_plugin_budget_cmd_delete_budget) + }, + }; static guint gnc_plugin_n_actions = G_N_ELEMENTS (gnc_plugin_actions); @@ -233,6 +241,26 @@ gnc_plugin_budget_cmd_copy_budget (GtkAction *action, gnc_plugin_budget_cmd_new_budget (action, user_data); } +/* user selects budget to delete */ +static void +gnc_plugin_budget_cmd_delete_budget (GtkAction *action, + GncMainWindowActionData *user_data) +{ + GncBudget *bgt; + QofBook *book; + + g_return_if_fail (user_data != NULL); + + book = gnc_get_current_book (); + if (qof_collection_count (qof_book_get_collection (book, GNC_ID_BUDGET)) == 0) + return; + + bgt = gnc_budget_gui_select_budget (GTK_WINDOW(user_data->window), book); + if (!bgt) return; + + gnc_budget_gui_delete_budget (bgt); +} + /************************************************************ * Other Functions * ************************************************************/ diff --git a/gnucash/ui/gnc-plugin-budget-ui.xml b/gnucash/ui/gnc-plugin-budget-ui.xml index f6e7468e87..3e9cb8cd6e 100644 --- a/gnucash/ui/gnc-plugin-budget-ui.xml +++ b/gnucash/ui/gnc-plugin-budget-ui.xml @@ -6,6 +6,7 @@ +