gnucash maint: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Sun Apr 19 10:34:44 EDT 2020
Updated via https://github.com/Gnucash/gnucash/commit/8913e932 (commit)
via https://github.com/Gnucash/gnucash/commit/26065f24 (commit)
via https://github.com/Gnucash/gnucash/commit/f2a0fccc (commit)
from https://github.com/Gnucash/gnucash/commit/4b8649f7 (commit)
commit 8913e9329d2caabf929e1a2b5f2a7f88786709b6
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Fri Apr 17 20:11:38 2020 +0800
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.
diff --git a/gnucash/gnome/gnc-plugin-budget.c b/gnucash/gnome/gnc-plugin-budget.c
index ab7364f9a..bdbd9b21e 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 f6e7468e8..3e9cb8cd6 100644
--- a/gnucash/ui/gnc-plugin-budget-ui.xml
+++ b/gnucash/ui/gnc-plugin-budget-ui.xml
@@ -6,6 +6,7 @@
<menuitem name="BudgetNewBudget" action="NewBudgetAction"/>
<menuitem name="BudgetOpenBudget" action="OpenBudgetAction"/>
<menuitem name="BudgetCopyBudget" action="CopyBudgetAction"/>
+ <menuitem name="BudgetDeleteBudget" action="DeleteBudgetAction"/>
</menu>
</placeholder>
</menu>
commit 26065f24c43722566bea5b9ad1bcedf1282611a6
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Thu Apr 16 19:19:23 2020 +0800
Bug 782455 - Modify Add Reversing Transaction feature
calls gnc_dup_time64_dialog to get reversing transaction's
posting_date.
diff --git a/gnucash/gnome/gnc-plugin-page-register.c b/gnucash/gnome/gnc-plugin-page-register.c
index a9f979440..7b05beffc 100644
--- a/gnucash/gnome/gnc-plugin-page-register.c
+++ b/gnucash/gnome/gnc-plugin-page-register.c
@@ -51,6 +51,7 @@
#include "gnc-plugin-business.h"
#include "dialog-account.h"
+#include "dialog-dup-trans.h"
#include "dialog-find-account.h"
#include "dialog-find-transactions.h"
#include "dialog-print-check.h"
@@ -3959,6 +3960,10 @@ gnc_plugin_page_register_cmd_reverse_transaction (GtkAction* action,
SplitRegister* reg;
GNCSplitReg* gsr;
Transaction* trans, *new_trans;
+ time64 date = gnc_time (NULL);
+ GtkWidget *window;
+ Account *account;
+ Split *split;
ENTER ("(action %p, page %p)", action, page);
@@ -3966,30 +3971,41 @@ gnc_plugin_page_register_cmd_reverse_transaction (GtkAction* action,
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
reg = gnc_ledger_display_get_split_register (priv->ledger);
+ window = gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page));
trans = gnc_split_register_get_current_trans (reg);
if (trans == NULL)
return;
if (xaccTransGetReversedBy (trans))
{
- gnc_error_dialog (GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (
- page))), "%s",
+ gnc_error_dialog (GTK_WINDOW (window), "%s",
_ ("A reversing entry has already been created for this transaction."));
return;
}
- qof_event_suspend();
+ split = gnc_split_register_get_current_split (reg);
+ account = xaccSplitGetAccount (split);
+
+ if (!gnc_dup_time64_dialog (window, _("Reverse Transaction"),
+ _("New Transaction Information"), &date))
+ {
+ LEAVE ("reverse cancelled");
+ return;
+ }
+
+ gnc_suspend_gui_refresh();
new_trans = xaccTransReverse (trans);
/* Clear transaction level info */
- xaccTransSetDatePostedSecsNormalized (new_trans, gnc_time (NULL));
+ xaccTransSetDatePostedSecsNormalized (new_trans, date);
xaccTransSetDateEnteredSecs (new_trans, gnc_time (NULL));
- qof_event_resume();
+ gnc_resume_gui_refresh();
/* Now jump to new trans */
gsr = gnc_plugin_page_register_get_gsr (GNC_PLUGIN_PAGE (page));
- gnc_split_reg_jump_to_split (gsr, xaccTransGetSplit (new_trans, 0));
+ split = xaccTransFindSplitByAccount(new_trans, account);
+ gnc_split_reg_jump_to_split (gsr, split);
LEAVE (" ");
}
commit f2a0fcccbc46ebda498a5458078e6761fabd2f32
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Thu Apr 16 19:17:48 2020 +0800
[dialog-dup-trans] add&expose gnc_dup_time64_dialog
gets a time64 from UI, and also sets window_title and title
diff --git a/gnucash/gnome-utils/dialog-dup-trans.c b/gnucash/gnome-utils/dialog-dup-trans.c
index 690e57f6d..dc302d913 100644
--- a/gnucash/gnome-utils/dialog-dup-trans.c
+++ b/gnucash/gnome-utils/dialog-dup-trans.c
@@ -183,7 +183,8 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
}
static gboolean
-gnc_dup_trans_dialog_internal (GtkWidget * parent, const char* title,
+gnc_dup_trans_dialog_internal (GtkWidget * parent,
+ const char* window_title, const char* title,
gboolean show_date, time64 *date_p,
GDate *gdate_p, const char *num, char **out_num,
const char *tnum, char **out_tnum,
@@ -218,6 +219,9 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent, const char* title,
gtk_widget_grab_focus (entry);
}
+ if (window_title)
+ gtk_window_set_title (GTK_WINDOW (dt_dialog->dialog), window_title);
+
if (title)
{
gchar *full_text = g_strdup_printf("<b>%s</b>", title);
@@ -296,7 +300,7 @@ gnc_dup_trans_dialog (GtkWidget * parent, const char* title, gboolean show_date,
const char *tnum, char **out_tnum,
const char *tassoc, char **out_tassoc)
{
- return gnc_dup_trans_dialog_internal(parent, title, show_date, date_p, NULL,
+ return gnc_dup_trans_dialog_internal(parent, NULL, title, show_date, date_p, NULL,
num, out_num, tnum, out_tnum, tassoc, out_tassoc);
}
@@ -308,10 +312,18 @@ gnc_dup_trans_dialog_gdate (GtkWidget * parent, GDate *gdate_p,
g_assert(gdate_p);
tmp_time = gdate_to_time64 (*gdate_p);
- return gnc_dup_trans_dialog_internal(parent, NULL, TRUE, &tmp_time, gdate_p,
+ return gnc_dup_trans_dialog_internal(parent, NULL, NULL, TRUE, &tmp_time, gdate_p,
num, out_num, NULL, NULL, NULL, NULL);
}
+gboolean
+gnc_dup_time64_dialog (GtkWidget * parent, const char *window_title,
+ const char* title, time64 *date)
+{
+ return gnc_dup_trans_dialog_internal(parent, window_title, title, TRUE, date, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+}
+
gboolean
gnc_dup_date_dialog (GtkWidget * parent, const char* title, GDate *gdate_p)
{
@@ -319,6 +331,7 @@ gnc_dup_date_dialog (GtkWidget * parent, const char* title, GDate *gdate_p)
g_assert(gdate_p);
tmp_time = gdate_to_time64(*gdate_p);
- return gnc_dup_trans_dialog_internal(parent, title, TRUE, &tmp_time, gdate_p,
+ return gnc_dup_trans_dialog_internal(parent, NULL, title, TRUE, &tmp_time, gdate_p,
NULL, NULL, NULL, NULL, NULL, NULL);
}
+
diff --git a/gnucash/gnome-utils/dialog-dup-trans.h b/gnucash/gnome-utils/dialog-dup-trans.h
index a3fdb5457..53aeda394 100644
--- a/gnucash/gnome-utils/dialog-dup-trans.h
+++ b/gnucash/gnome-utils/dialog-dup-trans.h
@@ -73,4 +73,19 @@ gnc_dup_trans_dialog_gdate (GtkWidget * parent, GDate *gdate_p,
gboolean
gnc_dup_date_dialog (GtkWidget * parent, const char* title, GDate *date);
+/**
+ * Opens up a window to ask for a date for the duplicated element
+ *
+ * \param parent The parent of the window to be created
+ * \param window_title The title of the dialog window
+ * \param title The text of the title label
+ * \param date The initial time64 date to use, and the output
+ * parameter for the new date. Must not be NULL.
+ *
+ * \return TRUE if user closes dialog with 'OK', otherwise FALSE
+ */
+gboolean
+gnc_dup_time64_dialog (GtkWidget * parent, const char *window_title,
+ const char* title, time64 *date);
+
#endif // DIALOGDUPTRANS_H
Summary of changes:
gnucash/gnome-utils/dialog-dup-trans.c | 21 +++++++++++++++++----
gnucash/gnome-utils/dialog-dup-trans.h | 15 +++++++++++++++
gnucash/gnome/gnc-plugin-budget.c | 28 ++++++++++++++++++++++++++++
gnucash/gnome/gnc-plugin-page-register.c | 28 ++++++++++++++++++++++------
gnucash/ui/gnc-plugin-budget-ui.xml | 1 +
5 files changed, 83 insertions(+), 10 deletions(-)
More information about the gnucash-changes
mailing list