Index: abi/src/wp/ap/xp/ap_EditMethods.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v retrieving revision 1.603 diff -u -r1.603 ap_EditMethods.cpp --- abi/src/wp/ap/xp/ap_EditMethods.cpp 16 May 2003 07:16:31 -0000 1.603 +++ abi/src/wp/ap/xp/ap_EditMethods.cpp 22 May 2003 09:46:40 -0000 @@ -352,6 +352,11 @@ static EV_EditMethod_Fn removeHeader; static EV_EditMethod_Fn removeFooter; + static EV_EditMethod_Fn scriptingFind; + static EV_EditMethod_Fn scriptingFindReverse; + static EV_EditMethod_Fn scriptingReplace; + static EV_EditMethod_Fn scriptingReplaceAll; + static EV_EditMethod_Fn viewStd; static EV_EditMethod_Fn viewFormat; static EV_EditMethod_Fn viewExtra; @@ -949,6 +954,12 @@ // s EV_EditMethod(NF(scriptPlay), 0, ""), + + EV_EditMethod(NF(scriptingFind), 0, ""), + EV_EditMethod(NF(scriptingFindReverse), 0, ""), + EV_EditMethod(NF(scriptingReplace), 0, ""), + EV_EditMethod(NF(scriptingReplaceAll), 0, ""), + EV_EditMethod(NF(scrollLineDown), 0, ""), EV_EditMethod(NF(scrollLineLeft), 0, ""), EV_EditMethod(NF(scrollLineRight), 0, ""), @@ -11310,3 +11321,193 @@ return true; } + +Defun(scriptingFind) +{ + CHECK_FRAME; + ABIWORD_VIEW; + + bool bTmp = false; + bool bMatch = false; + bool bWhole = false; + + UT_UCSChar * pUCSFind = NULL; + UT_UCS4_cloneString_char(&pUCSFind,(char*)pCallData->m_pData); + UT_UCS4Char * mbuf; + UT_UCS4_cloneString(&mbuf, pUCSFind); + + if (pCallData->m_xPos != 0) + { + bMatch = true; + } + + if (pCallData->m_yPos != 0) + { + bWhole = true; + } + + pView->findSetFindString(mbuf); + pView->findSetMatchCase(bMatch); + pView->findSetWholeWord(bWhole); + + bool bRes = pView->findNext(bTmp); + + if (bRes) + { + strcpy((char *)pCallData->m_pData, "true"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + else + { + strcpy((char *)pCallData->m_pData, "false"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + return true; +} + +Defun(scriptingFindReverse) +{ + CHECK_FRAME; + ABIWORD_VIEW; + + bool bTmp=false; + bool bMatch = false; + bool bWhole = false; + + UT_UCSChar * pUCSFind = NULL; + UT_UCS4_cloneString_char(&pUCSFind,(char*)pCallData->m_pData); + UT_UCS4Char * mFind; + UT_UCS4_cloneString(&mFind, pUCSFind); + + if (pCallData->m_xPos != 0) + { + bMatch = true; + } + + if (pCallData->m_yPos != 0) + { + bWhole = true; + } + + pView->findSetFindString(mFind); + pView->findSetMatchCase(bMatch); + pView->findSetWholeWord(bWhole); + + bool bRes = pView->findPrev(bTmp); + + if (bRes) + { + strcpy((char *)pCallData->m_pData, "true"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + else + { + strcpy((char *)pCallData->m_pData, "false"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + return true; +} + +Defun(scriptingReplace) +{ + CHECK_FRAME; + ABIWORD_VIEW; + + bool bTmp=false; + bool bMatch = false; + bool bWhole = false; + + UT_UCSChar * pUCSFind = NULL; + UT_UCS4_cloneString_char(&pUCSFind,(char*)pCallData->m_pData); + UT_UCS4Char * mFind = NULL; + UT_UCS4_cloneString(&mFind, pUCSFind); + + UT_UCS4Char * mReplace = NULL; + + UT_UCS4_cloneString_char(&mReplace, pCallData->getScriptName().c_str()); + + if (pCallData->m_xPos!=0) + { + bMatch = true; + } + + if (pCallData->m_yPos!=0) + { + bWhole = true; + } + + pView->findSetFindString(mFind); + pView->findSetReplaceString(mReplace); + pView->findSetMatchCase(bMatch); + pView->findSetWholeWord(bWhole); + + bool bRes = pView->findNext(bTmp); + + if (bRes) + { + bRes = pView->findReplace(bTmp); + } + + if (bRes) + { + strcpy((char *)pCallData->m_pData, "true"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + else + { + strcpy((char *)pCallData->m_pData, "false"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + + return true; +} + +Defun(scriptingReplaceAll) +{ + CHECK_FRAME; + ABIWORD_VIEW; + + UT_uint32 bRes = 0; + bool bMatch = false; + bool bWhole = false; + + UT_UCSChar * pUCSFind = NULL; + UT_UCS4_cloneString_char(&pUCSFind,(char*)pCallData->m_pData); + UT_UCS4Char * mFind = NULL; + UT_UCS4_cloneString(&mFind, pUCSFind); + + UT_UCS4Char * mReplace = NULL; + + UT_UCS4_cloneString_char(&mReplace, pCallData->getScriptName().c_str()); + + if (pCallData->m_xPos!=0) + { + bMatch = true; + } + + if (pCallData->m_yPos!=0) + { + bWhole = true; + } + + pView->findSetFindString(mFind); + pView->findSetReplaceString(mReplace); + pView->findSetMatchCase(bMatch); + pView->findSetWholeWord(bWhole); + + bRes = pView->findReplaceAll(); + + if (bRes != 0) + { + strcpy((char *)pCallData->m_pData, "true"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + else + { + strcpy((char *)pCallData->m_pData, "false"); + pCallData->m_dataLength = strlen((char *)pCallData->m_pData); + } + + return true; +} +