gnucash maint: [dialog-tax-table] implement renaming of Tax Table name

Christopher Lam clam at code.gnucash.org
Mon May 20 03:44:29 EDT 2019


Updated	 via  https://github.com/Gnucash/gnucash/commit/311f7d26 (commit)
	from  https://github.com/Gnucash/gnucash/commit/b26276cb (commit)



commit 311f7d26e64238719523c59fa61a0e2aeacf6885
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon May 13 16:27:54 2019 +0800

    [dialog-tax-table] implement renaming of Tax Table name
    
    Adds a new button 'Rename' in dialog-tax-table.

diff --git a/gnucash/gnome-utils/dialog-tax-table.c b/gnucash/gnome-utils/dialog-tax-table.c
index 16971e330..4151d8076 100644
--- a/gnucash/gnome-utils/dialog-tax-table.c
+++ b/gnucash/gnome-utils/dialog-tax-table.c
@@ -60,6 +60,7 @@ enum tax_entry_cols
 };
 
 void tax_table_new_table_cb (GtkButton *button, TaxTableWindow *ttw);
+void tax_table_rename_table_cb (GtkButton *button, TaxTableWindow *ttw);
 void tax_table_delete_table_cb (GtkButton *button, TaxTableWindow *ttw);
 void tax_table_new_entry_cb (GtkButton *button, TaxTableWindow *ttw);
 void tax_table_edit_entry_cb (GtkButton *button, TaxTableWindow *ttw);
@@ -555,6 +556,95 @@ tax_table_new_table_cb (GtkButton *button, TaxTableWindow *ttw)
     new_tax_table_dialog (ttw, TRUE, NULL, NULL);
 }
 
+
+static const char
+*rename_tax_table_dialog (GtkWidget *parent,
+                          const char *title,
+                          const char *msg,
+                          const char *button_name,
+                          const char *text)
+{
+    GtkWidget *vbox;
+    GtkWidget *main_vbox;
+    GtkWidget *label;
+    GtkWidget *textbox;
+    GtkWidget *dialog;
+    GtkWidget *dvbox;
+
+    main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
+    gtk_box_set_homogeneous (GTK_BOX (main_vbox), FALSE);
+    gtk_container_set_border_width (GTK_CONTAINER(main_vbox), 6);
+    gtk_widget_show (main_vbox);
+
+    label = gtk_label_new (msg);
+    gtk_label_set_justify (GTK_LABEL(label), GTK_JUSTIFY_LEFT);
+    gtk_box_pack_start (GTK_BOX(main_vbox), label, FALSE, FALSE, 0);
+    gtk_widget_show (label);
+
+    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
+    gtk_box_set_homogeneous (GTK_BOX (vbox), TRUE);
+    gtk_container_set_border_width (GTK_CONTAINER(vbox), 6);
+    gtk_container_add (GTK_CONTAINER(main_vbox), vbox);
+    gtk_widget_show (vbox);
+
+    textbox = gtk_entry_new ();
+    gtk_widget_show (textbox);
+    gtk_entry_set_text (GTK_ENTRY(textbox), text);
+    gtk_box_pack_start (GTK_BOX(vbox), textbox, FALSE, FALSE, 0);
+
+    dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW(parent),
+                                          GTK_DIALOG_DESTROY_WITH_PARENT,
+                                          _("_Cancel"), GTK_RESPONSE_CANCEL,
+                                          button_name, GTK_RESPONSE_OK,
+                                          NULL);
+    gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+
+    dvbox = gtk_dialog_get_content_area (GTK_DIALOG(dialog));
+    gtk_box_pack_start (GTK_BOX(dvbox), main_vbox, TRUE, TRUE, 0);
+
+    if (gtk_dialog_run (GTK_DIALOG(dialog)) != GTK_RESPONSE_OK)
+    {
+        gtk_widget_destroy (dialog);
+        return NULL;
+    }
+
+    text = g_strdup (gtk_entry_get_text (GTK_ENTRY (textbox)));
+    gtk_widget_destroy (dialog);
+    return text;
+}
+
+void
+tax_table_rename_table_cb (GtkButton *button, TaxTableWindow *ttw)
+{
+    const char *oldname;
+    const char *newname;
+    g_return_if_fail (ttw);
+
+    if (!ttw->current_table)
+        return;
+
+    oldname = gncTaxTableGetName (ttw->current_table);
+    newname = rename_tax_table_dialog (ttw->dialog, (_("Rename")),
+                                       (_("Please enter new name")),
+                                       (_("_Rename")), oldname);
+
+    if (newname && *newname != '\0' && (g_strcmp0(oldname, newname) != 0))
+    {
+        if (gncTaxTableLookupByName (ttw->book, newname))
+        {
+            char *message = g_strdup_printf (_("Tax table name \"%s\" already exists."),
+                                             newname);
+            gnc_error_dialog (GTK_WINDOW (ttw->dialog), "%s", message);
+            g_free (message);
+        }
+        else
+        {
+            gncTaxTableSetName (ttw->current_table, newname);
+        }
+    }
+}
+
+
 void
 tax_table_delete_table_cb (GtkButton *button, TaxTableWindow *ttw)
 {
diff --git a/gnucash/gtkbuilder/dialog-tax-table.glade b/gnucash/gtkbuilder/dialog-tax-table.glade
index 7c9445914..9c4a99928 100644
--- a/gnucash/gtkbuilder/dialog-tax-table.glade
+++ b/gnucash/gtkbuilder/dialog-tax-table.glade
@@ -121,7 +121,7 @@
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
-                            <property name="position">0</property>
+                            <property name="position">1</property>
                           </packing>
                         </child>
                         <child>
@@ -136,7 +136,22 @@
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
-                            <property name="position">1</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="rename_table_button">
+                            <property name="label" translatable="yes">_Rename</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <signal name="clicked" handler="tax_table_rename_table_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                       </object>



Summary of changes:
 gnucash/gnome-utils/dialog-tax-table.c    | 90 +++++++++++++++++++++++++++++++
 gnucash/gtkbuilder/dialog-tax-table.glade | 19 ++++++-
 2 files changed, 107 insertions(+), 2 deletions(-)



More information about the gnucash-changes mailing list