r19914 - gnucash/trunk/src/import-export/aqbanking - Bug #454109: Online banking: grey out online actions when there is no online account

Christian Stimming cstim at code.gnucash.org
Wed Dec 8 05:26:05 EST 2010


Author: cstim
Date: 2010-12-08 05:26:04 -0500 (Wed, 08 Dec 2010)
New Revision: 19914
Trac: http://svn.gnucash.org/trac/changeset/19914

Modified:
   gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
Log:
Bug #454109: Online banking: grey out online actions when there is no online account

Patch by Manfred Usselmann:
Online actions are disabled for accounts which have no bankcode and account id
assigned

This fix does not require initialization of the AB_BANKING object.

Modified: gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c	2010-12-08 00:33:29 UTC (rev 19913)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c	2010-12-08 10:26:04 UTC (rev 19914)
@@ -39,6 +39,7 @@
 #include "gnc-ab-gettrans.h"
 #include "gnc-ab-transfer.h"
 #include "gnc-ab-utils.h"
+#include "gnc-ab-kvp.h"
 #include "gnc-file-aqb-import.h"
 #include "gnc-gconf-utils.h"
 #include "gnc-plugin-aqbanking.h"
@@ -250,6 +251,9 @@
         g_signal_connect(page, "account_selected",
                          G_CALLBACK(gnc_plugin_ab_account_selected), NULL);
     }
+
+    gnc_plugin_ab_main_window_page_changed(window, page, user_data);
+
     LEAVE(" ");
 }
 
@@ -261,27 +265,50 @@
 gnc_plugin_ab_main_window_page_changed(GncMainWindow *window,
                                        GncPluginPage *page, gpointer user_data)
 {
+    Account *account = main_window_to_account(window);
+
+    gnc_plugin_ab_account_selected(page, account, user_data);
 }
 
 /**
- * An account had been (de)selected in an "account tree" page.  Update the hbci
- * menus appropriately.
+ * An account had been (de)selected either in an "account tree" page or by
+ * selecting another register page. Update the aqbanking menus appropriately.
  */
 static void
 gnc_plugin_ab_account_selected(GncPluginPage *plugin_page, Account *account,
                                gpointer user_data)
 {
+    GncMainWindow  *window;
     GtkActionGroup *action_group;
-    GncMainWindow  *window;
+    const gchar *bankcode = NULL;
+    const gchar *accountid = NULL;
 
     g_return_if_fail(GNC_IS_PLUGIN_PAGE(plugin_page));
     window = GNC_MAIN_WINDOW(plugin_page->window);
     g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
     action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME);
     g_return_if_fail(GTK_IS_ACTION_GROUP(action_group));
-    gnc_plugin_update_actions(action_group, need_account_actions,
-                              "sensitive", account != NULL);
 
+    if (account)
+    {
+        bankcode = gnc_ab_get_account_bankcode(account);
+        accountid = gnc_ab_get_account_accountid(account);
+
+        gnc_plugin_update_actions(action_group, need_account_actions,
+                                  "sensitive",
+                                 (account && bankcode && *bankcode
+                                  && accountid && *accountid));
+        gnc_plugin_update_actions(action_group, need_account_actions,
+                                  "visible",TRUE);
+    }
+    else
+    {
+        gnc_plugin_update_actions(action_group, need_account_actions,
+                                  "sensitive",FALSE);
+        gnc_plugin_update_actions(action_group, need_account_actions,
+                                  "visible", FALSE);
+    }
+
 }
 
 /************************************************************



More information about the gnucash-changes mailing list