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); }
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(); }
/*! * 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(); } }