bool XAP_App::initialize(const char * szKeyBindingsKey, const char * szKeyBindingsDefaultValue) { gsf_init(); // create application-wide resources that // are shared by everything. // init keyboard language (cannot be in the constructor as it // requires the platform code already initialised setKbdLanguage(_getKbdLanguage()); // HACK: for now, this works from XAP code // TODO: where should this really go? char * szPathname = g_build_filename(getUserPrivateDirectory(), "custom.dic", NULL); UT_ASSERT(szPathname); m_pDict = new XAP_Dictionary(szPathname); FREEP(szPathname); UT_return_val_if_fail(m_pDict,false); m_pDict->load(); clearIdTable(); // // Set Smooth Scrolling // bool bEnableSmooth = true; getPrefsValueBool(XAP_PREF_KEY_EnableSmoothScrolling, &bEnableSmooth); if(bEnableSmooth) setEnableSmoothScrolling(true); else setEnableSmoothScrolling(false); // // Need to initialize the random number generator. // UT_uint32 t = static_cast<UT_uint32>(time(NULL)); UT_srandom(t); // Input mode initilization, taken out of the XAP_Frame const char * szBindings = NULL; EV_EditBindingMap * pBindingMap = NULL; if ((getPrefsValue(szKeyBindingsKey, static_cast<const gchar**>(&szBindings))) && (szBindings) && (*szBindings)) pBindingMap = m_pApp->getBindingMap(szBindings); if (!pBindingMap) pBindingMap = m_pApp->getBindingMap(szKeyBindingsDefaultValue); UT_ASSERT(pBindingMap); if (!m_pInputModes) { m_pInputModes = new XAP_InputModes(); UT_ASSERT(m_pInputModes); } bool bResult; bResult = m_pInputModes->createInputMode(szBindings,pBindingMap); UT_ASSERT(bResult); bool bResult2; bResult2 = m_pInputModes->setCurrentMap(szBindings); UT_ASSERT(bResult2); // check if the prefs are set to use specific graphics class const char * pszGraphics = NULL; if(getPrefsValue(XAP_PREF_KEY_DefaultGraphics, &pszGraphics)) { UT_uint32 iID = 0; // please leave this in hex format (the constants are defined in gr_Graphics.h as hex) sscanf(pszGraphics,"%x", &iID); if(iID != 0) { UT_DEBUGMSG(("Graphics %d requested as default\n", iID)); // first of all, check that it is registered GR_GraphicsFactory * pGF = getGraphicsFactory(); UT_return_val_if_fail(pGF,false); if(pGF->isRegistered(iID)) { pGF->registerAsDefault(iID, true); pGF->registerAsDefault(iID, false); } else { UT_DEBUGMSG(("Graphics not loaded\n")); } } } m_pScriptLibrary = new UT_ScriptLibrary(); return true; }
XAP_UnixApp::XAP_UnixApp(const char * szAppName) : XAP_App(szAppName), m_dialogFactory(this), m_controlFactory(), m_szTmpFile(NULL) { int fc_inited = FcInit(); UT_UNUSED(fc_inited); // TODO actually deal with the error here UT_ASSERT(fc_inited); _setAbiSuiteLibDir(); memset(&m_geometry, 0, sizeof(m_geometry)); // create an instance of UT_UUIDGenerator or appropriate derrived class _setUUIDGenerator(new UT_UUIDGenerator()); // register graphics allocator GR_GraphicsFactory * pGF = getGraphicsFactory(); UT_ASSERT( pGF ); if(pGF) { bool bSuccess; bSuccess = pGF->registerClass(GR_UnixCairoGraphics::graphicsAllocator, GR_UnixCairoGraphics::graphicsDescriptor, GR_UnixCairoGraphics::s_getClassId()); UT_ASSERT( bSuccess ); if(bSuccess) { pGF->registerAsDefault(GR_UnixCairoGraphics::s_getClassId(), true); } bSuccess = pGF->registerClass(CairoNull_Graphics::graphicsAllocator, CairoNull_Graphics::graphicsDescriptor, CairoNull_Graphics::s_getClassId()); UT_ASSERT( bSuccess ); #if !GTK_CHECK_VERSION(3,0,0) bSuccess = pGF->registerClass(GR_UnixPangoPixmapGraphics::graphicsAllocator, GR_UnixPangoPixmapGraphics::graphicsDescriptor, GR_UnixPangoPixmapGraphics::s_getClassId()); if(bSuccess) { pGF->registerAsDefault(GR_UnixPangoPixmapGraphics::s_getClassId(), false); } UT_ASSERT( bSuccess ); #endif /* We need to link CairoNull_Graphics because the AbiCommand * plugin uses it. * * We do not need to keep an instance of it around though, as the * plugin constructs its own (I wonder if there is a more elegant way * to force the linker into including it). */ { GR_CairoNullGraphicsAllocInfo ai; nullgraphics = (CairoNull_Graphics*) XAP_App::getApp()->newGraphics((UT_uint32)GRID_CAIRO_NULL, ai); delete nullgraphics; nullgraphics = NULL; } } }