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.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21903 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Christian Stimming
2012-01-28 22:12:26 +00:00
parent 183aec5ec2
commit a9c51ffc1c
2 changed files with 526 additions and 489 deletions

View File

@@ -69,11 +69,10 @@ static AB_TRANSACTION *gnc_ab_trans_dialog_fill_values(GncABTransDialog *td);
static AB_JOB *gnc_ab_trans_dialog_get_available_empty_job(AB_ACCOUNT *ab_acc, static AB_JOB *gnc_ab_trans_dialog_get_available_empty_job(AB_ACCOUNT *ab_acc,
GncABTransType trans_type); GncABTransType trans_type);
static gboolean gnc_ab_trans_dialog_check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td, static void gnc_ab_trans_dialog_check_ktoblzcheck(const GncABTransDialog *td,
const AB_TRANSACTION *trans); const AB_TRANSACTION *trans);
/* Callbacks - connect with GtkBuilder */ /* Callbacks - connected with GtkBuilder */
G_MODULE_EXPORT void gnc_ab_trans_dialog_account_changed_cb(GtkEditable *editable, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_data); 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_add_templ_cb(GtkButton *button, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_moveup_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 @@ G_MODULE_EXPORT void gnc_ab_trans_dialog_templ_list_row_activated_cb(GtkTreeView
GtkTreePath *path, GtkTreePath *path,
GtkTreeViewColumn *column, GtkTreeViewColumn *column,
gpointer user_data); gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_verify_values(GncABTransDialog *td);
enum enum
@@ -129,6 +129,9 @@ struct _GncABTransDialog
GtkTreeView *template_gtktreeview; GtkTreeView *template_gtktreeview;
GtkListStore *template_list_store; GtkListStore *template_list_store;
/* Exec button */
GtkWidget *exec_button;
/* Flag, if template list has been changed */ /* Flag, if template list has been changed */
gboolean templ_changed; gboolean templ_changed;
@@ -227,6 +230,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, AB_ACCOUNT *ab_acc,
const gchar *ab_accountnumber; const gchar *ab_accountnumber;
const gchar *ab_bankname; const gchar *ab_bankname;
const gchar *ab_bankcode; const gchar *ab_bankcode;
GtkWidget *trans_vbox;
GtkWidget *heading_label; GtkWidget *heading_label;
GtkWidget *recp_name_heading; GtkWidget *recp_name_heading;
GtkWidget *recp_account_heading; GtkWidget *recp_account_heading;
@@ -271,6 +275,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, AB_ACCOUNT *ab_acc,
gtk_window_set_transient_for(GTK_WINDOW(td->dialog), GTK_WINDOW(parent)); gtk_window_set_transient_for(GTK_WINDOW(td->dialog), GTK_WINDOW(parent));
/* Extract widgets */ /* Extract widgets */
trans_vbox = GTK_WIDGET(gtk_builder_get_object (builder, "trans_vbox"));
heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label")); heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label"));
recp_name_heading = GTK_WIDGET(gtk_builder_get_object (builder, "recp_name_heading")); 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")); td->recp_name_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_name_entry"));
@@ -284,6 +289,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, AB_ACCOUNT *ab_acc,
td->purpose_cont_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont_entry")); 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_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->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_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_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")); orig_account_heading = GTK_WIDGET(gtk_builder_get_object (builder, "orig_account_heading"));
@@ -302,6 +308,8 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, AB_ACCOUNT *ab_acc,
TRUE); TRUE);
gnc_amount_edit_set_fraction(GNC_AMOUNT_EDIT(td->amount_edit), gnc_amount_edit_set_fraction(GNC_AMOUNT_EDIT(td->amount_edit),
commodity_scu); 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 /* Check for what kind of transaction this should be, and change the
* labels accordingly */ * labels accordingly */
@@ -367,23 +375,37 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, AB_ACCOUNT *ab_acc,
gtk_tree_view_append_column(td->template_gtktreeview, column); gtk_tree_view_append_column(td->template_gtktreeview, column);
/* Connect the Signals */ /* 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)); g_object_unref(G_OBJECT(builder));
/* Disabled OK button until suitable values are filled */
gnc_ab_trans_dialog_verify_values(td);
return td; return td;
} }
static gboolean static void
check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td, 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) const AB_TRANSACTION *trans)
{ {
#ifndef HAVE_KTOBLZCHECK_H #ifndef HAVE_KTOBLZCHECK_H
return TRUE; return;
#else #else
gint blzresult; gint blzresult;
const char *blztext; const char *blztext;
gboolean values_ok = TRUE; gchar* message;
ENTER(" "); ENTER(" ");
@@ -394,15 +416,16 @@ check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td,
switch (blzresult) switch (blzresult)
{ {
case 2: case 2:
gtk_widget_show(parent); message = g_strdup_printf(_("The internal check of the destination account number '%s' "
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 " "at the specified bank with bank code '%s' failed. This means "
"the account number might contain an error. Should the online " "the account number might contain an error."),
"transfer job be sent with this account number anyway?"),
AB_Transaction_GetRemoteAccountNumber(trans), AB_Transaction_GetRemoteAccountNumber(trans),
AB_Transaction_GetRemoteBankCode(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"; blztext = "Kontonummer wahrscheinlich falsch";
break; break;
case 0: case 0:
@@ -417,13 +440,130 @@ check_ktoblzcheck(GtkWidget *parent, const GncABTransDialog *td,
break; 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", LEAVE("KtoBlzCheck said check is %d = %s",
blzresult, blztext ? blztext : "(none)"); blzresult, blztext ? blztext : "(none)");
return values_ok;
#endif #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 gint
gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td) gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td)
{ {
@@ -454,9 +594,6 @@ gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td)
/* Show the dialog */ /* Show the dialog */
gtk_widget_show(td->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 */ /* Now run the dialog until it gets closed by a button press */
result = gtk_dialog_run (GTK_DIALOG (td->dialog)); result = gtk_dialog_run (GTK_DIALOG (td->dialog));
@@ -469,101 +606,17 @@ gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td)
{ {
gtk_widget_destroy(td->dialog); gtk_widget_destroy(td->dialog);
td->dialog = NULL; td->dialog = NULL;
break; return result;
} }
/* Now fill in the values from the entry fields into a new /* Get the transaction details - have been checked beforehand */
* AB_TRANSACTION */
td->ab_trans = gnc_ab_trans_dialog_fill_values(td); td->ab_trans = gnc_ab_trans_dialog_fill_values(td);
values_ok = TRUE;
/* 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"/ /* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
* transactionCode according to some GUI selection here!! */ * transactionCode according to some GUI selection here!! */
/*if (td->trans_type == SINGLE_DEBITNOTE) /*if (td->trans_type == SINGLE_DEBITNOTE)
AB_TRANSACTION_setTextKey (td->hbci_trans, 05); */ 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 */ /* Hide the dialog */
if (td->dialog) if (td->dialog)
@@ -807,12 +860,6 @@ gnc_ab_trans_dialog_templ_list_row_activated_cb(GtkTreeView *view,
LEAVE(" "); LEAVE(" ");
} }
void
gnc_ab_trans_dialog_account_changed_cb(GtkEditable *editable, gpointer user_data)
{
/* TODO */
}
void void
gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_data) gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_data)
{ {
@@ -864,6 +911,7 @@ gnc_ab_trans_dialog_bankcode_changed_cb(GtkEditable *editable, gpointer user_dat
} }
LEAVE(" "); LEAVE(" ");
#endif #endif
gnc_ab_trans_dialog_verify_values(td);
} }
struct _FindTemplData struct _FindTemplData

View File

@@ -1,7 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<requires lib="gtk+" version="2.16"/> <requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkDialog" id="Connection Dialog"> <object class="GtkDialog" id="Connection Dialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="border_width">5</property>
@@ -11,12 +10,12 @@
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<signal name="delete-event" handler="ggg_delete_event_cb" swapped="no"/> <signal name="delete-event" handler="ggg_delete_event_cb" swapped="no"/>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox9"> <object class="GtkBox" id="dialog-vbox9">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="spacing">2</property> <property name="spacing">2</property>
<child internal-child="action_area"> <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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="layout_style">end</property> <property name="layout_style">end</property>
@@ -118,12 +117,10 @@
<object class="GtkEntry" id="top_entry"> <object class="GtkEntry" id="top_entry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@@ -181,12 +178,10 @@
<object class="GtkEntry" id="second_entry"> <object class="GtkEntry" id="second_entry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@@ -240,8 +235,6 @@
<object class="GtkScrolledWindow" id="scrolledwindow30"> <object class="GtkScrolledWindow" id="scrolledwindow30">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">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> <property name="shadow_type">in</property>
<child> <child>
<object class="GtkTextView" id="log_text"> <object class="GtkTextView" id="log_text">
@@ -305,12 +298,12 @@
<property name="title" translatable="yes">Get Transactions Online</property> <property name="title" translatable="yes">Get Transactions Online</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox1"> <object class="GtkBox" id="dialog-vbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="spacing">2</property> <property name="spacing">2</property>
<child internal-child="action_area"> <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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="layout_style">end</property> <property name="layout_style">end</property>
@@ -623,11 +616,11 @@
<property name="title" translatable="yes">Enter Password</property> <property name="title" translatable="yes">Enter Password</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox3"> <object class="GtkBox" id="dialog-vbox3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child internal-child="action_area"> <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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="layout_style">end</property> <property name="layout_style">end</property>
@@ -729,12 +722,10 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@@ -747,12 +738,10 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@@ -891,11 +880,11 @@
<property name="title" translatable="yes">Name for new template</property> <property name="title" translatable="yes">Name for new template</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox2"> <object class="GtkBox" id="dialog-vbox2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child internal-child="action_area"> <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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="layout_style">end</property> <property name="layout_style">end</property>
@@ -963,13 +952,11 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="max_length">250</property> <property name="max_length">250</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="activates_default">True</property> <property name="activates_default">True</property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@@ -997,114 +984,13 @@
<property name="title" translatable="yes">Online Transaction</property> <property name="title" translatable="yes">Online Transaction</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child internal-child="vbox"> <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="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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property> <property name="spacing">2</property>
<child> <child>
<object class="GtkImage" id="image4"> <object class="GtkVBox" id="trans_vbox">
<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">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="border_width">5</property>
@@ -1121,17 +1007,6 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </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> <child>
<object class="GtkTable" id="table6"> <object class="GtkTable" id="table6">
<property name="visible">True</property> <property name="visible">True</property>
@@ -1143,13 +1018,11 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="max_length">12</property> <property name="max_length">12</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property> <property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property> <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
<property name="secondary_icon_sensitive">True</property>
<signal name="changed" handler="gnc_ab_trans_dialog_account_changed_cb" swapped="no"/>
<signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/> <signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
</object> </object>
<packing> <packing>
@@ -1177,12 +1050,10 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="max_length">8</property> <property name="max_length">8</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_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="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"/> <signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
</object> </object>
@@ -1215,12 +1086,11 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="max_length">27</property> <property name="max_length">27</property>
<property name="invisible_char">&#x25CF;</property> <property name="invisible_char"></property>
<property name="invisible_char_set">True</property> <property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property> <property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property> <property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property> <signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
<property name="secondary_icon_sensitive">True</property>
</object> </object>
<packing> <packing>
<property name="right_attach">3</property> <property name="right_attach">3</property>
@@ -1441,6 +1311,202 @@
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
</child> </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> <child>
<object class="GtkHBox" id="hbox117"> <object class="GtkHBox" id="hbox117">
<property name="visible">True</property> <property name="visible">True</property>
@@ -1450,6 +1516,7 @@
<object class="GtkVButtonBox" id="vbutonbox158"> <object class="GtkVButtonBox" id="vbutonbox158">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child> <child>
<object class="GtkButton" id="add_templ_button"> <object class="GtkButton" id="add_templ_button">
<property name="visible">True</property> <property name="visible">True</property>
@@ -1633,8 +1700,6 @@
<object class="GtkScrolledWindow" id="template_scrolledwindow"> <object class="GtkScrolledWindow" id="template_scrolledwindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">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> <property name="shadow_type">in</property>
<child> <child>
<object class="GtkTreeView" id="template_list"> <object class="GtkTreeView" id="template_list">
@@ -1643,6 +1708,9 @@
<property name="headers_visible">False</property> <property name="headers_visible">False</property>
<property name="rules_hint">True</property> <property name="rules_hint">True</property>
<signal name="row-activated" handler="gnc_ab_trans_dialog_templ_list_row_activated_cb" swapped="no"/> <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> </object>
</child> </child>
</object> </object>
@@ -1650,15 +1718,130 @@
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack_type">end</property> <property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Templates</property>
</object>
</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> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="label8877442"> <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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Use Transaction Template</property> <property name="xscale">0</property>
<property name="justify">center</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> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@@ -1668,204 +1851,10 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="right_attach">3</property> <property name="expand">False</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">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">27</property>
<property name="invisible_char">&#x25CF;</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">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">&#x25CF;</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">&#x25CF;</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">&#x25CF;</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>
<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>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="pack_type">end</property>
</packing> <property name="position">1</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>