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