11d2dbeb0SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 31d2dbeb0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 41d2dbeb0SAndrew Rist * or more contributor license agreements. See the NOTICE file 51d2dbeb0SAndrew Rist * distributed with this work for additional information 61d2dbeb0SAndrew Rist * regarding copyright ownership. The ASF licenses this file 71d2dbeb0SAndrew Rist * to you under the Apache License, Version 2.0 (the 81d2dbeb0SAndrew Rist * "License"); you may not use this file except in compliance 91d2dbeb0SAndrew Rist * with the License. You may obtain a copy of the License at 101d2dbeb0SAndrew Rist * 111d2dbeb0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 121d2dbeb0SAndrew Rist * 131d2dbeb0SAndrew Rist * Unless required by applicable law or agreed to in writing, 141d2dbeb0SAndrew Rist * software distributed under the License is distributed on an 151d2dbeb0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 161d2dbeb0SAndrew Rist * KIND, either express or implied. See the License for the 171d2dbeb0SAndrew Rist * specific language governing permissions and limitations 181d2dbeb0SAndrew Rist * under the License. 191d2dbeb0SAndrew Rist * 201d2dbeb0SAndrew Rist *************************************************************/ 211d2dbeb0SAndrew Rist 221d2dbeb0SAndrew Rist 23cdf0e10cSrcweir 2469a74367SOliver-Rainer Wittmann #ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 2569a74367SOliver-Rainer Wittmann #define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 2669a74367SOliver-Rainer Wittmann 2769a74367SOliver-Rainer Wittmann #ifndef _SAL_TYPES_H_ 2869a74367SOliver-Rainer Wittmann #include <sal/types.h> 2969a74367SOliver-Rainer Wittmann #endif 3069a74367SOliver-Rainer Wittmann 3169a74367SOliver-Rainer Wittmann class SwPaM; 3269a74367SOliver-Rainer Wittmann struct SwPosition; 3369a74367SOliver-Rainer Wittmann class SwNode; 3469a74367SOliver-Rainer Wittmann class SwNodeRange; 3569a74367SOliver-Rainer Wittmann class String; 3669a74367SOliver-Rainer Wittmann class Graphic; 3769a74367SOliver-Rainer Wittmann class SfxItemSet; 3869a74367SOliver-Rainer Wittmann class SfxPoolItem; 3969a74367SOliver-Rainer Wittmann class GraphicObject; 4069a74367SOliver-Rainer Wittmann class SdrObject; 4169a74367SOliver-Rainer Wittmann class SwFrmFmt; 4269a74367SOliver-Rainer Wittmann class SwDrawFrmFmt; 4369a74367SOliver-Rainer Wittmann class SwFlyFrmFmt; 4469a74367SOliver-Rainer Wittmann class SwNodeIndex; 4569a74367SOliver-Rainer Wittmann class SwFmtFld; 4669a74367SOliver-Rainer Wittmann 4769a74367SOliver-Rainer Wittmann namespace utl { class TransliterationWrapper; } 4869a74367SOliver-Rainer Wittmann namespace svt { class EmbeddedObjectRef; } 4969a74367SOliver-Rainer Wittmann 5069a74367SOliver-Rainer Wittmann /** Text operation/manipulation interface 5169a74367SOliver-Rainer Wittmann */ 5269a74367SOliver-Rainer Wittmann class IDocumentContentOperations 5369a74367SOliver-Rainer Wittmann { 5469a74367SOliver-Rainer Wittmann public: 55cdf0e10cSrcweir enum SwMoveFlags 56cdf0e10cSrcweir { 57cdf0e10cSrcweir DOC_MOVEDEFAULT = 0x00, 58cdf0e10cSrcweir DOC_MOVEALLFLYS = 0x01, 59cdf0e10cSrcweir DOC_CREATEUNDOOBJ = 0x02, 60cdf0e10cSrcweir DOC_MOVEREDLINES = 0x04, 61cdf0e10cSrcweir DOC_NO_DELFRMS = 0x08 62cdf0e10cSrcweir }; 63cdf0e10cSrcweir 64cdf0e10cSrcweir // constants for inserting text 65cdf0e10cSrcweir enum InsertFlags 66cdf0e10cSrcweir { INS_DEFAULT = 0x00 // no extras 67cdf0e10cSrcweir , INS_EMPTYEXPAND = 0x01 // expand empty hints at insert position 68cdf0e10cSrcweir , INS_NOHINTEXPAND = 0x02 // do not expand any hints at insert pos 69cdf0e10cSrcweir , INS_FORCEHINTEXPAND = 0x04 // expand all hints at insert position 70cdf0e10cSrcweir }; 71cdf0e10cSrcweir 7269a74367SOliver-Rainer Wittmann public: 73cdf0e10cSrcweir /** Kopieren eines Bereiches im oder in ein anderes Dokument ! 7469a74367SOliver-Rainer Wittmann Die Position kann auch im Bereich liegen !! 75cdf0e10cSrcweir */ 76cdf0e10cSrcweir virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll ) const = 0; 77cdf0e10cSrcweir 7869a74367SOliver-Rainer Wittmann /** Loesche die Section, in der der Node steht. 79cdf0e10cSrcweir */ 8069a74367SOliver-Rainer Wittmann virtual void DeleteSection(SwNode* pNode) = 0; 81cdf0e10cSrcweir 82cdf0e10cSrcweir /** loeschen eines BereichesSwFlyFrmFmt 83cdf0e10cSrcweir */ 84cdf0e10cSrcweir virtual bool DeleteRange(SwPaM&) = 0; 85cdf0e10cSrcweir 86cdf0e10cSrcweir /** loeschen gesamter Absaetze 87cdf0e10cSrcweir */ 8869a74367SOliver-Rainer Wittmann virtual bool DelFullPara(SwPaM&) = 0; 89cdf0e10cSrcweir 90cdf0e10cSrcweir /** complete delete of a given PaM 91cdf0e10cSrcweir 9269a74367SOliver-Rainer Wittmann OD 2009-08-20 #i100466# 9369a74367SOliver-Rainer Wittmann Add optional parameter <bForceJoinNext>, default value <false> 9469a74367SOliver-Rainer Wittmann Needed for hiding of deletion redlines 95cdf0e10cSrcweir */ 96cdf0e10cSrcweir virtual bool DeleteAndJoin( SwPaM&, 9769a74367SOliver-Rainer Wittmann const bool bForceJoinNext = false ) = 0; 98cdf0e10cSrcweir 99cdf0e10cSrcweir /** verschieben eines Bereiches 100cdf0e10cSrcweir */ 101cdf0e10cSrcweir virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) = 0; 102cdf0e10cSrcweir 103cdf0e10cSrcweir /** verschieben ganzer Nodes 104cdf0e10cSrcweir */ 105cdf0e10cSrcweir virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags) = 0; 106cdf0e10cSrcweir 107cdf0e10cSrcweir /** verschieben eines Bereiches 108cdf0e10cSrcweir */ 10969a74367SOliver-Rainer Wittmann virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0; 110cdf0e10cSrcweir 11169a74367SOliver-Rainer Wittmann /** Ueberschreiben eines Strings in einem bestehenden Textnode. 112cdf0e10cSrcweir */ 11369a74367SOliver-Rainer Wittmann virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0; 114cdf0e10cSrcweir 115cdf0e10cSrcweir /** Insert string into existing text node at position rRg.Point(). 116cdf0e10cSrcweir */ 117cdf0e10cSrcweir virtual bool InsertString(const SwPaM &rRg, const String&, 11869a74367SOliver-Rainer Wittmann const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0; 119cdf0e10cSrcweir 12069a74367SOliver-Rainer Wittmann /** change text to Upper/Lower/Hiragana/Katagana/... 121cdf0e10cSrcweir */ 12269a74367SOliver-Rainer Wittmann virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0; 123cdf0e10cSrcweir 12469a74367SOliver-Rainer Wittmann /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert. 125cdf0e10cSrcweir */ 12669a74367SOliver-Rainer Wittmann virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, 12769a74367SOliver-Rainer Wittmann const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 128cdf0e10cSrcweir 129cdf0e10cSrcweir /** 130cdf0e10cSrcweir */ 13169a74367SOliver-Rainer Wittmann virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet, 13269a74367SOliver-Rainer Wittmann const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 133cdf0e10cSrcweir 13469a74367SOliver-Rainer Wittmann /** austauschen einer Grafik (mit Undo) 135cdf0e10cSrcweir */ 13669a74367SOliver-Rainer Wittmann virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0; 137cdf0e10cSrcweir 13869a74367SOliver-Rainer Wittmann /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel 13969a74367SOliver-Rainer Wittmann angemeldet sein. 140cdf0e10cSrcweir */ 141*5222b95bSOliver-Rainer Wittmann virtual SwDrawFrmFmt* InsertDrawObj( const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet ) = 0; 142cdf0e10cSrcweir 14369a74367SOliver-Rainer Wittmann /** Einfuegen von OLE-Objecten. 144cdf0e10cSrcweir */ 145cdf0e10cSrcweir virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet, 14669a74367SOliver-Rainer Wittmann const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 147cdf0e10cSrcweir 14869a74367SOliver-Rainer Wittmann virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet, 14969a74367SOliver-Rainer Wittmann const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 150cdf0e10cSrcweir 151cdf0e10cSrcweir /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert) 152cdf0e10cSrcweir */ 15369a74367SOliver-Rainer Wittmann virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0; 154cdf0e10cSrcweir 155cdf0e10cSrcweir /** 156cdf0e10cSrcweir */ 15769a74367SOliver-Rainer Wittmann virtual bool AppendTxtNode(SwPosition& rPos) = 0; 158cdf0e10cSrcweir 15969a74367SOliver-Rainer Wittmann /** Ersetz einen selektierten Bereich in einem TextNode mit dem 16069a74367SOliver-Rainer Wittmann String. Ist fuers Suchen&Ersetzen gedacht. 16169a74367SOliver-Rainer Wittmann bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String 16269a74367SOliver-Rainer Wittmann ein ( nicht \& ) 16369a74367SOliver-Rainer Wittmann z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&" 16469a74367SOliver-Rainer Wittmann --> "xx\t<Tab>..zzz..&" 165cdf0e10cSrcweir */ 166cdf0e10cSrcweir virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr, 16769a74367SOliver-Rainer Wittmann const bool bRegExReplace) = 0; 168cdf0e10cSrcweir 169cdf0e10cSrcweir /** Einfuegen eines Attributs. Erstreckt sich rRg ueber 17069a74367SOliver-Rainer Wittmann mehrere Nodes, wird das Attribut aufgespaltet, sofern 17169a74367SOliver-Rainer Wittmann dieses Sinn macht. Nodes, in denen dieses Attribut keinen 17269a74367SOliver-Rainer Wittmann Sinn macht, werden ignoriert. In vollstaendig in der 17369a74367SOliver-Rainer Wittmann Selektion eingeschlossenen Nodes wird das Attribut zu 17469a74367SOliver-Rainer Wittmann harter Formatierung, in den anderen (Text-)Nodes wird das 17569a74367SOliver-Rainer Wittmann Attribut in das Attributearray eingefuegt. Bei einem 17669a74367SOliver-Rainer Wittmann Zeichenattribut wird ein "leerer" Hint eingefuegt, 17769a74367SOliver-Rainer Wittmann wenn keine Selektion 17869a74367SOliver-Rainer Wittmann vorliegt; andernfalls wird das Attribut als harte 17969a74367SOliver-Rainer Wittmann Formatierung dem durch rRg.Start() bezeichneten Node 18069a74367SOliver-Rainer Wittmann hinzugefuegt. Wenn das Attribut nicht eingefuegt werden 18169a74367SOliver-Rainer Wittmann konnte, liefert die Methode sal_False. 18269a74367SOliver-Rainer Wittmann */ 18369a74367SOliver-Rainer Wittmann //Modify here for #119405, by chengjh, 2012-08-16 18469a74367SOliver-Rainer Wittmann //Add a para for the char attribute exp... 18569a74367SOliver-Rainer Wittmann virtual bool InsertPoolItem( 18669a74367SOliver-Rainer Wittmann const SwPaM &rRg, 18769a74367SOliver-Rainer Wittmann const SfxPoolItem&, 18869a74367SOliver-Rainer Wittmann const sal_uInt16 nFlags, 18969a74367SOliver-Rainer Wittmann const bool bExpandCharToPara=false ) = 0; 19069a74367SOliver-Rainer Wittmann //End 191cdf0e10cSrcweir 192cdf0e10cSrcweir /** 193cdf0e10cSrcweir */ 194cdf0e10cSrcweir virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&, 19569a74367SOliver-Rainer Wittmann const sal_uInt16 nFlags) = 0; 196cdf0e10cSrcweir 197cdf0e10cSrcweir /** Removes any leading white space from the paragraph 198cdf0e10cSrcweir */ 199cdf0e10cSrcweir virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos ) = 0; 200cdf0e10cSrcweir 20169a74367SOliver-Rainer Wittmann protected: ~IDocumentContentOperations()202cdf0e10cSrcweir virtual ~IDocumentContentOperations() {}; 203cdf0e10cSrcweir }; 204cdf0e10cSrcweir 205cdf0e10cSrcweir #endif // IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 206cdf0e10cSrcweir 207