/// Default constructor FrameworkManagerImpl::FrameworkManagerImpl() #ifdef MPI_BUILD : m_mpi_environment() #endif { // Mantid only understands English... setGlobalLocaleToAscii(); // Setup memory allocation scheme Kernel::MemoryOptions::initAllocatorOptions(); #ifdef _WIN32 WSADATA wsaData; WSAStartup(MAKEWORD(2,2), &wsaData); #endif #ifdef _MSC_VER // This causes the exponent to consist of two digits (Windows Visual Studio normally 3, Linux default 2), where two digits are not sufficient I presume it uses more _set_output_format(_TWO_DIGIT_EXPONENT); #endif g_log.notice() << Mantid::welcomeMessage() << std::endl; loadAllPlugins(); disableNexusOutput(); setNumOMPThreadsToConfigValue(); #ifdef MPI_BUILD g_log.notice() << "This MPI process is rank: " << boost::mpi::communicator().rank() << std::endl; #endif g_log.debug() << "FrameworkManager created." << std::endl; }
GLXOSD::GLXOSD() { configurationManager = new ConfigurationManager(); frameLoggingToggleKey = stringToKeyCombo( getConfigurationManager().getProperty<std::string>( "frame_logging_toggle_keycombo")); frameLoggingDuration = getConfigurationManager().getProperty<uint64_t>( "frame_logging_duration_ms"); osdToggleKey = stringToKeyCombo( getConfigurationManager().getProperty<std::string>( "osd_toggle_keycombo")); frameLogDirectory = getConfigurationManager().getProperty<std::string>( "frame_log_directory_string"); drawableHandlers = new std::map<GLXContext, glxosd::OSDInstance*>; pluginConstructors = new std::vector<PluginConstructor>(); pluginDataProviders = new std::vector<PluginDataProvider>(); pluginDestructors = new std::vector<PluginDestructor>(); pluginSharedObjectHandles = new std::vector<void*>(); loadAllPlugins(); std::for_each(pluginConstructors->begin(), pluginConstructors->end(), [this](PluginConstructor pluginConstructor) {pluginConstructor(this);}); }
/*! Initialize the application. This involves preferences, keybindings, toolbars, graphics, spelling and everything else. \return True if successfully initalized, False otherwise. if false the app is unusable, and loading should not continue. \bug This function is 136 lines - way too long. Needs to be refactored, to use a buzzword. */ bool AP_UnixApp::initialize(bool has_display) { const char * szUserPrivateDirectory = getUserPrivateDirectory(); bool bVerified = s_createDirectoryIfNecessary(szUserPrivateDirectory); if (!bVerified) { UT_ASSERT(UT_SHOULD_NOT_HAPPEN); } // COPYPASTA WARNING (ap_Win32App.cpp) // create templates directory UT_String sTemplates = szUserPrivateDirectory; sTemplates += "/templates"; s_createDirectoryIfNecessary(sTemplates.c_str()); // load the preferences. m_prefs = new AP_UnixPrefs(); m_prefs->fullInit(); ////////////////////////////////////////////////////////////////// // load the dialog and message box strings // // (we want to do this as soon as possible so that any errors in // the initialization could be properly localized before being // reported to the user) ////////////////////////////////////////////////////////////////// { // Loading default string set for untranslated messages AP_BuiltinStringSet * pBuiltinStringSet = new AP_BuiltinStringSet(this, static_cast<const gchar*>(AP_PREF_DEFAULT_StringSet)); UT_ASSERT(pBuiltinStringSet); // try loading strings by preference const char * szStringSet = NULL; if ( (getPrefsValue(AP_PREF_KEY_StringSet, static_cast<const gchar**>(&szStringSet))) && (szStringSet) && (*szStringSet) && (strcmp(szStringSet,AP_PREF_DEFAULT_StringSet) != 0)) { m_pStringSet = loadStringsFromDisk(szStringSet, pBuiltinStringSet); } // try loading fallback strings for the language, e.g. es-ES for es-AR if (m_pStringSet == NULL) { const char *szFallbackStringSet = UT_getFallBackStringSetLocale(szStringSet); if (szFallbackStringSet) m_pStringSet = loadStringsFromDisk(szFallbackStringSet, pBuiltinStringSet); } // load the builtin string set // this is the default if (m_pStringSet == NULL) { m_pStringSet = pBuiltinStringSet; } } // now that preferences are established, let the xap init if (has_display) { m_pClipboard = new AP_UnixClipboard(this); UT_ASSERT(m_pClipboard); abi_stock_init (); } m_pEMC = AP_GetEditMethods(); UT_ASSERT(m_pEMC); m_pBindingSet = new AP_BindingSet(m_pEMC); UT_ASSERT(m_pBindingSet); m_pMenuActionSet = AP_CreateMenuActionSet(); UT_ASSERT(m_pMenuActionSet); m_pToolbarActionSet = AP_CreateToolbarActionSet(); UT_ASSERT(m_pToolbarActionSet); if (! AP_App::initialize()) return false; ////////////////////////////////////////////////////////////////// // Initialize the importers/exporters ////////////////////////////////////////////////////////////////// IE_ImpExp_RegisterXP (); // Now we have the strings loaded we can populate the field names correctly int i; for (i = 0; fp_FieldTypes[i].m_Type != FPFIELDTYPE_END; i++) (&fp_FieldTypes[i])->m_Desc = m_pStringSet->getValue(fp_FieldTypes[i].m_DescId); for (i = 0; fp_FieldFmts[i].m_Tag != NULL; i++) (&fp_FieldFmts[i])->m_Desc = m_pStringSet->getValue(fp_FieldFmts[i].m_DescId); /////////////////////////////////////////////////////////////////////// /// Build a labelset so the plugins can add themselves to something /// /////////////////////////////////////////////////////////////////////// const char * szMenuLabelSetName = NULL; if (getPrefsValue( AP_PREF_KEY_StringSet, static_cast<const gchar**>(&szMenuLabelSetName)) && (szMenuLabelSetName) && (*szMenuLabelSetName)) { ; } else szMenuLabelSetName = AP_PREF_DEFAULT_StringSet; getMenuFactory()->buildMenuLabelSet(szMenuLabelSetName); abi_register_builtin_plugins(); bool bLoadPlugins = true; bool bFound = getPrefsValueBool(XAP_PREF_KEY_AutoLoadPlugins,&bLoadPlugins); if(bLoadPlugins || !bFound) loadAllPlugins(); // // Now all the plugins are loaded we can initialize the clipboard // if(m_pClipboard) m_pClipboard->initialize(); return true; }