bool AP_Win32Prefs::loadBuiltinPrefs(void) { char szLocaleInfo[64]; // Call base function bool ret = AP_Prefs::loadBuiltinPrefs(); // Add information from Win32 system and user setup if( GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_IMEASURE, szLocaleInfo, sizeof( szLocaleInfo ) / sizeof( szLocaleInfo[0] ) ) ) { m_builtinScheme->setValue( AP_PREF_KEY_RulerUnits, UT_dimensionName( szLocaleInfo[0] == '0' ? DIM_CM : DIM_IN ) ); } if (UT_getISO639Language(szLocaleInfo)) { bool bFallBackLocale = false; if (UT_getISO3166Country(&szLocaleInfo[3])) szLocaleInfo[2] = '-'; UT_DEBUGMSG(("Prefs: Using LOCALE info from environment [%s]\n", szLocaleInfo)); AP_Win32App * pApp = static_cast<AP_Win32App*>(XAP_App::getApp()); UT_return_val_if_fail (pApp, false); /* Do we have a string set for this locale?*/ if (!pApp->doesStringSetExist(szLocaleInfo)) { const char* pFallBackLocale = UT_getFallBackStringSetLocale(szLocaleInfo); if (pFallBackLocale) { /* If there is no stringset, try the fallback locale*/ if (pApp->doesStringSetExist(pFallBackLocale)) { m_builtinScheme->setValue( AP_PREF_KEY_StringSet, pFallBackLocale); bFallBackLocale = true; } } } if (!bFallBackLocale) m_builtinScheme->setValue( AP_PREF_KEY_StringSet, szLocaleInfo ); } else { UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN); } return ret; }
/*! 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; }