33 #include <glib/gi18n.h>
39 #include "gnc-ab-gettrans.h"
44 #include "gnc-file-aqb-import.h"
49 #include "gnc-plugin-page-register2.h"
60 static void gnc_plugin_aqbanking_remove_from_window(
GncPlugin *plugin,
GncMainWindow *window, GQuark type);
65 static void gnc_plugin_ab_account_selected(
GncPluginPage *plugin_page,
Account *account, gpointer user_data);
79 static void gnc_plugin_ab_cmd_view_logwindow(GtkToggleAction *action,
GncMainWindow *window);
85 #define PLUGIN_ACTIONS_NAME "gnc-plugin-aqbanking-actions"
86 #define PLUGIN_UI_FILENAME "gnc-plugin-aqbanking-ui.xml"
88 #define MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW "ABViewLogwindowAction"
91 static GtkActionEntry gnc_plugin_actions [] =
94 {
"OnlineActionsAction", NULL, N_(
"_Online Actions"), NULL, NULL, NULL },
98 "ABSetupAction", NULL, N_(
"_Online Banking Setup..."), NULL,
99 N_(
"Initial setup of Online Banking access (HBCI, or OFX DirectConnect, using AqBanking)"),
100 G_CALLBACK(gnc_plugin_ab_cmd_setup)
103 "ABGetBalanceAction", NULL, N_(
"Get _Balance"), NULL,
104 N_(
"Get the account balance online through Online Banking"),
105 G_CALLBACK(gnc_plugin_ab_cmd_get_balance)
108 "ABGetTransAction", NULL, N_(
"Get _Transactions..."), NULL,
109 N_(
"Get the transactions online through Online Banking"),
110 G_CALLBACK(gnc_plugin_ab_cmd_get_transactions)
113 "ABIssueTransAction", NULL, N_(
"_Issue Transaction..."), NULL,
114 N_(
"Issue a new transaction online through Online Banking"),
115 G_CALLBACK(gnc_plugin_ab_cmd_issue_transaction)
118 "ABIssueSepaTransAction", NULL, N_(
"_Issue SEPA Transaction..."), NULL,
119 N_(
"Issue a new international European (SEPA) transaction online through Online Banking"),
120 G_CALLBACK(gnc_plugin_ab_cmd_issue_sepatransaction)
123 "ABIssueIntTransAction", NULL, N_(
"I_nternal Transaction..."), NULL,
124 N_(
"Issue a new bank-internal transaction online through Online Banking"),
125 G_CALLBACK(gnc_plugin_ab_cmd_issue_inttransaction)
128 "ABIssueDirectDebitAction", NULL, N_(
"_Direct Debit..."), NULL,
129 N_(
"Issue a new direct debit note online through Online Banking"),
130 G_CALLBACK(gnc_plugin_ab_cmd_issue_direct_debit)
133 "ABIssueSepaDirectDebitAction", NULL, N_(
"_Issue SEPA Direct Debit..."), NULL,
134 N_(
"Issue a new international European (SEPA) direct debit note online through Online Banking"),
135 G_CALLBACK(gnc_plugin_ab_cmd_issue_sepa_direct_debit)
140 "Mt940ImportAction", GTK_STOCK_CONVERT, N_(
"Import _MT940"), NULL,
141 N_(
"Import a MT940 file into GnuCash"),
142 G_CALLBACK(gnc_plugin_ab_cmd_mt940_import)
145 "Mt942ImportAction", GTK_STOCK_CONVERT, N_(
"Import MT94_2"), NULL,
146 N_(
"Import a MT942 file into GnuCash"),
147 G_CALLBACK(gnc_plugin_ab_cmd_mt942_import)
150 "DtausImportAction", GTK_STOCK_CONVERT, N_(
"Import _DTAUS"), NULL,
151 N_(
"Import a DTAUS file into GnuCash"),
152 G_CALLBACK(gnc_plugin_ab_cmd_dtaus_import)
163 "DtausImportSendAction", GTK_STOCK_CONVERT, N_(
"Import DTAUS and _send..."), NULL,
164 N_(
"Import a DTAUS file into GnuCash and send the transfers online through Online Banking"),
165 G_CALLBACK(gnc_plugin_ab_cmd_dtaus_importsend)
168 static guint gnc_plugin_n_actions = G_N_ELEMENTS(gnc_plugin_actions);
170 static GtkToggleActionEntry gnc_plugin_toggle_actions [] =
173 MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW, NULL,
174 N_(
"Show _log window"), NULL,
175 N_(
"Show the online banking log window."),
176 G_CALLBACK(gnc_plugin_ab_cmd_view_logwindow), TRUE
179 static guint gnc_plugin_n_toggle_actions = G_N_ELEMENTS(gnc_plugin_toggle_actions);
181 static const gchar *need_account_actions[] =
183 "ABGetBalanceAction",
185 "ABIssueTransAction",
186 "ABIssueSepaTransAction",
187 "ABIssueIntTransAction",
188 "ABIssueDirectDebitAction",
189 "ABIssueSepaDirectDebitAction",
193 static const gchar *readonly_inactive_actions[] =
195 "OnlineActionsAction",
211 return GNC_PLUGIN(g_object_new(GNC_TYPE_PLUGIN_AQBANKING, (gchar*) NULL));
220 plugin_class->
plugin_name = GNC_PLUGIN_AQBANKING_NAME;
224 plugin_class->
actions = gnc_plugin_actions;
225 plugin_class->
n_actions = gnc_plugin_n_actions;
229 plugin_class->
add_to_window = gnc_plugin_aqbanking_add_to_window;
248 gnc_main_window = window;
250 g_signal_connect(window,
"page_added",
251 G_CALLBACK(gnc_plugin_ab_main_window_page_added),
253 g_signal_connect(window,
"page_changed",
254 G_CALLBACK(gnc_plugin_ab_main_window_page_changed),
259 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), FALSE);
266 g_signal_handlers_disconnect_by_func(
267 window, G_CALLBACK(gnc_plugin_ab_main_window_page_changed), plugin);
268 g_signal_handlers_disconnect_by_func(
269 window, G_CALLBACK(gnc_plugin_ab_main_window_page_added), plugin);
284 const gchar *page_name;
286 ENTER(
"main window %p, page %p", window, page);
287 if (!GNC_IS_PLUGIN_PAGE(page))
289 LEAVE(
"no plugin_page");
296 LEAVE(
"no page_name of plugin_page");
300 if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0)
302 DEBUG(
"account tree page, adding signal");
303 g_signal_connect(page,
"account_selected",
304 G_CALLBACK(gnc_plugin_ab_account_selected), NULL);
307 gnc_plugin_ab_main_window_page_changed(window, page, user_data);
314 static void update_inactive_actions(
GncPluginPage *plugin_page)
317 GtkActionGroup *action_group;
323 if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page))
326 window = GNC_MAIN_WINDOW(plugin_page->
window);
327 g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
329 g_return_if_fail(GTK_IS_ACTION_GROUP(action_group));
333 "sensitive", is_readwrite);
342 gnc_plugin_ab_main_window_page_changed(
GncMainWindow *window,
345 Account *account = main_window_to_account(window);
351 gnc_plugin_ab_account_selected(page, account, user_data);
354 update_inactive_actions(page);
367 GtkActionGroup *action_group;
368 const gchar *bankcode = NULL;
369 const gchar *accountid = NULL;
371 g_return_if_fail(GNC_IS_PLUGIN_PAGE(plugin_page));
372 window = GNC_MAIN_WINDOW(plugin_page->
window);
373 g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
375 g_return_if_fail(GTK_IS_ACTION_GROUP(action_group));
384 (account && bankcode && *bankcode
385 && accountid && *accountid));
418 const gchar *page_name;
420 const gchar *account_name;
422 ENTER(
"main window %p", window);
423 if (!GNC_IS_MAIN_WINDOW(window))
425 LEAVE(
"no main_window");
430 if (!GNC_IS_PLUGIN_PAGE(page))
432 LEAVE(
"no plugin_page");
438 LEAVE(
"no page_name of plugin_page");
442 if (strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0)
444 DEBUG(
"register page");
446 GNC_PLUGIN_PAGE_REGISTER(page));
448 else if (strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER2_NAME) == 0)
450 DEBUG(
"register2 page");
452 GNC_PLUGIN_PAGE_REGISTER2(page));
454 else if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0)
456 DEBUG(
"account tree page");
458 GNC_PLUGIN_PAGE_ACCOUNT_TREE(page));
465 LEAVE(
"account %s(%p)", account_name ? account_name :
"(null)", account);
475 MENU_TOGGLE_ACTION_AB_VIEW_LOGWINDOW);
478 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action),
490 ENTER(
"action %p, main window data %p", action, data);
491 gnc_main_window = data->window;
501 ENTER(
"action %p, main window data %p", action, data);
502 account = main_window_to_account(data->window);
505 g_message(
"No AqBanking account selected");
510 gnc_main_window = data->window;
517 gnc_plugin_ab_cmd_get_transactions(GtkAction *action,
522 ENTER(
"action %p, main window data %p", action, data);
523 account = main_window_to_account(data->window);
526 g_message(
"No AqBanking account selected");
531 gnc_main_window = data->window;
538 gnc_plugin_ab_cmd_issue_transaction(GtkAction *action,
543 ENTER(
"action %p, main window data %p", action, data);
544 account = main_window_to_account(data->window);
547 g_message(
"No AqBanking account selected");
552 gnc_main_window = data->window;
559 gnc_plugin_ab_cmd_issue_sepatransaction(GtkAction *action,
564 ENTER(
"action %p, main window data %p", action, data);
565 account = main_window_to_account(data->window);
568 g_message(
"No AqBanking account selected");
573 gnc_main_window = data->window;
580 gnc_plugin_ab_cmd_issue_inttransaction(GtkAction *action,
585 ENTER(
"action %p, main window data %p", action, data);
586 account = main_window_to_account(data->window);
589 g_message(
"No AqBanking account selected");
594 gnc_main_window = data->window;
596 SINGLE_INTERNAL_TRANSFER);
602 gnc_plugin_ab_cmd_issue_direct_debit(GtkAction *action,
607 ENTER(
"action %p, main window data %p", action, data);
608 account = main_window_to_account(data->window);
611 g_message(
"No AqBanking account selected");
616 gnc_main_window = data->window;
623 gnc_plugin_ab_cmd_issue_sepa_direct_debit(GtkAction *action,
628 ENTER(
"action %p, main window data %p", action, data);
629 account = main_window_to_account(data->window);
632 g_message(
"No AqBanking account selected");
637 gnc_main_window = data->window;
644 gnc_plugin_ab_cmd_view_logwindow(GtkToggleAction *action,
GncMainWindow *window)
646 if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)))
651 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), FALSE);
665 GNC_PREF_FORMAT_SWIFT940);
666 gnc_main_window = data->window;
675 GNC_PREF_FORMAT_SWIFT942);
676 gnc_main_window = data->window;
685 GNC_PREF_FORMAT_DTAUS);
686 gnc_main_window = data->window;
692 gnc_plugin_ab_cmd_dtaus_importsend(GtkAction *action,
696 GNC_PREF_FORMAT_DTAUS);
697 gnc_main_window = data->window;
Dialog for AqBanking transaction data.
gboolean gnc_GWEN_Gui_show_dialog()
Account * gnc_plugin_page_account_tree_get_current_account(GncPluginPageAccountTree *page)
gchar * gnc_prefs_get_string(const gchar *group, const gchar *pref_name)
utility functions for the GnuCash UI
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
AqBanking setup functionality.
#define DEBUG(format, args...)
Plugin management functions for the GnuCash UI.
void gnc_plugin_manager_add_plugin(GncPluginManager *manager, GncPlugin *plugin)
const gchar * gnc_ab_get_account_bankcode(const Account *a)
#define ENTER(format, args...)
const gchar * ui_filename
GncPluginPage * gnc_main_window_get_current_page(GncMainWindow *window)
Functions for adding content to a window.
AqBanking getbalance functions.
Functions providing a register page for the GnuCash UI.
Account handling public routines.
Dialog for AqBanking transaction data.
void(* remove_from_window)(GncPlugin *plugin, GncMainWindow *window, GQuark type)
void gnc_plugin_aqbanking_set_logwindow_visible(gboolean logwindow_visible)
Account * gnc_plugin_page_register2_get_account(GncPluginPageRegister2 *page)
void gnc_file_aqbanking_import(const gchar *aqbanking_importername, const gchar *aqbanking_profilename, gboolean execute_transactions)
GncPluginManager * gnc_plugin_manager_get(void)
GtkToggleActionEntry * toggle_actions
const gchar * actions_name
Generic api to store and retrieve preferences.
Functions providing a chart of account page.
GtkActionGroup * gnc_main_window_get_action_group(GncMainWindow *window, const gchar *group_name)
gboolean qof_book_is_readonly(const QofBook *book)
const gchar * plugin_name
Plugin registration of the AqBanking module.
#define PLUGIN_ACTIONS_NAME
#define LEAVE(format, args...)
void(* add_to_window)(GncPlugin *plugin, GncMainWindow *window, GQuark type)
GncPlugin * gnc_plugin_aqbanking_new(void)
Account * gnc_plugin_page_register_get_account(GncPluginPageRegister *page)
void gnc_ab_initial_assistant(void)
void gnc_plugin_aqbanking_create_plugin(void)
const gchar * gnc_ab_get_account_accountid(const Account *a)
void gnc_ab_getbalance(GtkWidget *parent, Account *gnc_acc)
const char * xaccAccountGetName(const Account *acc)
GUI callbacks for AqBanking.
void gnc_ab_gettrans(GtkWidget *parent, Account *gnc_acc)
AqBanking utility functions.
GtkAction * gnc_main_window_find_action(GncMainWindow *window, const gchar *name)
#define PLUGIN_UI_FILENAME
void gnc_GWEN_Gui_hide_dialog()
const gchar * QofLogModule
const gchar * gnc_plugin_page_get_plugin_name(GncPluginPage *plugin_page)
void gnc_ab_maketrans(GtkWidget *parent, Account *gnc_acc, GncABTransType trans_type)