62#include <LibreOfficeKit/LibreOfficeKitEnums.h>
64#include <osl/diagnose.h>
67#include <inputwin.hxx>
79#include <document.hxx>
88#include <compiler.hxx>
92#include <tokenarray.hxx>
98#define RANGEFIND_MAX 128
104ScTypedCaseStrSet::const_iterator findText(
105 const ScTypedCaseStrSet& rDataSet, ScTypedCaseStrSet::const_iterator
const & itPos,
106 const OUString& rStart, OUString& rResult,
bool bBack)
113 ScTypedCaseStrSet::const_reverse_iterator it = rDataSet.rbegin(), itEnd = rDataSet.rend();
114 if (itPos != rDataSet.end())
116 size_t nPos = std::distance(rDataSet.begin(), itPos);
117 size_t nRPos = rDataSet.size() - 1 -
nPos;
118 std::advance(it, nRPos);
122 it = std::find_if(it, itEnd, lIsMatch);
125 rResult = it->GetString();
126 return (++it).base();
131 ScTypedCaseStrSet::const_iterator it = rDataSet.begin(), itEnd = rDataSet.end();
134 it = std::next(itPos);
137 it = std::find_if(it, itEnd, lIsMatch);
140 rResult = it->GetString();
145 return rDataSet.end();
148OUString getExactMatch(
const ScTypedCaseStrSet& rDataSet,
const OUString& rString)
150 auto it = std::find_if(rDataSet.begin(), rDataSet.end(),
152 return (rData.GetStringType() != ScTypedStrData::Value)
153 && ScGlobal::GetTransliteration().isEqual(rData.GetString(), rString);
155 if (it != rDataSet.end())
156 return it->GetString();
162sal_Int32 getLongestCommonPrefixLength(
const std::vector<OUString>& rResults, std::u16string_view aUserEntry, sal_Int32 nRingOrigin)
164 sal_Int32 nResults = rResults.size();
169 return rResults[0].getLength();
171 sal_Int32 nMinLen = aUserEntry.size();
172 sal_Int32 nLastIdx = nRingOrigin ? nRingOrigin - 1 : nResults - 1;
173 const OUString& rFirst = rResults[nRingOrigin];
174 const OUString& rLast = rResults[nLastIdx];
175 const sal_Int32 nMaxLen = std::min(rFirst.getLength(), rLast.getLength());
177 for (sal_Int32 nLen = nMaxLen; nLen > nMinLen; --nLen)
186ScTypedCaseStrSet::const_iterator findTextAll(
187 const ScTypedCaseStrSet& rDataSet, ScTypedCaseStrSet::const_iterator
const & itPos,
188 const OUString& rStart, ::std::vector< OUString > &rResultVec,
bool bBack, sal_Int32* pLongestPrefixLen =
nullptr)
192 if (!rDataSet.size())
193 return rDataSet.end();
195 sal_Int32 nRingOrigin = 0;
197 ScTypedCaseStrSet::const_iterator retit;
200 ScTypedCaseStrSet::const_reverse_iterator it, itEnd;
201 if ( itPos == rDataSet.end() )
203 it = rDataSet.rend();
209 it = rDataSet.rbegin();
210 size_t nPos = std::distance(rDataSet.begin(), itPos);
211 size_t nRPos = rDataSet.size() - 1 -
nPos;
212 std::advance(it, nRPos);
213 if ( it == rDataSet.rend() )
214 it = rDataSet.rbegin();
217 bool bFirstTime =
true;
219 while ( it != itEnd || bFirstTime )
222 if ( it == rDataSet.rend() )
224 it = rDataSet.rbegin();
243 retit = rDataSet.begin();
244 size_t nRPos = std::distance(rDataSet.rbegin(), it);
245 size_t nPos = rDataSet.size() - 1 - nRPos;
246 std::advance(retit,
nPos);
253 ScTypedCaseStrSet::const_iterator it, itEnd;
255 if ( it == rDataSet.end() )
256 it = --rDataSet.end();
258 bool bFirstTime =
true;
260 while ( it != itEnd || bFirstTime )
263 if ( it == rDataSet.end() )
265 it = rDataSet.begin();
287 if (pLongestPrefixLen)
289 if (nRingOrigin >=
static_cast<sal_Int32
>(
nCount))
296 *pLongestPrefixLen = getLongestCommonPrefixLength(rResultVec, rStart, nRingOrigin);
301 return rDataSet.end();
307 const std::vector<ReferenceMark>& rReferenceMarks )
316 ss <<
"{ \"marks\": [ ";
318 for (
size_t i = 0;
i < rReferenceMarks.size();
i++ )
320 if ( rReferenceMarks[
i].Is() )
325 ss <<
"{ \"rectangle\": \""
326 << rReferenceMarks[
i].nX <<
", "
327 << rReferenceMarks[
i].nY <<
", "
328 << rReferenceMarks[
i].nWidth <<
", "
329 << rReferenceMarks[
i].nHeight <<
"\", "
330 "\"color\": \"" << rReferenceMarks[
i].aColor.AsRGBHexString() <<
"\", "
331 "\"part\": \"" << rReferenceMarks[
i].nTab <<
"\" } ";
339 OString aPayload( ss.str() );
341 LOK_CALLBACK_REFERENCE_MARKS, aPayload );
372 sal_Int32 nColon = aDelimiters.indexOf(
':' );
374 aDelimiters = aDelimiters.replaceAt( nColon, 1,
u"");
375 sal_Int32 nDot = aDelimiters.indexOf(cSheetSep);
377 aDelimiters = aDelimiters.replaceAt( nDot, 1 ,
u"");
380 sal_Int32 nLen = rFormula.getLength();
382 sal_Int32 nStart = 0;
406 bool bSingleQuoted =
false;
413 bSingleQuoted = !bSingleQuoted;
415 else if (!bSingleQuoted)
427 if( nPos < nLen && nPos > 0 &&
437 OUString aTest = rFormula.copy( nStart,
nPos-nStart );
481 pDocSh->Broadcast(
SfxHint( SfxHintId::ScShowRangeFinder ) );
493 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
495 SCCOL nCol1 = nX1, nCol2 = nX2;
496 SCROW nRow1 = nY1, nRow2 = nY2;
499 if (nCol1 == nCol2 && nRow1 == nRow2)
507 return ReferenceMark(aTopLeft.
X(), aTopLeft.
Y(), nSizeX, nSizeY, nTab, rColor);
550 if ( !pRangeFinder && !rViewData.
IsRefMode() )
553 sal_uInt16 nAdditionalMarks = 0;
554 std::vector<ReferenceMark> aReferenceMarks( 1 );
558 nAdditionalMarks = 1;
579 sal_uInt16
nCount = pRangeFinder ?
580 (
static_cast<sal_uInt16
>( pRangeFinder->
Count() ) + nAdditionalMarks ) : nAdditionalMarks;
581 aReferenceMarks.resize(
nCount );
586 for (sal_uInt16
i = 0;
i <
nCount - nAdditionalMarks;
i++)
612 aReferenceMarks.clear();
640 const sal_Int32 nLen = pEngine->
GetTextLen(nPara);
657 OUString aNewStr(aJustified.
Format(rDoc, rData.
nFlags, aAddrDetails));
698 OSL_FAIL(
"UpdateRange: we're missing something");
709 pDocSh->Broadcast(
SfxHint( SfxHintId::ScShowRangeFinder ) );
721 rStr = rStr.replace(
'\t',
' ');
727 rStr = rStr.replace(
'\n',
' ');
774 sal_Int32 nLen = rStr.getLength();
778 sal_uInt16 nQuotes = 0;
779 if (
nPos < nLen / 2 )
795 bool bLookInString = ((nQuotes % 2) != 0);
796 bool bInString = bLookInString;
798 p1 = (nDir < 0 ? p0 : p0 + nLen) ;
799 sal_uInt16 nLevel = 1;
800 while (
p != p1 && nLevel )
805 bInString = !bInString;
806 if ( bLookInString && !bInString )
809 else if ( bInString == bLookInString )
819 return static_cast<sal_Int32
>(
p - p0);
823 : pInputWin( nullptr ),
824 pTableView( nullptr ),
826 pTipVisibleParent( nullptr ),
827 nTipVisible( nullptr ),
828 pTipVisibleSecParent( nullptr ),
829 nTipVisibleSec( nullptr ),
832 nCellPercentFormatDecSep( 0 ),
839 bFormulaMode( false ),
840 bInRangeUpdate( false ),
841 bParenthesisShown( false ),
842 bCreatingFuncView( false ),
843 bInEnterHandler( false ),
844 bCommandErrorShown( false ),
845 bInOwnChange( false ),
847 bLastIsSymbol( false ),
848 mbDocumentDisposing(false),
849 mbPartialPrefix(false),
850 mbEditingExistingContent(false),
855 pRefViewSh( nullptr ),
856 pLastPattern( nullptr )
876 if (
SC_MOD()->GetRefInputHdl() ==
this)
877 SC_MOD()->SetRefInputHdl(
nullptr);
902 bool bTextWysiwyg =
SC_MOD()->GetInputOptions().GetTextWysiwyg();
905 if ( bTextWysiwyg || bInPlace )
906 nCtrl |= EEControlBits::FORMAT100;
945 mpEditEngine->SetReplaceLeadingSingleQuotationMark(
false );
959 nCntrl |= EEControlBits::AUTOCORRECT;
961 if ( nCntrl != nOld )
987 nCntrl |= EEControlBits::ONLINESPELLING;
994 nCntrl |= EEControlBits::AUTOCORRECT;
995 if ( nCntrl != nOld )
1006 if ( bOnlineSpell ) {
1042 const sal_uInt32 nListCount = pFuncList->
GetCount();
1052 for (sal_uInt16
i = 0;
i < nMRUCount;
i++)
1054 const sal_uInt16
nId = pMRUList[
i];
1055 for (sal_uInt32 j = 0; j < nListCount; j++)
1060 const OUString aEntry = *pDesc->
mxFuncName + aParenthesesReplacement;;
1075 for (
auto iter = aStrSet.begin(); iter != aStrSet.end(); ++iter)
1079 for (sal_Int32 j = 0; j < aFuncName.getLength(); j++)
1088 if (rEvent.GetId() == VclEventId::ObjectDying || rEvent.GetId() == VclEventId::WindowHide
1089 || rEvent.GetId() == VclEventId::WindowLoseFocus || rEvent.GetId() == VclEventId::ControlLoseFocus)
1095 if (rEvent.GetId() == VclEventId::ObjectDying || rEvent.GetId() == VclEventId::WindowHide
1096 || rEvent.GetId() == VclEventId::WindowLoseFocus || rEvent.GetId() == VclEventId::ControlLoseFocus)
1126bool lcl_hasSingleToken(std::u16string_view s,
sal_Unicode c)
1128 return !s.empty() && s.find(c) == std::u16string_view::npos;
1147 bool bFound =
false;
1152 if( nLeftParentPos != -1 )
1154 sal_Int32 nNextFStart =
aHelper.GetFunctionStart( rSelText, nLeftParentPos,
true);
1156 ::std::vector< OUString> aArgs;
1157 if(
aHelper.GetNextFunc( rSelText,
false, nNextFStart,
nullptr, &ppFDesc, &aArgs ) )
1161 sal_Int32 nArgPos =
aHelper.GetArgStart( rSelText, nNextFStart, 0 );
1165 ScTypedCaseStrSet::const_iterator it =
1170 sal_uInt16 nActive = 0;
1171 for( sal_uInt16
i=0;
i < nArgs;
i++ )
1173 sal_Int32
nLength = aArgs[
i].getLength();
1174 if( nArgPos <= rSelText.getLength()-1 )
1183 sal_Int32 nStartPosition = 0;
1184 sal_Int32 nEndPosition = 0;
1186 if( lcl_hasSingleToken(aNew, cSep) )
1188 for (sal_Int32
i = 0;
i < aNew.getLength(); ++
i)
1193 nStartPosition =
i+1;
1197 else if( lcl_hasSingleToken(aNew, cSheetSep) )
1200 for (sal_Int32
i = 0;
i < aNew.getLength(); ++
i)
1205 nStartPosition =
i+1;
1207 else if( cNext == cSep )
1215 nStartPosition = nEndPosition+1;
1222 for (sal_Int32
i = 0;
i < aNew.getLength(); ++
i)
1227 nStartPosition =
i+1;
1229 else if( cNext == cSep )
1237 nStartPosition = nEndPosition+1;
1239 else if( cNext == cSheetSep )
1246 if (nStartPosition > 0)
1249 sal_Int16 nVarArgsSet = 0;
1260 if ( nVarArgsSet > 0 && nActive > nArgs )
1261 nActive = nArgs - (nActive - nArgs) % nVarArgsSet;
1262 aNew = OUString::Concat(aNew.subView(0, nStartPosition)) +
1264 aNew.subView(nStartPosition) +
1308 if ( aParagraph.getLength() < aSel.
nEndPos )
1313 OUString aSelText( aParagraph.copy( 0, aSel.
nEndPos ));
1334 aPos =
pInputWin->GetCursorScreenPixelPos();
1345 QuickHelpFlags const nAlign = QuickHelpFlags::Left|QuickHelpFlags::Bottom;
1362 aPos =
pInputWin->GetCursorScreenPixelPos(
true);
1369 Point aLogicPos = pCur->GetPos();
1370 aLogicPos.
AdjustY(pCur->GetHeight() );
1377 QuickHelpFlags const nAlign = QuickHelpFlags::Left | QuickHelpFlags::Top | QuickHelpFlags::NoEvadePointer;
1384 if ( aStart.isEmpty() )
1388 sal_Int32
nPos = aStart.getLength() - 1;
1391 ::std::set< sal_Unicode >::const_iterator
p =
maFormulaChar.find( c );
1395 ::std::vector<sal_Unicode> aTemp { c };
1396 for(sal_Int32
i =
nPos - 1;
i >= 0; --
i)
1404 aTemp.push_back( c );
1407 ::std::vector<sal_Unicode>::reverse_iterator rIt = aTemp.rbegin();
1408 aResult = OUString( *rIt++ );
1409 while ( rIt != aTemp.rend() )
1410 aResult += OUStringChar( *rIt++ );
1417 OString escapeJSON(
const OUString &aStr)
1419 OUString aEscaped =
aStr;
1420 aEscaped = aEscaped.replaceAll(
"\n",
" ");
1421 aEscaped = aEscaped.replaceAll(
"\"",
"'");
1437 OUString aFuncNameStr;
1438 OUString aDescFuncNameStr;
1439 OStringBuffer aPayload(
"[ ");
1440 for (
const OUString& rFunc : rFuncStrVec)
1444 aFuncNameStr = rFunc.copy(0, rFunc.getLength()-1);
1448 aFuncNameStr = rFunc;
1452 aDescFuncNameStr = aFuncNameStr +
"()";
1453 sal_Int32 nNextFStart = 0;
1455 ::std::vector< OUString > aArgs;
1456 OUString eqPlusFuncName =
"=" + aDescFuncNameStr;
1457 if (
aHelper.GetNextFunc( eqPlusFuncName,
false, nNextFStart,
nullptr, &ppFDesc, &aArgs ) )
1463 + OString::number(
static_cast<sal_Int64
>(nCurIndex))
1468 "\"description\": \""
1474 if (nCurIndex == nSize)
1477 sal_Int32 nLen = aPayload.getLength();
1478 aPayload[nLen - 2] =
' ';
1479 aPayload[nLen - 1] =
']';
1481 OString s = aPayload.makeStringAndClear();
1488 OUStringBuffer aTipStr;
1489 OUString aFuncNameStr;
1490 OUString aDescFuncNameStr;
1491 ::std::vector<OUString>::const_iterator itStr = rFuncStrVec.begin();
1492 sal_Int32 nMaxFindNumber = 3;
1493 sal_Int32 nRemainFindNumber = nMaxFindNumber;
1494 for ( ; itStr != rFuncStrVec.end(); ++itStr )
1496 const OUString& rFunc = *itStr;
1499 aFuncNameStr = rFunc.copy(0, rFunc.getLength()-1);
1503 aFuncNameStr = rFunc;
1505 if ( itStr == rFuncStrVec.begin() )
1508 aDescFuncNameStr = aFuncNameStr +
"()";
1512 aTipStr.append(
", ");
1514 aTipStr.append(aFuncNameStr);
1515 if ( itStr == rFuncStrVec.begin() )
1516 aTipStr.append(
"]");
1517 if ( --nRemainFindNumber <= 0 )
1520 sal_Int32 nRemainNumber = rFuncStrVec.size() - nMaxFindNumber;
1521 if ( nRemainFindNumber == 0 && nRemainNumber > 0 )
1523 OUString aMessage(
ScResId( STR_FUNCTIONS_FOUND ) );
1524 aMessage = aMessage.replaceFirst(
"%2", OUString::number(nRemainNumber));
1525 aMessage = aMessage.replaceFirst(
"%1", aTipStr);
1529 sal_Int32 nNextFStart = 0;
1531 ::std::vector< OUString > aArgs;
1532 OUString eqPlusFuncName =
"=" + aDescFuncNameStr;
1533 if (
aHelper.GetNextFunc( eqPlusFuncName,
false, nNextFStart,
nullptr, &ppFDesc, &aArgs ) )
1540 ShowTip( aTipStr.makeStringAndClear() );
1558 if ( aSel.
nEndPos > aParagraph.getLength() )
1561 if ( aParagraph.getLength() > aSel.
nEndPos &&
1563 aParagraph[ aSel.
nEndPos ] ==
'_' ||
1564 aParagraph[ aSel.
nEndPos ] ==
'.' ||
1565 aParagraph[ aSel.
nEndPos ] ==
'$' ) )
1572 OUString aSelText( aParagraph.copy( 0, aSel.
nEndPos ));
1579 ::std::vector<OUString> aNewVec;
1586 for (
int n = 0;
n < aSelText.getLength();
n++ )
1590 if (aSelText[
n] == cBetweenQuotes)
1593 else if ( aSelText[
n ] ==
'"' )
1594 cBetweenQuotes =
'"';
1595 else if ( aSelText[
n ] ==
'\'' )
1596 cBetweenQuotes =
'\'';
1598 if ( cBetweenQuotes )
1617 ::std::vector<OUString> aNewVec;
1633void completeFunction(
EditView* pView,
const OUString& rInsert,
bool& rParInserted )
1640 bool bNoInitialLetter =
false;
1653 bNoInitialLetter =
true;
1660 bNoInitialLetter =
true;
1667 if(!bNoInitialLetter)
1669 const sal_Int32 nMinLen = std::max(aSel.
nEndPos - aSel.
nStartPos, sal_Int32(1));
1681 for (sal_Int32 n = aAll.getLength(); n >= nMinLen && aMatch.isEmpty(); --n)
1683 const OUString aTest = aAll.copy(aAll.getLength() - n);
1692 OUString aInsStr = rInsert;
1693 sal_Int32 nInsLen = aInsStr.getLength();
1694 bool bDoParen = ( nInsLen > 1 && aInsStr[nInsLen-2] ==
'('
1695 && aInsStr[nInsLen-1] ==
')' );
1703 if (aWordSel.
nEndPos < aOld.getLength())
1709 aInsStr = aInsStr.copy( 0, nInsLen - 2 );
1723 rParInserted =
true;
1736 aInsert = OUString::Concat(aInsert.subView( 0, aInsert.getLength()-1)) +
"()";
1737 bool bParInserted =
false;
1740 completeFunction(
pTopView, aInsert, bParInserted );
1741 completeFunction(
pTableView, aInsert, bParInserted );
1779 aFormula = pEditEngine->
GetText(0);
1783 bEdit = aFormula.getLength() > 1 && (aFormula[0] ==
'=' || aFormula[0] ==
'+' || aFormula[0] ==
'-');
1788 OUString aNewFormula(
'=');
1789 if ( aFormula.startsWith(
"=") )
1790 aNewFormula = aFormula;
1798 ScTypedCaseStrSet::const_iterator aPos = findText(*
pFormulaData,
pFormulaData->begin(), rFunctionName, aNew,
false);
1810 const OUString& rText,
1813 OUString aSelection;
1818 OUString::number(rSelection.
nStartPara) +
";" + OUString::number(rSelection.
nEndPara);
1822 aSelection = OUString::number(rSelection.
nStartPos) +
";" + OUString::number(rSelection.
nEndPos) +
";" +
1823 OUString::number(rSelection.
nStartPara) +
";" + OUString::number(rSelection.
nEndPara);
1826 std::unique_ptr<jsdialog::ActionDataMap>
pData = std::make_unique<jsdialog::ActionDataMap>();
1827 (*pData)[
"action_type"] =
"setText";
1828 (*pData)[
"text"] = rText;
1829 (*pData)[
"selection"] = aSelection;
1831 sal_uInt64 nCurrentShellId =
reinterpret_cast<sal_uInt64
>(
pActiveViewSh);
1832 OUString sWindowId = OUString::number(nCurrentShellId) +
"formulabar";
1842 if(rFormula.isEmpty())
1845 std::optional<ScSimpleFormulaCalculator> pCalc( std::in_place, rDoc, rPos, rFormula,
false );
1849 bool bColRowName = pCalc->HasColRowName();
1853 if ( pCalc->GetCode()->GetCodeLen() <= 1 )
1856 OUString aBraced =
"(" + rFormula +
")";
1857 pCalc.emplace( rDoc, rPos, aBraced,
false );
1860 bColRowName =
false;
1864 if ( nErrCode != FormulaError::NONE )
1869 if ( pCalc->IsValue() )
1871 double n = pCalc->GetValue();
1879 OUString
aStr = pCalc->GetString().getString();
1883 const Color* pColor;
1888 aValue =
"\"" + aValue +
"\"";
1906 if (aPart.isEmpty())
1912 if (!aValue.isEmpty())
1928 sal_uInt32
const nTipLen2(sal::static_int_cast<sal_uInt32>(nTipLen));
1929 if ( nTipLen && ( nTipLen < 3 ||
aManualTip.subView( nTipLen2-3 ) !=
u"..." ) )
1954 if ( aInsert[0] ==
'"' )
1955 aInsert = aInsert.copy(1);
1956 sal_Int32 nInsLen = aInsert.getLength();
1957 if ( aInsert.endsWith(
"\"") )
1958 aInsert = aInsert.copy( 0, nInsLen-1 );
2002 if (
nPos < aFormula.getLength() && aFormula[
nPos] ==
')' )
2029 OSL_ENSURE(
nAutoPar,
"SkipClosingPar: count is wrong");
2047 std::vector<ScTypedStrData>
aEntries;
2071 if ( aSel.
nEndPos != nParLen )
2075 if (aText.isEmpty())
2078 std::vector< OUString > aResultVec;
2080 sal_Int32 nLongestPrefixLen = 0;
2085 if (nLongestPrefixLen <= 0 || aResultVec.empty())
2088 if (aResultVec.size() > 1)
2095 aNew = aResultVec[0].copy(0, nLongestPrefixLen);
2099 aNew = aResultVec[0];
2110 sal_Int32 nEdLen =
mpEditEngine->GetTextLen() + nParCnt - 1;
2111 OUString aIns = aNew.copy(nEdLen);
2149 if ( aSel.
nEndPos == nParLen && aText.getLength() ==
aAutoSearch.getLength() + nSelLen )
2152 ScTypedCaseStrSet::const_iterator itNew =
2163 OUString aIns = aNew.copy(
aAutoSearch.getLength());
2200 bool bFound =
false;
2212 if ( c ==
'(' || c ==
')' )
2275 SC_MOD()->SetRefInputHdl(
nullptr);
2285 OSL_FAIL(
"pActiveViewSh is gone");
2289 if (
SC_MOD()->GetInputOptions().GetTextWysiwyg() )
2314 if ( pWin==pShellWin )
2375 case SvxCellHorJustify::Standard:
2377 bool bNumber =
false;
2379 bNumber = (cTyped>=
'0' && cTyped<=
'9');
2385 eSvxAdjust = bNumber ? SvxAdjust::Right : SvxAdjust::Left;
2388 case SvxCellHorJustify::Block:
2389 eSvxAdjust = SvxAdjust::Block;
2391 case SvxCellHorJustify::Center:
2392 eSvxAdjust = SvxAdjust::Center;
2394 case SvxCellHorJustify::Right:
2395 eSvxAdjust = SvxAdjust::Right;
2398 eSvxAdjust = SvxAdjust::Left;
2405 if ( bAsianVertical )
2408 eSvxAdjust = SvxAdjust::Left;
2455 bool bNewTable =
false;
2480 bool bStartInputMode =
true;
2508 bStartInputMode =
false;
2512 if (bStartInputMode)
2528 sal_uInt32 nFormat = pItem->GetValue();
2603 if (
aStr.startsWith(
"{=") &&
aStr.endsWith(
"}") )
2613 if (
SC_MOD()->GetAppOptions().GetAutoComplete() )
2671 bool bSelectionForTopView =
false;
2673 bSelectionForTopView =
true;
2674 bool bSelectionForTableView =
false;
2676 bSelectionForTableView =
true;
2677 if (bSelectionForTopView || bSelectionForTableView)
2680 if (bSelectionForTopView)
2682 if (bSelectionForTableView)
2697 mpEditEngine && mpEditEngine->IsUpdateLayout() && pInputWin )
2703 pInputWin->SetTextString(aText);
2717 return StartTable( cTyped, bFromCommand,
false,
nullptr );
2786 bool bNeedGrow = ( rViewData.
GetEditAdjust() != SvxAdjust::Left );
2846 pSfxApp->Broadcast(
SfxHint( SfxHintId::ScRefModeChanged ) );
2868 pSfxApp->Broadcast(
SfxHint( SfxHintId::ScRefModeChanged ) );
2869 SC_MOD()->SetRefInputHdl(
nullptr);
2886 bool bFound =
false;
2889 while ( pOneFrame && !bFound )
2891 if ( pOneFrame == &rRefFrame )
2906 OSL_FAIL(
"ViewFrame for reference input is not here anymore");
2934 rBindings.
Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
2937 rBindings.
Invalidate( SID_ATTR_CHAR_WEIGHT );
2938 rBindings.
Invalidate( SID_ATTR_CHAR_POSTURE );
2939 rBindings.
Invalidate( SID_ATTR_CHAR_UNDERLINE );
2940 rBindings.
Invalidate( SID_ATTR_CHAR_OVERLINE );
2942 rBindings.
Invalidate( SID_ULINE_VAL_SINGLE );
2943 rBindings.
Invalidate( SID_ULINE_VAL_DOUBLE );
2944 rBindings.
Invalidate( SID_ULINE_VAL_DOTTED );
2946 rBindings.
Invalidate( SID_HYPERLINK_GETLINK );
2948 rBindings.
Invalidate( SID_ATTR_CHAR_KERNING );
2949 rBindings.
Invalidate( SID_SET_SUPER_SCRIPT );
2951 rBindings.
Invalidate( SID_ATTR_CHAR_STRIKEOUT );
2952 rBindings.
Invalidate( SID_ATTR_CHAR_SHADOWED );
2962 if (
eMode == eNewMode )
3005 sal_Int32 nLen =
mpEditEngine->GetText(nPara).getLength();
3017 SetSelection(
ESelection( nPara, nLen, nPara, nLen ) );
3035 if (eNewMode != eOldMode)
3046 size_t nLen = aString.size();
3047 for (
size_t i=0;
i<nLen;
i++)
3050 if ( c < '0' || c >
'9' )
3087 std::unique_ptr<EditTextObject>
pObject;
3088 std::unique_ptr<ScPatternAttr> pCellAttrs;
3089 bool bForget =
false;
3092 OUString aPreAutoCorrectString(aString);
3146 pSelEngine->ReleaseMouse();
3149 if (bBeforeSavingInLOK)
3179 std::vector<editeng::MisspellRanges> aMisspellRanges;
3181 const bool bUpdateLayout =
mpEditEngine->SetUpdateLayout(
true );
3201 bSpellErrors =
false;
3218 bool bUniformAttribs =
true;
3220 for (sal_Int32 nPara = 1; nPara < nParCnt; ++nPara)
3223 if (!(aPara1Attribs == aPara2Attribs))
3226 bUniformAttribs =
false;
3238 std::optional<SfxItemSet> pCommonAttrs;
3242 if ( eState == SfxItemState::SET &&
3247 if ( !pCommonAttrs )
3248 pCommonAttrs.emplace(
mpEditEngine->GetEmptyItemSet() );
3249 pCommonAttrs->Put( *pItem );
3256 pCellAttrs = std::make_unique<ScPatternAttr>(rDoc.
GetPool());
3257 pCellAttrs->GetFromEditItemSet( &*pCommonAttrs );
3264 bool bAttrib =
false;
3274 if (eState == SfxItemState::DONTCARE)
3276 else if (eState == SfxItemState::SET)
3290 if ( eFieldState == SfxItemState::DONTCARE || eFieldState == SfxItemState::SET )
3295 if ( eConvState == SfxItemState::DONTCARE || eConvState == SfxItemState::SET )
3313 else if (
SC_MOD()->GetAppOptions().GetAutoComplete())
3337 pSfxApp->Broadcast(
SfxHint( SfxHintId::ScRefModeChanged ) );
3338 SC_MOD()->SetRefInputHdl(
nullptr);
3360 bool bInsertPreCorrectedString =
true;
3362 if (aString.startsWith(
"="))
3367 bInsertPreCorrectedString =
false;
3369 if( aReplace.isEmpty() )
3371 if( aReplace !=
"\"" )
3372 aString = aString.replaceAll( aReplace,
"\"" );
3375 if( aReplace.isEmpty() )
3377 if( aReplace !=
"\"" )
3378 aString = aString.replaceAll( aReplace,
"\"" );
3381 if( aReplace.isEmpty() )
3383 if( aReplace !=
"'" )
3384 aString = aString.replaceAll( aReplace,
"'" );
3387 if( aReplace.isEmpty() )
3389 if( aReplace !=
"'" )
3390 aString = aString.replaceAll( aReplace,
"'");
3394 pSfxApp->Broadcast(
SfxHint( SfxHintId::ScKillEditViewNoPaint ) );
3400 sal_uInt16
nId = FID_INPUTLINE_ENTER;
3402 nId = FID_INPUTLINE_BLOCK;
3404 nId = FID_INPUTLINE_MATRIX;
3409 if ( bInsertPreCorrectedString && aString != aPreAutoCorrectString )
3413 aPreAutoCorrectString,
pObject.get());
3421 if ( !aMisspellRanges.empty() )
3424 aArgs[0] = &aItemCorrected;
3431 pSfxApp->Broadcast(
SfxHint( SfxHintId::ScKillEditView ) );
3433 if ( bOldMod && pExecuteSh && pCellAttrs && !bForget )
3478 SC_MOD()->SetRefInputHdl(
nullptr);
3512 std::vector<ReferenceMark> aReferenceMarks;
3537 sal_Int32
nPos = aText.getLength() - 1;
3540 cLastChar = aText[
nPos];
3541 if (cLastChar !=
' ')
3546 bool bAppendSeparator = (cLastChar !=
'(' && cLastChar != cSep && cLastChar !=
'=');
3547 if (bAppendSeparator)
3565 bool bOtherDoc = (pThisDoc != &rDoc);
3623 switch(aAddrDetails.
eConv)
3628 aRefStr =
"[\'" + aFileName +
"']";
3632 aRefStr =
"\'" + aFileName +
"'#";
3646 bool bLOKShowSelect =
true;
3648 bLOKShowSelect =
false;
3667 OSL_FAIL(
"InsertFunction, not during input mode");
3677 OUString aText = rFuncName;
3714 OSL_FAIL(
"ClearText, not during input mode");
3742 bool bShift = aCode.
IsShift();
3743 bool bControl = aCode.
IsMod1();
3744 bool bAlt = aCode.
IsMod2();
3745 sal_uInt16 nCode = aCode.
GetCode();
3748 if (bAlt && !bControl && nCode !=
KEY_RETURN)
3768 if (!bControl && nCode ==
KEY_TAB)
3782 bool bDoEnter =
false;
3789 if ((
pInputWin && bInputLine && bControl != bShift) || (!bInputLine && bControl && !bShift))
3806 if ( bShift && bControl )
3819 if (bControl && !bAlt)
3866 bool bInsKey = ( nCode ==
KEY_INSERT && !nModi );
3905 if ( !aStrLoP.isEmpty() )
3914 if ( !aStrLoP.isEmpty() )
3960 if ( bUsed &&
SC_MOD()->GetAppOptions().GetAutoComplete() )
3969 if ( nChar && nChar != 8 && nChar != 127 &&
3970 KeyFuncType::CUT != eFunc)
3981 if ( bUsed && nChar ==
'(' )
4002 bool bSetModified = !bCursorKey;
4072 if ( rCEvt.
GetCommand() == CommandEventId::CursorPos )
4088 else if ( rCEvt.
GetCommand() == CommandEventId::QueryCharPosition )
4147 if ( rCEvt.
GetCommand() == CommandEventId::EndExtTextInput )
4184 if (bRepeat && !bForce)
4218 bool bIgnore =
false;
4236 bool bTxtMod =
false;
4244 else if ( bHadObject )
4251 if ( bTxtMod || bForce )
4295 bool bSheetLocal =
false;
4302 GetRangeAtBlock(
ScRange( rSPos, rEPos ), aPosStr, &bSheetLocal);
4304 if ( aPosStr.isEmpty() )
4309 if ( rSPos != rEPos )
4318 else if (bSheetLocal)
4328 bool bIsSuppressed =
pInputWin->IsAccessibilityEventsSuppressed(
false);
4329 pInputWin->SetAccessibilityEventsSuppressed(
true);
4331 pInputWin->SetAccessibilityEventsSuppressed(bIsSuppressed);
4347 if ( nCntrl & EEControlBits::ONLINESPELLING )
4348 mpEditEngine->SetControlWord( nCntrl & ~EEControlBits::ONLINESPELLING );
4407 if ( !(
nullptr == pLastState ||
SC_MOD()->IsFormulaMode() ||
SC_MOD()->IsRefDialogOpen()))
4412 if ( pViewFrm && pViewFrm->
GetChildWindow( SID_OPENDLG_FUNCTION ) )
4416 pInputWin->EnableButtons(
false );
4417 pInputWin->Disable();
4420 else if ( !bFormulaMode )
4422 bInOwnChange =
true;
4424 pActiveViewSh =
nullptr;
4425 mpEditEngine->SetTextCurrentDefaults( OUString() );
4428 pInputWin->SetPosString( OUString() );
4429 pInputWin->SetTextString( OUString() );
4430 pInputWin->Disable();
4433 bInOwnChange =
false;
4462 bool bFromTopNotify = ( bFromNotify && pView ==
pTopView );
4512 if ( eFieldState == SfxItemState::DONTCARE || eFieldState == SfxItemState::SET )
4515 std::unique_ptr<EditTextObject> pObj =
mpEditEngine->CreateTextObject();
4520 for (sal_Int32
i=0;
i<nParCnt;
i++)
4524 while ( nParCnt > 1 )
4526 sal_Int32 nLen = rDestEngine.
GetTextLen( 0 );
4576 if ( nStart <= nEnd )
4602 sal_Int32 nNewLen =
aStr.size();
4647 : aCursorPos ( rCurPos ),
4648 aStartPos ( rStartPos ),
4649 aEndPos ( rEndPos ),
4650 aString (
std::move( _aString )),
void applyStartToEndFlags(ScRefFlags &target, const ScRefFlags source)
void PutInOrder(T &nStart, T &nEnd)
SfxApplication * SfxGetpApp()
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
OUString uppercase(const OUString &rStr, sal_Int32 nPos, sal_Int32 nCount) const
bool isLetterNumeric(const OUString &rStr, sal_Int32 nPos) const
bool IsTransparent() const
CommandEventId GetCommand() const
void QuickFormatDoc(bool bFull=false)
OUString GetText(LineEnd eEnd=LINEEND_LF) const
void SetText(const OUString &rStr)
void RemoveCharAttribs(sal_Int32 nPara, sal_uInt16 nWhich=0, bool bRemoveFeatures=false)
sal_Int32 GetParagraphCount() const
sal_Int32 GetTextLen() const
static rtl::Reference< SfxItemPool > CreatePool()
static bool DoesKeyMoveCursor(const KeyEvent &rKeyEvent)
void QuickInsertText(const OUString &rText, const ESelection &rSel)
static bool DoesKeyChangeText(const KeyEvent &rKeyEvent)
bool DeleteSurroundingText(const Selection &rRange)
void SetControlWord(EVControlBits nWord)
OUString GetSurroundingText() const
void RemoveCharAttribs(sal_Int32 nPara, sal_uInt16 nWhich)
ESelection GetSelection() const
void SelectCurrentWord(sal_Int16 nWordType=css::i18n::WordType::ANYWORD_IGNOREWHITESPACES)
void RegisterViewShell(OutlinerViewShell *pViewShell)
Selection GetSurroundingTextSelection() const
bool HasSelection() const
void SetSelection(const ESelection &rNewSel)
void InsertText(const OUString &rNew, bool bSelect=false, bool bLOKShowSelect=true)
bool PostKeyEvent(const KeyEvent &rKeyEvent, vcl::Window const *pFrameWin=nullptr)
sal_Int32 GetPosWithField(sal_Int32 nPara, sal_Int32 nPos) const
void ShowCursor(bool bGotoCursor=true, bool bForceVisCursor=true, bool bActivate=false)
vcl::Cursor * GetCursor() const
vcl::Window * GetWindow() const
EVControlBits GetControlWord() const
void CompleteAutoCorrect(vcl::Window const *pFrameWin=nullptr)
bool Command(const CommandEvent &rCEvt)
EditEngine * GetEditEngine() const
OUString GetSelected() const
bool SetEditEngineUpdateLayout(bool bUpdate)
static void * ShowPopover(vcl::Window *pParent, const tools::Rectangle &rScreenRect, const OUString &rText, QuickHelpFlags nStyle)
static void HidePopover(vcl::Window const *pParent, void *nId)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
sal_Unicode GetCharCode() const
const vcl::KeyCode & GetKeyCode() const
static css::uno::Reference< css::linguistic2::XSpellChecker1 > GetSpellChecker()
static css::uno::Reference< css::linguistic2::XHyphenator > GetHyphenator()
const OUString & getDoubleQuotationMarkStart() const
const OUString & getQuotationMarkStart() const
const OUString & getDoubleQuotationMarkEnd() const
const OUString & getQuotationMarkEnd() const
constexpr tools::Long Y() const
tools::Long AdjustY(tools::Long nVertMove)
constexpr tools::Long X() const
void Set(SCCOL nCol, SCROW nRow, SCTAB nTab)
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
sal_uInt16 GetLRUFuncListCount() const
sal_uInt16 * GetLRUFuncList() const
bool GetAutoComplete() const
void DataPilotInput(const ScAddress &rPos, const OUString &rString)
virtual void SetModified(bool=true) override
const ScDocument & GetDocument() const
void PostEditView(ScEditEngineDefaulter *pEditEngine, const ScAddress &rCursorPos)
SC_DLLPUBLIC SfxItemPool * GetEnginePool() const
SC_DLLPUBLIC bool ExtendMerge(SCCOL nStartCol, SCROW nStartRow, SCCOL &rEndCol, SCROW &rEndRow, SCTAB nTab, bool bRefresh=false)
EEHorizontalTextDirection GetEditTextDirection(SCTAB nTab) const
SC_DLLPUBLIC SCCOL MaxCol() const
SC_DLLPUBLIC const ScValidationData * GetValidationEntry(sal_uInt32 nIndex) const
SC_DLLPUBLIC ScDocumentPool * GetPool()
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
void FillInfo(ScTableInfo &rTabInfo, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCTAB nTab, double fColScale, double fRowScale, bool bPageMode, bool bFormulaMode, const ScMarkData *pMarkData=nullptr)
SC_DLLPUBLIC SfxItemPool * GetEditPool() const
void GetDataEntries(SCCOL nCol, SCROW nRow, SCTAB nTab, std::vector< ScTypedStrData > &rStrings, bool bValidation=false)
Entries for selection list listbox (no numbers/formulas)
SC_DLLPUBLIC ScDPObject * GetDPAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab) const
SfxObjectShell * GetDocumentShell() const
bool ValidCol(SCCOL nCol) const
void ApplyAsianEditSettings(ScEditEngineDefaulter &rEngine)
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
SC_DLLPUBLIC CellType GetCellType(SCCOL nCol, SCROW nRow, SCTAB nTab) const
SC_DLLPUBLIC bool IsLayoutRTL(SCTAB nTab) const
SfxPrinter * GetPrinter(bool bCreateIfNotExist=true)
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
SC_DLLPUBLIC sal_Unicode GetSheetSeparator() const
Obtain the sheet separator corresponding to the document's grammar.
SC_DLLPUBLIC const ScPatternAttr * GetPattern(SCCOL nCol, SCROW nRow, SCTAB nTab) const
SC_DLLPUBLIC const ScDocOptions & GetDocOptions() const
void GetFormulaEntries(ScTypedCaseStrSet &rStrings)
Entries for Formula auto input.
void SetTextCurrentDefaults(const EditTextObject &rTextObject)
SetText and apply defaults already set.
void SetDefaultItem(const SfxPoolItem &rItem)
Set the item in the default ItemSet which is created if it doesn't exist yet.
static OUString ModifyDelimiters(const OUString &rOld)
static OUString GetMultilineString(const EditEngine &rEngine)
Retrieves string with paragraphs delimited by new lines (' ').
void TestSelection(const ScDocument &rDoc, const ScMarkData &rMark)
TranslateId GetMessageId() const
void TestSelectedBlock(const ScDocument &rDoc, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, const ScMarkData &rMark)
Stores and generates human readable descriptions for spreadsheet-functions, e.g. functions used in fo...
sal_uInt16 nFIndex
Unique function index.
std::optional< OUString > mxFuncName
Function name.
List of spreadsheet functions.
const ScFuncDesc * GetFunction(sal_uInt32 nIndex) const
sal_uInt32 GetCount() const
static const sal_Unicode * UnicodeStrChr(const sal_Unicode *pStr, sal_Unicode c)
strchr() functionality on unicode, as long as we need it for FormulaToken etc.
static LanguageType GetEditDefaultLanguage()
static SC_DLLPUBLIC ::utl::TransliterationWrapper & GetTransliteration()
static const InputHandlerFunctionNames & GetInputHandlerFunctionNames()
static SC_DLLPUBLIC LanguageType eLnge
static bool EETextObjEqual(const EditTextObject *pObj1, const EditTextObject *pObj2)
static ScFunctionList * GetStarCalcFunctionList()
static SC_DLLPUBLIC const LocaleDataWrapper & getLocaleData()
static OUString GetErrorString(FormulaError nErrNumber)
static ScFunctionMgr * GetStarCalcFunctionMgr()
static SC_DLLPUBLIC const CharClass & getCharClass()
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
bool IsMultiMarked() const
svtools::ColorConfig & GetColorConfig()
void SetRefInputHdl(ScInputHandler *pNew)
SC_DLLPUBLIC const ScAppOptions & GetAppOptions()
static LanguageType GetOptDigitLanguage()
ReferenceMark FillReferenceMark(SCCOL nRefStartX, SCROW nRefStartY, SCCOL nRefEndX, SCROW nRefEndY, const Color &rColor)
bool IsSymbolFont() const
If font is an old symbol font StarBats/StarMath with text encoding RTL_TEXTENC_SYMBOL.
sal_uInt32 GetNumberFormat(SvNumberFormatter *) const
SfxItemSet & GetItemSet()
const SfxPoolItem & GetItem(sal_uInt16 nWhichP) const
void FillEditItemSet(SfxItemSet *pEditSet, const SfxItemSet *pCondSet=nullptr) const
Converts all Calc items contained in the own item set to edit engine items and puts them into pEditSe...
static OUString createLocalRangeName(std::u16string_view rName, std::u16string_view rTableName)
ScRangeFindData & GetObject(size_t nIndex)
const OUString & GetDocName() const
OUString Format(const ScDocument &rDocument, ScRefFlags nFlags=ScRefFlags::ZERO, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, bool bFullAddressNotation=false) const
Returns string with formatted cell range from aStart to aEnd, according to provided address conventio...
ScRefFlags ParseAny(const OUString &, const ScDocument &, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1)
ScRefFlags Parse(const OUString &, const ScDocument &, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, ScAddress::ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, const OUString *pErrRef=nullptr)
ScFormEditData * GetFormEditData()
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
void ErrorMessage(TranslateId pGlobStrId)
void FindNextUnprot(bool bShift, bool bInSelection)
vcl::Window * GetFrameWin() const
ScViewData & GetViewData()
ScGridWindow * GetActiveWin()
vcl::Window * GetWindowByPos(ScSplitPos ePos) const
void MoveCursorEnter(bool bShift)
SC_DLLPUBLIC void SetTabNo(SCTAB nTab, bool bNew=false, bool bExtendSelection=false, bool bSameTabButMoved=false)
StringType GetStringType() const
const OUString & GetString() const
Point GetPrintTwipsPos(SCCOL nCol, SCROW nRow) const
returns the position (top-left corner) of the requested cell in print twips coordinates.
void EditGrowX()
Extend the output area for the edit engine view in a horizontal direction as needed.
ScMarkData & GetMarkData()
const Fraction & GetZoomY() const
ScDocument & GetDocument() const
SCCOL GetRefStartX() const
void EditGrowY(bool bInitial=false)
Extend the output area for the edit engine view in a vertical direction as needed.
ScSplitPos GetEditActivePart() const
ScDocShell * GetDocShell() const
ScDBFunc * GetView() const
void SetEditAdjust(SvxAdjust eNewEditAdjust)
ScSplitPos GetActivePart() const
Point GetScrPos(SCCOL nWhereX, SCROW nWhereY, ScSplitPos eWhich, bool bAllowNeg=false, SCTAB nForTab=-1) const
SCTAB GetRefStartZ() const
void SetPasteMode(ScPasteFlags nFlags)
SCROW GetRefStartY() const
const Fraction & GetZoomX() const
SCTAB GetRefTabNo() const
SvxAdjust GetEditAdjust() const
void ApplySelectionPattern(const ScPatternAttr &rAttr, bool bCursorOnly=false)
bool AdjustBlockHeight(bool bPaint=true, ScMarkData *pMarkData=nullptr)
bool Execute(sal_uInt16 nSlot, const SfxPoolItem **pArgs=nullptr, SfxCallMode nCall=SfxCallMode::SLOT)
void Invalidate(sal_uInt16 nId)
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
const INetURLObject & GetURLObject() const
SfxMedium * GetMedium() const
OUString GetTitle(sal_uInt16 nMaxLen=0) const
SfxViewShell * GetViewShell() const
static SAL_WARN_UNUSED_RESULT SfxViewFrame * Current()
SfxBindings & GetBindings()
static SAL_WARN_UNUSED_RESULT SfxViewFrame * GetNext(const SfxViewFrame &rPrev, const SfxObjectShell *pDoc=nullptr, bool bOnlyVisible=true)
SfxChildWindow * GetChildWindow(sal_uInt16)
static SAL_WARN_UNUSED_RESULT SfxViewFrame * GetFirst(const SfxObjectShell *pDoc=nullptr, bool bOnlyVisible=true)
SfxFrame & GetFrame() const
bool isLOKMobilePhone() const
weld::Window * GetFrameWeld() const
virtual void libreOfficeKitViewCallback(int nType, const OString &pPayload) const override
SfxViewFrame & GetViewFrame() const
static SAL_WARN_UNUSED_RESULT SfxViewShell * Current()
bool GetHighContrastMode() const
SvxAutoCorrect * GetAutoCorrect()
static SvxAutoCorrCfg & Get()
sal_Unicode GetStartSingleQuote() const
sal_Unicode GetEndSingleQuote() const
sal_Unicode GetEndDoubleQuote() const
sal_Unicode GetStartDoubleQuote() const
bool isMatch(const OUString &rStr1, const OUString &rStr2) const
sal_uInt16 GetCode() const
sal_uInt16 GetModifier() const
KeyFuncType GetFunction() const
ScXMLEditAttributeMap::Entry const aEntries[]
#define EE_PARA_NOT_FOUND
constexpr TypedWhichId< SvxKerningItem > EE_CHAR_KERNING(EE_CHAR_START+12)
constexpr TypedWhichId< SvxFieldItem > EE_FEATURE_FIELD(EE_FEATURE_NOTCONV+1)
constexpr TypedWhichId< SvxAdjustItem > EE_PARA_JUST(EE_PARA_START+16)
constexpr TypedWhichId< SvxAutoKernItem > EE_CHAR_PAIRKERNING(EE_CHAR_START+11)
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE_CTL(EE_CHAR_START+16)
constexpr TypedWhichId< SvxWeightItem > EE_CHAR_WEIGHT(EE_CHAR_START+4)
constexpr TypedWhichId< SvxColorItem > EE_CHAR_COLOR(EE_CHAR_START+0)
constexpr sal_uInt16 EE_CHAR_START(EE_PARA_END+1)
constexpr sal_uInt16 EE_FEATURE_NOTCONV(EE_FEATURE_LINEBR+1)
constexpr TypedWhichId< SvxEscapementItem > EE_CHAR_ESCAPEMENT(EE_CHAR_START+10)
constexpr sal_uInt16 EE_CHAR_END(EE_CHAR_START+32)
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE_CJK(EE_CHAR_START+15)
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE(EE_CHAR_START+14)
constexpr TypedWhichId< SvXMLAttrContainerItem > EE_CHAR_XMLATTRIBS(EE_CHAR_START+28)
EmbeddedObjectRef * pObject
constexpr sal_Unicode cParenthesesReplacement
constexpr sal_uInt16 KEY_RETURN
constexpr sal_uInt16 KEY_F2
constexpr sal_uInt16 KEY_ESCAPE
constexpr sal_uInt16 KEY_TAB
constexpr sal_uInt16 KEY_RIGHT
constexpr sal_uInt16 KEY_DELETE
constexpr sal_uInt16 KEY_INSERT
constexpr sal_uInt16 KEY_BACKSPACE
TOOLS_DLLPUBLIC OString convertLineEnd(const OString &rIn, LineEnd eLineEnd)
#define LINK(Instance, Class, Member)
std::unique_ptr< sal_Int32[]> pData
constexpr OUStringLiteral aData
bool isCompatFlagSet(Compat flag)
VCL_DLLPUBLIC void SendAction(const OUString &nWindowId, const OUString &rWidget, std::unique_ptr< ActionDataMap > pData)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
css::uno::Reference< css::animations::XAnimationNode > Clone(const css::uno::Reference< css::animations::XAnimationNode > &xSourceNode, const SdPage *pSource=nullptr, const SdPage *pTarget=nullptr)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
OUString ScResId(TranslateId aId)
constexpr TypedWhichId< SfxBoolItem > ATTR_VERTICAL_ASIAN(137)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
constexpr TypedWhichId< SvxHorJustifyItem > ATTR_HOR_JUSTIFY(129)
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALUE_FORMAT(146)
constexpr TypedWhichId< ScVerticalStackCell > ATTR_STACKED(134)
constexpr TypedWhichId< ScHyphenateCell > ATTR_HYPHENATE(125)
constexpr TypedWhichId< ScLineBreakCell > ATTR_LINEBREAK(139)
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALIDDATA(153)
Describes reference mark to be drawn, position & size in TWIPs.
formula::FormulaGrammar::AddressConvention eConv
std::set< ScTypedStrData, ScTypedStrData::LessCaseSensitive > ScTypedCaseStrSet