void gnc_main_gui_init (void) { ENTER(" "); if (!gnucash_style_init()) gnc_shutdown(1); gnucash_color_init(); gnc_html_register_url_handler (URL_TYPE_REGISTER, gnc_html_register_url_cb); gnc_html_register_url_handler (URL_TYPE_PRICE, gnc_html_price_url_cb); gnc_ui_sx_initialize(); /* FIXME Remove this test code */ gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_account_tree_new ()); gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_basic_commands_new ()); gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_file_history_new ()); gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_menu_additions_new ()); gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_register_new ()); gnc_plugin_manager_add_plugin ( gnc_plugin_manager_get (), gnc_plugin_register2_new ()); /* I'm not sure why the FIXME note says to remove this. Maybe each module should be adding its own plugin to the manager? Anyway... Oh, maybe... nah */ gnc_plugin_manager_add_plugin (gnc_plugin_manager_get (), gnc_plugin_budget_new ()); gnc_ui_hierarchy_assistant_initialize(); /* Run the ui startup hooks. */ gnc_hook_run(HOOK_UI_STARTUP, NULL); gnc_hook_add_dangler(HOOK_BOOK_OPENED, gnc_restore_all_state, NULL); gnc_hook_add_dangler(HOOK_BOOK_CLOSED, gnc_save_all_state, NULL); /* CAS: I'm not really sure why we remove before adding. */ gnc_hook_remove_dangler(HOOK_BOOK_CLOSED, (GFunc)gnc_reports_flush_global); gnc_hook_add_dangler(HOOK_BOOK_CLOSED, (GFunc)gnc_reports_flush_global, NULL); LEAVE(" "); return; }
static void inner_main (void *closure, int argc, char **argv) { SCM main_mod; char* fn; GError *error = NULL; scm_c_eval_string("(debug-set! stack 200000)"); main_mod = scm_c_resolve_module("gnucash main"); scm_set_current_module(main_mod); load_gnucash_modules(); /* Load the config before starting up the gui. This insures that * custom reports have been read into memory before the Reports * menu is created. */ load_system_config(); load_user_config(); /* Setting-up the report menu must come after the module loading but before the gui initialization. */ scm_c_use_module("gnucash report report-gnome"); scm_c_eval_string("(gnc:report-menu-setup)"); /* TODO: After some more guile-extraction, this should happen even before booting guile. */ gnc_main_gui_init(); gnc_hook_add_dangler(HOOK_UI_SHUTDOWN, (GFunc)gnc_file_quit, NULL); scm_c_eval_string("(gnc:main)"); /* Install Price Quote Sources */ gnc_update_splash_screen(_("Checking Finance::Quote..."), GNC_SPLASH_PERCENTAGE_UNKNOWN); scm_c_use_module("gnucash price-quotes"); scm_c_eval_string("(gnc:price-quotes-install-sources)"); gnc_hook_run(HOOK_STARTUP, NULL); if (!nofile && (fn = get_file_to_load())) { gnc_update_splash_screen(_("Loading data..."), GNC_SPLASH_PERCENTAGE_UNKNOWN); gnc_file_open_file(fn); g_free(fn); } else if (gnc_gconf_get_bool("dialogs/new_user", "first_startup", &error) && !error) { gnc_destroy_splash_screen(); gnc_ui_new_user_dialog(); } gnc_destroy_splash_screen(); gnc_main_window_show_all_windows(); gnc_hook_run(HOOK_UI_POST_STARTUP, NULL); gnc_ui_start_event_loop(); gnc_hook_remove_dangler(HOOK_UI_SHUTDOWN, (GFunc)gnc_file_quit); gnc_shutdown(0); return; }