52 #include <strings.hrc>
60 std::optional<OUString> aResult;
65 if( pCNd->IsTextNode() )
78 aResult = sText.copy(nStart, nLength);
105 m_nNode( rNd.GetIndex() ), m_nContent(nCnt), m_nLen(nL),
106 m_bIsWordDelim( bWDelim ), m_bIsAppend( false )
108 , m_nInsertFlags(nInsertFlags)
115 m_nNode( rNd.GetIndex() ), m_nContent(0), m_nLen(1),
116 m_bIsWordDelim( false ), m_bIsAppend( true )
136 (*maUndoText) += OUStringChar(cIns);
160 if( !rTable.
empty() )
166 SwIndex* pIdx = &pRedl->End()->nContent;
212 pPam->GetPoint()->nContent.Assign( pPam->GetContentNode(), 0 );
220 pPam->GetPoint()->nContent.Assign( pPam->GetContentNode(), 0 );
234 SwTextNode *
const pTextNode( pCNd->GetTextNode() );
280 pPam->GetPoint()->nNode = nNd;
281 pPam->GetPoint()->nContent.Assign(
282 pPam->GetPoint()->nNode.GetNode().GetContentNode(), nCnt );
296 pPam->GetPoint()->nNode =
m_nNode - 1;
318 pPam->GetPoint()->nNode =
m_nNode;
321 pPam->GetPoint()->nContent.Assign( pCNd,
m_nContent );
330 OSL_ENSURE( pTextNode,
"where is my textnode ?" );
338 SwPaM pam(*pPam->GetMark(),
nullptr);
349 m_nNode = pPam->GetMark()->nNode.GetIndex();
350 m_nContent = pPam->GetMark()->nContent.GetIndex();
390 switch( pCNd->GetNodeType() )
399 OUString
const aText( pCNd->GetTextNode()->GetText() );
416 nullptr,
nullptr, nullptr );
432 uno::Reference < embed::XEmbeddedObject > aNew = aCnt.
GetEmbeddedObject( aName );
436 static_cast<SwOLENode*>(pCNd)->GetAspect() ),
450 std::optional<OUString>
aStr;
491 Impl(
SwPaM const& rPam, OUString
const& rIns,
bool const bRegExp);
503 OUString
const& rIns,
bool const bRegExp)
525 OUString
const& sOld, OUString
const& sNew)
534 OUString aTmpStr =
SwResId(STR_START_QUOTE);
537 aTmpStr +=
SwResId(STR_END_QUOTE);
540 else if (1 == occurrences)
543 OUString aTmpStr =
SwResId(STR_START_QUOTE);
547 aTmpStr +=
SwResId(STR_END_QUOTE);
554 OUString aTmpStr =
SwResId(STR_START_QUOTE);
558 aTmpStr +=
SwResId(STR_END_QUOTE);
577 SwPaM const& rPam, OUString
const& rIns,
bool const bRegExp)
593 OSL_ENSURE( pNd,
"Dude, where's my TextNode?" );
600 sal_uLong nNewPos = pStt->nNode.GetIndex();
606 pNd->
GetText().getLength(), true );
618 pNext->
GetText().getLength(), true );
633 : pEnd->nContent.GetIndex();
644 OSL_ENSURE( pNd,
"Dude, where's my TextNode?" );
649 if ((1 == m_sIns.getLength()) && (1 == m_sOld.getLength()))
652 pACEWord->
CheckChar( aPos, m_sOld[ 0 ] );
659 rPam.GetPoint()->nNode = *pNd;
660 rPam.GetPoint()->nContent.Assign( pNd, m_nSttCnt );
662 rPam.GetPoint()->nNode = m_nSttNd - m_nOffset;
663 rPam.GetPoint()->nContent.Assign(rPam.GetContentNode(), m_nSttNd == m_nEndNd ? m_nEndCnt : pNd->
Len());
668 if (m_nSttNd != m_nEndNd)
670 assert(rPam.GetMark()->nContent == rPam.GetMark()->nNode.GetNode().GetTextNode()->Len());
671 rPam.GetPoint()->nNode = m_nEndNd - m_nOffset;
672 rPam.GetPoint()->nContent.Assign(rPam.GetContentNode(
true), m_nEndCnt);
676 pNd = pDoc->
GetNodes()[ m_nSttNd - m_nOffset ]->GetTextNode();
677 OSL_ENSURE( pNd,
"Dude, where's my TextNode?" );
685 pNd = pDoc->
GetNodes()[ m_nSttNd - m_nOffset ]->GetTextNode();
695 m_pHistory->TmpRollback( pDoc, m_nSetPos,
false );
699 if( m_nSetPos < m_pHistory->
Count() )
703 aHstr.
Move( 0, m_pHistory.get(), m_nSetPos );
704 m_pHistory->Rollback( pDoc );
705 m_pHistory->Move( 0, &aHstr );
709 m_pHistory->Rollback( pDoc );
715 rPam.GetPoint()->nNode = m_nSttNd;
716 rPam.GetPoint()->nContent = m_nSttCnt;
724 rPam.GetPoint()->nNode = m_nSttNd;
727 OSL_ENSURE( pNd,
"Dude, where's my TextNode?" );
728 rPam.GetPoint()->nContent.Assign( pNd, m_nSttCnt );
732 rPam.GetPoint()->nNode = m_nSttNd + 1;
733 pNd = rPam.GetPoint()->nNode.GetNode().
GetTextNode();
735 rPam.GetPoint()->nContent.Assign( pNd, m_nSelEnd );
739 auto xSave = std::make_unique<SwHistory>();
740 std::swap(m_pHistory, xSave);
743 m_nSetPos = m_pHistory->Count();
745 std::swap(xSave, m_pHistory);
746 m_pHistory->Move(0, xSave.get());
752 m_nSetPos = m_pHistory->Count();
790 std::optional<OUString> aOldNm =
maNm;
801 pGrfNd->
ReRead( OUString(), OUString(), pOldGrf.get() );
839 const OUString &rText,
840 const OUString& rSeparator,
841 const OUString& rNumberSeparator,
843 const sal_uInt16 nInitId,
844 const OUString& rCharacterStyle,
845 const bool bCpyBorder,
849 m_sSeparator( rSeparator ),
850 m_sNumberSeparator( rNumberSeparator ),
851 m_sCharacterStyle( rCharacterStyle ),
852 m_nFieldId( nInitId ),
856 m_bCopyBorder( bCpyBorder )
859 OBJECT.pUndoFly =
nullptr;
860 OBJECT.pUndoAttr =
nullptr;
871 delete NODE.pUndoInsNd;
880 OSL_ENSURE(
OBJECT.pUndoAttr &&
OBJECT.pUndoFly,
"Pointer not initialized" );
884 nullptr != (pFormat = static_cast<SwFrameFormat*>(
OBJECT.pUndoAttr->GetFormat( rDoc ))) &&
888 OBJECT.pUndoAttr->UndoImpl(rContext);
889 OBJECT.pUndoFly->UndoImpl(rContext);
896 else if(
NODE.nNode )
901 rDoc.
GetNodes()[
NODE.nNode-1]->StartOfSectionIndex()]->GetTableNode();
908 aPam.GetPoint()->nNode =
NODE.nNode + 1;
919 OSL_ENSURE(
OBJECT.pUndoAttr &&
OBJECT.pUndoFly,
"Pointer not initialized" );
923 nullptr != (pFormat = static_cast<SwFrameFormat*>(
OBJECT.pUndoAttr->GetFormat( rDoc ))) &&
927 OBJECT.pUndoFly->RedoImpl(rContext);
928 OBJECT.pUndoAttr->RedoImpl(rContext);
940 else if(
NODE.pUndoInsNd )
945 rDoc.
GetNodes()[
NODE.nNode-1]->StartOfSectionIndex()]->GetTableNode();
949 NODE.pUndoInsNd->UndoImpl(rContext);
950 delete NODE.pUndoInsNd;
951 NODE.pUndoInsNd =
nullptr;
979 if( pCnt &&
nullptr != ( pFly = pCnt->
FindFlyFrame() ) )
1005 if (!rStr.isEmpty())
1007 aTmpStr +=
SwResId(STR_START_QUOTE);
1010 aTmpStr +=
SwResId(STR_END_QUOTE);
std::optional< OUString > maFltr
std::unique_ptr< SwNodeIndex > m_pUndoNodeIndex
start of Content in UndoNodes for Redo
std::optional< OUString > maUndoText
sal_uLong GetIndex() const
SwAutoCorrExceptWord * GetAutoCorrExceptWord()
void SetSelections(SwFrameFormat *const pSelFormat, SdrMarkList *const pMarkList)
virtual const SwFlyFrameFormat * GetFormat() const override
OUString const & GetIns() const
Marks a position in the document model.
SwContentNode * GetNode(SwPaM &rPam, bool &rbFirst, SwMoveFnCollection const &fnMove, bool const bInReadOnly, SwRootFrame const *const i_pLayout)
This function returns the next node in direction of search.
virtual void RedoImpl(::sw::UndoRedoContext &) override
std::unique_ptr< SwHistory > m_pHistory
const OUString & GetText() const
virtual const SwRootFrame * GetCurrentLayout() const =0
virtual SwFlyFrameFormat * InsertGraphic(const SwPaM &rRg, const OUString &rGrfName, const OUString &rFltName, const Graphic *pGraphic, const SfxItemSet *pFlyAttrSet, const SfxItemSet *pGrfAttrSet, SwFrameFormat *)=0
Insert graphic or formula.
SwpHints * GetpSwpHints()
virtual SwPaM & CreateNewShellCursor()=0
virtual AppendResult AppendRedline(SwRangeRedline *pNewRedl, bool bCallDelete)=0
Append a new redline.
virtual void SetRedlineFlags_intern(RedlineFlags eMode)=0
Set a new redline mode.
constexpr TypedWhichId< SvxFormatKeepItem > RES_KEEP(110)
SwRewriter MakeUndoReplaceRewriter(sal_uLong const occurrences, OUString const &sOld, OUString const &sNew)
virtual sal_Int32 Len() const override
const SwPosition * GetMark() const
virtual SdrLayerID GetHeavenId() const =0
css::uno::Reference< css::embed::XEmbeddedObject > const & GetOleRef()
SwContentFrame * getLayoutFrame(const SwRootFrame *, const SwPosition *pPos=nullptr, std::pair< Point, bool > const *pViewPosAndCalcFrame=nullptr) const
OUString m_sCharacterStyle
void SetRedlineFlags(RedlineFlags eMode)
void SetEnd(const SwPaM &rPam)
IDocumentUndoRedo & GetIDocumentUndoRedo()
virtual bool DeleteAndJoin(SwPaM &, const bool bForceJoinNext=false)=0
complete delete of a given PaM
IDocumentContentOperations const & getIDocumentContentOperations() const
SwUndoInsertLabel(const SwLabelType eTyp, const OUString &rText, const OUString &rSeparator, const OUString &rNumberSeparator, const bool bBefore, const sal_uInt16 nId, const OUString &rCharacterStyle, const bool bCpyBrd, const SwDoc *pDoc)
const SwInsertFlags m_nInsertFlags
SwTableFormat * GetFrameFormat()
IShellCursorSupplier & GetCursorSupplier()
IDocumentDrawModelAccess const & getIDocumentDrawModelAccess() const
SwContentNode * GetContentNode(bool bPoint=true) const
void Delete(const SwNodeIndex &rPos, sal_uLong nNodes=1)
delete nodes
std::optional< OUString > maNm
virtual void RepeatImpl(::sw::RepeatContext &) override
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
virtual void RepeatImpl(::sw::RepeatContext &) override
static bool IsRedlineOn(const RedlineFlags eM)
sal_uLong GetIndex() const
const SwTable & GetTable() const
constexpr TypedWhichId< SwFormatCharFormat > RES_TXTATR_CHARFMT(52)
SwFlyFrame * FindFlyFrame()
bool GetFileFilterNms(OUString *pFileNm, OUString *pFilterNm) const
constexpr TypedWhichId< SwFormatAutoFormat > RES_TXTATR_AUTOFMT(50)
static void MoveToUndoNds(SwPaM &rPam, SwNodeIndex *pNodeIdx, sal_uLong *pEndNdIdx=nullptr)
virtual void UndoImpl(::sw::UndoRedoContext &) override
static void RemoveIdxFromRange(SwPaM &rPam, bool bMoveNext)
void SetDrawObj(SdrLayerID nLayerId)
OUString CreateUniqueObjectName()
RedlineFlags GetRedlineFlags() const
virtual SdrLayerID GetInvisibleHellId() const =0
SwNode & GetEndOfContent() const
Regular ContentSection (i.e. the BodyText).
std::unique_ptr< SwRedlineData > m_pRedlData
virtual std::size_t GetRedlineAuthor()=0
virtual void RedoImpl(::sw::UndoRedoContext &) override
std::optional< OUString > GetTextFromDoc() const
OUString m_sNumberSeparator
static void MovePtForward(SwPaM &rPam, bool bMvBkwrd)
PaM is Point and Mark: a selection of the document model.
const SwAttrSet * GetpSwAttrSet() const
bool Move(SwMoveFnCollection const &fnMove=fnMoveForward, SwGoInDoc fnGo=GoInContent)
Movement of cursor.
virtual void SetLayer(SdrLayerID nLayer)
virtual bool InsertString(const SwPaM &rRg, const OUString &, const SwInsertFlags nInsertMode=SwInsertFlags::EMPTYEXPAND)=0
Insert string into existing text node at position rRg.Point().
void SetEnd(SwPaM const &rPam)
SwUndoReplace(SwPaM const &rPam, OUString const &rInsert, bool const bRegExp)
virtual SwRewriter GetRewriter() const override
Returns rewriter for this undo object.
const SwPosition * GetPoint() const
OUString DenoteSpecialCharacters(const OUString &rStr, bool bQuoted=true)
Denotes special characters in a string.
void DelContentIndex(const SwPosition &pMark, const SwPosition &pPoint, DelContentType nDelContentType=DelContentType::AllMask)
SwIndex & Assign(SwIndexReg *, sal_Int32)
virtual bool DeleteRedline(const SwPaM &rPam, bool bSaveInUndo, RedlineType nDelType)=0
SwContentNode * GetContentNode()
Marks a character position inside a document model node.
void AddRule(SwUndoArg eWhat, const OUString &rWith)
Marks a node in the document model.
virtual bool ReplaceRange(SwPaM &rPam, const OUString &rNewStr, const bool bRegExReplace)=0
Replace selected range in a TextNode with string.
static bool MovePtBackward(SwPaM &rPam)
bool HasSwAttrSet() const
OUString SwResId(const char *pId)
void CheckChar(const SwPosition &rPos, sal_Unicode cChar)
bool ReRead(const OUString &rGrfName, const OUString &rFltName, const Graphic *pGraphic=nullptr, bool bModify=true)
Re-read in case graphic was not OK.
SwFlyFrameFormat * InsertLabel(const SwLabelType eType, const OUString &rText, const OUString &rSeparator, const OUString &rNumberingSeparator, const bool bBefore, const sal_uInt16 nId, const sal_uLong nIdx, const OUString &rCharacterStyle, const bool bCpyBrd)
void SetFlys(SwFrameFormat &rOldFly, SfxItemSet const &rChgSet, SwFrameFormat &rNewFly)
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
const SwPosition * Start() const
virtual SwRewriter GetRewriter() const override
Returns the rewriter of this undo object.
SwUndoReRead(const SwPaM &rPam, const SwGrfNode &pGrfNd)
std::unique_ptr< Impl > m_pImpl
virtual SwFlyFrameFormat * InsertEmbObject(const SwPaM &rRg, const svt::EmbeddedObjectRef &xObj, SfxItemSet *pFlyAttrSet)=0
Insert OLE-objects.
void SaveGraphicData(const SwGrfNode &)
virtual SdrLayerID GetHellId() const =0
virtual SdrLayerID GetLayer() const
const SwNodeIndex * GetContentIdx() const
css::uno::Reference< css::embed::XEmbeddedObject > GetEmbeddedObject(const OUString &, OUString const *pBaseURL=nullptr)
virtual void UndoImpl(::sw::UndoRedoContext &) override
const SwMirrorGrf & GetMirrorGrf(bool=true) const
virtual void UndoImpl(::sw::UndoRedoContext &) override
OUString InsertText(const OUString &rStr, const SwIndex &rIdx, const SwInsertFlags nMode=SwInsertFlags::DEFAULT)
insert text content
void SetAutoCorrExceptWord(std::unique_ptr< SwAutoCorrExceptWord > pNew)
void ClearSwpHintsArr(bool bDelFields)
SwTextNode is a paragraph in the document model.
virtual bool SplitRedline(const SwPaM &rPam)=0
void RedoImpl(::sw::UndoRedoContext &)
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
virtual bool SetAttr(const SfxPoolItem &)
made virtual
void SetAndSave(::sw::UndoRedoContext &)
void UpdateRsid(const SwPaM &rRg, sal_Int32 nLen)
Set the rsid of the next nLen symbols of rRg to the current session number.
static void MoveFromUndoNds(SwDoc &rDoc, sal_uLong nNodeIdx, SwPosition &rInsPos, const sal_uLong *pEndNdIdx=nullptr, bool bForceCreateFrames=false)
general base class for all free-flowing frames
virtual SdrLayerID GetInvisibleHeavenId() const =0
std::unique_ptr< Graphic > mpGraphic
OUString ShortenString(const OUString &rStr, sal_Int32 nLength, const OUString &rFillStr)
Shortens a string to a maximum length.
virtual bool DelFullPara(SwPaM &)=0
Delete full paragraphs.
sal_Int32 GetIndex() const
virtual ~SwUndoReplace() override
virtual bool IsRedlineOn() const =0
Query if redlining is on.
Impl(SwPaM const &rPam, OUString const &rIns, bool const bRegExp)
const SwPosition * End() const
virtual ~SwUndoInsert() override
bool IsGrfLink() const
Query link-data.
static SwRewriter CreateRewriter(const OUString &rStr)
virtual bool AppendTextNode(SwPosition &rPos)=0
const SwAttrSet & GetSwAttrSet() const
Does node has already its own auto-attributes? Access to SwAttrSet.
SwMoveFnCollection const & fnMoveBackward
virtual ~SwUndoReRead() override
SwTableNode * FindTableNode()
Search table node, in which it is.
SwUndoInsert(const SwNodeIndex &rNode, sal_Int32 nContent, sal_Int32 nLen, const SwInsertFlags nInsertFlags, bool bWDelim=true)
std::shared_ptr< ::sfx2::MetadatableUndo > m_pMetadataUndoEnd
bool CanGrouping(sal_Unicode cIns)
virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart)=0
Split a node at rPos (implemented only for TextNode).
std::shared_ptr< ::sfx2::MetadatableUndo > m_pMetadataUndoStart
bool StoreEmbeddedObject(const css::uno::Reference< css::embed::XEmbeddedObject > &xObj, OUString &rName, bool bCopy, const OUString &rSrcShellID, const OUString &rDestShellID)
virtual RedlineFlags GetRedlineFlags() const =0
Query the currently set redline mode.
struct SwUndoInsertLabel::@5::@7 OBJECT
const EnumerationType m_eType
virtual void SetMark()
Unless this is called, the getter method of Mark will return Point.
virtual const SwRedlineTable & GetRedlineTable() const =0
void Init(const SwNodeIndex &rNode)
const SwIndexReg * GetIdxReg() const
SwNode & GetEndOfExtras() const
This is the last EndNode of a special section.
struct SwUndoInsertLabel::@5::@8 NODE
void UndoImpl(::sw::UndoRedoContext &)
virtual void RedoImpl(::sw::UndoRedoContext &) override
CharClass & GetAppCharClass()
virtual void UndoImpl(::sw::UndoRedoContext &) override
void Move(sal_uInt16 nPos, SwHistory *pIns, sal_uInt16 const nStart=0)
SwFrameFormat * GetFlyFormat() const
If node is in a fly return the respective format.
std::optional< OUString > maText
const Graphic & GetGrf(bool bWait=false) const
const int nUndoStringLength
virtual ~SwUndoInsertLabel() override
virtual SwRewriter GetRewriter() const override
Returns the rewriter of this undo object.
OUString const & GetOld() const
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
SwTextFormatColl * GetTextColl() const
virtual void RedoImpl(::sw::UndoRedoContext &) override