diff --git a/src/gnome/gnc-plugin-basic-commands.c b/src/gnome/gnc-plugin-basic-commands.c index cef4f7ba8a..042b21912f 100644 --- a/src/gnome/gnc-plugin-basic-commands.c +++ b/src/gnome/gnc-plugin-basic-commands.c @@ -65,6 +65,8 @@ static void gnc_plugin_basic_commands_class_init (GncPluginBasicCommandsClass *k static void gnc_plugin_basic_commands_init (GncPluginBasicCommands *plugin); static void gnc_plugin_basic_commands_finalize (GObject *object); +static void gnc_plugin_basic_commands_add_to_window (GncPlugin *plugin, GncMainWindow *window, GQuark type); + /* Command callbacks */ static void gnc_main_window_cmd_file_new (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_file_open (GtkAction *action, GncMainWindowActionData *data); @@ -103,11 +105,9 @@ static GtkActionEntry gnc_plugin_actions [] = { { "FileOpenAction", GTK_STOCK_OPEN, N_("_Open..."), NULL, N_("Open an existing GnuCash file"), G_CALLBACK (gnc_main_window_cmd_file_open) }, -#ifdef HAVE_DBI_DBI_H { "FileDatabaseConnectionAction", NULL, N_("_Database Connection"), NULL, N_("Connect to a database"), G_CALLBACK (gnc_main_window_cmd_file_db_connection) }, -#endif { "FileSaveAction", GTK_STOCK_SAVE, N_("_Save"), "s", N_("Save the current file"), G_CALLBACK (gnc_main_window_cmd_file_save) }, @@ -247,6 +247,29 @@ gnc_plugin_basic_commands_new (void) return GNC_PLUGIN (plugin); } +/** Initialize the basic commands menu for a window. This function is + * called as part of the initialization of a window, after all the + * plugin menu items have been added to the menu structure. Its job + * is to correctly initialize the basic commands menu, It does this by + * hiding the Database Connection menu item if database support has not + * been included in the build. + * + * @param plugin A pointer to the gnc-plugin object responsible for + * adding/removing the basic commands menu. + * + * @param window A pointer the gnc-main-window that is being initialized. + * + * @param type Unused + */ +static void +gnc_plugin_basic_commands_add_to_window (GncPlugin *plugin, + GncMainWindow *window, + GQuark type) +{ +#if !defined(HAVE_DBI_DBI_H) + gnc_main_window_all_action_set_sensitive("FileDatabaseConnectionAction", FALSE); +#endif +} /** Initialize the class for a new basic commands plugin. This will * set up any function pointers that override functions in the parent @@ -268,6 +291,9 @@ gnc_plugin_basic_commands_class_init (GncPluginBasicCommandsClass *klass) /* plugin info */ plugin_class->plugin_name = GNC_PLUGIN_BASIC_COMMANDS_NAME; + /* function overrides */ + plugin_class->add_to_window = gnc_plugin_basic_commands_add_to_window; + /* widget addition/removal */ plugin_class->actions_name = PLUGIN_ACTIONS_NAME; plugin_class->actions = gnc_plugin_actions;