/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef SW_UNDO_INSERT_HXX #define SW_UNDO_INSERT_HXX #include #include #include #include class Graphic; class SwGrfNode; class SwUndoDelete; class SwUndoFmtAttr; class SwUndoInsert: public SwUndo, private SwUndoSaveCntnt { SwPosition *pPos; // Inhalt fuers Redo String *pTxt, *pUndoTxt; SwRedlineData* pRedlData; sal_uLong nNode; xub_StrLen nCntnt, nLen; sal_Bool bIsWordDelim : 1; sal_Bool bIsAppend : 1; const IDocumentContentOperations::InsertFlags m_nInsertFlags; friend class SwDoc; // eigentlich nur SwDoc::Insert( String ) sal_Bool CanGrouping( sal_Unicode cIns ); sal_Bool CanGrouping( const SwPosition& rPos ); SwDoc * pDoc; void Init(const SwNodeIndex & rNode); String * GetTxtFromDoc() const; public: SwUndoInsert( const SwNodeIndex& rNode, xub_StrLen nCntnt, xub_StrLen nLen, const IDocumentContentOperations::InsertFlags nInsertFlags, sal_Bool bWDelim = sal_True ); SwUndoInsert( const SwNodeIndex& rNode ); virtual ~SwUndoInsert(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); // #111827# /** Returns rewriter for this undo object. The returned rewriter has the following rule: $1 -> '' is shortened to a length of nUndoStringLength. @return rewriter for this undo object */ virtual SwRewriter GetRewriter() const; DECL_FIXEDMEMPOOL_NEWDEL(SwUndoInsert) }; //-------------------------------------------------------------------- SwRewriter SW_DLLPRIVATE MakeUndoReplaceRewriter(sal_uLong const ocurrences, ::rtl::OUString const& sOld, ::rtl::OUString const& sNew); class SwUndoReplace : public SwUndo { public: SwUndoReplace(SwPaM const& rPam, ::rtl::OUString const& rInsert, bool const bRegExp); virtual ~SwUndoReplace(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); // #111827# /** Returns the rewriter of this undo object. If this undo object represents several replacements the rewriter contains the following rules: $1 -> $2 -> occurrences of $3 -> If this undo object represents one replacement the rewriter contains these rules: $1 -> $2 -> "->" (STR_YIELDS) $3 -> @return the rewriter of this undo object */ virtual SwRewriter GetRewriter() const; void SetEnd( const SwPaM& rPam ); private: class Impl; ::std::auto_ptr m_pImpl; }; //-------------------------------------------------------------------- class SwUndoReRead : public SwUndo { Graphic *pGrf; String *pNm, *pFltr; sal_uLong nPos; sal_uInt16 nMirr; void SaveGraphicData( const SwGrfNode& ); void SetAndSave( ::sw::UndoRedoContext & ); public: SwUndoReRead( const SwPaM& rPam, const SwGrfNode& pGrfNd ); virtual ~SwUndoReRead(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); }; //-------------------------------------------------------------------- class SwUndoInsertLabel : public SwUndo { union { struct { // fuer NoTxtFrms SwUndoInsLayFmt* pUndoFly; SwUndoFmtAttr* pUndoAttr; } OBJECT; struct { // fuer Tabelle/TextRahmen SwUndoDelete* pUndoInsNd; sal_uLong nNode; } NODE; }; String sText; // --> PB 2005-01-06 #i39983# the separator is drawn with a character style String sSeparator; // <-- String sNumberSeparator; String sCharacterStyle; // OD 2004-04-15 #i26791# - re-store of drawing object position no longer needed sal_uInt16 nFldId; SwLabelType eType; sal_uInt8 nLayerId; // fuer Zeichen-Objekte sal_Bool bBefore :1; sal_Bool bUndoKeep :1; sal_Bool bCpyBrd :1; public: SwUndoInsertLabel( const SwLabelType eTyp, const String &rText, // --> PB 2005-01-06 #i39983# the separator is drawn with a character style const String& rSeparator, // <-- const String& rNumberSeparator, //#i61007# order of captions const sal_Bool bBefore, const sal_uInt16 nId, const String& rCharacterStyle, const sal_Bool bCpyBrd ); virtual ~SwUndoInsertLabel(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); // #111827# /** Returns the rewriter of this undo object. The rewriter contains this rule: $1 -> '' is shortened to nUndoStringLength characters. @return the rewriter of this undo object */ virtual SwRewriter GetRewriter() const; void SetNodePos( sal_uLong nNd ) { if( LTYPE_OBJECT != eType ) NODE.nNode = nNd; } void SetUndoKeep() { bUndoKeep = sal_True; } void SetFlys( SwFrmFmt& rOldFly, SfxItemSet& rChgSet, SwFrmFmt& rNewFly ); void SetDrawObj( sal_uInt8 nLayerId ); }; #endif // SW_UNDO_INSERT_HXX