r21903 - gnucash/trunk/src/import-export/aqbanking - Bug #668693: aqbanking: Improve transaction UI
Christian Stimming
cstim at code.gnucash.org
Sat Jan 28 17:12:26 EST 2012
Author: cstim
Date: 2012-01-28 17:12:26 -0500 (Sat, 28 Jan 2012)
New Revision: 21903
Trac: http://svn.gnucash.org/trac/changeset/21903
Modified:
gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade
Log:
Bug #668693: aqbanking: Improve transaction UI
* Use expander to show/hide templates
* Disable execute button as long as field values are incorrect
* Use icons and tooltips in entries to indicate that an incorrect value was inserted
Patch by Johannes Schmid.
Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2012-01-28 22:12:12 UTC (rev 21902)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2012-01-28 22:12:26 UTC (rev 21903)
@@ -69,11 +69,10 @@
static AB_JOB *gnc_ab_trans_dialog_get_available_empty_job(AB_ACCOUNT *ab_acc,
GncABTransType trans_type);
-static gboolean gnc_ab_trans_dialog_check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td,
- const AB_TRANSACTION *trans);
+static void gnc_ab_trans_dialog_check_ktoblzcheck(const GncABTransDialog *td,
+ const AB_TRANSACTION *trans);
-/* Callbacks - connect with GtkBuilder */
-G_MODULE_EXPORT void gnc_ab_trans_dialog_account_changed_cb(GtkEditable *editable, gpointer user_data);
+/* Callbacks - connected with GtkBuilder */
G_MODULE_EXPORT void gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_add_templ_cb(GtkButton *button, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_moveup_templ_cb(GtkButton *button, gpointer user_data);
@@ -89,6 +88,7 @@
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data);
+G_MODULE_EXPORT void gnc_ab_trans_dialog_verify_values(GncABTransDialog *td);
enum
@@ -104,7 +104,7 @@
GtkWidget *dialog;
GtkWidget *parent;
AB_ACCOUNT *ab_acc;
-
+
/* Whether this is a transfer or a direct debit */
GncABTransType trans_type;
@@ -129,6 +129,9 @@
GtkTreeView *template_gtktreeview;
GtkListStore *template_list_store;
+ /* Exec button */
+ GtkWidget *exec_button;
+
/* Flag, if template list has been changed */
gboolean templ_changed;
@@ -227,6 +230,7 @@
const gchar *ab_accountnumber;
const gchar *ab_bankname;
const gchar *ab_bankcode;
+ GtkWidget *trans_vbox;
GtkWidget *heading_label;
GtkWidget *recp_name_heading;
GtkWidget *recp_account_heading;
@@ -271,6 +275,7 @@
gtk_window_set_transient_for(GTK_WINDOW(td->dialog), GTK_WINDOW(parent));
/* Extract widgets */
+ trans_vbox = GTK_WIDGET(gtk_builder_get_object (builder, "trans_vbox"));
heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label"));
recp_name_heading = GTK_WIDGET(gtk_builder_get_object (builder, "recp_name_heading"));
td->recp_name_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_name_entry"));
@@ -284,6 +289,7 @@
td->purpose_cont_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont_entry"));
td->purpose_cont2_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont2_entry"));
td->purpose_cont3_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont3_entry"));
+ td->exec_button = GTK_WIDGET(gtk_builder_get_object(builder, "exec_now_button"));
orig_name_heading = GTK_WIDGET(gtk_builder_get_object (builder, "orig_name_heading"));
orig_name_label = GTK_WIDGET(gtk_builder_get_object (builder, "orig_name_label"));
orig_account_heading = GTK_WIDGET(gtk_builder_get_object (builder, "orig_account_heading"));
@@ -302,7 +308,9 @@
TRUE);
gnc_amount_edit_set_fraction(GNC_AMOUNT_EDIT(td->amount_edit),
commodity_scu);
-
+ g_signal_connect_swapped (gnc_amount_edit_gtk_entry(GNC_AMOUNT_EDIT(td->amount_edit)), "changed",
+ G_CALLBACK(gnc_ab_trans_dialog_verify_values), td);
+
/* Check for what kind of transaction this should be, and change the
* labels accordingly */
switch (trans_type)
@@ -367,23 +375,37 @@
gtk_tree_view_append_column(td->template_gtktreeview, column);
/* Connect the Signals */
- gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, td);
+ gtk_builder_connect_signals_full(builder, gnc_builder_connect_full_func, td);
g_object_unref(G_OBJECT(builder));
+ /* Disabled OK button until suitable values are filled */
+ gnc_ab_trans_dialog_verify_values(td);
+
return td;
}
-static gboolean
-check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td,
- const AB_TRANSACTION *trans)
+static void
+gnc_ab_trans_dialog_entry_set (GtkWidget* entry,
+ const gchar* message,
+ const gchar* stock_icon)
{
+ g_object_set (entry,
+ "secondary-icon-stock", stock_icon,
+ "secondary-icon-tooltip-text", message,
+ NULL);
+}
+
+static void
+gnc_ab_trans_dialog_check_ktoblzcheck(const GncABTransDialog *td,
+ const AB_TRANSACTION *trans)
+{
#ifndef HAVE_KTOBLZCHECK_H
- return TRUE;
+ return;
#else
gint blzresult;
const char *blztext;
- gboolean values_ok = TRUE;
+ gchar* message;
ENTER(" ");
@@ -394,15 +416,16 @@
switch (blzresult)
{
case 2:
- gtk_widget_show(parent);
- values_ok = gnc_verify_dialog(
- parent, TRUE,
- _("The internal check of the destination account number '%s' "
- "at the specified bank with bank code '%s' failed. This means "
- "the account number might contain an error. Should the online "
- "transfer job be sent with this account number anyway?"),
- AB_Transaction_GetRemoteAccountNumber(trans),
- AB_Transaction_GetRemoteBankCode(trans));
+ message = g_strdup_printf(_("The internal check of the destination account number '%s' "
+ "at the specified bank with bank code '%s' failed. This means "
+ "the account number might contain an error."),
+ AB_Transaction_GetRemoteAccountNumber(trans),
+ AB_Transaction_GetRemoteBankCode(trans));
+ gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry, message,
+ GTK_STOCK_DIALOG_WARNING);
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry, message,
+ GTK_STOCK_DIALOG_WARNING);
+
blztext = "Kontonummer wahrscheinlich falsch";
break;
case 0:
@@ -417,13 +440,130 @@
break;
}
+ if (blzresult != 2)
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry, "",
+ NULL);
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry, "",
+ NULL);
+ }
+
LEAVE("KtoBlzCheck said check is %d = %s",
blzresult, blztext ? blztext : "(none)");
-
- return values_ok;
#endif
}
+static void
+gnc_ab_trans_dialog_clear_transaction(GncABTransDialog *td)
+{
+ AB_Transaction_free(td->ab_trans);
+ td->ab_trans = NULL;
+}
+
+void
+gnc_ab_trans_dialog_verify_values(GncABTransDialog *td)
+{
+ gchar* purpose;
+ gchar* othername;
+ const gchar* account;
+ const gchar* bankcode;
+
+ gboolean values_ok = TRUE;
+
+ GtkWidget *amount_entry = gnc_amount_edit_gtk_entry(GNC_AMOUNT_EDIT(td->amount_edit));
+
+ /* Fill in the values from the entry fields into a new
+ * AB_TRANSACTION */
+ td->ab_trans = gnc_ab_trans_dialog_fill_values(td);
+
+ /* Check recipient / remote name */
+ othername = gnc_ab_get_remote_name(td->ab_trans);
+ if (!othername || !strlen(othername))
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_name_entry,
+ _("You did not enter a recipient name. A recipient name is "
+ "required for an online transfer.\n"),
+ GTK_STOCK_CANCEL);
+
+ g_free (othername);
+ values_ok = FALSE;
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_name_entry, "", NULL);
+ g_free(othername);
+ }
+
+ /* Check account */
+ account = AB_Transaction_GetRemoteAccountNumber(td->ab_trans);
+ if (!account || !strlen(account))
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry,
+ _("You did not enter a recipient account. A recipient account is "
+ "required for an online transfer.\n"),
+ GTK_STOCK_CANCEL);
+ values_ok = FALSE;
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry, "", NULL);
+ }
+ /* Check bank */
+ bankcode = AB_Transaction_GetRemoteBankCode(td->ab_trans);
+ if (!bankcode || !strlen(bankcode))
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry,
+ _("You did not enter a recipient bank. A recipient bank is "
+ "required for an online transfer.\n"),
+ GTK_STOCK_CANCEL);
+ values_ok = FALSE;
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry, "", NULL);
+ }
+ /* Check if account details are correct - gives warning only */
+ if (values_ok)
+ gnc_ab_trans_dialog_check_ktoblzcheck(td, td->ab_trans);
+
+ /* Check transaction value */
+ if (AB_Value_GetValueAsDouble(AB_Transaction_GetValue(td->ab_trans))
+ == 0.0)
+ {
+ gnc_ab_trans_dialog_entry_set (amount_entry,
+ _("The amount is zero or the amount field could not be "
+ "interpreted correctly. You might have mixed up decimal "
+ "point and comma, compared to your locale settings. "
+ "This does not result in a valid online transfer job."),
+ GTK_STOCK_CANCEL);
+ values_ok = FALSE;
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (amount_entry, "", NULL);
+ }
+
+ /* Check transaction purpose */
+ purpose = gnc_ab_get_purpose(td->ab_trans);
+ if (!purpose || !strlen(purpose))
+ {
+ gnc_ab_trans_dialog_entry_set (td->purpose_entry,
+ _("You did not enter any transaction purpose. A purpose is "
+ "required for an online transfer.\n"),
+ GTK_STOCK_CANCEL);
+ g_free (purpose);
+ values_ok = FALSE;
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (td->purpose_entry, "", NULL);
+ g_free(purpose);
+ }
+
+ gtk_widget_set_sensitive(td->exec_button, values_ok);
+ gnc_ab_trans_dialog_clear_transaction(td);
+}
+
gint
gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td)
{
@@ -454,117 +594,30 @@
/* Show the dialog */
gtk_widget_show(td->dialog);
- /* Repeat until entered values make sense */
- do
+ /* Now run the dialog until it gets closed by a button press */
+ result = gtk_dialog_run (GTK_DIALOG (td->dialog));
+
+ /* Was cancel pressed or dialog closed?
+ * GNC_RESPONSE_NOW == execute now
+ * GNC_RESPONSE_LATER == scheduled for later execution (unimplemented)
+ * GTK_RESPONSE_CANCEL == cancel
+ * GTK_RESPONSE_DELETE_EVENT == window destroyed */
+ if (result != GNC_RESPONSE_NOW && result != GNC_RESPONSE_LATER)
{
- /* Now run the dialog until it gets closed by a button press */
- result = gtk_dialog_run (GTK_DIALOG (td->dialog));
+ gtk_widget_destroy(td->dialog);
+ td->dialog = NULL;
+ return result;
+ }
- /* Was cancel pressed or dialog closed?
- * GNC_RESPONSE_NOW == execute now
- * GNC_RESPONSE_LATER == scheduled for later execution (unimplemented)
- * GTK_RESPONSE_CANCEL == cancel
- * GTK_RESPONSE_DELETE_EVENT == window destroyed */
- if (result != GNC_RESPONSE_NOW && result != GNC_RESPONSE_LATER)
- {
- gtk_widget_destroy(td->dialog);
- td->dialog = NULL;
- break;
- }
+ /* Get the transaction details - have been checked beforehand */
+ td->ab_trans = gnc_ab_trans_dialog_fill_values(td);
- /* Now fill in the values from the entry fields into a new
- * AB_TRANSACTION */
- td->ab_trans = gnc_ab_trans_dialog_fill_values(td);
- values_ok = TRUE;
+ /* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
+ * transactionCode according to some GUI selection here!! */
+ /*if (td->trans_type == SINGLE_DEBITNOTE)
+ AB_TRANSACTION_setTextKey (td->hbci_trans, 05); */
+
- /* Check transaction value */
- values_ok =
- AB_Value_GetValueAsDouble(AB_Transaction_GetValue(td->ab_trans))
- != 0.0;
- if (!values_ok)
- {
- gtk_widget_show(td->dialog);
- if (gnc_verify_dialog(
- td->dialog, TRUE, "%s",
- _("The amount is zero or the amount field could not be "
- "interpreted correctly. You might have mixed up decimal "
- "point and comma, compared to your locale settings. "
- "This does not result in a valid online transfer job. \n"
- "\n"
- "Do you want to enter the job again?")))
- {
- continue;
- }
- else
- {
- AB_Transaction_free(td->ab_trans);
- td->ab_trans = NULL;
- result = GTK_RESPONSE_CANCEL;
- break;
- }
- }
-
- /* Check transaction purpose */
- purpose = gnc_ab_get_purpose(td->ab_trans);
- values_ok = *purpose;
- g_free(purpose);
- if (!values_ok)
- {
- gtk_widget_show(td->dialog);
- if (gnc_verify_dialog(
- td->dialog, TRUE, "%s",
- _("You did not enter any transaction purpose. A purpose is "
- "required for an online transfer.\n"
- "\n"
- "Do you want to enter the job again?")))
- {
- continue;
- }
- else
- {
- AB_Transaction_free(td->ab_trans);
- td->ab_trans = NULL;
- result = GTK_RESPONSE_CANCEL;
- break;
- }
- }
-
- /* Check recipient / remote name */
- othername = gnc_ab_get_remote_name(td->ab_trans);
- values_ok = othername && *othername;
- g_free(othername);
- if (!values_ok)
- {
- gtk_widget_show(td->dialog);
- if (gnc_verify_dialog(
- td->dialog, TRUE, "%s",
- _("You did not enter a recipient name. A recipient name is "
- "required for an online transfer.\n"
- "\n"
- "Do you want to enter the job again?")))
- {
- continue;
- }
- else
- {
- AB_Transaction_free(td->ab_trans);
- td->ab_trans = NULL;
- result = GTK_RESPONSE_CANCEL;
- break;
- }
- }
-
- /* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
- * transactionCode according to some GUI selection here!! */
- /*if (td->trans_type == SINGLE_DEBITNOTE)
- AB_TRANSACTION_setTextKey (td->hbci_trans, 05); */
-
- /* And finally check the account code, if ktoblzcheck is available */
- values_ok = check_ktoblzcheck(td->dialog, td, td->ab_trans);
-
- }
- while (!values_ok);
-
/* Hide the dialog */
if (td->dialog)
gtk_widget_hide(td->dialog);
@@ -808,12 +861,6 @@
}
void
-gnc_ab_trans_dialog_account_changed_cb(GtkEditable *editable, gpointer user_data)
-{
- /* TODO */
-}
-
-void
gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_data)
{
#if HAVE_KTOBLZCHECK_H
@@ -864,6 +911,7 @@
}
LEAVE(" ");
#endif
+ gnc_ab_trans_dialog_verify_values(td);
}
struct _FindTemplData
Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade 2012-01-28 22:12:12 UTC (rev 21902)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade 2012-01-28 22:12:26 UTC (rev 21903)
@@ -1,7 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy project-wide -->
<object class="GtkDialog" id="Connection Dialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
@@ -11,12 +10,12 @@
<property name="type_hint">dialog</property>
<signal name="delete-event" handler="ggg_delete_event_cb" swapped="no"/>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox9">
+ <object class="GtkBox" id="dialog-vbox9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">2</property>
<child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area9">
+ <object class="GtkButtonBox" id="dialog-action_area9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
@@ -118,12 +117,10 @@
<object class="GtkEntry" id="top_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -181,12 +178,10 @@
<object class="GtkEntry" id="second_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -240,8 +235,6 @@
<object class="GtkScrolledWindow" id="scrolledwindow30">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="log_text">
@@ -305,12 +298,12 @@
<property name="title" translatable="yes">Get Transactions Online</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
+ <object class="GtkBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">2</property>
<child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
+ <object class="GtkButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
@@ -623,11 +616,11 @@
<property name="title" translatable="yes">Enter Password</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox3">
+ <object class="GtkBox" id="dialog-vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area3">
+ <object class="GtkButtonBox" id="dialog-action_area3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
@@ -729,12 +722,10 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -747,12 +738,10 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -891,11 +880,11 @@
<property name="title" translatable="yes">Name for new template</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox2">
+ <object class="GtkBox" id="dialog-vbox2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area2">
+ <object class="GtkButtonBox" id="dialog-action_area2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
@@ -963,13 +952,11 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">250</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="activates_default">True</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -997,114 +984,13 @@
<property name="title" translatable="yes">Online Transaction</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox7">
+ <object class="GtkBox" id="dialog-vbox7">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="exec_later_button">
- <property name="label" translatable="yes">Execute later (unimpl.)</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">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="cancel_button">
- <property name="label">gtk-cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="exec_now_button">
- <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">True</property>
- <property name="has_tooltip">True</property>
- <property name="tooltip_markup">Execute this online transaction now</property>
- <property name="tooltip_text" translatable="yes">Execute this online transaction now</property>
- <property name="use_action_appearance">False</property>
- <child>
- <object class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <object class="GtkHBox" id="hbox122">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-execute</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8877454">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Execute Now</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>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</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="GtkVBox" id="vbox151">
+ <object class="GtkVBox" id="trans_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">5</property>
@@ -1122,17 +1008,6 @@
</packing>
</child>
<child>
- <object class="GtkHSeparator" id="hseparator7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
<object class="GtkTable" id="table6">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -1143,13 +1018,11 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">12</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- <signal name="changed" handler="gnc_ab_trans_dialog_account_changed_cb" swapped="no"/>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
<signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
</object>
<packing>
@@ -1177,12 +1050,10 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">8</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
<signal name="changed" handler="gnc_ab_trans_dialog_bankcode_changed_cb" swapped="no"/>
<signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
</object>
@@ -1215,12 +1086,11 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">27</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
</object>
<packing>
<property name="right_attach">3</property>
@@ -1442,6 +1312,202 @@
</packing>
</child>
<child>
+ <object class="GtkEntry" id="purpose_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">27</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
+ </object>
+ <packing>
+ <property name="top_attach">11</property>
+ <property name="bottom_attach">12</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="purpose_cont2_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">27</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
+ </object>
+ <packing>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">14</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="purpose_cont_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">27</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">11</property>
+ <property name="bottom_attach">12</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="purpose_cont3_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">27</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">14</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="amount_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">19</property>
+ <property name="bottom_attach">20</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="y_padding">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">14</property>
+ <property name="bottom_attach">15</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="y_padding">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
<object class="GtkHBox" id="hbox117">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -1450,6 +1516,7 @@
<object class="GtkVButtonBox" id="vbutonbox158">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="add_templ_button">
<property name="visible">True</property>
@@ -1633,8 +1700,6 @@
<object class="GtkScrolledWindow" id="template_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="template_list">
@@ -1643,6 +1708,9 @@
<property name="headers_visible">False</property>
<property name="rules_hint">True</property>
<signal name="row-activated" handler="gnc_ab_trans_dialog_templ_list_row_activated_cb" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
</object>
</child>
</object>
@@ -1650,222 +1718,143 @@
<property name="expand">True</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8877442">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Use Transaction Template</property>
- <property name="justify">center</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">20</property>
- <property name="bottom_attach">21</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
</child>
- <child>
- <object class="GtkEntry" id="purpose_entry">
+ <child type="label">
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Templates</property>
</object>
- <packing>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- <property name="y_options"></property>
- </packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="exec_later_button">
+ <property name="label" translatable="yes">Execute later (unimpl.)</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">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="cancel_button">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="exec_now_button">
+ <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">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Execute this online transaction now</property>
+ <property name="tooltip_text" translatable="yes">Execute this online transaction now</property>
+ <property name="use_action_appearance">False</property>
<child>
- <object class="GtkEntry" id="purpose_cont2_entry">
+ <object class="GtkAlignment" id="alignment6">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- </object>
- <packing>
- <property name="top_attach">13</property>
- <property name="bottom_attach">14</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="purpose_cont_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="purpose_cont3_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">13</property>
- <property name="bottom_attach">14</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="amount_hbox">
- <property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <placeholder/>
+ <object class="GtkHBox" id="hbox122">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-execute</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877454">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Execute Now</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>
</child>
</object>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="y_options"></property>
- </packing>
</child>
- <child>
- <object class="GtkHSeparator" id="hseparator8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">19</property>
- <property name="bottom_attach">20</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="y_padding">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">14</property>
- <property name="bottom_attach">15</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="y_padding">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
</object>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
More information about the gnucash-changes
mailing list