// // AbiMathView_LatexInsert // ------------------- // This is the function that we actually call to insert the MathML from // a Latex expression. // bool AbiMathView_LatexInsert(AV_View* v, EV_EditMethodCallData* /*d*/) { FV_View * pView = static_cast<FV_View *>(v); XAP_Frame * pFrame = static_cast<XAP_Frame *> ( pView->getParentData()); pFrame->raise(); XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(XAP_App::getApp()->getDialogFactory()); AP_Dialog_Latex * pDialog = static_cast<AP_Dialog_Latex *>(pDialogFactory->requestDialog(AP_DIALOG_ID_LATEX)); UT_return_val_if_fail(pDialog, false); if (pDialog->isRunning()) { pDialog->activate(); } else { pDialog->runModeless(pFrame); } return true; }
bool s_abicollab_join(AV_View* /*v*/, EV_EditMethodCallData* /*d*/) { AbiCollabSessionManager* pManager = AbiCollabSessionManager::getManager(); UT_return_val_if_fail(pManager, false); // Get the current view that the user is in. XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame(); // Get an Accounts dialog instance XAP_DialogFactory* pFactory = static_cast<XAP_DialogFactory *>(XAP_App::getApp()->getDialogFactory()); UT_return_val_if_fail(pFactory, false); AP_Dialog_CollaborationJoin* pDialog = static_cast<AP_Dialog_CollaborationJoin*>( pFactory->requestDialog(AbiCollabSessionManager::getManager()->getDialogJoinId()) ); // Run the dialog pDialog->runModal(pFrame); // Handle the dialog outcome AP_Dialog_CollaborationJoin::tAnswer answer = pDialog->getAnswer(); BuddyPtr pBuddy = pDialog->getBuddy(); DocHandle* pDocHandle = pDialog->getDocHandle(); pFactory->releaseDialog(pDialog); switch (answer) { case AP_Dialog_CollaborationJoin::a_OPEN: { UT_return_val_if_fail(pBuddy && pDocHandle, false); // Check if we have already joined this session. If so, then just // ignore the request. Otherwise actually join the session. AbiCollab* pSession = pManager->getSessionFromSessionId(pDocHandle->getSessionId()); if (pSession) { UT_DEBUGMSG(("Already connected to session, just raising the associated frame\n")); // Just raise a frame that contains this session, instead of // opening the document again XAP_Frame* pFrameForSession = pManager->findFrameForSession(pSession); UT_return_val_if_fail(pFrameForSession, false); pFrameForSession->raise(); } else pManager->joinSessionInitiate(pBuddy, pDocHandle); } break; case AP_Dialog_CollaborationJoin::a_CANCEL: break; } return true; }
// TODO Can we add a feature to the language dialog to restrict the // languages it offers? de en es fr it no pt // static bool _getTranslationCode(FV_View * pView, std::string & langCode) { XAP_Frame * pFrame = static_cast <XAP_Frame *>(pView->getParentData()); UT_return_val_if_fail(pFrame,false); bool bRet = false; pFrame->raise(); XAP_Dialog_Id id = XAP_DIALOG_ID_LANGUAGE; XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(pFrame->getDialogFactory()); XAP_Dialog_Language * pDialog = static_cast<XAP_Dialog_Language *>(pDialogFactory->requestDialog(id)); UT_return_val_if_fail(pDialog, false); std::string code; PP_PropertyVector props_in; if (pView->getCharFormat(props_in)) { code = PP_getAttribute("lang", props_in); if (code.size() >= 2) { code = code.substr(0, 2); code += '_'; } pDialog->setLanguageProperty(PP_getAttribute("lang", props_in).c_str()); } // run the dialog pDialog->runModal(pFrame); // extract what they did bool bOK = (pDialog->getAnswer() == XAP_Dialog_Language::a_OK); if (bOK) { const gchar * s; if (pDialog->getChangedLangProperty(&s)) { std::string changedLang = s; if (changedLang.size() >= 2) { changedLang = changedLang.substr(0, 2); code += changedLang; langCode = code; bRet = true; // Languages: de en es fr it no pt // English -> XXX if (langCode == "en_de") langCode = "English/German"; else if (langCode == "en_es") langCode = "English/Spanish"; else if (langCode == "en_fr") langCode = "English/French"; else if (langCode == "en_it") langCode = "English/Italian"; // This combo is not supported // else if (langCode == "en_no") // langCode = "English/Norwegian"; else if (langCode == "en_pt") langCode = "English/Portuguese"; // XXX -> English else if (langCode == "de_en") langCode = "German/English"; else if (langCode == "es_en") langCode = "Spanish/English"; else if (langCode == "fr_en") langCode = "French/English"; else if (langCode == "it_en") langCode = "Italian/English"; else if (langCode == "no_en") langCode = "Norwegian/English"; else if (langCode == "pt_en") langCode = "Portuguese/English"; else langCode = "English/German"; // bRet = false; } } } pDialogFactory->releaseDialog(pDialog); return bRet; }
AP_App::AP_App (HINSTANCE hInstance, const char * szAppName) : XAP_App_BaseClass ( hInstance, szAppName ) #else AP_App::AP_App (const char * szAppName) : XAP_App_BaseClass ( szAppName ) #endif { } AP_App::~AP_App () { } /*! * Open windows requested on commandline. * * \return False if an unknown command line option was used, true * otherwise. */ bool AP_App::openCmdLineFiles(const AP_Args * args) { int kWindowsOpened = 0; const char *file = NULL; if (AP_Args::m_sFiles == NULL) { // no files to open, this is ok XAP_Frame * pFrame = newFrame(); pFrame->loadDocument((const char *)NULL, IEFT_Unknown); return true; } int i = 0; while ((file = AP_Args::m_sFiles[i++]) != NULL) { char * uri = NULL; uri = UT_go_shell_arg_to_uri (file); XAP_Frame * pFrame = newFrame(); UT_Error error = pFrame->loadDocument (uri, IEFT_Unknown, true); g_free (uri); if (UT_IS_IE_SUCCESS(error)) { kWindowsOpened++; if (error == UT_IE_TRY_RECOVER) { pFrame->showMessageBox(AP_STRING_ID_MSG_OpenRecovered, XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK); } } else { // TODO we crash if we just delete this without putting something // TODO in it, so let's go ahead and open an untitled document // TODO for now. this would cause us to get 2 untitled documents // TODO if the user gave us 2 bogus pathnames.... // Because of the incremental loader, we should not crash anymore; // I've got other things to do now though. kWindowsOpened++; pFrame->loadDocument((const char *)NULL, IEFT_Unknown); pFrame->raise(); errorMsgBadFile (pFrame, file, error); } if (args->m_sMerge) { PD_Document * pDoc = static_cast<PD_Document*>(pFrame->getCurrentDoc()); pDoc->setMailMergeLink(args->m_sMerge); } } if (kWindowsOpened == 0) { // no documents specified or openable, open an untitled one XAP_Frame * pFrame = newFrame(); pFrame->loadDocument((const char *)NULL, IEFT_Unknown); if (args->m_sMerge) { PD_Document * pDoc = static_cast<PD_Document*>(pFrame->getCurrentDoc()); pDoc->setMailMergeLink(args->m_sMerge); } } return true; }
static bool _getTranslationCode (FV_View * pView, UT_String & langCode) { XAP_Frame * pFrame = static_cast<XAP_Frame *> (pView->getParentData()); UT_return_val_if_fail(pFrame,false); bool bRet = false; pFrame->raise(); XAP_Dialog_Id id = XAP_DIALOG_ID_LANGUAGE; XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(pFrame->getDialogFactory()); XAP_Dialog_Language * pDialog = static_cast<XAP_Dialog_Language *>(pDialogFactory->requestDialog(id)); UT_return_val_if_fail(pDialog,false); UT_String code ("en-US"); const gchar ** props_in = NULL; if (pView->getCharFormat(&props_in)) { const gchar * xml_code = UT_getAttribute("lang", props_in); if ( xml_code ) { code = xml_code ; if ( code.size() >= 2 ) { code = code.substr (0, 2); code += '_'; } } pDialog->setLanguageProperty(UT_getAttribute("lang", props_in)); FREEP(props_in); } // run the dialog pDialog->runModal(pFrame); // extract what they did bool bOK = (pDialog->getAnswer() == XAP_Dialog_Language::a_OK); if (bOK) { const gchar * s; if (pDialog->getChangedLangProperty(&s)) { UT_String changedLang = s; if (changedLang.size() >= 2) { code += changedLang.substr(0, 2); langCode = code; bRet = true; } } } pDialogFactory->releaseDialog(pDialog); return bRet; }