r21734 - gnucash/trunk - Bug #665998 - Migrate Aqbanking from druid to assistant / builder.
Geert Janssens
gjanssens at code.gnucash.org
Sat Dec 17 06:02:42 EST 2011
Author: gjanssens
Date: 2011-12-17 06:02:41 -0500 (Sat, 17 Dec 2011)
New Revision: 21734
Trac: http://svn.gnucash.org/trac/changeset/21734
Added:
gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.c
gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.glade
gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.h
gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.c
gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.h
gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade
Removed:
gnucash/trunk/src/import-export/aqbanking/aqbanking.glade
gnucash/trunk/src/import-export/aqbanking/dialog-daterange.c
gnucash/trunk/src/import-export/aqbanking/dialog-daterange.h
gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.c
gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.h
Modified:
gnucash/trunk/po/POTFILES.in
gnucash/trunk/src/import-export/aqbanking/Makefile.am
gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
gnucash/trunk/src/import-export/aqbanking/gnc-ab-gettrans.c
gnucash/trunk/src/import-export/aqbanking/gnc-ab-kvp.c
gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c
gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
gnucash/trunk/src/import-export/aqbanking/gncmod-aqbanking.c
Log:
Bug #665998 - Migrate Aqbanking from druid to assistant / builder.
Patch by Robert Fewell
Modified: gnucash/trunk/po/POTFILES.in
===================================================================
--- gnucash/trunk/po/POTFILES.in 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/po/POTFILES.in 2011-12-17 11:02:41 UTC (rev 21734)
@@ -363,10 +363,11 @@
src/html/gnc-html-history.c
src/html/gnc-html-webkit.c
src/html/gncmod-html.c
-src/import-export/aqbanking/aqbanking.glade
+src/import-export/aqbanking/assistant-ab-initial.glade
+src/import-export/aqbanking/dialog-ab.glade
src/import-export/aqbanking/dialog-ab-trans.c
-src/import-export/aqbanking/dialog-daterange.c
-src/import-export/aqbanking/druid-ab-initial.c
+src/import-export/aqbanking/dialog-ab-daterange.c
+src/import-export/aqbanking/assistant-ab-initial.c
src/import-export/aqbanking/gnc-ab-getbalance.c
src/import-export/aqbanking/gnc-ab-gettrans.c
src/import-export/aqbanking/gnc-ab-kvp.c
Modified: gnucash/trunk/src/import-export/aqbanking/Makefile.am
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/Makefile.am 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/Makefile.am 2011-12-17 11:02:41 UTC (rev 21734)
@@ -4,8 +4,8 @@
libgncmod_aqbanking_la_SOURCES = \
dialog-ab-trans.c \
- dialog-daterange.c \
- druid-ab-initial.c \
+ dialog-ab-daterange.c \
+ assistant-ab-initial.c \
gnc-ab-getbalance.c \
gnc-ab-gettrans.c \
gnc-ab-kvp.c \
@@ -19,8 +19,8 @@
noinst_HEADERS = \
dialog-ab-trans.h \
- dialog-daterange.h \
- druid-ab-initial.h \
+ dialog-ab-daterange.h \
+ assistant-ab-initial.h \
gnc-ab-getbalance.h \
gnc-ab-gettrans.h \
gnc-ab-kvp.h \
@@ -70,10 +70,11 @@
ui_DATA = \
gnc-plugin-aqbanking-ui.xml
-gladedir = $(GNC_GLADE_DIR)
-glade_DATA = \
- aqbanking.glade
+gtkbuilderdir = $(GNC_GTKBUILDER_DIR)
+gtkbuilder_DATA = \
+ assistant-ab-initial.glade \
+ dialog-ab.glade
-EXTRA_DIST = ${ui_DATA} ${glade_DATA}
+EXTRA_DIST = ${ui_DATA} ${gtkbuilder_DATA}
INCLUDES = -DG_LOG_DOMAIN=\"gnc.import.aqbanking\"
Deleted: gnucash/trunk/src/import-export/aqbanking/aqbanking.glade
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/aqbanking.glade 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/aqbanking.glade 2011-12-17 11:02:41 UTC (rev 21734)
@@ -1,1805 +0,0 @@
-<?xml version="1.0"?>
-<glade-interface>
- <requires lib="gnome"/>
- <!-- interface-requires gnome 2289.28904 -->
- <!-- interface-requires gtk+ 2.10 -->
- <!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="AqBanking Init Druid">
- <property name="title" translatable="yes">Initial Online Banking Setup</property>
- <property name="default_width">650</property>
- <property name="default_height">580</property>
- <signal name="destroy" handler="dai_destroy_cb"/>
- <signal name="key_press_event" handler="dai_key_press_event_cb"/>
- <child>
- <widget class="GnomeDruid" id="ab_init_druid">
- <property name="visible">True</property>
- <property name="border_width">4</property>
- <signal name="cancel" handler="dai_cancel_cb"/>
- <child>
- <widget class="GnomeDruidPageEdge" id="druidpagestart1">
- <property name="visible">True</property>
- <property name="position">Edge Start</property>
- <property name="title" translatable="yes">Initial Online Banking Setup</property>
- <property name="text" translatable="yes">This assistant helps you setting up your Online Banking connection with your bank.
-
-You first need to apply for Online Banking access at your bank. If your bank decides to grant you electronic access, they will send you a letter containing
-
-* The bank code of your bank
-* The user ID that identifies you to your bank
-* The Internet address of your bank's Online Banking server
-* For HBCI Online Banking, information about the cryptographic public key of your bank ("Ini-Letter").
-
-This information will be needed in the following. Press "Forward" now.
-
-NOTE: NO WARRANTIES FOR ANYTHING. Some banks run a poorly implemented Online Banking server. You should not rely on time-critical transfers through Online Banking, because sometimes the bank does not give you correct feedback when a transfer is rejected.
-
-Press "Cancel" if you do not wish to setup any Online Banking connection now.</property>
- </widget>
- </child>
- <child>
- <widget class="GnomeDruidPageStandard" id="wizard_page">
- <property name="visible">True</property>
- <property name="title" translatable="yes">Start Online Banking Wizard</property>
- <property name="title_foreground_gdk">#ffffffffffff</property>
- <property name="background_gdk">#9999bfbf9999</property>
- <property name="logo_background_gdk">#ffffffffffff</property>
- <signal name="prepare" handler="dai_wizard_page_prepare_cb" after="yes"/>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="vbox132">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkLabel" id="label8877441">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">The Setup of your Online Banking connection is handled by the external program "AqBanking Setup Wizard". Please press the button below to start this program.</property>
- <property name="wrap">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment7">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="xscale">0</property>
- <child>
- <widget class="GtkButton" id="ab_wizard_button">
- <property name="label" translatable="yes">_Start AqBanking Wizard</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="dai_wizard_button_clicked_cb"/>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GnomeDruidPageStandard" id="account_match_page">
- <property name="visible">True</property>
- <property name="title" translatable="yes">Match Online Banking accounts with GnuCash accounts</property>
- <property name="title_foreground_gdk">#ffffffffffff</property>
- <property name="background_gdk">#9999bfbf9999</property>
- <property name="logo_background_gdk">#ffffffffffff</property>
- <signal name="prepare" handler="dai_match_page_prepare_cb" after="yes"/>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="druid-vbox3">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="orientation">vertical</property>
- <child>
- <widget class="GtkVBox" id="vbox157">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow25">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <widget class="GtkTreeView" id="account_page_view">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="rules_hint">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label828">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Click on the line of an Online Banking account name if you want to match it to a GnuCash account. Click "Forward" when all desired accounts are matching.</property>
- <property name="wrap">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GnomeDruidPageEdge" id="initial_finish_page">
- <property name="visible">True</property>
- <property name="position">GNOME_EDGE_FINISH</property>
- <property name="title" translatable="yes">Online Banking Setup Finished</property>
- <property name="text" translatable="yes">The setup for matching Online Banking accounts to GnuCash accounts is now finished. You can now invoke Online Banking actions on those accounts.
-
-If you want to add another bank, user, or account, you can start this assistant again anytime.
-
-Press "Apply" now.</property>
- <signal name="finish" handler="dai_finish_cb"/>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkDialog" id="Transaction Dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Online Transaction</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox2">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkVBox" id="vbox151">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <child>
- <widget class="GtkLabel" id="heading_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enter an Online Transaction</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHSeparator" id="hseparator7">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkTable" id="table6">
- <property name="visible">True</property>
- <property name="n_rows">21</property>
- <property name="n_columns">3</property>
- <child>
- <widget class="GtkEntry" id="recp_account_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">12</property>
- </widget>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="recp_account_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Recipient Account Number</property>
- </widget>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="recp_bankcode_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">8</property>
- <signal name="changed" handler="dat_bankcode_changed_cb"/>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="recp_bankcode_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Recipient Bank Code</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="recp_name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="recp_name_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Recipient Name</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="recp_bankname_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">at Bank</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="recp_bankname_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">(filled in automatically)</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877434">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Amount</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877433">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Payment Purpose (only for recipient)</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">10</property>
- <property name="bottom_attach">11</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877435">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Payment Purpose continued</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">12</property>
- <property name="bottom_attach">13</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_name_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Originator Name</property>
- </widget>
- <packing>
- <property name="top_attach">15</property>
- <property name="bottom_attach">16</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_name_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">something</property>
- </widget>
- <packing>
- <property name="top_attach">16</property>
- <property name="bottom_attach">17</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_bankname_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">at Bank</property>
- </widget>
- <packing>
- <property name="top_attach">17</property>
- <property name="bottom_attach">18</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_bankname_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">something</property>
- </widget>
- <packing>
- <property name="top_attach">18</property>
- <property name="bottom_attach">19</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_account_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Originator Account Number</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">15</property>
- <property name="bottom_attach">16</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_account_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">something</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">16</property>
- <property name="bottom_attach">17</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_bankcode_heading">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Bank Code</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">17</property>
- <property name="bottom_attach">18</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="orig_bankcode_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">something</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">18</property>
- <property name="bottom_attach">19</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox117">
- <property name="visible">True</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkLabel" id="label8877442">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Use Transaction Template</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkScrolledWindow" id="template_scrolledwindow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <widget class="GtkTreeView" id="template_list">
- <property name="visible">True</property>
- <property name="headers_visible">False</property>
- <property name="rules_hint">True</property>
- <signal name="row_activated" handler="templ_list_row_activated_cb"/>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbutonbox158">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <widget class="GtkButton" id="add_templ_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Add the current online transaction as a new transaction template</property>
- <signal name="clicked" handler="dat_add_templ_cb"/>
- <child>
- <widget class="GtkAlignment" id="alignment3">
- <property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <widget class="GtkHBox" id="hbox119">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-add</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877451">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Add current</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="moveup_templ_button">
- <property name="label">gtk-go-up</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Move the selected transaction template one row up</property>
- <property name="use_stock">True</property>
- <signal name="clicked" handler="dat_moveup_templ_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="movedown_templ_button">
- <property name="label">gtk-go-down</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Move the selected transaction template one row down</property>
- <property name="use_stock">True</property>
- <signal name="clicked" handler="dat_movedown_templ_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="sort_templ_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Sort the list of transaction templates alphabetically</property>
- <signal name="clicked" handler="dat_sort_templ_cb"/>
- <child>
- <widget class="GtkAlignment" id="alignment4">
- <property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <widget class="GtkHBox" id="hbox120">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="stock">gtk-sort-ascending</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877452">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Sort</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="del_templ_button">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Delete the currently selected transaction template</property>
- <property name="use_stock">True</property>
- <signal name="clicked" handler="dat_del_templ_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- <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>
- <widget class="GtkEntry" id="purpose_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- </widget>
- <packing>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="purpose_cont2_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- </widget>
- <packing>
- <property name="top_attach">13</property>
- <property name="bottom_attach">14</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="purpose_cont_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- </widget>
- <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>
- <widget class="GtkEntry" id="purpose_cont3_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">27</property>
- </widget>
- <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>
- <widget class="GtkHBox" id="amount_hbox">
- <property name="visible">True</property>
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkHSeparator" id="hseparator8">
- <property name="visible">True</property>
- </widget>
- <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>
- <widget class="GtkHSeparator" id="hseparator4">
- <property name="visible">True</property>
- </widget>
- <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>
- <widget class="GtkHSeparator" id="hseparator5">
- <property name="visible">True</property>
- </widget>
- <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>
- <widget class="GtkHSeparator" id="hseparator6">
- <property name="visible">True</property>
- </widget>
- <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>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area2">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <widget class="GtkButton" id="exec_later_button">
- <property name="label" translatable="yes">Execute later (unimpl.)</property>
- <property name="response_id">-9</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="cancel_button">
- <property name="label">gtk-cancel</property>
- <property name="response_id">-6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="exec_now_button">
- <property name="response_id">-8</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Execute this online transaction now</property>
- <child>
- <widget class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <widget class="GtkHBox" id="hbox122">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="stock">gtk-execute</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877454">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Execute Now</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkDialog" id="Connection Dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Online Banking Connection Window</property>
- <property name="default_width">350</property>
- <property name="default_height">420</property>
- <property name="type_hint">dialog</property>
- <signal name="delete_event" handler="ggg_delete_event_cb"/>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox3">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkVBox" id="vbox149">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkVBox" id="vbox160">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877443">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Progress</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkTable" id="entries_table">
- <property name="visible">True</property>
- <property name="n_rows">3</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877424">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Current Job</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="top_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkProgressBar" id="top_progress">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="pulse_step">0.10000000149</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877426">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Progress</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8877425">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Current Action</property>
- <property name="justify">center</property>
- </widget>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="second_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox162">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877444">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Log Messages</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow30">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <widget class="GtkTextView" id="log_text">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="wrap_mode">word</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="close_checkbutton">
- <property name="label" translatable="yes">Close when finished</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="ggg_close_toggled_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area3">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <widget class="GtkButton" id="abort_button">
- <property name="label">gtk-cancel</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- <signal name="clicked" handler="ggg_abort_clicked_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="close_button">
- <property name="label">gtk-close</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- <signal name="clicked" handler="ggg_close_clicked_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkDialog" id="Date Range Dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Get Transactions Online</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox4">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkVBox" id="vbox152">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkLabel" id="heading_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Date range of transactions to retrieve:</property>
- <property name="justify">center</property>
- <property name="wrap">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox163">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877445">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>From</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment9">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox164">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkRadioButton" id="first_button">
- <property name="label" translatable="yes">_Earliest possible date</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkRadioButton" id="last_retrieval_button">
- <property name="label" translatable="yes">_Last retrieval date</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">first_button</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox123">
- <property name="visible">True</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkRadioButton" id="enter_from_button">
- <property name="label" translatable="yes">E_nter date:</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">first_button</property>
- <signal name="toggled" handler="ddr_toggled_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="enter_from_box">
- <property name="visible">True</property>
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox165">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877446">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>To</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment10">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox166">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkRadioButton" id="now_button">
- <property name="label" translatable="yes">_Now</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox124">
- <property name="visible">True</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkRadioButton" id="enter_to_button">
- <property name="label" translatable="yes">Ente_r date:</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">now_button</property>
- <signal name="toggled" handler="ddr_toggled_cb"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="enter_to_box">
- <property name="visible">True</property>
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area4">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <widget class="GtkButton" id="cancel_button">
- <property name="label">gtk-cancel</property>
- <property name="response_id">-6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="ok_button">
- <property name="label">gtk-ok</property>
- <property name="response_id">-5</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkDialog" id="Template Name Dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Name for new template</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox6">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <widget class="GtkVBox" id="vbox159">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkLabel" id="label8877450">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enter name for new template:</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="template_name">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">250</property>
- <property name="activates_default">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area6">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <widget class="GtkButton" id="cancelbutton1">
- <property name="label">gtk-cancel</property>
- <property name="response_id">-6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="okbutton1">
- <property name="label">gtk-ok</property>
- <property name="response_id">-5</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkDialog" id="Password Dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Enter Password</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox7">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <widget class="GtkVBox" id="vbox167">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkLabel" id="heading_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enter your password</property>
- <property name="wrap">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkTable" id="table7">
- <property name="visible">True</property>
- <property name="n_rows">3</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label8877456">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Password:</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="confirm_label">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Confirm Password:</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="input_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="visibility">False</property>
- <property name="invisible_char">●</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="confirm_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="visibility">False</property>
- <property name="invisible_char">●</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="remember_pin">
- <property name="label" translatable="yes">Remember _PIN</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area7">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <widget class="GtkButton" id="cancelbutton2">
- <property name="label">gtk-cancel</property>
- <property name="response_id">-6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="okbutton2">
- <property name="label">gtk-ok</property>
- <property name="response_id">-5</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="GtkWindow" id="Preferences">
- <property name="visible">True</property>
- <property name="title" translatable="yes">window1</property>
- <child>
- <widget class="GtkTable" id="aqbanking_prefs">
- <property name="visible">True</property>
- <property name="n_rows">3</property>
- <property name="n_columns">4</property>
- <child>
- <widget class="GtkLabel" id="label8877457">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Online Banking</b></property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="right_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="gconf/dialogs/import/hbci/close_on_finish">
- <property name="label" translatable="yes">_Close log window when finished</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="x_padding">12</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="gconf/dialogs/import/hbci/remember_pin">
- <property name="label" translatable="yes">Remember _PIN</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="right_attach">4</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="x_padding">12</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="checkbutton3">
- <property name="label" translatable="yes">_Verbose debug messages</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="right_attach">4</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="x_padding">12</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
-</glade-interface>
Copied: gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.c (from rev 21733, gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.c)
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.c (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,912 @@
+/*
+ * assistant-ab-initial.c -- Initialise the AqBanking wizard
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, contact:
+ *
+ * Free Software Foundation Voice: +1-617-542-5942
+ * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
+ * Boston, MA 02110-1301, USA gnu at gnu.org
+ */
+
+/**
+ * @internal
+ * @file assistant-ab-initial.c
+ * @brief AqBanking setup functionality
+ * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
+ * @author Copyright (C) 2006 David Hampton <hampton at employees.org>
+ * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
+ * @author Copyright (C) 2011 Robert Fewell
+ */
+
+#include "config.h"
+
+#include <aqbanking/banking.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+#include <gdk/gdkkeysyms.h>
+#ifdef HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "dialog-utils.h"
+#include "assistant-ab-initial.h"
+#include "assistant-utils.h"
+#include "gnc-ab-kvp.h"
+#include "gnc-ab-utils.h"
+#include "gnc-component-manager.h"
+#include "gnc-glib-utils.h"
+#include "gnc-ui.h"
+#include "gnc-ui-util.h"
+#include "gnc-session.h"
+#include "import-account-matcher.h"
+
+#if AQBANKING_VERSION_INT > 49908
+/* For aqbanking > 4.99.8. See below. */
+# include <aqbanking/dlg_setup.h>
+#endif
+
+/* This static indicates the debugging module that this .o belongs to. */
+static QofLogModule log_module = GNC_MOD_ASSISTANT;
+
+#define ASSISTANT_AB_INITIAL_CM_CLASS "assistant-ab-initial"
+
+typedef struct _ABInitialInfo ABInitialInfo;
+typedef struct _DeferredInfo DeferredInfo;
+typedef struct _AccCbData AccCbData;
+typedef struct _RevLookupData RevLookupData;
+
+void aai_on_prepare (GtkAssistant *assistant, GtkWidget *page,
+ gpointer user_data);
+
+void aai_on_finish (GtkAssistant *gtkassistant, gpointer user_data);
+void aai_on_cancel (GtkAssistant *assistant, gpointer user_data);
+void aai_destroy_cb(GtkObject *object, gpointer user_data);
+
+gboolean aai_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data);
+
+void aai_wizard_page_prepare (GtkAssistant *assistant, gpointer user_data);
+void aai_wizard_button_clicked_cb(GtkButton *button, gpointer user_data);
+
+void aai_match_page_prepare (GtkAssistant *assistant, gpointer user_data);
+
+static gboolean banking_has_accounts(AB_BANKING *banking);
+static void hash_from_kvp_acc_cb(Account *gnc_acc, gpointer user_data);
+
+static void child_exit_cb(GPid pid, gint status, gpointer data);
+static gchar *ab_account_longname(const AB_ACCOUNT *ab_acc);
+static AB_ACCOUNT *update_account_list_acc_cb(AB_ACCOUNT *ab_acc, gpointer user_data);
+static void update_account_list(ABInitialInfo *info);
+static gboolean find_gnc_acc_cb(gpointer key, gpointer value, gpointer user_data);
+static gboolean clear_line_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data);
+static void account_list_clicked_cb (GtkTreeView *view, GtkTreePath *path,
+ GtkTreeViewColumn *col, gpointer user_data);
+static void clear_kvp_acc_cb(Account *gnc_acc, gpointer user_data);
+static void save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data);
+static void aai_close_handler(gpointer user_data);
+
+struct _ABInitialInfo
+{
+ GtkWidget *window;
+ GtkWidget *assistant;
+
+ /* account match page */
+ gboolean match_page_prepared;
+ GtkTreeView *account_view;
+ GtkListStore *account_store;
+
+ /* managed by child_exit_cb */
+ DeferredInfo *deferred_info;
+
+ /* AqBanking stuff */
+ AB_BANKING *api;
+ /* AB_ACCOUNT* -> Account* -- DO NOT DELETE THE KEYS! */
+ GHashTable *gnc_hash;
+};
+
+struct _DeferredInfo
+{
+ ABInitialInfo *initial_info;
+ gchar *wizard_path;
+ gboolean qt_probably_unavailable;
+};
+
+struct _AccCbData
+{
+ AB_BANKING *api;
+ GHashTable *hash;
+};
+
+struct _RevLookupData
+{
+ Account *gnc_acc;
+ AB_ACCOUNT *ab_acc;
+};
+
+enum account_list_cols
+{
+ ACCOUNT_LIST_COL_INDEX = 0,
+ ACCOUNT_LIST_COL_AB_NAME,
+ ACCOUNT_LIST_COL_AB_ACCT,
+ ACCOUNT_LIST_COL_GNC_NAME,
+ ACCOUNT_LIST_COL_CHECKED,
+ NUM_ACCOUNT_LIST_COLS
+};
+
+gboolean
+aai_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+{
+ if (event->keyval == GDK_Escape)
+ {
+ gtk_widget_destroy(widget);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void
+aai_on_cancel (GtkAssistant *gtkassistant, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+
+ gtk_widget_destroy(info->window);
+}
+
+void
+aai_destroy_cb(GtkObject *object, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+
+ gnc_unregister_gui_component_by_data(ASSISTANT_AB_INITIAL_CM_CLASS, info);
+
+ if (info->deferred_info)
+ {
+ g_message("Online Banking assistant is being closed but the wizard is still "
+ "running. Inoring.");
+
+ /* Tell child_exit_cb() that there is no assistant anymore */
+ info->deferred_info->initial_info = NULL;
+ }
+
+ if (info->gnc_hash)
+ {
+#ifdef AQBANKING_VERSION_4_EXACTLY
+ AB_Banking_OnlineFini(info->api, 0);
+#else
+ AB_Banking_OnlineFini(info->api);
+#endif
+ g_hash_table_destroy(info->gnc_hash);
+ info->gnc_hash = NULL;
+ }
+
+ if (info->api)
+ {
+ gnc_AB_BANKING_delete(info->api);
+ info->api = NULL;
+ }
+
+ gtk_widget_destroy(info->window);
+ info->window = NULL;
+
+ g_free(info);
+}
+
+void
+aai_wizard_page_prepare (GtkAssistant *assistant, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ gint num = gtk_assistant_get_current_page (assistant);
+ GtkWidget *page = gtk_assistant_get_nth_page (assistant, num);
+
+ g_return_if_fail(info->api);
+
+ /* Enable the Assistant Buttons if we accounts */
+ if (banking_has_accounts(info->api))
+ gtk_assistant_set_page_complete (assistant, page, TRUE);
+ else
+ gtk_assistant_set_page_complete (assistant, page, FALSE);
+}
+
+void
+aai_wizard_button_clicked_cb(GtkButton *button, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ gint num = gtk_assistant_get_current_page (GTK_ASSISTANT(info->window));
+ GtkWidget *page = gtk_assistant_get_nth_page (GTK_ASSISTANT(info->window), num);
+
+ AB_BANKING *banking = info->api;
+ GWEN_BUFFER *buf;
+ gboolean wizard_exists;
+ const gchar *wizard_path;
+ gboolean qt_probably_unavailable = FALSE;
+
+ g_return_if_fail(banking);
+
+ ENTER("user_data: %p", user_data);
+
+ if (info->deferred_info)
+ {
+ LEAVE("Wizard is still running");
+ return;
+ }
+
+#if AQBANKING_VERSION_INT > 49908
+ /* For aqbanking5 > 4.99.8: Use AB_Banking_GetNewUserDialog(). */
+ {
+ GWEN_DIALOG *dlg =
+ AB_SetupDialog_new(banking);
+
+ if (AB_Banking_OnlineInit(banking) != 0)
+ {
+ PERR("Got error on AB_Banking_OnlineInit!");
+ }
+
+ if (!dlg)
+ {
+ PERR("Could not lookup Setup Dialog of aqbanking!");
+ }
+ else
+ {
+ int rv = GWEN_Gui_ExecDialog(dlg, 0);
+ if (rv <= 0)
+ {
+ /* Dialog was aborted/rejected */
+ PERR("Setup Dialog of aqbanking aborted/rejected !");
+ }
+ GWEN_Dialog_free(dlg);
+ }
+
+ if (AB_Banking_OnlineFini(banking) != 0)
+ {
+ PERR("Got error on AB_Banking_OnlineFini!");
+ }
+ }
+#else
+ /* Previous implementation for aqbanking <= 4.99.8: Use the
+ * external application. */
+
+
+ /* This is the point where we look for and start an external
+ * application shipped with aqbanking that contains the setup assistant
+ * for AqBanking related stuff. It requires qt (but not kde). This
+ * application contains the very verbose step-by-step setup wizard
+ * for the AqBanking account, and the application is shared with
+ * other AqBanking-based financial managers that offer the AqBanking
+ * features (e.g. KMyMoney). See gnucash-devel discussion here
+ * https://lists.gnucash.org/pipermail/gnucash-devel/2004-December/012351.html
+ */
+ buf = GWEN_Buffer_new(NULL, 300, 0, 0);
+ AB_Banking_FindWizard(banking, "", NULL, buf);
+ wizard_exists = *GWEN_Buffer_GetStart(buf) != 0;
+ wizard_path = GWEN_Buffer_GetStart(buf);
+
+ if (wizard_exists)
+ {
+ /* Really check whether the file exists */
+ gint fd = g_open(wizard_path, O_RDONLY, 0);
+ if (fd == -1)
+ wizard_exists = FALSE;
+ else
+ close(fd);
+ }
+
+#ifdef G_OS_WIN32
+ {
+ const char *check_file = "qtdemo.exe";
+ gchar *found_program = g_find_program_in_path(check_file);
+ if (found_program)
+ {
+ g_debug("Yes, we found the Qt demo program in %s\n", found_program);
+ g_free(found_program);
+ }
+ else
+ {
+ g_warning("Ouch, no Qt demo program was found. Qt not installed?\n");
+ qt_probably_unavailable = TRUE;
+ }
+ }
+#endif
+
+ if (wizard_exists)
+ {
+ /* Call the qt wizard. See the note above about why this
+ * approach is chosen. */
+
+ GPid pid;
+ GError *error = NULL;
+ gchar *argv[2];
+ gboolean spawned;
+
+ argv[0] = g_strdup (wizard_path);
+ argv[1] = NULL;
+ spawned = g_spawn_async (NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD,
+ NULL, NULL, &pid, &error);
+ g_free (argv[0]);
+
+ if (error)
+ g_critical(
+ "Error on starting AqBanking setup wizard: Code %d: %s",
+ error->code, error->message ? error->message : "(null)");
+
+ if (!spawned)
+ {
+ g_critical("Could not start AqBanking setup wizard: %s",
+ error->message ? error->message : "(null)");
+ g_error_free (error);
+ }
+ else
+ {
+ /* Keep a reference to info that can survive info */
+ info->deferred_info = g_new0(DeferredInfo, 1);
+ info->deferred_info->initial_info = info;
+ info->deferred_info->wizard_path = g_strdup(wizard_path);
+ info->deferred_info->qt_probably_unavailable =
+ qt_probably_unavailable;
+
+ g_child_watch_add (pid, child_exit_cb, info->deferred_info);
+ }
+ }
+ else
+ {
+ g_warning("on_aqhbci_button: Oops, no aqhbci setup wizard found.");
+ gnc_error_dialog
+ (info->window,
+ _("The external program \"AqBanking Setup Wizard\" has not "
+ "been found. \n\n"
+ "The %s package should include the "
+ "program \"qt3-wizard\". Please check your installation to "
+ "ensure this program is present. On some distributions this "
+ "may require installing additional packages."),
+ QT3_WIZARD_PACKAGE);
+ }
+
+ GWEN_Buffer_free(buf);
+#endif
+
+ /* Enable the Assistant Buttons if we accounts */
+ if (banking_has_accounts(info->api))
+ gtk_assistant_set_page_complete (GTK_ASSISTANT(info->window), page, TRUE);
+ else
+ gtk_assistant_set_page_complete (GTK_ASSISTANT(info->window), page, FALSE);
+
+ LEAVE(" ");
+}
+
+void
+aai_match_page_prepare (GtkAssistant *assistant, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ gint num = gtk_assistant_get_current_page (assistant);
+ GtkWidget *page = gtk_assistant_get_nth_page (assistant, num);
+
+ Account *root;
+ AccCbData data;
+
+ g_return_if_fail(info && info->api);
+
+ /* Do not run this twice */
+ if (!info->match_page_prepared)
+ {
+ /* Load aqbanking accounts */
+#ifdef AQBANKING_VERSION_4_EXACTLY
+ AB_Banking_OnlineInit(info->api, 0);
+#else
+ AB_Banking_OnlineInit(info->api);
+#endif
+ /* Determine current mapping */
+ root = gnc_book_get_root_account(gnc_get_current_book());
+ info->gnc_hash = g_hash_table_new(&g_direct_hash, &g_direct_equal);
+ data.api = info->api;
+ data.hash = info->gnc_hash;
+ gnc_account_foreach_descendant(
+ root, (AccountCb) hash_from_kvp_acc_cb, &data);
+
+ info->match_page_prepared = TRUE;
+ }
+ /* Update the graphical representation */
+ update_account_list(info);
+
+ /* Enable the Assistant Buttons */
+ gtk_assistant_set_page_complete (assistant, page, TRUE);
+}
+
+void
+aai_on_finish (GtkAssistant *assistant, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ Account *root;
+
+ g_return_if_fail(info && info->gnc_hash);
+
+ /* Commit the changes */
+ root = gnc_book_get_root_account(gnc_get_current_book());
+ gnc_account_foreach_descendant(root, (AccountCb) clear_kvp_acc_cb, NULL);
+ g_hash_table_foreach(info->gnc_hash, (GHFunc) save_kvp_acc_cb, NULL);
+
+ gtk_widget_destroy(info->window);
+}
+
+static gboolean
+banking_has_accounts(AB_BANKING *banking)
+{
+ AB_ACCOUNT_LIST2 *accl;
+ gboolean result;
+
+ g_return_val_if_fail(banking, FALSE);
+
+#ifdef AQBANKING_VERSION_4_EXACTLY
+ AB_Banking_OnlineInit(banking, 0);
+#else
+ AB_Banking_OnlineInit(banking);
+#endif
+
+ accl = AB_Banking_GetAccounts(banking);
+ if (accl && (AB_Account_List2_GetSize(accl) > 0))
+ result = TRUE;
+ else
+ result = FALSE;
+
+ if (accl)
+ AB_Account_List2_free(accl);
+
+#ifdef AQBANKING_VERSION_4_EXACTLY
+ AB_Banking_OnlineFini(banking, 0);
+#else
+ AB_Banking_OnlineFini(banking);
+#endif
+
+ return result;
+}
+
+static void
+hash_from_kvp_acc_cb(Account *gnc_acc, gpointer user_data)
+{
+ AccCbData *data = user_data;
+ AB_ACCOUNT *ab_acc;
+
+ ab_acc = gnc_ab_get_ab_account(data->api, gnc_acc);
+ if (ab_acc)
+ g_hash_table_insert(data->hash, ab_acc, gnc_acc);
+}
+
+static void
+child_exit_cb(GPid pid, gint status, gpointer data)
+{
+ DeferredInfo *deferred_info = data;
+ ABInitialInfo *info = deferred_info->initial_info;
+ gint num = gtk_assistant_get_current_page (GTK_ASSISTANT(info->window));
+ GtkWidget *page = gtk_assistant_get_nth_page (GTK_ASSISTANT(info->window), num);
+
+ gint exit_status;
+
+#ifdef G_OS_WIN32
+ exit_status = status;
+#else
+ exit_status = WEXITSTATUS(status);
+#endif
+
+ g_spawn_close_pid(pid);
+
+ if (!info)
+ {
+ g_message("Online Banking wizard exited, but the assistant has been "
+ "destroyed already");
+ goto cleanup_child_exit_cb;
+ }
+
+ if (exit_status == 0)
+ {
+ gtk_assistant_set_page_complete (GTK_ASSISTANT(info->window), page, TRUE);
+ }
+ else
+ {
+ if (deferred_info->qt_probably_unavailable)
+ {
+ g_warning("on_aqhbci_button: Oops, aqhbci wizard return nonzero "
+ "value: %d. The called program was \"%s\".\n",
+ exit_status, deferred_info->wizard_path);
+ gnc_error_dialog
+ (info->window, "%s",
+ _("The external program \"AqBanking Setup Wizard\" failed "
+ "to run successfully because the "
+ "additional software \"Qt\" was not found. "
+ "Please install the \"Qt/Windows Open Source Edition\" "
+ "from Trolltech by downloading it from www.trolltech.com"
+ "\n\n"
+ "If you have installed Qt already, you will have to adapt "
+ "the PATH variable of your system appropriately. "
+ "Contact the GnuCash developers if you need further "
+ "assistance on how to install Qt correctly."
+ "\n\n"
+ "Online Banking cannot be setup without Qt. Press \"Close\" "
+ "now, then \"Cancel\" to cancel the Online Banking setup."));
+ }
+ else
+ {
+ g_warning("on_aqhbci_button: Oops, aqhbci wizard return nonzero "
+ "value: %d. The called program was \"%s\".\n",
+ exit_status, deferred_info->wizard_path);
+ gnc_error_dialog
+ (info->window, "%s",
+ _("The external program \"AqBanking Setup Wizard\" failed "
+ "to run successfully. Online Banking can only be setup "
+ "if this wizard has run successfully. "
+ "Please try running the \"AqBanking Setup Wizard\" again."));
+ }
+ gtk_assistant_set_page_complete (GTK_ASSISTANT(info->window), page, FALSE);
+ }
+
+cleanup_child_exit_cb:
+ g_free(deferred_info->wizard_path);
+ g_free(deferred_info);
+ if (info)
+ info->deferred_info = NULL;
+}
+
+static gchar *
+ab_account_longname(const AB_ACCOUNT *ab_acc)
+{
+ gchar *bankname;
+ gchar *result;
+ const char *ab_bankname, *bankcode;
+
+ g_return_val_if_fail(ab_acc, NULL);
+
+ ab_bankname = AB_Account_GetBankName(ab_acc);
+ bankname = ab_bankname ? gnc_utf8_strip_invalid_strdup(ab_bankname) : NULL;
+ bankcode = AB_Account_GetBankCode(ab_acc);
+
+ /* Translators: Strings are 1. Account code, 2. Bank name, 3. Bank code. */
+ if (bankname && *bankname)
+ result = g_strdup_printf(_("%s at %s (code %s)"),
+ AB_Account_GetAccountNumber(ab_acc),
+ bankname,
+ bankcode);
+ else
+ result = g_strdup_printf(_("%s at bank code %s"),
+ AB_Account_GetAccountNumber(ab_acc),
+ bankcode);
+ g_free(bankname);
+
+ return result;
+
+}
+
+static AB_ACCOUNT *
+update_account_list_acc_cb(AB_ACCOUNT *ab_acc, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ gchar *gnc_name, *ab_name;
+ Account *gnc_acc;
+ GtkTreeIter iter;
+
+ g_return_val_if_fail(ab_acc && info, NULL);
+
+ ab_name = ab_account_longname(ab_acc);
+
+ /* Get corresponding gnucash account */
+ gnc_acc = g_hash_table_lookup(info->gnc_hash, ab_acc);
+
+ /* Build the text for the gnucash account. */
+ if (gnc_acc)
+ gnc_name = gnc_account_get_full_name(gnc_acc);
+ else
+ gnc_name = g_strdup("");
+
+ /* Add item to the list store */
+ gtk_list_store_append(info->account_store, &iter);
+ gtk_list_store_set(info->account_store, &iter,
+ ACCOUNT_LIST_COL_AB_NAME, ab_name,
+ ACCOUNT_LIST_COL_AB_ACCT, ab_acc,
+ ACCOUNT_LIST_COL_GNC_NAME, gnc_name,
+ ACCOUNT_LIST_COL_CHECKED, FALSE,
+ -1);
+ g_free(gnc_name);
+ g_free(ab_name);
+
+ return NULL;
+}
+
+static void
+update_account_list(ABInitialInfo *info)
+{
+ AB_ACCOUNT_LIST2 *acclist;
+
+ g_return_if_fail(info && info->api && info->gnc_hash);
+
+ /* Detach model from view while updating */
+ g_object_ref(info->account_store);
+ gtk_tree_view_set_model(info->account_view, NULL);
+
+ /* Refill the list */
+ gtk_list_store_clear(info->account_store);
+ acclist = AB_Banking_GetAccounts(info->api);
+ if (acclist)
+ AB_Account_List2_ForEach(acclist, update_account_list_acc_cb, info);
+ else
+ g_warning("update_account_list: Oops, account list from AB_Banking "
+ "is NULL");
+
+ /* Attach model to view again */
+ gtk_tree_view_set_model(info->account_view,
+ GTK_TREE_MODEL(info->account_store));
+
+ g_object_unref(info->account_store);
+}
+
+static gboolean
+find_gnc_acc_cb(gpointer key, gpointer value, gpointer user_data)
+{
+ RevLookupData *data = user_data;
+
+ g_return_val_if_fail(data, TRUE);
+
+ if (value == data->gnc_acc)
+ {
+ data->ab_acc = (AB_ACCOUNT*) key;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
+clear_line_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+ gpointer user_data)
+{
+ RevLookupData *data = user_data;
+ GtkListStore *store = GTK_LIST_STORE(model);
+ gpointer ab_acc;
+
+ g_return_val_if_fail(data && store, FALSE);
+
+ gtk_tree_model_get(model, iter, ACCOUNT_LIST_COL_AB_ACCT, &ab_acc, -1);
+
+ if (ab_acc == data->ab_acc)
+ {
+ gtk_list_store_set(store, iter, ACCOUNT_LIST_COL_GNC_NAME, "",
+ ACCOUNT_LIST_COL_CHECKED, TRUE, -1);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void
+account_list_clicked_cb (GtkTreeView *view, GtkTreePath *path,
+ GtkTreeViewColumn *col, gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ AB_ACCOUNT *ab_acc;
+ gchar *longname, *gnc_name;
+ Account *old_value, *gnc_acc;
+ const gchar *currency;
+ gnc_commodity *commodity = NULL;
+ gboolean ok_pressed;
+
+ g_return_if_fail(info);
+
+ PINFO("Row has been double-clicked.");
+
+ model = gtk_tree_view_get_model(view);
+ selection = gtk_tree_view_get_selection(info->account_view);
+
+ if (!gtk_tree_model_get_iter(model, &iter, path))
+ return; /* path describes a non-existing row - should not happen */
+
+ gtk_tree_model_get(model, &iter, ACCOUNT_LIST_COL_AB_ACCT, &ab_acc, -1);
+
+ if (ab_acc)
+ {
+ old_value = g_hash_table_lookup(info->gnc_hash, ab_acc);
+
+ longname = ab_account_longname(ab_acc);
+ currency = AB_Account_GetCurrency(ab_acc);
+ if (currency && *currency)
+ {
+ commodity = gnc_commodity_table_lookup(
+ gnc_commodity_table_get_table(gnc_get_current_book()),
+ GNC_COMMODITY_NS_CURRENCY,
+ currency);
+ }
+
+ gnc_acc = gnc_import_select_account(info->window, NULL, TRUE,
+ longname, commodity, ACCT_TYPE_BANK,
+ old_value, &ok_pressed);
+ g_free(longname);
+
+ if (ok_pressed && old_value != gnc_acc)
+ {
+ if (gnc_acc)
+ {
+ RevLookupData data;
+
+ /* Lookup and clear other mappings to gnc_acc */
+ data.gnc_acc = gnc_acc;
+ data.ab_acc = NULL;
+ g_hash_table_find(info->gnc_hash, (GHRFunc) find_gnc_acc_cb,
+ &data);
+ if (data.ab_acc)
+ {
+ g_hash_table_remove(info->gnc_hash, data.ab_acc);
+ gtk_tree_model_foreach(
+ GTK_TREE_MODEL(info->account_store),
+ (GtkTreeModelForeachFunc) clear_line_cb,
+ &data);
+ }
+
+ /* Map ab_acc to gnc_acc */
+ g_hash_table_insert(info->gnc_hash, ab_acc, gnc_acc);
+ gnc_name = gnc_account_get_full_name(gnc_acc);
+ gtk_list_store_set(info->account_store, &iter,
+ ACCOUNT_LIST_COL_GNC_NAME, gnc_name,
+ ACCOUNT_LIST_COL_CHECKED, TRUE,
+ -1);
+ g_free(gnc_name);
+
+ }
+ else
+ {
+ g_hash_table_remove(info->gnc_hash, ab_acc);
+ gtk_list_store_set(info->account_store, &iter,
+ ACCOUNT_LIST_COL_GNC_NAME, "",
+ ACCOUNT_LIST_COL_CHECKED, TRUE,
+ -1);
+ }
+ }
+ }
+}
+
+static void
+clear_kvp_acc_cb(Account *gnc_acc, gpointer user_data)
+{
+ if (gnc_ab_get_account_uid(gnc_acc))
+ gnc_ab_set_account_uid(gnc_acc, 0);
+ if (gnc_ab_get_account_accountid(gnc_acc))
+ gnc_ab_set_account_accountid(gnc_acc, "");
+ if (gnc_ab_get_account_bankcode(gnc_acc))
+ gnc_ab_set_account_bankcode(gnc_acc, "");
+}
+
+static void
+save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data)
+{
+ AB_ACCOUNT *ab_acc = key;
+ Account *gnc_acc = value;
+ guint32 ab_account_uid;
+ const gchar *ab_accountid, *gnc_accountid;
+ const gchar *ab_bankcode, *gnc_bankcode;
+
+ g_return_if_fail(ab_acc && gnc_acc);
+
+ ab_account_uid = AB_Account_GetUniqueId(ab_acc);
+ if (gnc_ab_get_account_uid(gnc_acc) != ab_account_uid)
+ gnc_ab_set_account_uid(gnc_acc, ab_account_uid);
+
+ ab_accountid = AB_Account_GetAccountNumber(ab_acc);
+ gnc_accountid = gnc_ab_get_account_accountid(gnc_acc);
+ if (ab_accountid
+ && (!gnc_accountid
+ || (strcmp(ab_accountid, gnc_accountid) != 0)))
+ gnc_ab_set_account_accountid(gnc_acc, ab_accountid);
+
+ ab_bankcode = AB_Account_GetBankCode(ab_acc);
+ gnc_bankcode = gnc_ab_get_account_bankcode(gnc_acc);
+ if (ab_bankcode
+ && (!gnc_bankcode
+ || (strcmp(gnc_bankcode, ab_bankcode) != 0)))
+ gnc_ab_set_account_bankcode(gnc_acc, ab_bankcode);
+}
+
+static void
+aai_close_handler(gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+
+ gtk_widget_destroy(info->window);
+}
+
+void aai_on_prepare (GtkAssistant *assistant, GtkWidget *page,
+ gpointer user_data)
+{
+ ABInitialInfo *info = user_data;
+ gint currentpage = gtk_assistant_get_current_page(assistant);
+
+ switch (gtk_assistant_get_current_page(assistant))
+ {
+ case 1:
+ /* Current page is wizard button page */
+ aai_wizard_page_prepare (assistant , user_data );
+ break;
+ case 2:
+ /* Current page is match page */
+ aai_match_page_prepare (assistant , user_data );
+ break;
+ }
+}
+
+void
+gnc_ab_initial_assistant(void)
+{
+ ABInitialInfo *info;
+ GtkBuilder *builder;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+ gint component_id;
+
+ info = g_new0(ABInitialInfo, 1);
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder,"assistant-ab-initial.glade", "AqBanking Init Assistant");
+
+ info->window = GTK_WIDGET(gtk_builder_get_object (builder, "AqBanking Init Assistant"));
+
+ gnc_assistant_set_colors (GTK_ASSISTANT (info->assistant));
+
+ info->api = gnc_AB_BANKING_new();
+ info->deferred_info = NULL;
+ info->gnc_hash = NULL;
+
+ info->match_page_prepared = FALSE;
+ info->account_view =
+ GTK_TREE_VIEW(gtk_builder_get_object (builder, "account_page_view"));
+
+ info->account_store = gtk_list_store_new(NUM_ACCOUNT_LIST_COLS,
+ G_TYPE_INT, G_TYPE_STRING,
+ G_TYPE_POINTER, G_TYPE_STRING,
+ G_TYPE_BOOLEAN);
+ gtk_tree_view_set_model(info->account_view,
+ GTK_TREE_MODEL(info->account_store));
+ g_object_unref(info->account_store);
+
+ column = gtk_tree_view_column_new_with_attributes(
+ _("Online Banking Account Name"), gtk_cell_renderer_text_new(),
+ "text", ACCOUNT_LIST_COL_AB_NAME, (gchar*) NULL);
+ gtk_tree_view_append_column(info->account_view, column);
+
+ column = gtk_tree_view_column_new_with_attributes(
+ _("GnuCash Account Name"), gtk_cell_renderer_text_new(),
+ "text", ACCOUNT_LIST_COL_GNC_NAME, (gchar*) NULL);
+ gtk_tree_view_column_set_expand(column, TRUE);
+ gtk_tree_view_append_column(info->account_view, column);
+
+ column = gtk_tree_view_column_new_with_attributes(
+ _("New?"), gtk_cell_renderer_toggle_new(),
+ "active", ACCOUNT_LIST_COL_CHECKED, (gchar*) NULL);
+ gtk_tree_view_append_column(info->account_view, column);
+
+ selection = gtk_tree_view_get_selection(info->account_view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ g_signal_connect(info->account_view, "row-activated",
+ G_CALLBACK(account_list_clicked_cb), info);
+
+ g_signal_connect (G_OBJECT(info->window), "destroy",
+ G_CALLBACK (aai_destroy_cb), info);
+
+ gtk_builder_connect_signals(builder, info);
+ g_object_unref(G_OBJECT(builder));
+
+ component_id = gnc_register_gui_component(ASSISTANT_AB_INITIAL_CM_CLASS,
+ NULL, aai_close_handler, info);
+
+ gnc_gui_component_set_session(component_id, gnc_get_current_session());
+
+ gtk_widget_show(info->window);
+}
Added: gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.glade
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.glade (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.glade 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkAssistant" id="AqBanking Init Assistant">
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes">AqBanking Initial Assistant</property>
+ <signal name="close" handler="aai_on_finish" swapped="no"/>
+ <signal name="prepare" handler="aai_on_prepare" swapped="no"/>
+ <signal name="cancel" handler="aai_on_cancel" swapped="no"/>
+ <child>
+ <object class="GtkLabel" id="start_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">
+This assistant helps you setting up your Online Banking connection with your bank.
+
+You first need to apply for Online Banking access at your bank. If your bank decides to grant you electronic access, they will send you a letter containing
+
+* The bank code of your bank
+* The user ID that identifies you to your bank
+* The Internet address of your bank's Online Banking server
+* For HBCI Online Banking, information about the cryptographic public key of your bank ("Ini-Letter").
+
+This information will be needed in the following. Press "Forward" now.
+
+NOTE: NO WARRANTIES FOR ANYTHING. Some banks run a poorly implemented Online Banking server. You should not rely on time-critical transfers through Online Banking, because sometimes the bank does not give you correct feedback when a transfer is rejected.
+
+Press "Cancel" if you do not wish to setup any Online Banking connection now.
+</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="page_type">intro</property>
+ <property name="title" translatable="yes">Initial Online Banking Setup</property>
+ <property name="complete">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="wizard_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label8877441">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">The Setup of your Online Banking connection is handled by the external program "AqBanking Setup Wizard". Please press the button below to start this program.</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkButton" id="ab_wizard_button">
+ <property name="label" translatable="yes">_Start AqBanking Wizard</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="aai_wizard_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="page_type">intro</property>
+ <property name="title" translatable="yes">Start Online Banking Wizard</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="account_match_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox157">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow25">
+ <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="account_page_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="rules_hint">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label828">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Double Click on the line of an Online Banking account name if you want to match it to a GnuCash account. Click "Forward" when all desired accounts are matching.</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="title" translatable="yes">Match Online accounts with GnuCash accounts</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="finish_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">The setup for matching Online Banking accounts to GnuCash accounts is now finished. You can now invoke Online Banking actions on those accounts.
+
+If you want to add another bank, user, or account, you can start this assistant again anytime.
+
+Press "Apply" now.</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="page_type">confirm</property>
+ <property name="title" translatable="yes">Online Banking Setup Finished</property>
+ <property name="complete">True</property>
+ </packing>
+ </child>
+ </object>
+</interface>
Copied: gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.h (from rev 21733, gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.h)
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.h (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/assistant-ab-initial.h 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,51 @@
+/*
+ * assistant-ab-initial.h -- aqbanking creation functionality
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, contact:
+ *
+ * Free Software Foundation Voice: +1-617-542-5942
+ * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
+ * Boston, MA 02110-1301, USA gnu at gnu.org
+ */
+
+/**
+ * @addtogroup Import_Export
+ * @{
+ * @addtogroup AqBanking
+ * @{
+ * @file assistant-ab-initial.h
+ * @brief AqBanking setup functionality
+ * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
+ * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
+ */
+
+#ifndef ASSISTANT_AB_INITIAL_H
+#define ASSISTANT_AB_INITIAL_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ * Create and show an assistant for the aqbanking setup.
+ */
+void gnc_ab_initial_assistant(void);
+
+G_END_DECLS
+
+/** @} */
+/** @} */
+
+#endif /* ASSISTANT_AB_INITIAL_H */
Copied: gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.c (from rev 21733, gnucash/trunk/src/import-export/aqbanking/dialog-daterange.c)
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.c (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,158 @@
+/*
+ * dialog-ab-daterange.c --
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, contact:
+ *
+ * Free Software Foundation Voice: +1-617-542-5942
+ * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
+ * Boston, MA 02110-1301, USA gnu at gnu.org
+ */
+
+/**
+ * @internal
+ * @file dialog-daterange.c
+ * @brief Dialog for date range entry
+ * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
+ * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
+ */
+
+#include "config.h"
+
+#include "dialog-ab-daterange.h"
+#include "dialog-utils.h"
+#include "gnc-date-edit.h"
+
+/* This static indicates the debugging module that this .o belongs to. */
+static QofLogModule log_module = G_LOG_DOMAIN;
+
+typedef struct _DaterangeInfo DaterangeInfo;
+
+void ddr_toggled_cb(GtkToggleButton *button, gpointer user_data);
+
+struct _DaterangeInfo
+{
+ GtkWidget *enter_from_button;
+ GtkWidget *enter_to_button;
+ GtkWidget *from_dateedit;
+ GtkWidget *to_dateedit;
+};
+
+gboolean
+gnc_ab_enter_daterange(GtkWidget *parent,
+ const char *heading,
+ Timespec *from_date,
+ gboolean *last_retv_date,
+ gboolean *first_possible_date,
+ Timespec *to_date,
+ gboolean *to_now)
+{
+ GtkBuilder *builder;
+ GtkWidget *dialog;
+ GtkWidget *heading_label;
+ GtkWidget *first_button;
+ GtkWidget *last_retrieval_button;
+ GtkWidget *now_button;
+ DaterangeInfo info;
+ gint result;
+
+ ENTER("");
+
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder, "dialog-ab.glade", "Date Range Dialog");
+
+ dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Date Range Dialog"));
+
+ /* Connect the signals */
+ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, &info );
+
+ if (parent)
+ gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
+
+ heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label"));
+ first_button = GTK_WIDGET(gtk_builder_get_object (builder, "first_button"));
+ last_retrieval_button = GTK_WIDGET(gtk_builder_get_object (builder, "last_retrieval_button"));
+ info.enter_from_button = GTK_WIDGET(gtk_builder_get_object (builder, "enter_from_button"));
+ now_button = GTK_WIDGET(gtk_builder_get_object (builder, "now_button"));
+ info.enter_to_button = GTK_WIDGET(gtk_builder_get_object (builder, "enter_to_button"));
+
+ info.from_dateedit = gnc_date_edit_new_ts(*from_date, FALSE, FALSE);
+ gtk_container_add(GTK_CONTAINER(gtk_builder_get_object (builder, "enter_from_box")),
+ info.from_dateedit);
+ gtk_widget_show(info.from_dateedit);
+
+ info.to_dateedit = gnc_date_edit_new_ts(*to_date, FALSE, FALSE);
+ gtk_container_add(GTK_CONTAINER(gtk_builder_get_object (builder, "enter_to_box")),
+ info.to_dateedit);
+ gtk_widget_show(info.to_dateedit);
+
+ if (*last_retv_date)
+ {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(last_retrieval_button),
+ TRUE);
+ }
+ else
+ {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(first_button), TRUE);
+ gtk_widget_set_sensitive(last_retrieval_button, FALSE);
+ }
+
+ gtk_widget_set_sensitive(info.from_dateedit, FALSE);
+ gtk_widget_set_sensitive(info.to_dateedit, FALSE);
+
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+
+ if (heading)
+ gtk_label_set_text(GTK_LABEL(heading_label), heading);
+
+ gtk_widget_show(dialog);
+
+ result = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_hide(dialog);
+
+ if (result == GTK_RESPONSE_OK)
+ {
+ *from_date = gnc_date_edit_get_date_ts(
+ GNC_DATE_EDIT(info.from_dateedit));
+ *last_retv_date = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(last_retrieval_button));
+ *first_possible_date = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(first_button));
+ *to_date = gnc_date_edit_get_date_ts(
+ GNC_DATE_EDIT(info.to_dateedit));
+ *to_now = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(now_button));
+ }
+
+ g_object_unref(G_OBJECT(builder));
+
+ gtk_widget_destroy(dialog);
+
+ LEAVE("");
+ return result == GTK_RESPONSE_OK;
+}
+
+void
+ddr_toggled_cb(GtkToggleButton *button, gpointer user_data)
+{
+ DaterangeInfo *info = user_data;
+
+ g_return_if_fail(info);
+
+ gtk_widget_set_sensitive(info->from_dateedit,
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(info->enter_from_button)));
+ gtk_widget_set_sensitive(info->to_dateedit,
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(info->enter_to_button)));
+}
Copied: gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.h (from rev 21733, gnucash/trunk/src/import-export/aqbanking/dialog-daterange.h)
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.h (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-daterange.h 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,69 @@
+/*
+ * dialog-ab-daterange.h --
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, contact:
+ *
+ * Free Software Foundation Voice: +1-617-542-5942
+ * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
+ * Boston, MA 02110-1301, USA gnu at gnu.org
+ */
+
+/**
+ * @addtogroup Import_Export
+ * @{
+ * @addtogroup AqBanking
+ * @{
+ * @file aqbanking/dialog-daterange.h
+ * @brief Dialog for date range entry
+ * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
+ * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
+ */
+
+#ifndef DIALOG_DATERANGE_H
+#define DIALOG_DATERANGE_H
+
+#include <gtk/gtk.h>
+
+#include "qof.h"
+
+G_BEGIN_DECLS
+
+/**
+ * Show a dialog to pick a time frame using a sensible set of default options.
+ *
+ * @param parent Widget to use as parent, may be NULL
+ * @param heading Descriptive text showed at the top, may be NULL
+ * @param from_date Location to read from the initial and write to the final
+ * value of the from date entry
+ * @param last_retv_date Location to read from whether the caller knows the last
+ * retrieval date and write to whether the corresponding button has been chosen
+ * @param first_possible_date Location to write to whether the earliest possible
+ * date button has been chosen
+ * @param to_date Location to read from the initial and write to the final value
+ * of the to date entry
+ * @param to_now Location to write to whether the to now button has been chosen
+ */
+gboolean gnc_ab_enter_daterange(GtkWidget *parent,
+ const char *heading,
+ Timespec *from_date,
+ gboolean *last_retv_date,
+ gboolean *first_possible_date,
+ Timespec *to_date,
+ gboolean *to_now);
+
+G_END_DECLS
+
+#endif /* DIALOG_DATERANGE_H */
+/** @} */
+/** @} */
Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -203,7 +203,7 @@
GList *templates)
{
GncABTransDialog *td;
- GladeXML *xml;
+ GtkBuilder *builder;
const gchar *ab_ownername;
const gchar *ab_accountnumber;
const gchar *ab_bankname;
@@ -244,38 +244,37 @@
td->blzcheck = AccountNumberCheck_new();
#endif
- xml = gnc_glade_xml_new("aqbanking.glade", "Transaction Dialog");
- td->dialog = glade_xml_get_widget(xml, "Transaction Dialog");
- g_object_set_data_full(G_OBJECT(td->dialog), "xml", xml, g_object_unref);
- glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, td);
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder, "dialog-ab.glade", "Transaction Dialog");
+ td->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Transaction Dialog"));
if (parent)
gtk_window_set_transient_for(GTK_WINDOW(td->dialog), GTK_WINDOW(parent));
/* Extract widgets */
- heading_label = glade_xml_get_widget(xml, "heading_label");
- recp_name_heading = glade_xml_get_widget(xml, "recp_name_heading");
- td->recp_name_entry = glade_xml_get_widget(xml, "recp_name_entry");
- recp_account_heading = glade_xml_get_widget(xml, "recp_account_heading");
- td->recp_account_entry = glade_xml_get_widget(xml, "recp_account_entry");
- recp_bankcode_heading = glade_xml_get_widget(xml, "recp_bankcode_heading");
- td->recp_bankcode_entry = glade_xml_get_widget(xml, "recp_bankcode_entry");
- td->recp_bankname_label = glade_xml_get_widget(xml, "recp_bankname_label");
- amount_hbox = glade_xml_get_widget(xml, "amount_hbox");
- td->purpose_entry = glade_xml_get_widget(xml, "purpose_entry");
- td->purpose_cont_entry = glade_xml_get_widget(xml, "purpose_cont_entry");
- td->purpose_cont2_entry = glade_xml_get_widget(xml, "purpose_cont2_entry");
- td->purpose_cont3_entry = glade_xml_get_widget(xml, "purpose_cont3_entry");
- orig_name_heading = glade_xml_get_widget(xml, "orig_name_heading");
- orig_name_label = glade_xml_get_widget(xml, "orig_name_label");
- orig_account_heading = glade_xml_get_widget(xml, "orig_account_heading");
- orig_account_label = glade_xml_get_widget(xml, "orig_account_label");
- orig_bankname_heading = glade_xml_get_widget(xml, "orig_bankname_heading");
- orig_bankname_label = glade_xml_get_widget(xml, "orig_bankname_label");
- orig_bankcode_heading = glade_xml_get_widget(xml, "orig_bankcode_heading");
- orig_bankcode_label = glade_xml_get_widget(xml, "orig_bankcode_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"));
+ td->recp_name_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_name_entry"));
+ recp_account_heading = GTK_WIDGET(gtk_builder_get_object (builder, "recp_account_heading"));
+ td->recp_account_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_account_entry"));
+ recp_bankcode_heading = GTK_WIDGET(gtk_builder_get_object (builder, "recp_bankcode_heading"));
+ td->recp_bankcode_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_bankcode_entry"));
+ td->recp_bankname_label = GTK_WIDGET(gtk_builder_get_object (builder, "recp_bankname_label"));
+ amount_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "amount_hbox"));
+ td->purpose_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_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_cont3_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont3_entry"));
+ 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"));
+ orig_account_label = GTK_WIDGET(gtk_builder_get_object (builder, "orig_account_label"));
+ orig_bankname_heading = GTK_WIDGET(gtk_builder_get_object (builder, "orig_bankname_heading"));
+ orig_bankname_label = GTK_WIDGET(gtk_builder_get_object (builder, "orig_bankname_label"));
+ orig_bankcode_heading = GTK_WIDGET(gtk_builder_get_object (builder, "orig_bankcode_heading"));
+ orig_bankcode_label = GTK_WIDGET(gtk_builder_get_object (builder, "orig_bankcode_label"));
td->template_gtktreeview =
- GTK_TREE_VIEW(glade_xml_get_widget(xml, "template_list"));
+ GTK_TREE_VIEW(gtk_builder_get_object (builder, "template_list"));
/* Amount edit */
td->amount_edit = gnc_amount_edit_new();
@@ -348,6 +347,11 @@
"Template Name", renderer, "text", TEMPLATE_NAME, NULL);
gtk_tree_view_append_column(td->template_gtktreeview, column);
+ /* Connect the Signals */
+ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, td);
+
+ g_object_unref(G_OBJECT(builder));
+
return td;
}
@@ -873,7 +877,7 @@
dat_add_templ_cb(GtkButton *button, gpointer user_data)
{
GncABTransDialog *td = user_data;
- GladeXML *xml;
+ GtkBuilder *builder;
GtkWidget *dialog;
GtkWidget *entry;
gint retval;
@@ -887,11 +891,12 @@
g_return_if_fail(td);
ENTER("td=%p", td);
- xml = gnc_glade_xml_new ("aqbanking.glade", "Template Name Dialog");
- dialog = glade_xml_get_widget(xml, "Template Name Dialog");
- g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref);
- entry = glade_xml_get_widget(xml, "template_name");
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder, "dialog-ab.glade", "Template Name Dialog");
+ dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Template Name Dialog"));
+ entry = GTK_WIDGET(gtk_builder_get_object (builder, "template_name"));
+
/* Suggest recipient name as name of the template */
gtk_entry_set_text(GTK_ENTRY(entry),
gtk_entry_get_text(GTK_ENTRY(td->recp_name_entry)));
@@ -949,6 +954,8 @@
}
while (TRUE);
+ g_object_unref(G_OBJECT(builder));
+
gtk_widget_destroy(dialog);
LEAVE(" ");
Copied: gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade (from rev 21733, gnucash/trunk/src/import-export/aqbanking/aqbanking.glade)
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade (rev 0)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab.glade 2011-12-17 11:02:41 UTC (rev 21734)
@@ -0,0 +1,1876 @@
+<?xml version="1.0"?>
+<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>
+ <property name="title" translatable="yes">Online Banking Connection Window</property>
+ <property name="default_width">350</property>
+ <property name="default_height">420</property>
+ <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">
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="abort_button">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</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>
+ <signal name="clicked" handler="ggg_abort_clicked_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="close_button">
+ <property name="label">gtk-close</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>
+ <signal name="clicked" handler="ggg_close_clicked_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox149">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkVBox" id="vbox160">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877443">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Progress</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="entries_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877424">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Current Job</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <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_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>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="top_progress">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="pulse_step">0.10000000149</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877426">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Progress</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877425">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Current Action</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <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_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>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox162">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877444">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Log Messages</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="wrap_mode">word</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="close_checkbutton">
+ <property name="label" translatable="yes">Close when finished</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="ggg_close_toggled_cb" swapped="no"/>
+ </object>
+ <packing>
+ <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="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">abort_button</action-widget>
+ <action-widget response="0">close_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="Date Range Dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <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">
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancel_button1">
+ <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">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="ok_button">
+ <property name="label">gtk-ok</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>
+ </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="vbox152">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkLabel" id="heading_label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Date range of transactions to retrieve:</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox163">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877445">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>From</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox164">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="first_button">
+ <property name="label" translatable="yes">_Earliest possible date</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="last_retrieval_button">
+ <property name="label" translatable="yes">_Last retrieval date</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">first_button</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox123">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkRadioButton" id="enter_from_button">
+ <property name="label" translatable="yes">E_nter date:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">first_button</property>
+ <signal name="toggled" handler="ddr_toggled_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="enter_from_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox165">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877446">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>To</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox166">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="now_button">
+ <property name="label" translatable="yes">_Now</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox124">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkRadioButton" id="enter_to_button">
+ <property name="label" translatable="yes">Ente_r date:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">now_button</property>
+ <signal name="toggled" handler="ddr_toggled_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="enter_to_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </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">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">cancel_button1</action-widget>
+ <action-widget response="-5">ok_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="Password Dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Enter Password</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" 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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancelbutton2">
+ <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">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton2">
+ <property name="label">gtk-ok</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>
+ </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="vbox167">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkLabel" id="heading_label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Enter your password</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label8877456">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Password:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="confirm_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Confirm Password:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="input_entry">
+ <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_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>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="confirm_entry">
+ <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_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>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="remember_pin">
+ <property name="label" translatable="yes">Remember _PIN</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">cancelbutton2</action-widget>
+ <action-widget response="-5">okbutton2</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkWindow" id="Preferences">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">window1</property>
+ <child>
+ <object class="GtkTable" id="aqbanking_prefs">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">4</property>
+ <child>
+ <object class="GtkLabel" id="label8877457">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Online Banking</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="gconf/dialogs/import/hbci/close_on_finish">
+ <property name="label" translatable="yes">_Close log window when finished</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="x_padding">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="gconf/dialogs/import/hbci/remember_pin">
+ <property name="label" translatable="yes">Remember _PIN</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="x_padding">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton3">
+ <property name="label" translatable="yes">_Verbose debug messages</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="x_padding">12</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkDialog" id="Template Name Dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancelbutton1">
+ <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">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton1">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">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>
+ </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="vbox159">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label8877450">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Enter name for new template:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="template_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">250</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>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">cancelbutton1</action-widget>
+ <action-widget response="-5">okbutton1</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="Transaction Dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Online Transaction</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" 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="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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <child>
+ <object class="GtkLabel" id="heading_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Enter an Online Transaction</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</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">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">21</property>
+ <property name="n_columns">3</property>
+ <child>
+ <object class="GtkEntry" id="recp_account_entry">
+ <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_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">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="recp_account_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Recipient Account Number</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="recp_bankcode_entry">
+ <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_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="dat_bankcode_changed_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="recp_bankcode_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Recipient Bank Code</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="recp_name_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="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="recp_name_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Recipient Name</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="recp_bankname_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">at Bank</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="recp_bankname_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">(filled in automatically)</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877434">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Amount</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877433">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Payment Purpose (only for recipient)</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8877435">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Payment Purpose continued</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">12</property>
+ <property name="bottom_attach">13</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_name_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Originator Name</property>
+ </object>
+ <packing>
+ <property name="top_attach">15</property>
+ <property name="bottom_attach">16</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_name_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">something</property>
+ </object>
+ <packing>
+ <property name="top_attach">16</property>
+ <property name="bottom_attach">17</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_bankname_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">at Bank</property>
+ </object>
+ <packing>
+ <property name="top_attach">17</property>
+ <property name="bottom_attach">18</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_bankname_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">something</property>
+ </object>
+ <packing>
+ <property name="top_attach">18</property>
+ <property name="bottom_attach">19</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_account_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Originator Account Number</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">15</property>
+ <property name="bottom_attach">16</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_account_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">something</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">16</property>
+ <property name="bottom_attach">17</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_bankcode_heading">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Bank Code</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">17</property>
+ <property name="bottom_attach">18</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="orig_bankcode_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">something</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">18</property>
+ <property name="bottom_attach">19</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox117">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkVButtonBox" id="vbutonbox158">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="add_templ_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Add the current online transaction as a new transaction template</property>
+ <property name="tooltip_text" translatable="yes">Add the current online transaction as a new transaction template</property>
+ <property name="use_action_appearance">False</property>
+ <signal name="clicked" handler="dat_add_templ_cb" swapped="no"/>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <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="hbox119">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-add</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="label8877451">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add current</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">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="moveup_templ_button">
+ <property name="label">gtk-go-up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Move the selected transaction template one row up</property>
+ <property name="tooltip_text" translatable="yes">Move the selected transaction template one row up</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="dat_moveup_templ_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="movedown_templ_button">
+ <property name="label">gtk-go-down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Move the selected transaction template one row down</property>
+ <property name="tooltip_text" translatable="yes">Move the selected transaction template one row down</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="dat_movedown_templ_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="sort_templ_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Sort the list of transaction templates alphabetically</property>
+ <property name="tooltip_text" translatable="yes">Sort the list of transaction templates alphabetically</property>
+ <property name="use_action_appearance">False</property>
+ <signal name="clicked" handler="dat_sort_templ_cb" swapped="no"/>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <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="hbox120">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-sort-ascending</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="label8877452">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Sort</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">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="del_templ_button">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup">Delete the currently selected transaction template</property>
+ <property name="tooltip_text" translatable="yes">Delete the currently selected transaction template</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="dat_del_templ_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">True</property>
+ <signal name="row-activated" handler="templ_list_row_activated_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <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">
+ <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">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>
+ <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>
+ <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="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-9">exec_later_button</action-widget>
+ <action-widget response="-6">cancel_button</action-widget>
+ <action-widget response="-8">exec_now_button</action-widget>
+ </action-widgets>
+ </object>
+</interface>
Deleted: gnucash/trunk/src/import-export/aqbanking/dialog-daterange.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-daterange.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-daterange.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -1,155 +0,0 @@
-/*
- * dialog-daterange.c --
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-/**
- * @internal
- * @file dialog-daterange.c
- * @brief Dialog for date range entry
- * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
- * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
- */
-
-#include "config.h"
-
-#include "dialog-daterange.h"
-#include "dialog-utils.h"
-#include "gnc-date-edit.h"
-
-/* This static indicates the debugging module that this .o belongs to. */
-static QofLogModule log_module = G_LOG_DOMAIN;
-
-typedef struct _DaterangeInfo DaterangeInfo;
-
-void ddr_toggled_cb(GtkToggleButton *button, gpointer user_data);
-
-struct _DaterangeInfo
-{
- GtkWidget *enter_from_button;
- GtkWidget *enter_to_button;
- GtkWidget *from_dateedit;
- GtkWidget *to_dateedit;
-};
-
-gboolean
-gnc_ab_enter_daterange(GtkWidget *parent,
- const char *heading,
- Timespec *from_date,
- gboolean *last_retv_date,
- gboolean *first_possible_date,
- Timespec *to_date,
- gboolean *to_now)
-{
- GladeXML *xml;
- GtkWidget *dialog;
- GtkWidget *heading_label;
- GtkWidget *first_button;
- GtkWidget *last_retrieval_button;
- GtkWidget *now_button;
- DaterangeInfo info;
- gint result;
-
- ENTER("");
-
- xml = gnc_glade_xml_new("aqbanking.glade", "Date Range Dialog");
-
- dialog = glade_xml_get_widget(xml, "Date Range Dialog");
- g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref);
- glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func,
- &info);
-
- if (parent)
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));
-
- heading_label = glade_xml_get_widget(xml, "heading_label");
- first_button = glade_xml_get_widget(xml, "first_button");
- last_retrieval_button = glade_xml_get_widget(xml, "last_retrieval_button");
- info.enter_from_button = glade_xml_get_widget(xml, "enter_from_button");
- now_button = glade_xml_get_widget(xml, "now_button");
- info.enter_to_button = glade_xml_get_widget(xml, "enter_to_button");
-
- info.from_dateedit = gnc_date_edit_new_ts(*from_date, FALSE, FALSE);
- gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_from_box")),
- info.from_dateedit);
- gtk_widget_show(info.from_dateedit);
-
- info.to_dateedit = gnc_date_edit_new_ts(*to_date, FALSE, FALSE);
- gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_to_box")),
- info.to_dateedit);
- gtk_widget_show(info.to_dateedit);
-
- if (*last_retv_date)
- {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(last_retrieval_button),
- TRUE);
- }
- else
- {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(first_button), TRUE);
- gtk_widget_set_sensitive(last_retrieval_button, FALSE);
- }
-
- gtk_widget_set_sensitive(info.from_dateedit, FALSE);
- gtk_widget_set_sensitive(info.to_dateedit, FALSE);
-
- gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
-
- if (heading)
- gtk_label_set_text(GTK_LABEL(heading_label), heading);
-
- gtk_widget_show(dialog);
-
- result = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_hide(dialog);
-
- if (result == GTK_RESPONSE_OK)
- {
- *from_date = gnc_date_edit_get_date_ts(
- GNC_DATE_EDIT(info.from_dateedit));
- *last_retv_date = gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(last_retrieval_button));
- *first_possible_date = gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(first_button));
- *to_date = gnc_date_edit_get_date_ts(
- GNC_DATE_EDIT(info.to_dateedit));
- *to_now = gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(now_button));
- }
-
- gtk_widget_destroy(dialog);
-
- LEAVE("");
- return result == GTK_RESPONSE_OK;
-}
-
-void
-ddr_toggled_cb(GtkToggleButton *button, gpointer user_data)
-{
- DaterangeInfo *info = user_data;
-
- g_return_if_fail(info);
-
- gtk_widget_set_sensitive(info->from_dateedit,
- gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(info->enter_from_button)));
- gtk_widget_set_sensitive(info->to_dateedit,
- gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(info->enter_to_button)));
-}
Deleted: gnucash/trunk/src/import-export/aqbanking/dialog-daterange.h
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-daterange.h 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-daterange.h 2011-12-17 11:02:41 UTC (rev 21734)
@@ -1,69 +0,0 @@
-/*
- * dialog-daterange.h --
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-/**
- * @addtogroup Import_Export
- * @{
- * @addtogroup AqBanking
- * @{
- * @file aqbanking/dialog-daterange.h
- * @brief Dialog for date range entry
- * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
- * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
- */
-
-#ifndef DIALOG_DATERANGE_H
-#define DIALOG_DATERANGE_H
-
-#include <gtk/gtk.h>
-
-#include "qof.h"
-
-G_BEGIN_DECLS
-
-/**
- * Show a dialog to pick a time frame using a sensible set of default options.
- *
- * @param parent Widget to use as parent, may be NULL
- * @param heading Descriptive text showed at the top, may be NULL
- * @param from_date Location to read from the initial and write to the final
- * value of the from date entry
- * @param last_retv_date Location to read from whether the caller knows the last
- * retrieval date and write to whether the corresponding button has been chosen
- * @param first_possible_date Location to write to whether the earliest possible
- * date button has been chosen
- * @param to_date Location to read from the initial and write to the final value
- * of the to date entry
- * @param to_now Location to write to whether the to now button has been chosen
- */
-gboolean gnc_ab_enter_daterange(GtkWidget *parent,
- const char *heading,
- Timespec *from_date,
- gboolean *last_retv_date,
- gboolean *first_possible_date,
- Timespec *to_date,
- gboolean *to_now);
-
-G_END_DECLS
-
-#endif /* DIALOG_DATERANGE_H */
-/** @} */
-/** @} */
Deleted: gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -1,890 +0,0 @@
-/*
- * druid-ab-initial.c --
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-/**
- * @internal
- * @file druid-ab-initial.c
- * @brief AqBanking setup functionality
- * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
- * @author Copyright (C) 2006 David Hampton <hampton at employees.org>
- * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
- */
-
-#include "config.h"
-
-#include <aqbanking/banking.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <glib/gstdio.h>
-#include <gdk/gdkkeysyms.h>
-#ifdef HAVE_SYS_WAIT_H
-# include <sys/wait.h>
-#endif
-#include <fcntl.h>
-#include <unistd.h>
-
-#include "dialog-utils.h"
-#include "druid-ab-initial.h"
-#include "druid-utils.h"
-#include "gnc-ab-kvp.h"
-#include "gnc-ab-utils.h"
-#include "gnc-component-manager.h"
-#include "gnc-glib-utils.h"
-#include "gnc-ui.h"
-#include "gnc-ui-util.h"
-#include "gnc-session.h"
-#include "import-account-matcher.h"
-
-#if AQBANKING_VERSION_INT > 49908
-/* For aqbanking > 4.99.8. See below. */
-# include <aqbanking/dlg_setup.h>
-#endif
-
-/* This static indicates the debugging module that this .o belongs to. */
-static QofLogModule log_module = G_LOG_DOMAIN;
-
-#define DRUID_AB_INITIAL_CM_CLASS "druid-ab-initial"
-
-typedef struct _ABInitialInfo ABInitialInfo;
-typedef struct _DeferredInfo DeferredInfo;
-typedef struct _AccCbData AccCbData;
-typedef struct _RevLookupData RevLookupData;
-
-gboolean dai_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data);
-void dai_cancel_cb(GnomeDruid *druid, gpointer user_data);
-void dai_destroy_cb(GtkObject *object, gpointer user_data);
-void dai_wizard_page_prepare_cb(GnomeDruidPage *druid_page, GtkWidget *widget, gpointer user_data);
-void dai_wizard_button_clicked_cb(GtkButton *button, gpointer user_data);
-void dai_match_page_prepare_cb(GnomeDruidPage *druid_page, GtkWidget *widget, gpointer user_data);
-void dai_finish_cb(GnomeDruidPage *druid_page, GtkWidget *widget, gpointer user_data);
-
-static gboolean banking_has_accounts(AB_BANKING *banking);
-static void hash_from_kvp_acc_cb(Account *gnc_acc, gpointer user_data);
-static void druid_enable_next_button(ABInitialInfo *info);
-static void druid_disable_next_button(ABInitialInfo *info);
-static void child_exit_cb(GPid pid, gint status, gpointer data);
-static gchar *ab_account_longname(const AB_ACCOUNT *ab_acc);
-static AB_ACCOUNT *update_account_list_acc_cb(AB_ACCOUNT *ab_acc, gpointer user_data);
-static void update_account_list(ABInitialInfo *info);
-static gboolean find_gnc_acc_cb(gpointer key, gpointer value, gpointer user_data);
-static gboolean clear_line_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data);
-static void account_list_changed_cb(GtkTreeSelection *selection, gpointer user_data);
-static void clear_kvp_acc_cb(Account *gnc_acc, gpointer user_data);
-static void save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data);
-static void cm_close_handler(gpointer user_data);
-
-struct _ABInitialInfo
-{
- GtkWidget *window;
- GtkWidget *druid;
-
- /* account match page */
- gboolean match_page_prepared;
- GtkTreeView *account_view;
- GtkListStore *account_store;
-
- /* managed by child_exit_cb */
- DeferredInfo *deferred_info;
-
- /* AqBanking stuff */
- AB_BANKING *api;
- /* AB_ACCOUNT* -> Account* -- DO NOT DELETE THE KEYS! */
- GHashTable *gnc_hash;
-};
-
-struct _DeferredInfo
-{
- ABInitialInfo *initial_info;
- gchar *wizard_path;
- gboolean qt_probably_unavailable;
-};
-
-struct _AccCbData
-{
- AB_BANKING *api;
- GHashTable *hash;
-};
-
-struct _RevLookupData
-{
- Account *gnc_acc;
- AB_ACCOUNT *ab_acc;
-};
-
-enum account_list_cols
-{
- ACCOUNT_LIST_COL_INDEX = 0,
- ACCOUNT_LIST_COL_AB_NAME,
- ACCOUNT_LIST_COL_AB_ACCT,
- ACCOUNT_LIST_COL_GNC_NAME,
- ACCOUNT_LIST_COL_CHECKED,
- NUM_ACCOUNT_LIST_COLS
-};
-
-gboolean
-dai_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
-{
- if (event->keyval == GDK_Escape)
- {
- gtk_widget_destroy(widget);
- return TRUE;
- }
- else
- {
- return FALSE;
- }
-}
-
-void
-dai_cancel_cb(GnomeDruid *druid, gpointer user_data)
-{
- ABInitialInfo *info = user_data;
-
- gtk_widget_destroy(info->window);
-}
-
-void
-dai_destroy_cb(GtkObject *object, gpointer user_data)
-{
- ABInitialInfo *info = user_data;
-
- gnc_unregister_gui_component_by_data(DRUID_AB_INITIAL_CM_CLASS, info);
-
- if (info->deferred_info)
- {
- g_message("Online Banking druid is being closed but the wizard is still "
- "running. Inoring.");
-
- /* Tell child_exit_cb() that there is no druid anymore */
- info->deferred_info->initial_info = NULL;
- }
-
- if (info->gnc_hash)
- {
-#ifdef AQBANKING_VERSION_4_EXACTLY
- AB_Banking_OnlineFini(info->api, 0);
-#else
- AB_Banking_OnlineFini(info->api);
-#endif
- g_hash_table_destroy(info->gnc_hash);
- info->gnc_hash = NULL;
- }
-
- if (info->api)
- {
- gnc_AB_BANKING_delete(info->api);
- info->api = NULL;
- }
-
- gtk_widget_destroy(info->window);
- info->window = NULL;
-
- g_free(info);
-}
-
-void
-dai_wizard_page_prepare_cb(GnomeDruidPage *druid_page, GtkWidget *widget,
- gpointer user_data)
-{
- ABInitialInfo *info = user_data;
-
- g_return_if_fail(info->api);
-
- if (banking_has_accounts(info->api))
- druid_enable_next_button(info);
- else
- druid_disable_next_button(info);
-}
-
-void
-dai_wizard_button_clicked_cb(GtkButton *button, gpointer user_data)
-{
- ABInitialInfo *info = user_data;
- AB_BANKING *banking = info->api;
- GWEN_BUFFER *buf;
- gboolean wizard_exists;
- const gchar *wizard_path;
- gboolean qt_probably_unavailable = FALSE;
-
- g_return_if_fail(banking);
-
- ENTER("user_data: %p", user_data);
-
- if (info->deferred_info)
- {
- LEAVE("Wizard is still running");
- return;
- }
-
-#if AQBANKING_VERSION_INT > 49908
- /* For aqbanking5 > 4.99.8: Use AB_Banking_GetNewUserDialog(). */
- {
- GWEN_DIALOG *dlg =
- AB_SetupDialog_new(banking);
-
- if (AB_Banking_OnlineInit(banking) != 0)
- {
- PERR("Got error on AB_Banking_OnlineInit!");
- }
-
- if (!dlg)
- {
- PERR("Could not lookup Setup Dialog of aqbanking!");
- /* Dialog failed, but maybe the user wants to continue anyway */
- druid_enable_next_button(info);
- }
- else
- {
- int rv = GWEN_Gui_ExecDialog(dlg, 0);
- if (rv <= 0)
- {
- /* Dialog was aborted/rejected */
- druid_disable_next_button(info);
- }
- else
- {
- /* Dialog accepted, all fine */
- druid_enable_next_button(info);
- }
- GWEN_Dialog_free(dlg);
- }
-
- if (AB_Banking_OnlineFini(banking) != 0)
- {
- PERR("Got error on AB_Banking_OnlineFini!");
- }
- }
-#else
- /* Previous implementation for aqbanking <= 4.99.8: Use the
- * external application. */
-
-
- /* This is the point where we look for and start an external
- * application shipped with aqbanking that contains the setup druid
- * for AqBanking related stuff. It requires qt (but not kde). This
- * application contains the very verbose step-by-step setup wizard
- * for the AqBanking account, and the application is shared with
- * other AqBanking-based financial managers that offer the AqBanking
- * features (e.g. KMyMoney). See gnucash-devel discussion here
- * https://lists.gnucash.org/pipermail/gnucash-devel/2004-December/012351.html
- */
- buf = GWEN_Buffer_new(NULL, 300, 0, 0);
- AB_Banking_FindWizard(banking, "", NULL, buf);
- wizard_exists = *GWEN_Buffer_GetStart(buf) != 0;
- wizard_path = GWEN_Buffer_GetStart(buf);
-
- if (wizard_exists)
- {
- /* Really check whether the file exists */
- gint fd = g_open(wizard_path, O_RDONLY, 0);
- if (fd == -1)
- wizard_exists = FALSE;
- else
- close(fd);
- }
-
-#ifdef G_OS_WIN32
- {
- const char *check_file = "qtdemo.exe";
- gchar *found_program = g_find_program_in_path(check_file);
- if (found_program)
- {
- g_debug("Yes, we found the Qt demo program in %s\n", found_program);
- g_free(found_program);
- }
- else
- {
- g_warning("Ouch, no Qt demo program was found. Qt not installed?\n");
- qt_probably_unavailable = TRUE;
- }
- }
-#endif
-
- druid_disable_next_button(info);
-
- if (wizard_exists)
- {
- /* Call the qt wizard. See the note above about why this
- * approach is chosen. */
-
- GPid pid;
- GError *error = NULL;
- gchar *argv[2];
- gboolean spawned;
-
- argv[0] = g_strdup (wizard_path);
- argv[1] = NULL;
- spawned = g_spawn_async (NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD,
- NULL, NULL, &pid, &error);
- g_free (argv[0]);
-
- if (error)
- g_critical(
- "Error on starting AqBanking setup wizard: Code %d: %s",
- error->code, error->message ? error->message : "(null)");
-
- if (!spawned)
- {
- g_critical("Could not start AqBanking setup wizard: %s",
- error->message ? error->message : "(null)");
- g_error_free (error);
- }
- else
- {
- /* Keep a reference to info that can survive info */
- info->deferred_info = g_new0(DeferredInfo, 1);
- info->deferred_info->initial_info = info;
- info->deferred_info->wizard_path = g_strdup(wizard_path);
- info->deferred_info->qt_probably_unavailable =
- qt_probably_unavailable;
-
- g_child_watch_add (pid, child_exit_cb, info->deferred_info);
- }
- }
- else
- {
- g_warning("on_aqhbci_button: Oops, no aqhbci setup wizard found.");
- gnc_error_dialog
- (info->window,
- _("The external program \"AqBanking Setup Wizard\" has not "
- "been found. \n\n"
- "The %s package should include the "
- "program \"qt3-wizard\". Please check your installation to "
- "ensure this program is present. On some distributions this "
- "may require installing additional packages."),
- QT3_WIZARD_PACKAGE);
- druid_disable_next_button(info);
- }
-
- GWEN_Buffer_free(buf);
-#endif
-
- LEAVE(" ");
-}
-
-void
-dai_match_page_prepare_cb(GnomeDruidPage *druid_page, GtkWidget *widget,
- gpointer user_data)
-{
- ABInitialInfo *info = user_data;
- Account *root;
- AccCbData data;
-
- g_return_if_fail(info && info->api);
-
- /* No way back */
- gnome_druid_set_buttons_sensitive(GNOME_DRUID(info->druid),
- FALSE, TRUE, TRUE, TRUE);
-
- /* Do not run this twice */
- if (info->match_page_prepared)
- return;
- else
- info->match_page_prepared = TRUE;
-
- /* Load aqbanking accounts */
-#ifdef AQBANKING_VERSION_4_EXACTLY
- AB_Banking_OnlineInit(info->api, 0);
-#else
- AB_Banking_OnlineInit(info->api);
-#endif
-
- /* Determine current mapping */
- root = gnc_book_get_root_account(gnc_get_current_book());
- info->gnc_hash = g_hash_table_new(&g_direct_hash, &g_direct_equal);
- data.api = info->api;
- data.hash = info->gnc_hash;
- gnc_account_foreach_descendant(
- root, (AccountCb) hash_from_kvp_acc_cb, &data);
-
- /* Update the graphical representation */
- update_account_list(info);
-}
-
-void
-dai_finish_cb(GnomeDruidPage *druid_page, GtkWidget *widget,
- gpointer user_data)
-{
- ABInitialInfo *info = user_data;
- Account *root;
-
- g_return_if_fail(info && info->gnc_hash);
-
- /* Commit the changes */
- root = gnc_book_get_root_account(gnc_get_current_book());
- gnc_account_foreach_descendant(root, (AccountCb) clear_kvp_acc_cb, NULL);
- g_hash_table_foreach(info->gnc_hash, (GHFunc) save_kvp_acc_cb, NULL);
-
- gtk_widget_destroy(info->window);
-}
-
-static gboolean
-banking_has_accounts(AB_BANKING *banking)
-{
- AB_ACCOUNT_LIST2 *accl;
- gboolean result;
-
- g_return_val_if_fail(banking, FALSE);
-
-#ifdef AQBANKING_VERSION_4_EXACTLY
- AB_Banking_OnlineInit(banking, 0);
-#else
- AB_Banking_OnlineInit(banking);
-#endif
-
- accl = AB_Banking_GetAccounts(banking);
- if (accl && (AB_Account_List2_GetSize(accl) > 0))
- result = TRUE;
- else
- result = FALSE;
-
- if (accl)
- AB_Account_List2_free(accl);
-
-#ifdef AQBANKING_VERSION_4_EXACTLY
- AB_Banking_OnlineFini(banking, 0);
-#else
- AB_Banking_OnlineFini(banking);
-#endif
-
- return result;
-}
-
-static void
-hash_from_kvp_acc_cb(Account *gnc_acc, gpointer user_data)
-{
- AccCbData *data = user_data;
- AB_ACCOUNT *ab_acc;
-
- ab_acc = gnc_ab_get_ab_account(data->api, gnc_acc);
- if (ab_acc)
- g_hash_table_insert(data->hash, ab_acc, gnc_acc);
-}
-
-static void
-druid_enable_next_button(ABInitialInfo *info)
-{
- g_return_if_fail(info);
- gnome_druid_set_buttons_sensitive(GNOME_DRUID(info->druid),
- TRUE, TRUE, TRUE, TRUE);
-}
-
-static void
-druid_disable_next_button(ABInitialInfo *info)
-{
- g_return_if_fail(info);
- gnome_druid_set_buttons_sensitive(GNOME_DRUID(info->druid),
- TRUE, FALSE, TRUE, TRUE);
-}
-
-static void
-child_exit_cb(GPid pid, gint status, gpointer data)
-{
- DeferredInfo *deferred_info = data;
- ABInitialInfo *info = deferred_info->initial_info;
- gint exit_status;
-
-#ifdef G_OS_WIN32
- exit_status = status;
-#else
- exit_status = WEXITSTATUS(status);
-#endif
-
- g_spawn_close_pid(pid);
-
- if (!info)
- {
- g_message("Online Banking wizard exited, but the druid has been "
- "destroyed already");
- goto cleanup_child_exit_cb;
- }
-
- if (exit_status == 0)
- {
- druid_enable_next_button(info);
- }
- else
- {
- if (deferred_info->qt_probably_unavailable)
- {
- g_warning("on_aqhbci_button: Oops, aqhbci wizard return nonzero "
- "value: %d. The called program was \"%s\".\n",
- exit_status, deferred_info->wizard_path);
- gnc_error_dialog
- (info->window, "%s",
- _("The external program \"AqBanking Setup Wizard\" failed "
- "to run successfully because the "
- "additional software \"Qt\" was not found. "
- "Please install the \"Qt/Windows Open Source Edition\" "
- "from Trolltech by downloading it from www.trolltech.com"
- "\n\n"
- "If you have installed Qt already, you will have to adapt "
- "the PATH variable of your system appropriately. "
- "Contact the GnuCash developers if you need further "
- "assistance on how to install Qt correctly."
- "\n\n"
- "Online Banking cannot be setup without Qt. Press \"Close\" "
- "now, then \"Cancel\" to cancel the Online Banking setup."));
- }
- else
- {
- g_warning("on_aqhbci_button: Oops, aqhbci wizard return nonzero "
- "value: %d. The called program was \"%s\".\n",
- exit_status, deferred_info->wizard_path);
- gnc_error_dialog
- (info->window, "%s",
- _("The external program \"AqBanking Setup Wizard\" failed "
- "to run successfully. Online Banking can only be setup "
- "if this wizard has run successfully. "
- "Please try running the \"AqBanking Setup Wizard\" again."));
- }
- druid_disable_next_button(info);
- }
-
-cleanup_child_exit_cb:
- g_free(deferred_info->wizard_path);
- g_free(deferred_info);
- if (info)
- info->deferred_info = NULL;
-}
-
-static gchar *
-ab_account_longname(const AB_ACCOUNT *ab_acc)
-{
- gchar *bankname;
- gchar *result;
- const char *ab_bankname, *bankcode;
-
- g_return_val_if_fail(ab_acc, NULL);
-
- ab_bankname = AB_Account_GetBankName(ab_acc);
- bankname = ab_bankname ? gnc_utf8_strip_invalid_strdup(ab_bankname) : NULL;
- bankcode = AB_Account_GetBankCode(ab_acc);
-
- /* Translators: Strings are 1. Account code, 2. Bank name, 3. Bank code. */
- if (bankname && *bankname)
- result = g_strdup_printf(_("%s at %s (code %s)"),
- AB_Account_GetAccountNumber(ab_acc),
- bankname,
- bankcode);
- else
- result = g_strdup_printf(_("%s at bank code %s"),
- AB_Account_GetAccountNumber(ab_acc),
- bankcode);
- g_free(bankname);
-
- return result;
-
-}
-
-static AB_ACCOUNT *
-update_account_list_acc_cb(AB_ACCOUNT *ab_acc, gpointer user_data)
-{
- ABInitialInfo *info = user_data;
- gchar *gnc_name, *ab_name;
- Account *gnc_acc;
- GtkTreeIter iter;
-
- g_return_val_if_fail(ab_acc && info, NULL);
-
- ab_name = ab_account_longname(ab_acc);
-
- /* Get corresponding gnucash account */
- gnc_acc = g_hash_table_lookup(info->gnc_hash, ab_acc);
-
- /* Build the text for the gnucash account. */
- if (gnc_acc)
- gnc_name = gnc_account_get_full_name(gnc_acc);
- else
- gnc_name = g_strdup("");
-
- /* Add item to the list store */
- gtk_list_store_append(info->account_store, &iter);
- gtk_list_store_set(info->account_store, &iter,
- ACCOUNT_LIST_COL_AB_NAME, ab_name,
- ACCOUNT_LIST_COL_AB_ACCT, ab_acc,
- ACCOUNT_LIST_COL_GNC_NAME, gnc_name,
- ACCOUNT_LIST_COL_CHECKED, FALSE,
- -1);
-
- g_free(gnc_name);
- g_free(ab_name);
- return NULL;
-}
-
-static void
-update_account_list(ABInitialInfo *info)
-{
- AB_ACCOUNT_LIST2 *acclist;
-
- g_return_if_fail(info && info->api && info->gnc_hash);
-
- /* Detach model from view while updating */
- g_object_ref(info->account_store);
- gtk_tree_view_set_model(info->account_view, NULL);
-
- /* Refill the list */
- gtk_list_store_clear(info->account_store);
- acclist = AB_Banking_GetAccounts(info->api);
- if (acclist)
- AB_Account_List2_ForEach(acclist, update_account_list_acc_cb, info);
- else
- g_warning("update_account_list: Oops, account list from AB_Banking "
- "is NULL");
-
- /* Attach model to view again */
- gtk_tree_view_set_model(info->account_view,
- GTK_TREE_MODEL(info->account_store));
- g_object_unref(info->account_store);
-}
-
-static gboolean
-find_gnc_acc_cb(gpointer key, gpointer value, gpointer user_data)
-{
- RevLookupData *data = user_data;
-
- g_return_val_if_fail(data, TRUE);
-
- if (value == data->gnc_acc)
- {
- data->ab_acc = (AB_ACCOUNT*) key;
- return TRUE;
- }
- return FALSE;
-}
-
-static gboolean
-clear_line_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
- gpointer user_data)
-{
- RevLookupData *data = user_data;
- GtkListStore *store = GTK_LIST_STORE(model);
- gpointer ab_acc;
-
- g_return_val_if_fail(data && store, FALSE);
-
- gtk_tree_model_get(model, iter, ACCOUNT_LIST_COL_AB_ACCT, &ab_acc, -1);
-
- if (ab_acc == data->ab_acc)
- {
- gtk_list_store_set(store, iter, ACCOUNT_LIST_COL_GNC_NAME, "",
- ACCOUNT_LIST_COL_CHECKED, TRUE, -1);
- return TRUE;
- }
- return FALSE;
-}
-
-static void
-account_list_changed_cb(GtkTreeSelection *selection, gpointer user_data)
-{
- ABInitialInfo *info = user_data;
- GtkTreeModel *model;
- GtkTreeIter iter;
- AB_ACCOUNT *ab_acc;
- gchar *longname, *gnc_name;
- Account *old_value, *gnc_acc;
- const gchar *currency;
- gnc_commodity *commodity = NULL;
- gboolean ok_pressed;
-
- g_return_if_fail(info);
-
- if (!gtk_tree_selection_get_selected(selection, &model, &iter))
- return;
- gtk_tree_model_get(model, &iter, ACCOUNT_LIST_COL_AB_ACCT, &ab_acc, -1);
-
- /* Avoid recursion when unselecting the item again */
- g_signal_handlers_block_by_func(selection, account_list_changed_cb, info);
- gtk_tree_selection_unselect_iter(selection, &iter);
- g_signal_handlers_unblock_by_func(selection, account_list_changed_cb, info);
-
- if (ab_acc)
- {
- old_value = g_hash_table_lookup(info->gnc_hash, ab_acc);
-
- longname = ab_account_longname(ab_acc);
- currency = AB_Account_GetCurrency(ab_acc);
- if (currency && *currency)
- {
- commodity = gnc_commodity_table_lookup(
- gnc_commodity_table_get_table(gnc_get_current_book()),
- GNC_COMMODITY_NS_CURRENCY,
- currency);
- }
-
- gnc_acc = gnc_import_select_account(info->window, NULL, TRUE,
- longname, commodity, ACCT_TYPE_BANK,
- old_value, &ok_pressed);
- g_free(longname);
-
- if (ok_pressed && old_value != gnc_acc)
- {
- if (gnc_acc)
- {
- RevLookupData data;
-
- /* Lookup and clear other mappings to gnc_acc */
- data.gnc_acc = gnc_acc;
- data.ab_acc = NULL;
- g_hash_table_find(info->gnc_hash, (GHRFunc) find_gnc_acc_cb,
- &data);
- if (data.ab_acc)
- {
- g_hash_table_remove(info->gnc_hash, data.ab_acc);
- gtk_tree_model_foreach(
- GTK_TREE_MODEL(info->account_store),
- (GtkTreeModelForeachFunc) clear_line_cb,
- &data);
- }
-
- /* Map ab_acc to gnc_acc */
- g_hash_table_insert(info->gnc_hash, ab_acc, gnc_acc);
- gnc_name = gnc_account_get_full_name(gnc_acc);
- gtk_list_store_set(info->account_store, &iter,
- ACCOUNT_LIST_COL_GNC_NAME, gnc_name,
- ACCOUNT_LIST_COL_CHECKED, TRUE,
- -1);
- g_free(gnc_name);
-
- }
- else
- {
- g_hash_table_remove(info->gnc_hash, ab_acc);
- gtk_list_store_set(info->account_store, &iter,
- ACCOUNT_LIST_COL_GNC_NAME, "",
- ACCOUNT_LIST_COL_CHECKED, TRUE,
- -1);
- }
- }
- }
-}
-
-static void
-clear_kvp_acc_cb(Account *gnc_acc, gpointer user_data)
-{
- if (gnc_ab_get_account_uid(gnc_acc))
- gnc_ab_set_account_uid(gnc_acc, 0);
- if (gnc_ab_get_account_accountid(gnc_acc))
- gnc_ab_set_account_accountid(gnc_acc, "");
- if (gnc_ab_get_account_bankcode(gnc_acc))
- gnc_ab_set_account_bankcode(gnc_acc, "");
-}
-
-static void
-save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data)
-{
- AB_ACCOUNT *ab_acc = key;
- Account *gnc_acc = value;
- guint32 ab_account_uid;
- const gchar *ab_accountid, *gnc_accountid;
- const gchar *ab_bankcode, *gnc_bankcode;
-
- g_return_if_fail(ab_acc && gnc_acc);
-
- ab_account_uid = AB_Account_GetUniqueId(ab_acc);
- if (gnc_ab_get_account_uid(gnc_acc) != ab_account_uid)
- gnc_ab_set_account_uid(gnc_acc, ab_account_uid);
-
- ab_accountid = AB_Account_GetAccountNumber(ab_acc);
- gnc_accountid = gnc_ab_get_account_accountid(gnc_acc);
- if (ab_accountid
- && (!gnc_accountid
- || (strcmp(ab_accountid, gnc_accountid) != 0)))
- gnc_ab_set_account_accountid(gnc_acc, ab_accountid);
-
- ab_bankcode = AB_Account_GetBankCode(ab_acc);
- gnc_bankcode = gnc_ab_get_account_bankcode(gnc_acc);
- if (ab_bankcode
- && (!gnc_bankcode
- || (strcmp(gnc_bankcode, ab_bankcode) != 0)))
- gnc_ab_set_account_bankcode(gnc_acc, ab_bankcode);
-}
-
-static void
-cm_close_handler(gpointer user_data)
-{
- ABInitialInfo *info = user_data;
-
- gtk_widget_destroy(info->window);
-}
-
-void
-gnc_ab_initial_druid(void)
-{
- ABInitialInfo *info;
- GladeXML *xml;
- GtkTreeViewColumn *column;
- GtkTreeSelection *selection;
- gint component_id;
-
- info = g_new0(ABInitialInfo, 1);
-
- xml = gnc_glade_xml_new("aqbanking.glade", "AqBanking Init Druid");
-
- info->window = glade_xml_get_widget(xml, "AqBanking Init Druid");
- g_object_set_data_full(G_OBJECT(info->window), "xml", xml, g_object_unref);
- glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func,
- info);
-
- info->druid = glade_xml_get_widget(xml, "ab_init_druid");
- gnc_druid_set_colors(GNOME_DRUID(info->druid));
-
- info->api = gnc_AB_BANKING_new();
- info->deferred_info = NULL;
- info->gnc_hash = NULL;
-
- info->match_page_prepared = FALSE;
- info->account_view =
- GTK_TREE_VIEW(glade_xml_get_widget(xml, "account_page_view"));
- info->account_store = gtk_list_store_new(NUM_ACCOUNT_LIST_COLS,
- G_TYPE_INT, G_TYPE_STRING,
- G_TYPE_POINTER, G_TYPE_STRING,
- G_TYPE_BOOLEAN);
- gtk_tree_view_set_model(info->account_view,
- GTK_TREE_MODEL(info->account_store));
- g_object_unref(info->account_store);
-
- column = gtk_tree_view_column_new_with_attributes(
- _("Online Banking Account Name"), gtk_cell_renderer_text_new(),
- "text", ACCOUNT_LIST_COL_AB_NAME, (gchar*) NULL);
- gtk_tree_view_append_column(info->account_view, column);
-
- column = gtk_tree_view_column_new_with_attributes(
- _("GnuCash Account Name"), gtk_cell_renderer_text_new(),
- "text", ACCOUNT_LIST_COL_GNC_NAME, (gchar*) NULL);
- gtk_tree_view_column_set_expand(column, TRUE);
- gtk_tree_view_append_column(info->account_view, column);
-
- column = gtk_tree_view_column_new_with_attributes(
- _("New?"), gtk_cell_renderer_toggle_new(),
- "active", ACCOUNT_LIST_COL_CHECKED, (gchar*) NULL);
- gtk_tree_view_append_column(info->account_view, column);
-
- selection = gtk_tree_view_get_selection(info->account_view);
- g_signal_connect(selection, "changed",
- G_CALLBACK(account_list_changed_cb), info);
-
- component_id = gnc_register_gui_component(DRUID_AB_INITIAL_CM_CLASS,
- NULL, cm_close_handler, info);
- gnc_gui_component_set_session(component_id, gnc_get_current_session());
-
- gtk_widget_show(info->window);
-}
Deleted: gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.h
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.h 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/druid-ab-initial.h 2011-12-17 11:02:41 UTC (rev 21734)
@@ -1,51 +0,0 @@
-/*
- * druid-ab-initial.h -- aqbanking creation functionality
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-/**
- * @addtogroup Import_Export
- * @{
- * @addtogroup AqBanking
- * @{
- * @file druid-ab-initial.h
- * @brief AqBanking setup functionality
- * @author Copyright (C) 2002 Christian Stimming <stimming at tuhh.de>
- * @author Copyright (C) 2008 Andreas Koehler <andi5.py at gmx.net>
- */
-
-#ifndef DRUID_AB_INITIAL_H
-#define DRUID_AB_INITIAL_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-/**
- * Create and show a druid for the aqbanking setup.
- */
-void gnc_ab_initial_druid(void);
-
-G_END_DECLS
-
-/** @} */
-/** @} */
-
-#endif /* DRUID_AB_INITIAL_H */
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-ab-gettrans.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-ab-gettrans.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-ab-gettrans.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -34,7 +34,7 @@
#include <aqbanking/jobgettransactions.h>
#include "Account.h"
-#include "dialog-daterange.h"
+#include "dialog-ab-daterange.h"
#include "gnc-ab-gettrans.h"
#include "gnc-ab-kvp.h"
#include "gnc-ab-utils.h"
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-ab-kvp.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-ab-kvp.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-ab-kvp.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -28,6 +28,7 @@
*/
#include "config.h"
+#include "gnc-ui-util.h"
#include "gnc-ab-kvp.h"
@@ -144,11 +145,12 @@
force_account_dirty(Account *acct)
{
gchar *name = g_strdup(xaccAccountGetName(acct));
-
+ QofBook *book = gnc_get_current_book ();
/* This is necessary because modifying the KvpFrames doesn't mark
* accounts dirty, which means the changes wont be propagated to the
* backend.
*/
+ qof_book_mark_dirty(book);
xaccAccountSetName(acct, name);
g_free(name);
}
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -515,33 +515,36 @@
static void
setup_dialog(GncGWENGui *gui)
{
- GladeXML *xml;
+ GtkBuilder *builder;
gint component_id;
g_return_if_fail(gui);
ENTER("gui=%p", gui);
- xml = gnc_glade_xml_new("aqbanking.glade", "Connection Dialog");
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder, "dialog-ab.glade", "Connection Dialog");
- gui->dialog = glade_xml_get_widget(xml, "Connection Dialog");
- g_object_set_data_full(G_OBJECT(gui->dialog), "xml", xml, g_object_unref);
- glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, gui);
- gui->entries_table = glade_xml_get_widget(xml, "entries_table");
- gui->top_entry = glade_xml_get_widget(xml, "top_entry");
- gui->top_progress = glade_xml_get_widget(xml, "top_progress");
- gui->second_entry = glade_xml_get_widget(xml, "second_entry");
+ gui->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Connection Dialog"));
+
+ gui->entries_table = GTK_WIDGET(gtk_builder_get_object (builder, "entries_table"));
+ gui->top_entry = GTK_WIDGET(gtk_builder_get_object (builder, "top_entry"));
+ gui->top_progress = GTK_WIDGET(gtk_builder_get_object (builder, "top_progress"));
+ gui->second_entry = GTK_WIDGET(gtk_builder_get_object (builder, "second_entry"));
gui->other_entries_box = NULL;
gui->progresses = NULL;
- gui->log_text = glade_xml_get_widget(xml, "log_text");
- gui->abort_button = glade_xml_get_widget(xml, "abort_button");
- gui->close_button = glade_xml_get_widget(xml, "close_button");
- gui->close_checkbutton = glade_xml_get_widget(xml, "close_checkbutton");
+ gui->log_text = GTK_WIDGET(gtk_builder_get_object (builder, "log_text"));
+ gui->abort_button = GTK_WIDGET(gtk_builder_get_object (builder, "abort_button"));
+ gui->close_button = GTK_WIDGET(gtk_builder_get_object (builder, "close_button"));
+ gui->close_checkbutton = GTK_WIDGET(gtk_builder_get_object (builder, "close_checkbutton"));
gui->accepted_certs = NULL;
gui->permanently_accepted_certs = NULL;
gui->showbox_hash = NULL;
gui->showbox_id = 1;
+ /* Connect the Signals */
+ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, gui);
+
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(gui->close_checkbutton),
gnc_gconf_get_bool(GCONF_SECTION_AQBANKING, KEY_CLOSE_ON_FINISH, NULL));
@@ -550,6 +553,10 @@
cm_close_handler, gui);
gnc_gui_component_set_session(component_id, gnc_get_current_session());
+
+
+ g_object_unref(G_OBJECT(builder));
+
reset_dialog(gui);
LEAVE(" ");
@@ -971,7 +978,7 @@
get_input(GncGWENGui *gui, guint32 flags, const gchar *title, const gchar *text,
gchar **input, gint min_len, gint max_len)
{
- GladeXML *xml;
+ GtkBuilder *builder;
GtkWidget *dialog;
GtkWidget *heading_label;
GtkWidget *input_entry;
@@ -990,15 +997,15 @@
ENTER(" ");
/* Set up dialog */
- xml = gnc_glade_xml_new("aqbanking.glade", "Password Dialog");
- dialog = glade_xml_get_widget(xml, "Password Dialog");
- g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref);
+ builder = gtk_builder_new();
+ gnc_builder_add_from_file (builder, "dialog-ab.glade", "Password Dialog");
+ dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Password Dialog"));
- heading_label = glade_xml_get_widget(xml, "heading_label");
- input_entry = glade_xml_get_widget(xml, "input_entry");
- confirm_entry = glade_xml_get_widget(xml, "confirm_entry");
- confirm_label = glade_xml_get_widget(xml, "confirm_label");
- remember_pin_checkbutton = glade_xml_get_widget(xml, "remember_pin");
+ heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label"));
+ input_entry = GTK_WIDGET(gtk_builder_get_object (builder, "input_entry"));
+ confirm_entry = GTK_WIDGET(gtk_builder_get_object (builder, "confirm_entry"));
+ confirm_label = GTK_WIDGET(gtk_builder_get_object (builder, "confirm_label"));
+ remember_pin_checkbutton = GTK_WIDGET(gtk_builder_get_object (builder, "remember_pin"));
if (is_tan)
{
gtk_widget_hide(remember_pin_checkbutton);
@@ -1091,6 +1098,8 @@
}
}
+ g_object_unref(G_OBJECT(builder));
+
/* This trashes passwords in the entries' memory as well */
gtk_widget_destroy(dialog);
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -34,7 +34,7 @@
#include "Account.h"
#include "dialog-ab-trans.h"
-#include "druid-ab-initial.h"
+#include "assistant-ab-initial.h"
#include "gnc-ab-getbalance.h"
#include "gnc-ab-gettrans.h"
#include "gnc-ab-transfer.h"
@@ -430,7 +430,7 @@
gnc_plugin_ab_cmd_setup(GtkAction *action, GncMainWindowActionData *data)
{
ENTER("action %p, main window data %p", action, data);
- gnc_ab_initial_druid();
+ gnc_ab_initial_assistant();
LEAVE(" ");
}
Modified: gnucash/trunk/src/import-export/aqbanking/gncmod-aqbanking.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gncmod-aqbanking.c 2011-12-16 14:57:20 UTC (rev 21733)
+++ gnucash/trunk/src/import-export/aqbanking/gncmod-aqbanking.c 2011-12-17 11:02:41 UTC (rev 21734)
@@ -73,7 +73,9 @@
/* Add menu items with C callbacks */
gnc_plugin_aqbanking_create_plugin();
- gnc_preferences_add_to_page("aqbanking.glade", "aqbanking_prefs",
+
+ /* Add AqBanking preferences to the preferences dialog */
+ gnc_preferences_add_to_page("dialog-ab.glade", "aqbanking_prefs",
_("Online Banking"));
/* Initialize gwen library */
More information about the gnucash-changes
mailing list