GnuCash 2.4.99
gnc-plugin-aqbanking.c
00001 /*
00002  * gnc-plugin-aqbanking.c --
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License as
00006  * published by the Free Software Foundation; either version 2 of
00007  * the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, contact:
00016  *
00017  * Free Software Foundation           Voice:  +1-617-542-5942
00018  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652
00019  * Boston, MA  02110-1301,  USA       gnu@gnu.org
00020  */
00021 
00031 #include "config.h"
00032 
00033 #include <glib/gi18n.h>
00034 
00035 #include "Account.h"
00036 #include "dialog-ab-trans.h"
00037 #include "assistant-ab-initial.h"
00038 #include "gnc-ab-getbalance.h"
00039 #include "gnc-ab-gettrans.h"
00040 #include "gnc-ab-transfer.h"
00041 #include "gnc-ab-utils.h"
00042 #include "gnc-ab-kvp.h"
00043 #include "gnc-gwen-gui.h"
00044 #include "gnc-file-aqb-import.h"
00045 #include "gnc-gconf-utils.h"
00046 #include "gnc-plugin-aqbanking.h"
00047 #include "gnc-plugin-manager.h"
00048 #include "gnc-plugin-page-account-tree.h"
00049 #include "gnc-plugin-page-register.h"
00050 #include "gnc-main-window.h"
00051 #include "gnc-ui-util.h" // for gnc_get_current_book
00052 
00053 /* This static indicates the debugging module that this .o belongs to.  */
00054 static QofLogModule log_module = G_LOG_DOMAIN;
00055 
00056 static void gnc_plugin_aqbanking_class_init(GncPluginAqBankingClass *klass);
00057 static void gnc_plugin_aqbanking_init(GncPluginAqBanking *plugin);
00058 static void gnc_plugin_aqbanking_add_to_window(GncPlugin *plugin, GncMainWindow *window, GQuark type);
00059 static void gnc_plugin_aqbanking_remove_from_window(GncPlugin *plugin, GncMainWindow *window, GQuark type);
00060 
00061 /* Object callbacks */
00062 static void gnc_plugin_ab_main_window_page_added(GncMainWindow *window, GncPluginPage *page, gpointer user_data);
00063 static void gnc_plugin_ab_main_window_page_changed(GncMainWindow *window, GncPluginPage *page, gpointer user_data);
00064 static void gnc_plugin_ab_account_selected(GncPluginPage *plugin_page, Account *account, gpointer user_data);
00065 
00066 /* Auxiliary functions */
00067 static Account *main_window_to_account(GncMainWindow *window);
00068 
00069 /* Command callbacks */
00070 static void gnc_plugin_ab_cmd_setup(GtkAction *action, GncMainWindowActionData *data);
00071 static void gnc_plugin_ab_cmd_get_balance(GtkAction *action, GncMainWindowActionData *data);
00072 static void gnc_plugin_ab_cmd_get_transactions(GtkAction *action, GncMainWindowActionData *data);
00073 static void gnc_plugin_ab_cmd_issue_transaction(GtkAction *action, GncMainWindowActionData *data);
00074 static void gnc_plugin_ab_cmd_issue_inttransaction(GtkAction *action, GncMainWindowActionData *data);
00075 static void gnc_plugin_ab_cmd_issue_direct_debit(GtkAction *action, GncMainWindowActionData *data);
00076 static void gnc_plugin_ab_cmd_view_logwindow(GtkToggleAction *action, GncMainWindow *window);
00077 static void gnc_plugin_ab_cmd_mt940_import(GtkAction *action, GncMainWindowActionData *data);
00078 static void gnc_plugin_ab_cmd_mt942_import(GtkAction *action, GncMainWindowActionData *data);
00079 static void gnc_plugin_ab_cmd_dtaus_import(GtkAction *action, GncMainWindowActionData *data);
00080 static void gnc_plugin_ab_cmd_dtaus_importsend(GtkAction *action, GncMainWindowActionData *data);
00081 
00082 #define PLUGIN_ACTIONS_NAME "gnc-plugin-aqbanking-actions"
00083 #define PLUGIN_UI_FILENAME  "gnc-plugin-aqbanking-ui.xml"
00084 
00085 #define MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW "ABViewLogwindowAction"
00086 
00087 
00088 static GtkActionEntry gnc_plugin_actions [] =
00089 {
00090     /* Menus */
00091     { "OnlineActionsAction", NULL, N_("_Online Actions"), NULL, NULL, NULL },
00092 
00093     /* Menu Items */
00094     {
00095         "ABSetupAction", NULL, N_("_Online Banking Setup..."), NULL,
00096         N_("Initial setup of Online Banking access (HBCI, or OFX DirectConnect, using AqBanking)"),
00097         G_CALLBACK(gnc_plugin_ab_cmd_setup)
00098     },
00099     {
00100         "ABGetBalanceAction", NULL, N_("Get _Balance"), NULL,
00101         N_("Get the account balance online through Online Banking"),
00102         G_CALLBACK(gnc_plugin_ab_cmd_get_balance)
00103     },
00104     {
00105         "ABGetTransAction", NULL, N_("Get _Transactions..."), NULL,
00106         N_("Get the transactions online through Online Banking"),
00107         G_CALLBACK(gnc_plugin_ab_cmd_get_transactions)
00108     },
00109     {
00110         "ABIssueTransAction", NULL, N_("_Issue Transaction..."), NULL,
00111         N_("Issue a new transaction online through Online Banking"),
00112         G_CALLBACK(gnc_plugin_ab_cmd_issue_transaction)
00113     },
00114     {
00115         "ABIssueIntTransAction", NULL, N_("I_nternal Transaction..."), NULL,
00116         N_("Issue a new bank-internal transaction online through Online Banking"),
00117         G_CALLBACK(gnc_plugin_ab_cmd_issue_inttransaction)
00118     },
00119     {
00120         "ABIssueDirectDebitAction", NULL, N_("_Direct Debit..."), NULL,
00121         N_("Issue a new direct debit note online through Online Banking"),
00122         G_CALLBACK(gnc_plugin_ab_cmd_issue_direct_debit)
00123     },
00124 
00125     /* File -> Import menu item */
00126     {
00127         "Mt940ImportAction", GTK_STOCK_CONVERT, N_("Import _MT940"), NULL,
00128         N_("Import a MT940 file into GnuCash"),
00129         G_CALLBACK(gnc_plugin_ab_cmd_mt940_import)
00130     },
00131     {
00132         "Mt942ImportAction", GTK_STOCK_CONVERT, N_("Import MT94_2"), NULL,
00133         N_("Import a MT942 file into GnuCash"),
00134         G_CALLBACK(gnc_plugin_ab_cmd_mt942_import)
00135     },
00136     {
00137         "DtausImportAction", GTK_STOCK_CONVERT, N_("Import _DTAUS"), NULL,
00138         N_("Import a DTAUS file into GnuCash"),
00139         G_CALLBACK(gnc_plugin_ab_cmd_dtaus_import)
00140     },
00141     /* #ifdef CSV_IMPORT_FUNCTIONAL */
00142     /*     { "CsvImportAction", GTK_STOCK_CONVERT, N_("Import _CSV"), NULL, */
00143     /*       N_("Import a CSV file into GnuCash"), */
00144     /*       G_CALLBACK(gnc_plugin_ab_cmd_csv_import) }, */
00145     /*     { "CsvImportSendAction", GTK_STOCK_CONVERT, N_("Import CSV and s_end..."), NULL, */
00146     /*       N_("Import a CSV file into GnuCash and send the transfers online through Online Banking"), */
00147     /*       G_CALLBACK(gnc_plugin_ab_cmd_csv_importsend) }, */
00148     /* #endif */
00149     {
00150         "DtausImportSendAction", GTK_STOCK_CONVERT, N_("Import DTAUS and _send..."), NULL,
00151         N_("Import a DTAUS file into GnuCash and send the transfers online through Online Banking"),
00152         G_CALLBACK(gnc_plugin_ab_cmd_dtaus_importsend)
00153     },
00154 };
00155 static guint gnc_plugin_n_actions = G_N_ELEMENTS(gnc_plugin_actions);
00156 
00157 static GtkToggleActionEntry gnc_plugin_toggle_actions [] =
00158 {
00159     {
00160         MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW, NULL,
00161         N_("Show _log window"), NULL,
00162         N_("Show the online banking log window."),
00163         G_CALLBACK(gnc_plugin_ab_cmd_view_logwindow), TRUE
00164     },
00165 };
00166 static guint gnc_plugin_n_toggle_actions = G_N_ELEMENTS(gnc_plugin_toggle_actions);
00167 
00168 static const gchar *need_account_actions[] =
00169 {
00170     "ABGetBalanceAction",
00171     "ABGetTransAction",
00172     "ABIssueTransAction",
00173     "ABIssueIntTransAction",
00174     "ABIssueDirectDebitAction",
00175     NULL
00176 };
00177 
00178 static const gchar *readonly_inactive_actions[] =
00179 {
00180     "OnlineActionsAction",
00181     "ABSetupAction",
00182     NULL
00183 };
00184 
00185 static GncMainWindow *gnc_main_window = NULL;
00186 
00187 /************************************************************
00188  *                   Object Implementation                  *
00189  ************************************************************/
00190 
00191 G_DEFINE_TYPE(GncPluginAqBanking, gnc_plugin_aqbanking, GNC_TYPE_PLUGIN)
00192 
00193 GncPlugin *
00194 gnc_plugin_aqbanking_new(void)
00195 {
00196     return GNC_PLUGIN(g_object_new(GNC_TYPE_PLUGIN_AQBANKING, (gchar*) NULL));
00197 }
00198 
00199 static void
00200 gnc_plugin_aqbanking_class_init(GncPluginAqBankingClass *klass)
00201 {
00202     GncPluginClass *plugin_class = GNC_PLUGIN_CLASS(klass);
00203 
00204     /* plugin info */
00205     plugin_class->plugin_name  = GNC_PLUGIN_AQBANKING_NAME;
00206 
00207     /* widget addition/removal */
00208     plugin_class->actions_name       = PLUGIN_ACTIONS_NAME;
00209     plugin_class->actions            = gnc_plugin_actions;
00210     plugin_class->n_actions          = gnc_plugin_n_actions;
00211     plugin_class->toggle_actions     = gnc_plugin_toggle_actions;
00212     plugin_class->n_toggle_actions   = gnc_plugin_n_toggle_actions;
00213     plugin_class->ui_filename        = PLUGIN_UI_FILENAME;
00214     plugin_class->add_to_window      = gnc_plugin_aqbanking_add_to_window;
00215     plugin_class->remove_from_window = gnc_plugin_aqbanking_remove_from_window;
00216 }
00217 
00218 static void
00219 gnc_plugin_aqbanking_init(GncPluginAqBanking *plugin)
00220 {
00221 }
00222 
00227 static void
00228 gnc_plugin_aqbanking_add_to_window(GncPlugin *plugin, GncMainWindow *window,
00229                                    GQuark type)
00230 {
00231     GtkAction *action;
00232 
00233     gnc_main_window = window;
00234 
00235     g_signal_connect(window, "page_added",
00236                      G_CALLBACK(gnc_plugin_ab_main_window_page_added),
00237                      plugin);
00238     g_signal_connect(window, "page_changed",
00239                      G_CALLBACK(gnc_plugin_ab_main_window_page_changed),
00240                      plugin);
00241 
00242     action = gnc_main_window_find_action(window, MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW);
00243 
00244     gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), FALSE);
00245 }
00246 
00247 static void
00248 gnc_plugin_aqbanking_remove_from_window(GncPlugin *plugin, GncMainWindow *window,
00249                                         GQuark type)
00250 {
00251     g_signal_handlers_disconnect_by_func(
00252         window, G_CALLBACK(gnc_plugin_ab_main_window_page_changed), plugin);
00253     g_signal_handlers_disconnect_by_func(
00254         window, G_CALLBACK(gnc_plugin_ab_main_window_page_added), plugin);
00255 }
00256 
00257 /************************************************************
00258  *                     Object Callbacks                     *
00259  ************************************************************/
00260 
00265 static void
00266 gnc_plugin_ab_main_window_page_added(GncMainWindow *window, GncPluginPage *page,
00267                                      gpointer user_data)
00268 {
00269     const gchar *page_name;
00270 
00271     ENTER("main window %p, page %p", window, page);
00272     if (!GNC_IS_PLUGIN_PAGE(page))
00273     {
00274         LEAVE("no plugin_page");
00275         return;
00276     }
00277 
00278     page_name = gnc_plugin_page_get_plugin_name(page);
00279     if (!page_name)
00280     {
00281         LEAVE("no page_name of plugin_page");
00282         return;
00283     }
00284 
00285     if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0)
00286     {
00287         DEBUG("account tree page, adding signal");
00288         g_signal_connect(page, "account_selected",
00289                          G_CALLBACK(gnc_plugin_ab_account_selected), NULL);
00290     }
00291 
00292     gnc_plugin_ab_main_window_page_changed(window, page, user_data);
00293 
00294     LEAVE(" ");
00295 }
00296 
00299 static void update_inactive_actions(GncPluginPage *plugin_page)
00300 {
00301     GncMainWindow  *window;
00302     GtkActionGroup *action_group;
00303 
00304     // We are readonly - so we have to switch particular actions to inactive.
00305     gboolean is_readwrite = !qof_book_is_readonly(gnc_get_current_book());
00306 
00307     // We continue only if the current page is a plugin page
00308     if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page))
00309         return;
00310 
00311     window = GNC_MAIN_WINDOW(plugin_page->window);
00312     g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
00313     action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME);
00314     g_return_if_fail(GTK_IS_ACTION_GROUP(action_group));
00315 
00316     /* Set the action's sensitivity */
00317     gnc_plugin_update_actions (action_group, readonly_inactive_actions,
00318                                "sensitive", is_readwrite);
00319 }
00320 
00321 
00326 static void
00327 gnc_plugin_ab_main_window_page_changed(GncMainWindow *window,
00328                                        GncPluginPage *page, gpointer user_data)
00329 {
00330     Account *account = main_window_to_account(window);
00331 
00332     /* Make sure not to call this with a NULL GncPluginPage */
00333     if (page)
00334     {
00335         // Update the menu items according to the selected account
00336         gnc_plugin_ab_account_selected(page, account, user_data);
00337 
00338         // Also update the action sensitivity due to read-only
00339         update_inactive_actions(page);
00340     }
00341 }
00342 
00347 static void
00348 gnc_plugin_ab_account_selected(GncPluginPage *plugin_page, Account *account,
00349                                gpointer user_data)
00350 {
00351     GncMainWindow  *window;
00352     GtkActionGroup *action_group;
00353     const gchar *bankcode = NULL;
00354     const gchar *accountid = NULL;
00355 
00356     g_return_if_fail(GNC_IS_PLUGIN_PAGE(plugin_page));
00357     window = GNC_MAIN_WINDOW(plugin_page->window);
00358     g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
00359     action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME);
00360     g_return_if_fail(GTK_IS_ACTION_GROUP(action_group));
00361 
00362     if (account)
00363     {
00364         bankcode = gnc_ab_get_account_bankcode(account);
00365         accountid = gnc_ab_get_account_accountid(account);
00366 
00367         gnc_plugin_update_actions(action_group, need_account_actions,
00368                                   "sensitive",
00369                                   (account && bankcode && *bankcode
00370                                    && accountid && *accountid));
00371         gnc_plugin_update_actions(action_group, need_account_actions,
00372                                   "visible", TRUE);
00373     }
00374     else
00375     {
00376         gnc_plugin_update_actions(action_group, need_account_actions,
00377                                   "sensitive", FALSE);
00378         gnc_plugin_update_actions(action_group, need_account_actions,
00379                                   "visible", FALSE);
00380     }
00381 
00382 }
00383 
00384 /************************************************************
00385  *                    Auxiliary Functions                   *
00386  ************************************************************/
00387 
00399 static Account *
00400 main_window_to_account(GncMainWindow *window)
00401 {
00402     GncPluginPage  *page;
00403     const gchar    *page_name;
00404     Account        *account = NULL;
00405     const gchar    *account_name;
00406 
00407     ENTER("main window %p", window);
00408     if (!GNC_IS_MAIN_WINDOW(window))
00409     {
00410         LEAVE("no main_window");
00411         return NULL;
00412     }
00413 
00414     page = gnc_main_window_get_current_page(window);
00415     if (!GNC_IS_PLUGIN_PAGE(page))
00416     {
00417         LEAVE("no plugin_page");
00418         return NULL;
00419     }
00420     page_name = gnc_plugin_page_get_plugin_name(page);
00421     if (!page_name)
00422     {
00423         LEAVE("no page_name of plugin_page");
00424         return NULL;
00425     }
00426 
00427     if (strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0)
00428     {
00429         DEBUG("register page");
00430         account = gnc_plugin_page_register_get_account(
00431                       GNC_PLUGIN_PAGE_REGISTER(page));
00432     }
00433     else if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0)
00434     {
00435         DEBUG("account tree page");
00436         account = gnc_plugin_page_account_tree_get_current_account(
00437                       GNC_PLUGIN_PAGE_ACCOUNT_TREE(page));
00438     }
00439     else
00440     {
00441         account = NULL;
00442     }
00443     account_name = account ? xaccAccountGetName(account) : NULL;
00444     LEAVE("account %s(%p)", account_name ? account_name : "(null)", account);
00445     return account;
00446 }
00447 
00448 void
00449 gnc_plugin_aqbanking_set_logwindow_visible(gboolean logwindow_visible)
00450 {
00451     GtkAction *action;
00452 
00453     action = gnc_main_window_find_action(gnc_main_window,
00454                                          MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW);
00455     if (action)
00456     {
00457         gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action),
00458                                      logwindow_visible);
00459     }
00460 }
00461 
00462 /************************************************************
00463  *                    Command Callbacks                     *
00464  ************************************************************/
00465 
00466 static void
00467 gnc_plugin_ab_cmd_setup(GtkAction *action, GncMainWindowActionData *data)
00468 {
00469     ENTER("action %p, main window data %p", action, data);
00470     gnc_ab_initial_assistant();
00471     LEAVE(" ");
00472 }
00473 
00474 static void
00475 gnc_plugin_ab_cmd_get_balance(GtkAction *action, GncMainWindowActionData *data)
00476 {
00477     Account *account;
00478 
00479     ENTER("action %p, main window data %p", action, data);
00480     account = main_window_to_account(data->window);
00481     if (account == NULL)
00482     {
00483         g_message("No AqBanking account selected");
00484         LEAVE("no account");
00485         return;
00486     }
00487 
00488     gnc_ab_getbalance(GTK_WIDGET(data->window), account);
00489 
00490     LEAVE(" ");
00491 }
00492 
00493 static void
00494 gnc_plugin_ab_cmd_get_transactions(GtkAction *action,
00495                                    GncMainWindowActionData *data)
00496 {
00497     Account *account;
00498 
00499     ENTER("action %p, main window data %p", action, data);
00500     account = main_window_to_account(data->window);
00501     if (account == NULL)
00502     {
00503         g_message("No AqBanking account selected");
00504         LEAVE("no account");
00505         return;
00506     }
00507 
00508     gnc_ab_gettrans(GTK_WIDGET(data->window), account);
00509 
00510     LEAVE(" ");
00511 }
00512 
00513 static void
00514 gnc_plugin_ab_cmd_issue_transaction(GtkAction *action,
00515                                     GncMainWindowActionData *data)
00516 {
00517     Account *account;
00518 
00519     ENTER("action %p, main window data %p", action, data);
00520     account = main_window_to_account(data->window);
00521     if (account == NULL)
00522     {
00523         g_message("No AqBanking account selected");
00524         LEAVE("no account");
00525         return;
00526     }
00527 
00528     gnc_ab_maketrans(GTK_WIDGET(data->window), account, SINGLE_TRANSFER);
00529 
00530     LEAVE(" ");
00531 }
00532 
00533 static void
00534 gnc_plugin_ab_cmd_issue_inttransaction(GtkAction *action,
00535                                        GncMainWindowActionData *data)
00536 {
00537     Account *account;
00538 
00539     ENTER("action %p, main window data %p", action, data);
00540     account = main_window_to_account(data->window);
00541     if (account == NULL)
00542     {
00543         g_message("No AqBanking account selected");
00544         LEAVE("no account");
00545         return;
00546     }
00547 
00548     gnc_ab_maketrans(GTK_WIDGET(data->window), account,
00549                      SINGLE_INTERNAL_TRANSFER);
00550 
00551     LEAVE(" ");
00552 }
00553 
00554 static void
00555 gnc_plugin_ab_cmd_issue_direct_debit(GtkAction *action,
00556                                      GncMainWindowActionData *data)
00557 {
00558     Account *account;
00559 
00560     ENTER("action %p, main window data %p", action, data);
00561     account = main_window_to_account(data->window);
00562     if (account == NULL)
00563     {
00564         g_message("No AqBanking account selected");
00565         LEAVE("no account");
00566         return;
00567     }
00568 
00569     gnc_ab_maketrans(GTK_WIDGET(data->window), account, SINGLE_DEBITNOTE);
00570 
00571     LEAVE(" ");
00572 }
00573 
00574 static void
00575 gnc_plugin_ab_cmd_view_logwindow(GtkToggleAction *action, GncMainWindow *window)
00576 {
00577     if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)))
00578     {
00579         if (!gnc_GWEN_Gui_show_dialog())
00580         {
00581             /* Log window could not be made visible */
00582             gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), FALSE);
00583         }
00584     }
00585     else
00586     {
00587         gnc_GWEN_Gui_hide_dialog();
00588     }
00589 }
00590 
00591 
00592 static void
00593 gnc_plugin_ab_cmd_mt940_import(GtkAction *action, GncMainWindowActionData *data)
00594 {
00595     gchar *format = gnc_gconf_get_string(GCONF_SECTION_AQBANKING,
00596                                          KEY_FORMAT_SWIFT940, NULL);
00597     gnc_file_aqbanking_import("swift", format ? format : "swift-mt940", FALSE);
00598     g_free(format);
00599 }
00600 
00601 static void
00602 gnc_plugin_ab_cmd_mt942_import(GtkAction *action, GncMainWindowActionData *data)
00603 {
00604     gchar *format = gnc_gconf_get_string(GCONF_SECTION_AQBANKING,
00605                                          KEY_FORMAT_SWIFT942, NULL);
00606     gnc_file_aqbanking_import("swift", format ? format : "swift-mt942", FALSE);
00607     g_free(format);
00608 }
00609 
00610 static void
00611 gnc_plugin_ab_cmd_dtaus_import(GtkAction *action, GncMainWindowActionData *data)
00612 {
00613     gchar *format = gnc_gconf_get_string(GCONF_SECTION_AQBANKING,
00614                                          KEY_FORMAT_DTAUS, NULL);
00615     gnc_file_aqbanking_import("dtaus", format ? format : "default", FALSE);
00616     g_free(format);
00617 }
00618 
00619 static void
00620 gnc_plugin_ab_cmd_dtaus_importsend(GtkAction *action,
00621                                    GncMainWindowActionData *data)
00622 {
00623     gchar *format = gnc_gconf_get_string(GCONF_SECTION_AQBANKING,
00624                                          KEY_FORMAT_DTAUS, NULL);
00625     gnc_file_aqbanking_import("dtaus", format ? format : "default", TRUE);
00626     g_free(format);
00627 }
00628 
00629 /************************************************************
00630  *                    Plugin Bootstrapping                  *
00631  ************************************************************/
00632 
00633 void
00634 gnc_plugin_aqbanking_create_plugin(void)
00635 {
00636     GncPlugin *plugin = gnc_plugin_aqbanking_new();
00637 
00638     gnc_plugin_manager_add_plugin(gnc_plugin_manager_get(), plugin);
00639 }
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines