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