void gnm_shutdown (void) { GSList *plugin_states; gnm_app_clipboard_clear (TRUE); plugin_states = go_plugins_shutdown (); if (NULL != plugin_states) { gnm_conf_set_plugins_file_states (plugin_states); g_slist_free_full (plugin_states, g_free); } stf_shutdown (); gnm_xml_sax_write_shutdown (); gnm_xml_sax_read_shutdown (); gnm_autofill_shutdown (); print_shutdown (); gnm_func_shutdown_ (); gnm_rendered_value_shutdown (); dependent_types_shutdown (); gui_clipboard_shutdown (); clipboard_shutdown (); gnm_sheet_cell_shutdown (); gnm_expr_deriv_shutdown_ (); gnm_expr_shutdown_ (); parse_util_shutdown (); value_shutdown (); // The style leak printer may access font/border/color info so // shut styles down first. gnm_style_shutdown (); gnm_font_shutdown (); gnm_border_shutdown (); gnm_color_shutdown (); gnm_conf_shutdown (); _gnm_unregister_resource (); libgoffice_shutdown (); go_plugin_services_shutdown (); g_object_unref (gnm_app_get_app ()); gutils_shutdown (); }
ABI_FAR_CALL int abi_plugin_unregister (XAP_ModuleInfo * mi) { mi->name = 0; mi->desc = 0; mi->version = 0; mi->author = 0; mi->usage = 0; IE_Imp::unregisterImporter (m_impSniffer); delete m_impSniffer; m_impSniffer = 0; IE_Imp::unregisterImporter (m_impCSniffer); delete m_impCSniffer; m_impCSniffer = 0; pGOChartManager->removeContextualMenu (); XAP_App * pApp = XAP_App::getApp(); pApp->unRegisterEmbeddable(pGOChartManager->getObjectType()); DELETEP(pGOChartManager); GSList *l = mime_types; while (l) { if (go_components_support_clipboard ((const char*)l->data)) pApp->deleteClipboardFmt((const char*)l->data); l = l->next; } std::list<std::string>::iterator i, end = uids.end(); for (i = uids.begin(); i != end; i++) pApp->unRegisterEmbeddable((*i).c_str()); uids.clear(); if (pGOComponentManager) { pApp->unRegisterEmbeddable(pGOComponentManager->getObjectType()); DELETEP(pGOComponentManager); } AbiGOffice_removeFromMenus(); go_component_set_default_command_context (NULL); g_object_unref (cc); go_plugins_shutdown(); libgoffice_shutdown(); return 1; }