ABI_FAR_CALL int abi_plugin_register (XAP_ModuleInfo * mi) { mi->name = "AbiGrammar"; mi->desc = "The plugin allows AbiWord to be Grammar checked"; mi->version = ABI_VERSION_STRING; mi->author = "Martin Sevior <*****@*****.**>"; mi->usage = "No Usage"; // Add to AbiWord's plugin listeners XAP_App * pApp = XAP_App::getApp(); #ifdef TOOLKIT_COCOA if (const char * resources = getenv ("ABIWORD_COCOA_BUNDLED_RESOURCES")) { UT_UTF8String dict_dir = resources; dict_dir += "/link-grammar"; setenv ("DICTPATH", dict_dir.utf8_str (), 1); } #endif pAbiGrammar = new AbiGrammar(); pApp->addListener(pAbiGrammar, &listenerID); pAbiGrammar->setID(listenerID); UT_DEBUGMSG(("Class AbiGrammar %p created! Listener Id %d \n",pAbiGrammar,listenerID)); return 1; }
static gboolean focus_out_event_Modeless(GtkWidget *widget,GdkEvent */*event*/,gpointer /*user_data*/) { XAP_App *pApp = static_cast<XAP_App *>(g_object_get_data(G_OBJECT(widget), "pApp")); XAP_Frame *pFrame = pApp->getLastFocussedFrame(); if(pFrame ==static_cast<XAP_Frame *>(NULL)) { UT_uint32 nframes = pApp->getFrameCount(); if(nframes > 0 && nframes < 10) { pFrame = pApp->getFrame(0); } else { return FALSE; } } if(pFrame == static_cast<XAP_Frame *>(NULL)) return FALSE; AV_View * pView = pFrame->getCurrentView(); UT_ASSERT_HARMLESS(pView); if(pView!= NULL) { pView->focusChange(AV_FOCUS_NONE); } return FALSE; }
static void AbiMathView_removeFromMenus () { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // remove the edit method EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer() ; EV_EditMethod * pEM = ev_EditMethod_lookup ( "AbiMathView_FileInsert" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pEM = ev_EditMethod_lookup ( "AbiMathView_LatexInsert" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; // now remove crap from the menus XAP_Menu_Factory * pFact = pApp->getMenuFactory(); pFact->removeMenuItem("Main",NULL,newEquationID); pFact->removeMenuItem("Main",NULL,FromFileID); pFact->removeMenuItem("Main",NULL,FromLatexID); pFact->removeMenuItem("Main",NULL, endEquationID); pApp->rebuildMenus(); }
static void AikSaurusABI_RemoveFromMenus () { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // remove the edit method EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer() ; EV_EditMethod * pEM = ev_EditMethod_lookup ( "AiksaurusABI_invoke" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; // now remove crap from the menus int frameCount = pApp->getFrameCount(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); pFact->removeMenuItem("Main",NULL,AiksaurusABI_MenuLabel); pFact->removeMenuItem("contextText",NULL,AiksaurusABI_MenuLabel); for(int i = 0;i < frameCount;++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
static void Presentation_RemoveFromMethods () { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp (); // remove the edit method EV_EditMethodContainer *pEMC = pApp->getEditMethodContainer (); EV_EditMethod *pEM = ev_EditMethod_lookup ("Presentation_start"); pEMC->removeEditMethod (pEM); DELETEP (pEM); pEM = ev_EditMethod_lookup ("Presentation_end"); pEMC->removeEditMethod (pEM); DELETEP (pEM); pEM = ev_EditMethod_lookup ("Presentation_nextPage"); pEMC->removeEditMethod (pEM); DELETEP (pEM); pEM = ev_EditMethod_lookup ("Presentation_prevPage"); pEMC->removeEditMethod (pEM); DELETEP (pEM); pEM = ev_EditMethod_lookup ("Presentation_context"); pEMC->removeEditMethod (pEM); DELETEP (pEM); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); pFact->removeMenuItem("Main",NULL,presentationID); }
static void AbiGOffice_removeFromMenus () { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); // remove the edit method EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer() ; EV_EditMethod * pEM = ev_EditMethod_lookup ( "AbiGOChart_Create" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pFact->removeMenuItem("Main",NULL,InsertGOChartID); if (g_slist_length (mime_types) > 0) { pEM = ev_EditMethod_lookup ( "AbiGOComponent_FileInsert" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pEM = ev_EditMethod_lookup ( "AbiGOComponent_Create" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pFact->removeMenuItem("Main",NULL,InsertGOComponentFromFileID); pFact->removeMenuItem("Main",NULL,CreateGOComponentID); } pFact->removeMenuItem("Main",NULL,newObjectID); int frameCount = pApp->getFrameCount(); for(int i = 0;i < frameCount;++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
void AP_UnixPreview_Annotation::runModeless(XAP_Frame * pFrame) { UT_DEBUGMSG(("Preview Annotation runModeless %p \n",this)); setActiveFrame(pFrame); if(m_pPreviewWindow) { DELETEP(m_gc); gtk_widget_destroy(m_pDrawingArea); gtk_widget_destroy(m_pPreviewWindow); m_pPreviewWindow = NULL; m_pDrawingArea = NULL; } setSizeFromAnnotation(); _constructWindow(); gtk_window_set_modal ( GTK_WINDOW(m_pPreviewWindow), FALSE ) ; gtk_widget_show(m_pPreviewWindow); // make a new Unix GC DELETEP(m_gc); XAP_App *pApp = XAP_App::getApp(); GR_UnixCairoAllocInfo ai(GTK_WIDGET(m_pDrawingArea)); m_gc = (GR_CairoGraphics*) pApp->newGraphics(ai); GtkAllocation allocation; gtk_widget_get_allocation(m_pPreviewWindow, &allocation); _createAnnotationPreviewFromGC(m_gc, allocation.width, allocation.height); m_gc->setZoomPercentage(100); gtk_widget_show(m_pDrawingArea); }
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; XAP_App * pApp = XAP_App::getApp(); pApp->removeListener(listenerID); return 1; }
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; XAP_App * pApp = XAP_App::getApp(); pApp->unRegisterEmbeddable(pMathManager->getObjectType()); DELETEP(pMathManager); AbiMathView_removeFromMenus(); return 1; }
bool GR_MathManager::convert(UT_uint32 iConType, UT_ByteBuf & From, UT_ByteBuf & To) { XAP_App * pApp = XAP_App::getApp(); XAP_Frame * pFrame = pApp->getLastFocussedFrame(); if (iConType != 0) { return false; } /* add a pair of enclosing brackets \[ \] */ UT_UTF8String sLatex; UT_UCS4_mbtowc myWC; sLatex += "\\["; sLatex.appendBuf(From, myWC); sLatex += "\\]"; char * mathml = itex2MML_parse(sLatex.utf8_str(), sLatex.size()); if (!mathml) { pFrame->showMessageBox("itex2MML failed to convert the LaTeX equation into MathML, sorry!\n", // TODO: fix message XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK); return false; } UT_UTF8String sMathML(mathml); itex2MML_free_string(mathml); if (sMathML.size() == 0) { UT_UTF8String sErrMessage = "itex2MML conversion from LaTex equation resulted in zero-length MathML!\n"; // TODO: fix message //sErrMessage += sLatex; sErrMessage += "\n"; // sErrMessage += FullLine; pFrame->showMessageBox(sErrMessage.utf8_str(), XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK); return false; } UT_DEBUGMSG(("Input MathML %s \n", sMathML.utf8_str())); return EntityTable().convert(sMathML.utf8_str(), sMathML.size(), To); }
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; }
ABI_FAR_CALL int abi_plugin_register (XAP_ModuleInfo * mi) { mi->name = "AbiMathView"; mi->desc = "The plugin allows AbiWord to import MathML documents"; mi->version = ABI_VERSION_STRING; mi->author = "Martin Sevior <*****@*****.**>"; mi->usage = "No Usage"; // Add to AbiWord's plugin listeners XAP_App * pApp = XAP_App::getApp(); pMathManager = new GR_MathManager(NULL); pApp->registerEmbeddable(pMathManager); // Add to AbiWord's menus AbiMathView_addToMenus(); return 1; }
ABI_FAR_CALL int abi_plugin_register (XAP_ModuleInfo * mi) { mi->name = "AbiGOffice"; mi->desc = "The plugin enables Gnome Office Charts and components to be displayed in AbiWord"; mi->version = ABI_VERSION_STRING; mi->author = "Jean Bréfort <*****@*****.**>"; mi->usage = "No Usage"; // Add to AbiWord's plugin importers m_impSniffer = new IE_Imp_Object_Sniffer(); IE_Imp::registerImporter (m_impSniffer); m_impCSniffer = new IE_Imp_Component_Sniffer(); IE_Imp::registerImporter (m_impCSniffer); // Add to AbiWord's plugin listeners XAP_App * pApp = XAP_App::getApp(); pGOChartManager = new GR_GOChartManager(NULL); pGOChartManager->buildContextualMenu (); pApp->registerEmbeddable(pGOChartManager); /* Initialize libgoffice */ libgoffice_init (); cc = GO_CMD_CONTEXT (g_object_new (ABI_CMD_CONTEXT_TYPE, NULL)); go_component_set_default_command_context (cc); /* Initialize plugins manager */ go_plugins_init (cc, NULL, NULL, NULL, TRUE, GO_TYPE_PLUGIN_LOADER_MODULE); /* Ensure some types are created */ GO_TYPE_DATA_SCALAR_STR; GO_TYPE_DATA_VECTOR_STR; GO_TYPE_DATA_SCALAR_VAL; GO_TYPE_DATA_VECTOR_VAL; GO_TYPE_DATA_MATRIX_VAL; // Add to AbiWord's menus. mime_types = go_components_get_mime_types (); if (mime_types && mime_types->data) { pGOComponentManager = new GR_GOComponentManager(NULL); pApp->registerEmbeddable(pGOComponentManager); } g_slist_foreach (mime_types, (GFunc) register_mime_cb, pApp); AbiGOffice_addToMenus(); return 1; }
bool Presentation::_loadPresentationBindings(AV_View * pView) { EV_EditMethodContainer * pEMC = m_pApp->getEditMethodContainer(); g_return_val_if_fail (pEMC != 0, FALSE); if(m_pApp->getBindingMap("Presentation") != NULL) { return true; } // get the path where our app data is located XAP_App * pApp = static_cast<XAP_App*>(XAP_App::getApp()); UT_String data_path( pApp->getAbiSuiteLibDir() ); data_path += G_DIR_SEPARATOR; data_path += "Presentation.xml"; EV_EditMethod * pLoadB = pEMC->findEditMethodByName ("com.abisource.abiword.loadbindings.fromURI"); g_return_val_if_fail (pLoadB != 0, false); EV_EditMethodCallData calldata(data_path.c_str(),data_path.size()); calldata.m_xPos = 0; calldata.m_yPos = 0; return (pLoadB->Fn(pView,&calldata) ? TRUE : FALSE); }
/*! * This implements the "Collaborate" main submenu. */ void s_abicollab_add_menus() { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer(); int frameCount = pApp->getFrameCount(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); EV_Menu_ActionSet* pActionSet = pApp->getMenuActionSet(); // TODO: make this a translatable set of strings // const XAP_StringSet * pSS = pApp->getStringSet(); // The Collaboration menu item XAP_Menu_Id collabId = pFact->addNewMenuBefore("Main", NULL, AP_MENU_ID_WINDOW, EV_MLF_BeginSubMenu); pFact->addNewLabel(NULL, collabId, szCollaboration, szCollaborationTip); EV_Menu_Action* myCollaborationAction = new EV_Menu_Action ( collabId, // id that the layout said we could use 1, // yes, we have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // no callback function to call. NULL, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myCollaborationAction); // The Start Collaboration connect item XAP_Menu_Id collabOfferId = pFact->addNewMenuAfter("Main", NULL, collabId, EV_MLF_Normal); pFact->addNewLabel(NULL, collabOfferId, szCollaborationOffer, szCollaborationOfferTip); EV_Menu_Action* myActionOffer = new EV_Menu_Action ( collabOfferId, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_offer", // name of callback function to call. collab_GetState_CanShare, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionOffer); EV_EditMethod *myEditMethodOffer = new EV_EditMethod ( "s_abicollab_offer", // name of callback function s_abicollab_offer, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodOffer); // The Join Collaboration connect item XAP_Menu_Id collabJoinId = pFact->addNewMenuAfter("Main", NULL, collabOfferId, EV_MLF_Normal); pFact->addNewLabel(NULL, collabJoinId, szCollaborationJoin, szCollaborationJoinTip); EV_Menu_Action* myActionJoin = new EV_Menu_Action ( collabJoinId, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_join", // name of callback function to call. collab_GetState_AnyActive, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionJoin); EV_EditMethod *myEditMethodJoin = new EV_EditMethod ( "s_abicollab_join", // name of callback function s_abicollab_join, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodJoin); // The Join Collaboration connect item XAP_Menu_Id collabAccountsId = pFact->addNewMenuAfter("Main", NULL, collabJoinId, EV_MLF_Normal); pFact->addNewLabel(NULL, collabAccountsId, szCollaborationAccounts, szCollaborationAccountsTip); EV_Menu_Action* myActionAccounts = new EV_Menu_Action ( collabAccountsId, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_accounts", // name of callback function to call. NULL, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionAccounts); EV_EditMethod *myEditMethodAccounts = new EV_EditMethod ( "s_abicollab_accounts", // name of callback function s_abicollab_accounts, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodAccounts); // The Show Authors item XAP_Menu_Id ShowAuthorId = pFact->addNewMenuAfter("Main", NULL, collabAccountsId, EV_MLF_Normal); pFact->addNewLabel(NULL, ShowAuthorId, szCollaborationShowAuthors, szCollaborationShowAuthorsTip); EV_Menu_Action* myActionShowAuthors = new EV_Menu_Action ( ShowAuthorId, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 1, // yes, we have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_authors", // name of callback function to call. collab_GetState_ShowAuthors, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionShowAuthors); EV_EditMethod *myEditMethodShowAuthors = new EV_EditMethod ( "s_abicollab_authors", // name of callback function s_abicollab_authors, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodShowAuthors); // The Record session connect item #if defined(DEBUG) #if !defined(ABICOLLAB_RECORD_ALWAYS) XAP_Menu_Id collabRecordId = pFact->addNewMenuAfter("Main", NULL,ShowAuthorId , EV_MLF_Normal); pFact->addNewLabel(NULL, collabRecordId, szCollaborationRecord, szCollaborationRecordTip); EV_Menu_Action* myActionRecord = new EV_Menu_Action ( collabRecordId, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 1, // yes, we have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_record", // name of callback function to call. collab_GetState_Recording, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionRecord); EV_EditMethod *myEditMethodRecord = new EV_EditMethod ( "s_abicollab_record", // name of callback function s_abicollab_record, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodRecord); XAP_Menu_Id followupMenuId = collabRecordId; #else XAP_Menu_Id followupMenuId = ShowAuthorId; #endif /* !defined(ABICOLLAB_RECORD_ALWAYS) */ XAP_Menu_Id collabViewRecordId = pFact->addNewMenuAfter("Main", NULL, followupMenuId, EV_MLF_Normal); pFact->addNewLabel(NULL, collabViewRecordId, szCollaborationViewRecord, szCollaborationViewRecordTip); EV_Menu_Action* myActionViewRecord = new EV_Menu_Action ( collabViewRecordId, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we don't raise a dialog. 0, // no, we have a checkbox. 0, // no radio buttons for me, thank you "s_abicollab_viewrecord", // name of callback function to call. NULL, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myActionViewRecord); EV_EditMethod *myEditMethodViewRecord = new EV_EditMethod ( "s_abicollab_viewrecord", // name of callback function s_abicollab_viewrecord, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodViewRecord); XAP_Menu_Id lastMenuId = collabViewRecordId; #else XAP_Menu_Id lastMenuId = ShowAuthorId; #endif /* defined(DEBUG) */ // End of the Collaboration menu XAP_Menu_Id endCollaborationId = pFact->addNewMenuAfter("Main", NULL, lastMenuId, EV_MLF_EndSubMenu); pFact->addNewLabel(NULL, endCollaborationId, szEndCollaboration, NULL); EV_Menu_Action* myEndCollaborationAction = new EV_Menu_Action ( endCollaborationId, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // name of callback function to call. NULL, // Function for whether not label is enabled/disabled checked/unchecked NULL // Function to compute Menu Label "Dynamic Label" ); pActionSet->addAction(myEndCollaborationAction); EV_EditMethod* myCommandEM = new EV_EditMethod ("com.abisource.abiword.abicollab.command", s_abicollab_command_invoke, 0, "" ); pEMC->addEditMethod (myCommandEM); // We need to go through and add the menu element to each "frame" // of the application. We can iterate through the frames by doing // XAP_App::getFrameCount() to tell us how many frames there are, // then calling XAP_App::getFrame(i) to get the i-th frame. for(int i = 0; i < frameCount;++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
AbiCollab* AbiCollabSessionManager::startSession(PD_Document* pDoc, UT_UTF8String& sSessionId, AccountHandler* pAclAccount, bool bLocallyOwned, XAP_Frame* pFrame, const UT_UTF8String& masterDescriptor) { UT_DEBUGMSG(("Starting collaboration session for document with id %s, master descriptor: %s\n", pDoc->getDocUUIDString(), masterDescriptor.utf8_str())); UT_return_val_if_fail(pDoc, NULL); UT_return_val_if_fail(pAclAccount, NULL); if (sSessionId == "") { XAP_App* pApp = XAP_App::getApp(); UT_UUID* pUUID = pApp->getUUIDGenerator()->createUUID(); pUUID->toString(sSessionId); } if (masterDescriptor != "") { // search for a buddy descriptor in the authors list that matches this // descriptor, and make that the active author; if such an author does // not exist, then search for an author with no abicollab property set // at all, and give it this buddy descriptor (ie, we assume that it is // "us", even though it might not always be a valid assumption). int iAuthorId = -1; UT_GenericVector<pp_Author*> authors = pDoc->getAuthors(); pp_Author* pEmptyAuthor = NULL; UT_DEBUGMSG(("Scanning %d authors to see if we recognize this master buddy\n", authors.getItemCount())); for (UT_sint32 i = 0; i < authors.getItemCount(); i++) { pp_Author* pAuthor = authors.getNthItem(i); UT_continue_if_fail(pAuthor); const gchar* szDescriptor = NULL; pAuthor->getProperty("abicollab-descriptor", szDescriptor); if (!szDescriptor) { if (!pEmptyAuthor && !pAuthor->getAttrProp()->hasProperties()) pEmptyAuthor = pAuthor; continue; } if (masterDescriptor != szDescriptor) continue; // yay, we already editted this document ourselves! iAuthorId = pAuthor->getAuthorInt(); pDoc->setMyAuthorInt(iAuthorId); UT_DEBUGMSG(("Found our own author object with descriptior %s, id %d!\n", masterDescriptor.utf8_str(), iAuthorId)); break; } if (iAuthorId == -1) { if (pEmptyAuthor) { // reuse this author object and make it our own iAuthorId = pEmptyAuthor->getAuthorInt(); PP_AttrProp * pPA = pEmptyAuthor->getAttrProp(); pPA->setProperty("abicollab-descriptor", masterDescriptor.utf8_str()); pDoc->setMyAuthorInt(iAuthorId); pDoc->sendChangeAuthorCR(pEmptyAuthor); UT_DEBUGMSG(("Reusing empty author object with id %d, setting descriptor to %s!\n", iAuthorId, masterDescriptor.utf8_str())); } else { UT_DEBUGMSG(("No suitable author found in the document for descriptor %s\n", masterDescriptor.utf8_str())); iAuthorId = pDoc->findFirstFreeAuthorInt(); pp_Author * pA = pDoc->addAuthor(iAuthorId); pDoc->setMyAuthorInt(iAuthorId); PP_AttrProp * pPA = pA->getAttrProp(); pPA->setProperty("abicollab-descriptor", masterDescriptor.utf8_str()); pDoc->sendAddAuthorCR(pA); UT_DEBUGMSG(("Added a new author to the documument with descriptor %s, id %d\n", masterDescriptor.utf8_str(), iAuthorId)); } } } UT_DEBUGMSG(("Creating a new collaboration session with UUID: %s\n", sSessionId.utf8_str())); UT_return_val_if_fail(_setupFrame(&pFrame, pDoc), NULL); AbiCollab* pAbiCollab = new AbiCollab(pDoc, sSessionId, pAclAccount, bLocallyOwned); m_vecSessions.push_back(pAbiCollab); // notify all people we are sharing a new document // FIXME: since we only allow a session to be shared on 1 account, we should // only notify the buddies on that account, instead of notifying the buddies // on all accounts. StartSessionEvent event; event.setBroadcast(true); signal(event); return pAbiCollab; }
static void AbiGOffice_addToMenus() { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // // Translated Strings // // const XAP_StringSet * pSS = pApp->getStringSet(); // AbiMathView_MenuLabelEquation= pSS->getValue(AP_STRING_ID_MENU_LABEL_INSERT_EQUATION); // AbiMathView_MenuTooltipEquation = pSS->getValue(AP_STRING_ID_MENU_LABEL_TOOLTIP_INSERT_EQUATION); // AbiMathView_MenuLabelFileInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_INSERT_EQUATION_FILE); // AbiMathView_MenuTooltipFileInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_TOOLTIP_INSERT_EQUATION_FILE); // Create an EditMethod that will link our method's name with // it's callback function. This is used to link the name to // the callback. EV_EditMethod *myEditMethodFile = new EV_EditMethod( "AbiGOChart_Create", // name of callback function AbiGOChart_Create, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); // Now we need to get the EditMethod container for the application. // This holds a series of Edit Methods and links names to callbacks. EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer(); // We have to add our EditMethod to the application's EditMethodList // so that the application will know what callback to call when a call // to "AbiMathView_FileInsert" is received. pEMC->addEditMethod(myEditMethodFile); // Now we need to grab an ActionSet. This is going to be used later // on in our for loop. Take a look near the bottom. EV_Menu_ActionSet* pActionSet = pApp->getMenuActionSet(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); // Look to see if "Object" has been loaded already.. bool bObjectExists = true; if(newObjectID <= 0) { // Put it after Insert Picture in the Main menu // FIXME put it before! bObjectExists = false; newObjectID= pFact->addNewMenuBefore("Main",NULL,AP_MENU_ID_INSERT_DIRECTIONMARKER,EV_MLF_BeginSubMenu); } UT_DEBUGMSG(("newObjectID %d \n",newObjectID)); pFact->addNewLabel(NULL,newObjectID,Object_MenuLabelObject, Object_MenuTooltipObject); // Create the Action that will be called. EV_Menu_Action* myObjectAction = new EV_Menu_Action( newObjectID, // id that the layout said we could use 1, // yes, we have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // no callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myObjectAction); InsertGOChartID= pFact->addNewMenuAfter("Main",NULL,newObjectID,EV_MLF_Normal); UT_DEBUGMSG(("GOChart ID %d \n",InsertGOChartID)); pFact->addNewLabel(NULL, InsertGOChartID,AbiGOChart_MenuLabelInsert, AbiGOChart_MenuTooltipInsert); // Create the Action that will be called. EV_Menu_Action* myChartAction = new EV_Menu_Action( InsertGOChartID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "AbiGOChart_Create", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myChartAction); if (g_slist_length (mime_types) > 0) { myEditMethodFile = new EV_EditMethod( "AbiGOComponent_FileInsert", // name of callback function AbiGOComponent_FileInsert, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodFile); myEditMethodFile = new EV_EditMethod( "AbiGOComponent_Create", // name of callback function AbiGOComponent_Create, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod(myEditMethodFile); InsertGOComponentFromFileID= pFact->addNewMenuAfter("Main",NULL,InsertGOChartID,EV_MLF_Normal); UT_DEBUGMSG(("GOComponentFromFile ID %d \n",InsertGOComponentFromFileID)); pFact->addNewLabel(NULL, InsertGOComponentFromFileID,AbiGOComponent_MenuLabelInsertFromFile, AbiGOComponent_MenuTooltipInsertFromFile); // Create the Action that will be called. EV_Menu_Action* myFileAction = new EV_Menu_Action( InsertGOComponentFromFileID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "AbiGOComponent_FileInsert", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myFileAction); CreateGOComponentID= pFact->addNewMenuAfter("Main",NULL,InsertGOComponentFromFileID,EV_MLF_Normal); UT_DEBUGMSG(("CreateGOComponent ID %d \n",CreateGOComponentID)); pFact->addNewLabel(NULL, CreateGOComponentID,AbiGOComponent_MenuLabelCreate, AbiGOComponent_MenuTooltipCreate); // Create the Action that will be called. EV_Menu_Action* myCompAction = new EV_Menu_Action( CreateGOComponentID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "AbiGOComponent_Create", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myCompAction); if(!bObjectExists) { XAP_Menu_Id endObjectID= pFact->addNewMenuAfter("Main",NULL,CreateGOComponentID,EV_MLF_EndSubMenu); UT_DEBUGMSG(("End Object ID %d \n",endObjectID)); pFact->addNewLabel(NULL,endObjectID,NULL,NULL); // Create the Action that will be called. EV_Menu_Action* myEndObjectAction = new EV_Menu_Action( endObjectID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myEndObjectAction); } } else if(!bObjectExists) { XAP_Menu_Id endObjectID= pFact->addNewMenuAfter("Main",NULL,InsertGOChartID,EV_MLF_EndSubMenu); UT_DEBUGMSG(("End Object ID %d \n",endObjectID)); pFact->addNewLabel(NULL,endObjectID,NULL,NULL); // Create the Action that will be called. EV_Menu_Action* myEndObjectAction = new EV_Menu_Action( endObjectID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myEndObjectAction); } // We need to go through and add the menu element to each "frame" // of the application. We can iterate through the frames by doing // XAP_App::getFrameCount() to tell us how many frames there are, // then calling XAP_App::getFrame(i) to get the i-th frame. int frameCount = pApp->getFrameCount(); for(int i = 0;i < frameCount;++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
// // AiksaurusABI_addToMenus // ----------------------- // Adds "Thesaurus" option to AbiWord's Tools Menu. // static void AiksaurusABI_addToMenus() { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // Create an EditMethod that will link our method's name with // it's callback function. This is used to link the name to // the callback. EV_EditMethod *myEditMethod = new EV_EditMethod( "AiksaurusABI_invoke", // name of callback function AiksaurusABI_invoke, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); // Now we need to get the EditMethod container for the application. // This holds a series of Edit Methods and links names to callbacks. EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer(); // We have to add our EditMethod to the application's EditMethodList // so that the application will know what callback to call when a call // to "AiksaurusABI_invoke" is received. pEMC->addEditMethod(myEditMethod); // Now we need to grab an ActionSet. This is going to be used later // on in our for loop. Take a look near the bottom. EV_Menu_ActionSet* pActionSet = pApp->getMenuActionSet(); // We need to go through and add the menu element to each "frame" // of the application. We can iterate through the frames by doing // XAP_App::getFrameCount() to tell us how many frames there are, // then calling XAP_App::getFrame(i) to get the i-th frame. int frameCount = pApp->getFrameCount(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); // // Put it in the context menu. // XAP_Menu_Id newID = pFact->addNewMenuAfter("contextText",NULL,"Bullets and &Numbering",EV_MLF_Normal); pFact->addNewLabel(NULL,newID,AiksaurusABI_MenuLabel, AiksaurusABI_MenuTooltip); // // Also put it under word Wount in the main menu, // pFact->addNewMenuAfter("Main",NULL,"&Word Count",EV_MLF_Normal,newID); // Create the Action that will be called. EV_Menu_Action* myAction = new EV_Menu_Action( newID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, "AiksaurusABI_invoke", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myAction); for(int i = 0;i < frameCount;++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
// // Presentation_registerMethod() // ----------------------- // Adds Presentation_start, Presentation_end to the EditMethod list // static void Presentation_registerMethod () { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp (); // Create an EditMethod that will link our method's name with // it's callback function. This is used to link the name to // the callback. EV_EditMethod *myEditMethod = new EV_EditMethod ("Presentation_start", // name of callback function Presentation_start, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); // Now we need to get the EditMethod container for the application. // This holds a series of Edit Methods and links names to callbacks. EV_EditMethodContainer *pEMC = pApp->getEditMethodContainer (); // We have to add our EditMethod to the application's EditMethodList // so that the application will know what callback to call when a call pEMC->addEditMethod (myEditMethod); myEditMethod = new EV_EditMethod ("Presentation_end", // name of callback function Presentation_end, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod (myEditMethod); myEditMethod = new EV_EditMethod ("Presentation_nextPage", // name of callback function Presentation_nextPage, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod (myEditMethod); myEditMethod = new EV_EditMethod ("Presentation_prevPage", // name of callback function Presentation_prevPage, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod (myEditMethod); myEditMethod = new EV_EditMethod ("Presentation_context", // name of callback function Presentation_context, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); pEMC->addEditMethod (myEditMethod); // Now we need to grab an ActionSet. This is going to be used later // on in our for loop. Take a look near the bottom. EV_Menu_ActionSet* pActionSet = pApp->getMenuActionSet(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); // Put it after presentationID= pFact->addNewMenuAfter("Main",NULL,AP_MENU_ID_VIEW_SHOWPARA,EV_MLF_Normal); UT_DEBUGMSG(("presentationID %d \n",presentationID)); pFact->addNewLabel(NULL,presentationID,szPresentation,szPresentationStatus); // Create the Action that will be called. EV_Menu_Action* myPresentationAction = new EV_Menu_Action( presentationID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "Presentation_start", // callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myPresentationAction); // // OK Now build a context menu // PresentationContextID = pFact->createContextMenu("PresentationContext"); prevSlideID = pFact->addNewMenuBefore("PresentationContext",NULL,0,EV_MLF_Normal,0); pFact->addNewLabel(NULL,prevSlideID,szPrevSlide, NULL); nextSlideID = pFact->addNewMenuBefore("PresentationContext",NULL,0,EV_MLF_Normal,0); pFact->addNewLabel(NULL,nextSlideID,szNextSlide, NULL); endPresentationID = pFact->addNewMenuBefore("PresentationContext",NULL,0,EV_MLF_Normal,0); pFact->addNewLabel(NULL,endPresentationID,szEndPresentation, NULL); myPresentationAction = new EV_Menu_Action( prevSlideID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "Presentation_prevPage", // callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myPresentationAction); myPresentationAction = new EV_Menu_Action( nextSlideID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "Presentation_nextPage", // callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myPresentationAction); myPresentationAction = new EV_Menu_Action( endPresentationID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "Presentation_end", // callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myPresentationAction); }
BOOL XAP_Win32Dialog_FontChooser::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { XAP_App* pApp = XAP_App::getApp(); const XAP_StringSet* pSS = pApp->getStringSet(); m_hDlg = hWnd; setDialogTitle(pSS->getValue(XAP_STRING_ID_DLG_UFS_FontTitle)); // localize controls _DS(FONT_TEXT_FONT, DLG_UFS_FontLabel); _DS(FONT_TEXT_FONT_STYLE, DLG_UFS_StyleLabel); _DS(FONT_TEXT_SIZE, DLG_UFS_SizeLabel); _DS(FONT_TEXT_EFFECTS, DLG_UFS_EffectsFrameLabel); _DS(FONT_BTN_STRIKEOUT, DLG_UFS_StrikeoutCheck); _DS(FONT_BTN_UNDERLINE, DLG_UFS_UnderlineCheck); _DS(FONT_CHK_OVERLINE, DLG_UFS_OverlineCheck); _DS(FONT_TEXT_COLOR, DLG_UFS_ColorLabel); _DS(FONT_TEXT_SCRIPT, DLG_UFS_ScriptLabel); _DS(FONT_TEXT_SAMPLE, DLG_UFS_SampleFrameLabel); _DS(FONT_BTN_OK, DLG_OK); _DS(FONT_BTN_CANCEL, DLG_Cancel); _DS(FONT_CHK_HIDDEN, DLG_UFS_HiddenCheck); _DS(FONT_CHK_SUPERSCRIPT, DLG_UFS_SuperScript); _DS(FONT_CHK_SUBSCRIPT, DLG_UFS_SubScript); _DS(FONT_CHK_ALLCAPS, DLG_UFS_Effects_UpperCase); _DS(FONT_CHK_SMALLCAPS, DLG_UFS_Effects_SmallCaps); // set initial state if( m_bWin32Overline ) CheckDlgButton( hWnd, XAP_RID_DIALOG_FONT_CHK_OVERLINE, BST_CHECKED ); if( m_bWin32Hidden ) CheckDlgButton( hWnd, XAP_RID_DIALOG_FONT_CHK_HIDDEN, BST_CHECKED ); if( m_bWin32SuperScript) CheckDlgButton(hWnd, XAP_RID_DIALOG_FONT_CHK_SUPERSCRIPT, BST_CHECKED ); if( m_bWin32SubScript) CheckDlgButton(hWnd, XAP_RID_DIALOG_FONT_CHK_SUBSCRIPT, BST_CHECKED ); // use the owner-draw-control dialog-item (aka window) specified in the // dialog resource file as a parent to the window/widget that we create // here and thus have complete control of. // m_pPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), // GetDlgItem(hWnd, XAP_RID_DIALOG_FONT_PREVIEW), // 0); // instantiate the XP preview object using the win32 preview widget (window) // we just created. we seem to have a mish-mash of terms here, sorry. // UT_uint32 w,h; // m_pPreviewWidget->getWindowSize(&w,&h); // _createPreviewFromGC(m_pPreviewWidget->getGraphics(),w,h); // m_pPreviewWidget->setPreview(); // we need this to call draw() on WM_PAINTs // _updatePreviewZoomPercent(getZoomPercent()); // get the initial offset in the text color dlg so that we can tell if the user // changed color m_iColorIndx = SendDlgItemMessageW(hWnd, 1139, CB_GETCURSEL, 0, 0); m_iColorCount = SendDlgItemMessageW(hWnd, 1139, CB_GETCOUNT, 0, 0); if(m_iColorIndx == 0 && !m_sColor.empty() && strcmp(m_sColor.c_str(), "000000") != 0) { // the first item of the list was selected either becase becase the color we // passed to the dlg is not one of those it supports -- we simply add it to the end // of the list // we have no name for this color, so left it empty SendDlgItemMessageW(hWnd, 1139, CB_ADDSTRING, 0, (LPARAM)(LPCSTR)""); // set the color for the entry UT_RGBColor c; UT_parseColor(m_sColor.c_str(),c); DWORD dColor = RGB(c.m_red,c.m_grn,c.m_blu); SendDlgItemMessageW(hWnd, 1139, CB_SETITEMDATA, m_iColorCount, (LPARAM)(DWORD)dColor); // make sure this worked and select the color int iOldCount = m_iColorCount; m_iColorCount = SendDlgItemMessageW(hWnd, 1139, CB_GETCOUNT, 0, 0); if(iOldCount + 1 == m_iColorCount) { SendDlgItemMessageW(hWnd, 1139, CB_SETCURSEL, m_iColorCount-1, 0); m_iColorIndx = m_iColorCount-1; } } return 1; // 1 == we did not call SetFocus() }
void GR_MathManager::initialize(void) { XAP_App *pApp = XAP_App::getApp(); // load the gtkmathview settings and operator dictionaries from the private user directory, ... UT_UTF8String userConfDir(pApp->getUserPrivateDirectory()); UT_UTF8String userDictDir(pApp->getUserPrivateDirectory()); UT_UTF8String userCombiningDictDir(pApp->getUserPrivateDirectory()); UT_UTF8String userLocalDictDir(pApp->getUserPrivateDirectory()); #if defined(WIN32) userConfDir += "\\math\\gtkmathview.conf.xml"; userDictDir += "\\math\\dictionary.xml"; userCombiningDictDir += "\\math\\dictionary-combining.xml"; userLocalDictDir += "\\math\\dictionary-local.xml"; #else userConfDir += "/math/gtkmathview.conf.xml"; userDictDir += "/math/dictionary.xml"; userCombiningDictDir += "/math/dictionary-combining.xml"; userLocalDictDir += "/math/dictionary-local.xml"; #endif // ... or from the (common) AbiSuite directory UT_UTF8String libConfDir(pApp->getAbiSuiteLibDir()); UT_UTF8String libDictDir(pApp->getAbiSuiteLibDir()); UT_UTF8String libCombiningDictDir(pApp->getAbiSuiteLibDir()); UT_UTF8String libLocalDictDir(pApp->getAbiSuiteLibDir()); #if defined(WIN32) libConfDir += "\\math\\gtkmathview.conf.xml"; libDictDir += "\\math\\dictionary.xml"; libCombiningDictDir += "\\math\\dictionary-combining.xml"; libLocalDictDir += "\\math\\dictionary-local.xml"; #else libConfDir += "/math/gtkmathview.conf.xml"; libDictDir += "/math/dictionary.xml"; libCombiningDictDir += "/math/dictionary-combining.xml"; libLocalDictDir += "/math/dictionary-local.xml"; #endif // add the configuration paths #ifdef TOOLKIT_COCOA if (const char * resources = getenv("ABIWORD_COCOA_BUNDLED_RESOURCES")) { UT_UTF8String bundleConfDir(resources); bundleConfDir += "/gtkmathview/gtkmathview.conf.xml"; Configuration::addConfigurationPath(bundleConfDir.utf8_str()); } #endif Configuration::addConfigurationPath( libConfDir.utf8_str() ); Configuration::addConfigurationPath( userConfDir.utf8_str() ); SmartPtr<AbstractLogger> logger = Logger::create(); m_pLogger = logger; SmartPtr<Configuration> configuration = initConfiguration<libxml2_MathView>(logger, getenv("GTKMATHVIEWCONF")); logger->setLogLevel(LOG_INFO); // add the dictionary paths #ifdef TOOLKIT_COCOA if (const char * resources = getenv("ABIWORD_COCOA_BUNDLED_RESOURCES")) { UT_UTF8String bundleDictDir(resources); UT_UTF8String bundleCombiningDictDir(resources); UT_UTF8String bundleLocalDictDir(resources); bundleDictDir += "/gtkmathview/dictionary.xml"; bundleCombiningDictDir += "/gtkmathview/dictionary-combining.xml"; bundleLocalDictDir += "/gtkmathview/dictionary-local.xml"; configuration->add("dictionary/path", bundleDictDir.utf8_str()); configuration->add("dictionary/path", bundleCombiningDictDir.utf8_str()); configuration->add("dictionary/path", bundleLocalDictDir.utf8_str()); } #endif configuration->add("dictionary/path", libDictDir.utf8_str()); configuration->add("dictionary/path", libCombiningDictDir.utf8_str()); configuration->add("dictionary/path", libLocalDictDir.utf8_str()); configuration->add("dictionary/path", userDictDir.utf8_str()); configuration->add("dictionary/path", userCombiningDictDir.utf8_str()); configuration->add("dictionary/path", userLocalDictDir.utf8_str()); SmartPtr<GR_Abi_MathGraphicDevice> mathGraphicDevice = GR_Abi_MathGraphicDevice::create(logger, configuration, getGraphics()); m_pMathGraphicDevice = mathGraphicDevice; m_pAbiContext = new GR_Abi_RenderingContext(getGraphics()); UT_DEBUGMSG(("MAthView New rendering context %p Graphics %p \n",m_pAbiContext,getGraphics())); m_pOperatorDictionary = initOperatorDictionary<libxml2_MathView>(logger, configuration); }
/*! Localize and URL for help. \param pathBeforeLang the path for the help file that prefix \param pathAfterLang the path inside the localized directory \param remoteURLbase remote URL if help files are not found. Override in subclasses if platform needs specific work */ UT_String XAP_AppImpl::localizeHelpUrl (const char * pathBeforeLang, const char * pathAfterLang, const char * remoteURLbase) { XAP_App* pApp = XAP_App::getApp(); UT_return_val_if_fail(pApp, ""); XAP_Prefs* pPrefs = pApp->getPrefs(); UT_return_val_if_fail(pPrefs, ""); const char* abiSuiteLibDir = pApp->getAbiSuiteLibDir(); const gchar* abiSuiteLocString = NULL; UT_String url; // evil... pPrefs->getPrefsValue((gchar*)"StringSet", &abiSuiteLocString); // 1st try file on user's computer (local file), if not exist try remote help UT_String path(abiSuiteLibDir); _catPath(path, pathBeforeLang); UT_String localized_path(path); _catPath(localized_path, abiSuiteLocString); if (UT_directoryExists(localized_path.c_str())) { // the localised help exists, so use it path = localized_path; } else { // the localised help directory does not exist, so fall back to the // en-US help location, which is the default lang, so usually available localized_path = path; _catPath(localized_path, "en-US"); } _catPath(localized_path, pathAfterLang); localized_path += ".html"; if (remoteURLbase && !UT_isRegularFile(localized_path.c_str())) { // not found, so build localized path for remote URL (but we can't verify remote URL) url = remoteURLbase; // HACK: Not all help files are localized. // HACK: Hard code the available translations here instead of 404-ing. if (!( !strcmp(abiSuiteLocString, "en-US") || !strcmp(abiSuiteLocString, "fr-FR") || !strcmp(abiSuiteLocString, "pl-PL") )) _catPath(url, "en-US"); else _catPath(url, abiSuiteLocString); _catPath(url, pathAfterLang); url += ".html"; } else { url = "file://"; url += localized_path; } return url; }
static void AbiMathView_addToMenus() { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // // Translated Strings // const XAP_StringSet * pSS = pApp->getStringSet(); AbiMathView_MenuLabelEquation= pSS->getValue(AP_STRING_ID_MENU_LABEL_INSERT_EQUATION); AbiMathView_MenuTooltipEquation = pSS->getValue(AP_STRING_ID_MENU_LABEL_TOOLTIP_INSERT_EQUATION); AbiMathView_MenuLabelFileInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_INSERT_EQUATION_FILE); AbiMathView_MenuTooltipFileInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_TOOLTIP_INSERT_EQUATION_FILE); AbiMathView_MenuLabelLatexInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_INSERT_EQUATION_LATEX); AbiMathView_MenuTooltipLatexInsert = pSS->getValue(AP_STRING_ID_MENU_LABEL_TOOLTIP_INSERT_EQUATION_LATEX); // Create an EditMethod that will link our method's name with // it's callback function. This is used to link the name to // the callback. EV_EditMethod *myEditMethodFile = new EV_EditMethod( "AbiMathView_FileInsert", // name of callback function AbiMathView_FileInsert, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); EV_EditMethod *myEditMethodLatex = new EV_EditMethod( "AbiMathView_LatexInsert", // name of callback function AbiMathView_LatexInsert, // callback function itself. 0, // no additional data required. "" // description -- allegedly never used for anything ); // Now we need to get the EditMethod container for the application. // This holds a series of Edit Methods and links names to callbacks. EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer(); // We have to add our EditMethod to the application's EditMethodList // so that the application will know what callback to call when a call // to "AbiMathView_FileInsert" is received. pEMC->addEditMethod(myEditMethodFile); pEMC->addEditMethod(myEditMethodLatex); // Now we need to grab an ActionSet. This is going to be used later // on in our for loop. Take a look near the bottom. EV_Menu_ActionSet* pActionSet = pApp->getMenuActionSet(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); // Put it after Insert Picture in the Main menu newEquationID= pFact->addNewMenuAfter("Main",NULL,AP_MENU_ID_INSERT_GRAPHIC,EV_MLF_BeginSubMenu); UT_DEBUGMSG(("newEquationID %d \n",newEquationID)); pFact->addNewLabel(NULL,newEquationID,AbiMathView_MenuLabelEquation, AbiMathView_MenuTooltipEquation); // Create the Action that will be called. EV_Menu_Action* myEquationAction = new EV_Menu_Action( newEquationID, // id that the layout said we could use 1, // yes, we have a sub menu. 0, // no, we don't raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // no callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myEquationAction); FromFileID= pFact->addNewMenuAfter("Main",NULL,newEquationID,EV_MLF_Normal); UT_DEBUGMSG(("FromFile ID %d \n",FromFileID)); pFact->addNewLabel(NULL,FromFileID,AbiMathView_MenuLabelFileInsert, AbiMathView_MenuTooltipFileInsert); // Create the Action that will be called. EV_Menu_Action* myFileAction = new EV_Menu_Action( FromFileID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "AbiMathView_FileInsert", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); // Now what we need to do is add this particular action to the ActionSet // of the application. This forms the link between our new ID that we // got for this particular frame with the EditMethod that knows how to // call our callback function. pActionSet->addAction(myFileAction); FromLatexID= pFact->addNewMenuAfter("Main",NULL,FromFileID,EV_MLF_Normal); UT_DEBUGMSG(("Latex ID %d \n",FromLatexID)); pFact->addNewLabel(NULL,FromLatexID,AbiMathView_MenuLabelLatexInsert, AbiMathView_MenuTooltipLatexInsert); // Create the Action that will be called. EV_Menu_Action* myLatexAction = new EV_Menu_Action( FromLatexID, // id that the layout said we could use 0, // no, we don't have a sub menu. 1, // yes, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you "AbiMathView_LatexInsert", // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myLatexAction); endEquationID= pFact->addNewMenuAfter("Main",NULL,AbiMathView_MenuLabelLatexInsert,EV_MLF_EndSubMenu); UT_DEBUGMSG(("End Equation ID %d \n",endEquationID)); pFact->addNewLabel(NULL,endEquationID,AbiMathView_MenuEndEquation,NULL); // Create the Action that will be called. EV_Menu_Action* myEndEquationAction = new EV_Menu_Action( endEquationID, // id that the layout said we could use 0, // no, we don't have a sub menu. 0, // no, we raise a dialog. 0, // no, we don't have a checkbox. 0, // no radio buttons for me, thank you NULL, // name of callback function to call. NULL, // don't know/care what this is for NULL // don't know/care what this is for ); pActionSet->addAction(myEndEquationAction); pApp->rebuildMenus(); }
/*! * Remove the menu items unpon unloading the plugin. */ void s_abicollab_remove_menus() { // First we need to get a pointer to the application itself. XAP_App *pApp = XAP_App::getApp(); // remove the edit method EV_EditMethodContainer* pEMC = pApp->getEditMethodContainer(); EV_EditMethod * pEM; pEM = ev_EditMethod_lookup ( "s_abicollab_offer" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pEM = ev_EditMethod_lookup ( "s_abicollab_join" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pEM = ev_EditMethod_lookup ( "s_abicollab_accounts" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; pEM = ev_EditMethod_lookup ( "s_abicollab_authors" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; #if !defined(ABICOLLAB_RECORD_ALWAYS) && defined(DEBUG) pEM = ev_EditMethod_lookup ( "s_abicollab_record" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; #endif #if defined(DEBUG) pEM = ev_EditMethod_lookup ( "s_abicollab_viewrecord" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; #endif pEM = ev_EditMethod_lookup ( "com.abisource.abiword.abicollab.command" ) ; pEMC->removeEditMethod ( pEM ) ; DELETEP( pEM ) ; // now remove crap from the menus int frameCount = pApp->getFrameCount(); XAP_Menu_Factory * pFact = pApp->getMenuFactory(); pFact->removeMenuItem("Main", NULL, szCollaboration); pFact->removeMenuItem("Main", NULL, szCollaborationOffer); pFact->removeMenuItem("Main", NULL, szCollaborationJoin); pFact->removeMenuItem("Main", NULL, szCollaborationAccounts); pFact->removeMenuItem("Main", NULL, szCollaborationShowAuthors); #if !defined(ABICOLLAB_RECORD_ALWAYS) && defined(DEBUG) pFact->removeMenuItem("Main", NULL, szCollaborationRecord); #endif #if defined(DEBUG) pFact->removeMenuItem("Main", NULL, szCollaborationViewRecord); #endif pFact->removeMenuItem("Main", NULL, szEndCollaboration); for (int i = 0; i < frameCount; ++i) { // Get the current frame that we're iterating through. XAP_Frame* pFrame = pApp->getFrame(i); pFrame->rebuildMenus(); } }
static void GDict_dlg_create (const char * search) { GtkWidget * vbox; GtkWidget * hbox; GtkWidget * button; GtkWidget * scrolled; GtkWidget * close; GtkWidget * gtk_entry; // create the toplevel dialog gdict_dlg = gnome_dialog_new ("AbiWord Dictionary", GNOME_STOCK_BUTTON_CLOSE, NULL); gtk_window_set_modal (GTK_WINDOW(gdict_dlg), false); gtk_widget_set_usize (gdict_dlg, 450, 300); // center the dialog and connect focus XAP_App * pApp = XAP_App::getApp (); XAP_UnixFrame * pFrame = static_cast<XAP_UnixFrame*>(pApp->getLastFocussedFrame ()); GtkWidget * parent = pFrame->getTopLevelWindow(); centerDialog(parent, gdict_dlg); close = GTK_WIDGET (g_list_last (GNOME_DIALOG (gdict_dlg)->buttons)->data); vbox = GNOME_DIALOG(gdict_dlg)->vbox; hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); gtk_container_set_border_width (GTK_CONTAINER (hbox), GNOME_PAD_SMALL); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); button = gtk_button_new_with_label ("Look Up"); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gdict_entry = gnome_entry_new(NULL); gtk_entry = gnome_entry_gtk_entry(GNOME_ENTRY(gdict_entry)); gtk_box_pack_start (GTK_BOX (hbox), gdict_entry, TRUE, TRUE, 0); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (scrolled), GNOME_PAD_SMALL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0); gdict_defbox = gdict_defbox_new (); gtk_widget_show (gdict_defbox); gtk_container_add (GTK_CONTAINER (scrolled), gdict_defbox); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (lookup_button_cb), gdict_defbox); g_signal_connect (G_OBJECT (gtk_entry), "activate", G_CALLBACK (entry_activate_cb), gdict_defbox); #if 0 g_signal_connect (G_OBJECT (gtk_entry), "changed", G_CALLBACK (entry_activate_cb), gdict_defbox); #endif g_signal_connect (G_OBJECT (gdict_dlg), "close", G_CALLBACK(close_cb), (gpointer)0); g_signal_connect (G_OBJECT (close), "clicked", G_CALLBACK(close_cb), (gpointer)0); g_signal_connect_after(G_OBJECT(gdict_dlg), "destroy", NULL, NULL); gtk_widget_show_all (gdict_dlg); }