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