gnucash maint: Multiple changes pushed
Robert Fewell
bobit at code.gnucash.org
Sun Nov 8 08:12:15 EST 2020
Updated via https://github.com/Gnucash/gnucash/commit/bbc6887b (commit)
via https://github.com/Gnucash/gnucash/commit/4c2df4c2 (commit)
from https://github.com/Gnucash/gnucash/commit/2290fa7c (commit)
commit bbc6887b0fc43b93c98b9520e78b753e85df44cb
Author: Robert Fewell <14uBobIT at gmail.com>
Date: Sun Nov 8 12:42:07 2020 +0000
Change source files dialog-dup-trans.* for space and tabs
diff --git a/gnucash/gnome-utils/dialog-dup-trans.c b/gnucash/gnome-utils/dialog-dup-trans.c
index f2542a8fb..329ecafb1 100644
--- a/gnucash/gnome-utils/dialog-dup-trans.c
+++ b/gnucash/gnome-utils/dialog-dup-trans.c
@@ -48,11 +48,11 @@ typedef struct
GtkWidget * link_edit;
GtkWidget *duplicate_title_label; // GtkLabel
- GtkWidget *duplicate_table; // GtkTable
- GtkWidget *date_label; // GtkLabel
- GtkWidget *num_label; // GtkLabel
- GtkWidget *tnum_label; // GtkLabel
- GtkWidget *link_label; //GtkLabel
+ GtkWidget *duplicate_table; // GtkTable
+ GtkWidget *date_label; // GtkLabel
+ GtkWidget *num_label; // GtkLabel
+ GtkWidget *tnum_label; // GtkLabel
+ GtkWidget *link_label; // GtkLabel
} DupTransDialog;
/* Parses the string value and returns true if it is a
@@ -66,10 +66,10 @@ parse_num (const char *string, long int *num)
if (string == NULL)
return FALSE;
- if (!gnc_strisnum(string))
+ if (!gnc_strisnum (string))
return FALSE;
- number = strtol(string, NULL, 10);
+ number = strtol (string, NULL, 10);
if ((number == LONG_MIN) || (number == LONG_MAX))
return FALSE;
@@ -147,7 +147,7 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
GtkBuilder *builder;
const gchar *tt = _("Use +- keys to increment/decrement number");
- builder = gtk_builder_new();
+ builder = gtk_builder_new ();
gnc_builder_add_from_file (builder, "gnc-plugin-page-register.glade", "num_adjustment");
gnc_builder_add_from_file (builder, "gnc-plugin-page-register.glade", "tnum_adjustment");
gnc_builder_add_from_file (builder, "gnc-plugin-page-register.glade", "duplicate_transaction_dialog");
@@ -161,7 +161,7 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
/* parent */
if (parent != NULL)
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
+ gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent));
/* date widget */
dt_dialog->date_label = GTK_WIDGET(gtk_builder_get_object (builder, "date_label"));
@@ -171,13 +171,13 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
GtkWidget *hbox;
date_edit = gnc_date_edit_new (date, FALSE, FALSE);
- gnc_date_activates_default(GNC_DATE_EDIT(date_edit), TRUE);
+ gnc_date_activates_default (GNC_DATE_EDIT(date_edit), TRUE);
hbox = GTK_WIDGET(gtk_builder_get_object (builder, "date_hbox"));
gtk_widget_show (date_edit);
gnc_date_make_mnemonic_target (GNC_DATE_EDIT(date_edit), dt_dialog->date_label);
- gtk_box_pack_end (GTK_BOX (hbox), date_edit, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX(hbox), date_edit, TRUE, TRUE, 0);
dt_dialog->date_edit = date_edit;
}
else
@@ -227,14 +227,14 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, dt_dialog);
- g_object_unref(G_OBJECT(builder));
+ g_object_unref (G_OBJECT(builder));
}
static gboolean
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,
+ gboolean show_date, time64 *date_p, GDate *gdate_p,
+ const char *num, char **out_num,
const char *tnum, char **out_tnum,
const char *tlink, char **out_tlink)
{
@@ -251,9 +251,9 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
if (!show_date)
{
// The "date" field isn't being asked for, so we make the widgets invisible
- gtk_widget_set_visible(dt_dialog->date_label, FALSE);
+ gtk_widget_set_visible (dt_dialog->date_label, FALSE);
if (dt_dialog->date_edit)
- gtk_widget_set_visible(dt_dialog->date_edit, FALSE);
+ gtk_widget_set_visible (dt_dialog->date_edit, FALSE);
// If no "date" field, there must be a "num" field, so give it focus
if (out_num)
gtk_widget_grab_focus (dt_dialog->num_edit);
@@ -262,70 +262,70 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
{
GNCDateEdit *gde;
- gde = GNC_DATE_EDIT (dt_dialog->date_edit);
+ gde = GNC_DATE_EDIT(dt_dialog->date_edit);
entry = gde->date_entry;
gtk_widget_grab_focus (entry);
}
if (window_title)
- gtk_window_set_title (GTK_WINDOW (dt_dialog->dialog), 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);
- gtk_label_set_markup(GTK_LABEL (dt_dialog->duplicate_title_label), full_text);
- g_free(full_text);
+ gchar *full_text = g_strdup_printf ("<b>%s</b>", title);
+ gtk_label_set_markup (GTK_LABEL(dt_dialog->duplicate_title_label), full_text);
+ g_free (full_text);
}
if (!out_num)
{
// The "num" field isn't being asked for, so we make the widgets invisible
- gtk_widget_set_visible(dt_dialog->num_label, FALSE);
- gtk_widget_set_visible(dt_dialog->num_edit, FALSE);
+ gtk_widget_set_visible (dt_dialog->num_label, FALSE);
+ gtk_widget_set_visible (dt_dialog->num_edit, FALSE);
}
if (!tnum)
{
// The "tnum" field isn't being asked for, so we make the widgets invisible
- gtk_widget_set_visible(dt_dialog->tnum_label, FALSE);
- gtk_widget_set_visible(dt_dialog->tnum_edit, FALSE);
+ gtk_widget_set_visible (dt_dialog->tnum_label, FALSE);
+ gtk_widget_set_visible (dt_dialog->tnum_edit, FALSE);
}
if (!show_date && !tnum)
{
// The "date" and the "tnum" fields aren't being asked for, this is a split copy
- gtk_label_set_markup(GTK_LABEL (dt_dialog->num_label), _("Action/Number"));
+ gtk_label_set_markup (GTK_LABEL(dt_dialog->num_label), _("Action/Number"));
}
if (tnum)
{
- gtk_entry_set_activates_default(GTK_ENTRY(dt_dialog->num_edit), FALSE);
- gtk_entry_set_activates_default(GTK_ENTRY(dt_dialog->tnum_edit), TRUE);
+ gtk_entry_set_activates_default (GTK_ENTRY(dt_dialog->num_edit), FALSE);
+ gtk_entry_set_activates_default (GTK_ENTRY(dt_dialog->tnum_edit), TRUE);
}
if (tlink)
{
- gtk_widget_set_visible(dt_dialog->link_label, TRUE);
- gtk_widget_set_visible(dt_dialog->link_edit, TRUE);
+ gtk_widget_set_visible (dt_dialog->link_label, TRUE);
+ gtk_widget_set_visible (dt_dialog->link_edit, TRUE);
}
else
{
- gtk_widget_set_visible(dt_dialog->link_label, FALSE);
- gtk_widget_set_visible(dt_dialog->link_edit, FALSE);
+ gtk_widget_set_visible (dt_dialog->link_label, FALSE);
+ gtk_widget_set_visible (dt_dialog->link_edit, FALSE);
}
- result = gtk_dialog_run (GTK_DIALOG (dt_dialog->dialog));
+ result = gtk_dialog_run (GTK_DIALOG(dt_dialog->dialog));
if (result == GTK_RESPONSE_OK)
{
if (date_p)
- *date_p = gnc_date_edit_get_date (GNC_DATE_EDIT (dt_dialog->date_edit));
+ *date_p = gnc_date_edit_get_date (GNC_DATE_EDIT(dt_dialog->date_edit));
if (gdate_p)
- gnc_date_edit_get_gdate (GNC_DATE_EDIT (dt_dialog->date_edit), gdate_p);
+ gnc_date_edit_get_gdate (GNC_DATE_EDIT(dt_dialog->date_edit), gdate_p);
if (out_num)
- *out_num = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->num_edit)));
+ *out_num = g_strdup (gtk_entry_get_text (GTK_ENTRY(dt_dialog->num_edit)));
if (tnum)
- *out_tnum = g_strdup (gtk_entry_get_text (GTK_ENTRY (dt_dialog->tnum_edit)));
+ *out_tnum = g_strdup (gtk_entry_get_text (GTK_ENTRY(dt_dialog->tnum_edit)));
if (tlink)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(dt_dialog->link_edit)))
@@ -336,20 +336,23 @@ gnc_dup_trans_dialog_internal (GtkWidget * parent,
else
ok = FALSE;
- gtk_widget_destroy(GTK_WIDGET(dt_dialog->dialog));
+ gtk_widget_destroy (GTK_WIDGET(dt_dialog->dialog));
g_free (dt_dialog);
return ok;
}
gboolean
-gnc_dup_trans_dialog (GtkWidget * parent, const char* title, gboolean show_date,
- time64 *date_p, const char *num, char **out_num,
+gnc_dup_trans_dialog (GtkWidget * parent, const char* title,
+ gboolean show_date, time64 *date_p,
+ const char *num, char **out_num,
const char *tnum, char **out_tnum,
const char *tlink, char **out_tlink)
{
- return gnc_dup_trans_dialog_internal(parent, NULL, title, show_date, date_p, NULL,
- num, out_num, tnum, out_tnum, tlink, out_tlink);
+ return gnc_dup_trans_dialog_internal (parent, NULL, title,
+ show_date, date_p, NULL,
+ num, out_num, tnum, out_tnum,
+ tlink, out_tlink);
}
gboolean
@@ -357,29 +360,35 @@ gnc_dup_trans_dialog_gdate (GtkWidget * parent, GDate *gdate_p,
const char *num, char **out_num)
{
time64 tmp_time;
- g_assert(gdate_p);
+ g_assert (gdate_p);
tmp_time = gdate_to_time64 (*gdate_p);
- return gnc_dup_trans_dialog_internal(parent, NULL, NULL, TRUE, &tmp_time, gdate_p,
- num, out_num, NULL, NULL, NULL, NULL);
+ 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);
+ 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)
{
time64 tmp_time;
- g_assert(gdate_p);
+ g_assert (gdate_p);
- tmp_time = gdate_to_time64(*gdate_p);
- return gnc_dup_trans_dialog_internal(parent, NULL, title, TRUE, &tmp_time, gdate_p,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ tmp_time = gdate_to_time64 (*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 7c862c0c0..055abe0bd 100644
--- a/gnucash/gnome-utils/dialog-dup-trans.h
+++ b/gnucash/gnome-utils/dialog-dup-trans.h
@@ -50,8 +50,9 @@
* Return: TRUE if user closes dialog with 'OK' *
\***********************************************************************/
gboolean
-gnc_dup_trans_dialog (GtkWidget * parent, const char* title, gboolean show_date,
- time64 *date_p, const char *num, char **out_num,
+gnc_dup_trans_dialog (GtkWidget * parent, const char* title,
+ gboolean show_date, time64 *date_p,
+ const char *num, char **out_num,
const char *tnum, char **out_tnum,
const char *tdoclink, char **out_tdoclink);
commit 4c2df4c2addde5faa72b625d3b58c83b2e6fee61
Author: Robert Fewell <14uBobIT at gmail.com>
Date: Sun Nov 8 11:40:35 2020 +0000
Bug 645379 - Problem with Number field when duplicating a transaction
When you duplicate a transaction, the dialog presented has a
GtkSpinbutton for the number field and non-numeric values are being
discarded. The register and transfer dialog have a GtkEntry for this
field so change this dialog to using them also.
diff --git a/gnucash/gnome-utils/dialog-dup-trans.c b/gnucash/gnome-utils/dialog-dup-trans.c
index 87d040923..f2542a8fb 100644
--- a/gnucash/gnome-utils/dialog-dup-trans.c
+++ b/gnucash/gnome-utils/dialog-dup-trans.c
@@ -81,17 +81,61 @@ parse_num (const char *string, long int *num)
}
static gboolean
-gnc_dup_trans_output_cb(GtkSpinButton *spinbutton,
- gpointer user_data)
+gnc_dup_inc_dec (GtkWidget *widget, const gchar *text, gint inc_dec)
{
- gboolean is_number;
long int num;
- gchar *txt = gtk_editable_get_chars(GTK_EDITABLE(spinbutton), 0, -1);
- is_number = parse_num(txt, &num);
- g_free(txt);
- if (!is_number)
- gtk_entry_set_text(GTK_ENTRY(spinbutton), "");
- return !is_number;
+
+ if (parse_num (text, &num))
+ {
+ gchar *format;
+ gchar *out;
+ num = num + inc_dec;
+
+ if (num == -1)
+ num = 0;
+
+ if (g_str_has_prefix (text, "0"))
+ format = g_strdup_printf ("%s%ld%s", "%0", strlen (text), "d");
+ else
+ format = g_strdup_printf ("%s", "%ld");
+
+ out = g_strdup_printf (format, num);
+
+ gtk_entry_set_text (GTK_ENTRY(widget), out);
+ g_free (format);
+ g_free (out);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
+gnc_dup_key_press_event_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+{
+ const gchar *text = gtk_entry_get_text (GTK_ENTRY(widget));
+
+ if (gnc_strisnum (text))
+ {
+ GdkModifierType modifiers = gtk_accelerator_get_default_mod_mask ();
+ gint increment;
+ long int num;
+
+ if ((event->state & modifiers) == GDK_CONTROL_MASK ||
+ (event->state & modifiers) == GDK_MOD1_MASK)
+ return FALSE;
+
+ if (event->keyval == GDK_KEY_plus || event->keyval == GDK_KEY_KP_Add)
+ increment = 1;
+ else if (event->keyval == GDK_KEY_minus || event->keyval == GDK_KEY_KP_Subtract)
+ increment = -1;
+ else
+ return FALSE;
+
+ return gnc_dup_inc_dec (widget, text, increment);
+
+ }
+ else
+ return FALSE;
}
static void
@@ -101,6 +145,7 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
{
GtkWidget *dialog;
GtkBuilder *builder;
+ const gchar *tt = _("Use +- keys to increment/decrement number");
builder = gtk_builder_new();
gnc_builder_add_from_file (builder, "gnc-plugin-page-register.glade", "num_adjustment");
@@ -147,31 +192,33 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
dt_dialog->num_label = GTK_WIDGET(gtk_builder_get_object (builder, "num_label"));
dt_dialog->tnum_label = GTK_WIDGET(gtk_builder_get_object (builder, "tnum_label"));
- {
- GtkWidget *num_spin, *tnum_spin;
- long int num, tnum;
-
- num_spin = GTK_WIDGET(gtk_builder_get_object (builder, "num_spin"));
- tnum_spin = GTK_WIDGET(gtk_builder_get_object (builder, "tnum_spin"));
- dt_dialog->num_edit = num_spin;
- dt_dialog->tnum_edit = tnum_spin;
-
- gtk_entry_set_activates_default(GTK_ENTRY(num_spin), TRUE);
- g_signal_connect(num_spin, "output",
- G_CALLBACK(gnc_dup_trans_output_cb), dt_dialog);
- g_signal_connect(tnum_spin, "output",
- G_CALLBACK(gnc_dup_trans_output_cb), dt_dialog);
-
- if (num_str && parse_num (num_str, &num))
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (num_spin), num + 1);
- else
- gtk_entry_set_text (GTK_ENTRY (num_spin), "");
+ dt_dialog->num_edit = GTK_WIDGET(gtk_builder_get_object (builder, "num_entry"));
+ dt_dialog->tnum_edit = GTK_WIDGET(gtk_builder_get_object (builder, "tnum_entry"));
- if (tnum_str && parse_num (tnum_str, &tnum))
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (tnum_spin), tnum + 1);
- else
- gtk_entry_set_text (GTK_ENTRY (tnum_spin), "");
+ if (num_str)
+ gtk_entry_set_text (GTK_ENTRY(dt_dialog->num_edit), num_str);
+ if (tnum_str)
+ gtk_entry_set_text (GTK_ENTRY(dt_dialog->tnum_edit), tnum_str);
+
+ g_signal_connect (dt_dialog->num_edit, "key-press-event",
+ G_CALLBACK(gnc_dup_key_press_event_cb),
+ dt_dialog);
+
+ g_signal_connect (dt_dialog->tnum_edit, "key-press-event",
+ G_CALLBACK(gnc_dup_key_press_event_cb),
+ dt_dialog);
+
+ if (gnc_strisnum (num_str))
+ {
+ gtk_widget_set_tooltip_text (GTK_WIDGET(dt_dialog->num_edit), tt);
+ gnc_dup_inc_dec (GTK_WIDGET(dt_dialog->num_edit), num_str, 1);
}
+ if (gnc_strisnum (tnum_str))
+ {
+ gtk_widget_set_tooltip_text (GTK_WIDGET(dt_dialog->tnum_edit), tt);
+ gnc_dup_inc_dec (GTK_WIDGET(dt_dialog->tnum_edit), tnum_str, 1);
+ }
+
/* Transaction Linked Document */
{
dt_dialog->link_label = GTK_WIDGET(gtk_builder_get_object (builder, "link_label"));
diff --git a/gnucash/gtkbuilder/gnc-plugin-page-register.glade b/gnucash/gtkbuilder/gnc-plugin-page-register.glade
index 84534ce5e..5e835ffdc 100644
--- a/gnucash/gtkbuilder/gnc-plugin-page-register.glade
+++ b/gnucash/gtkbuilder/gnc-plugin-page-register.glade
@@ -559,10 +559,209 @@ If 0, all previous days included</property>
<placeholder/>
</child>
</object>
- <object class="GtkAdjustment" id="num_adjustment">
- <property name="upper">1000000000</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
+ <object class="GtkDialog" id="duplicate_transaction_dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes" comments="Duplicate Transaction Dialog">Duplicate Transaction</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button76">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button77">
+ <property name="label" translatable="yes">_OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="duplicate_title_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes"><b>New Transaction Information</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="duplicate_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">6</property>
+ <property name="margin_end">6</property>
+ <property name="border_width">6</property>
+ <property name="row_spacing">3</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="date_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">_Date</property>
+ <property name="use_underline">True</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="num_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">_Number</property>
+ <property name="use_underline">True</property>
+ <property name="justify">center</property>
+ <property name="mnemonic_widget">num_entry</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="date_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="tnum_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">_Transaction Number</property>
+ <property name="use_underline">True</property>
+ <property name="justify">center</property>
+ <property name="mnemonic_widget">tnum_entry</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="link_check_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="image_position">top</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="link_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Keep Linked Document Entry</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="num_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="tnum_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button76</action-widget>
+ <action-widget response="-5">button77</action-widget>
+ </action-widgets>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkEntryBuffer" id="entrybuffer1">
+ <property name="text" translatable="yes">0</property>
</object>
<object class="GtkDialog" id="sort_by_dialog">
<property name="can_focus">False</property>
@@ -906,221 +1105,6 @@ If 0, all previous days included</property>
<placeholder/>
</child>
</object>
- <object class="GtkAdjustment" id="tnum_adjustment">
- <property name="upper">1000000000</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkDialog" id="duplicate_transaction_dialog">
- <property name="can_focus">False</property>
- <property name="border_width">6</property>
- <property name="title" translatable="yes" comments="Duplicate Transaction Dialog">Duplicate Transaction</property>
- <property name="resizable">False</property>
- <property name="modal">True</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox15">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area15">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="button76">
- <property name="label" translatable="yes">_Cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button77">
- <property name="label" translatable="yes">_OK</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="duplicate_table">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_start">6</property>
- <property name="margin_end">6</property>
- <property name="border_width">6</property>
- <property name="row_spacing">3</property>
- <property name="column_spacing">6</property>
- <child>
- <object class="GtkLabel" id="date_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">_Date</property>
- <property name="use_underline">True</property>
- <property name="justify">center</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="num_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">_Number</property>
- <property name="use_underline">True</property>
- <property name="justify">center</property>
- <property name="mnemonic_widget">num_spin</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="num_spin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">num_adjustment</property>
- <property name="climb_rate">1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="date_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="tnum_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">_Transaction Number</property>
- <property name="use_underline">True</property>
- <property name="justify">center</property>
- <property name="mnemonic_widget">tnum_spin</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="tnum_spin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">tnum_adjustment</property>
- <property name="climb_rate">1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="link_check_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
- <property name="image_position">top</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="link_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Keep Linked Document Entry</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="duplicate_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes"><b>New Transaction Information</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-6">button76</action-widget>
- <action-widget response="-5">button77</action-widget>
- </action-widgets>
- <child type="titlebar">
- <placeholder/>
- </child>
- </object>
<object class="GtkDialog" id="void_transaction_dialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
diff --git a/gnucash/gtkbuilder/gnc-plugin-page-register2.glade b/gnucash/gtkbuilder/gnc-plugin-page-register2.glade
index be1eee226..c0340f8b2 100644
--- a/gnucash/gtkbuilder/gnc-plugin-page-register2.glade
+++ b/gnucash/gtkbuilder/gnc-plugin-page-register2.glade
@@ -64,6 +64,21 @@
<property name="position">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="duplicate_title_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin_start">6</property>
+ <property name="label" translatable="yes"><b>New Transaction Information</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
<child>
<object class="GtkGrid" id="duplicate_table">
<property name="visible">True</property>
@@ -93,7 +108,7 @@
<property name="label" translatable="yes">_Number</property>
<property name="use_underline">True</property>
<property name="justify">center</property>
- <property name="mnemonic_widget">num_spin</property>
+ <property name="mnemonic_widget">num_entry</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -101,14 +116,22 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="num_spin">
+ <object class="GtkBox" id="date_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="num_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">adjustment1</property>
- <property name="climb_rate">1</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -116,16 +139,55 @@
</packing>
</child>
<child>
- <object class="GtkBox" id="date_hbox">
+ <object class="GtkLabel" id="tnum_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <child>
- <placeholder/>
- </child>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">_Transaction Number</property>
+ <property name="use_underline">True</property>
+ <property name="justify">center</property>
+ <property name="mnemonic_widget">tnum_entry</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="link_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Keep Linked Document Entry</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="tnum_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="link_check_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="image_position">top</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
</packing>
</child>
</object>
@@ -135,21 +197,6 @@
<property name="position">2</property>
</packing>
</child>
- <child>
- <object class="GtkLabel" id="duplicate_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="margin_start">6</property>
- <property name="label" translatable="yes"><b>New Transaction Information</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
</object>
</child>
<action-widgets>
diff --git a/gnucash/register/ledger-core/split-register.c b/gnucash/register/ledger-core/split-register.c
index eff5798e1..7dcde96ce 100644
--- a/gnucash/register/ledger-core/split-register.c
+++ b/gnucash/register/ledger-core/split-register.c
@@ -571,6 +571,7 @@ gnc_split_register_duplicate_current (SplitRegister* reg)
}
else
{
+ Account* account;
NumCell* num_cell;
Transaction* new_trans;
int trans_split_index;
@@ -587,18 +588,17 @@ gnc_split_register_duplicate_current (SplitRegister* reg)
/* We are on a transaction row. Copy the whole transaction. */
date = info->last_date_entered;
- if (gnc_strisnum (gnc_get_num_action (trans, trans_split)))
- {
- Account* account = gnc_split_register_get_default_account (reg);
- if (account)
- in_num = xaccAccountGetLastNum (account);
- else
- in_num = gnc_get_num_action (trans, trans_split);
- in_tnum = (reg->use_tran_num_for_num_field
- ? NULL
- : gnc_get_num_action (trans, NULL));
- }
+ account = gnc_split_register_get_default_account (reg);
+
+ if (account && gnc_strisnum (gnc_get_num_action (trans, trans_split)))
+ in_num = xaccAccountGetLastNum (account);
+ else
+ in_num = gnc_get_num_action (trans, trans_split);
+
+ in_tnum = (reg->use_tran_num_for_num_field
+ ? NULL
+ : gnc_get_num_action (trans, NULL));
if (!gnc_dup_trans_dialog (gnc_split_register_get_parent (reg), NULL,
TRUE, &date, in_num, &out_num, in_tnum, &out_tnum,
Summary of changes:
gnucash/gnome-utils/dialog-dup-trans.c | 222 +++++++----
gnucash/gnome-utils/dialog-dup-trans.h | 5 +-
gnucash/gtkbuilder/gnc-plugin-page-register.glade | 422 ++++++++++-----------
gnucash/gtkbuilder/gnc-plugin-page-register2.glade | 101 +++--
gnucash/register/ledger-core/split-register.c | 22 +-
5 files changed, 430 insertions(+), 342 deletions(-)
More information about the gnucash-changes
mailing list