1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 25 #define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 26 27 #ifndef _SAL_TYPES_H_ 28 #include <sal/types.h> 29 #endif 30 31 class SwPaM; 32 struct SwPosition; 33 class SwNode; 34 class SwNodeRange; 35 class String; 36 class Graphic; 37 class SfxItemSet; 38 class SfxPoolItem; 39 class GraphicObject; 40 class SdrObject; 41 class SwFrmFmt; 42 class SwDrawFrmFmt; 43 class SwFlyFrmFmt; 44 class SwNodeIndex; 45 class SwFmtFld; 46 47 namespace utl { class TransliterationWrapper; } 48 namespace svt { class EmbeddedObjectRef; } 49 50 /** Text operation/manipulation interface 51 */ 52 class IDocumentContentOperations 53 { 54 public: 55 enum SwMoveFlags 56 { 57 DOC_MOVEDEFAULT = 0x00, 58 DOC_MOVEALLFLYS = 0x01, 59 DOC_CREATEUNDOOBJ = 0x02, 60 DOC_MOVEREDLINES = 0x04, 61 DOC_NO_DELFRMS = 0x08 62 }; 63 64 // constants for inserting text 65 enum InsertFlags 66 { INS_DEFAULT = 0x00 // no extras 67 , INS_EMPTYEXPAND = 0x01 // expand empty hints at insert position 68 , INS_NOHINTEXPAND = 0x02 // do not expand any hints at insert pos 69 , INS_FORCEHINTEXPAND = 0x04 // expand all hints at insert position 70 }; 71 72 public: 73 /** Kopieren eines Bereiches im oder in ein anderes Dokument ! 74 Die Position kann auch im Bereich liegen !! 75 */ 76 virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll ) const = 0; 77 78 /** Loesche die Section, in der der Node steht. 79 */ 80 virtual void DeleteSection(SwNode* pNode) = 0; 81 82 /** loeschen eines BereichesSwFlyFrmFmt 83 */ 84 virtual bool DeleteRange(SwPaM&) = 0; 85 86 /** loeschen gesamter Absaetze 87 */ 88 virtual bool DelFullPara(SwPaM&) = 0; 89 90 /** complete delete of a given PaM 91 92 OD 2009-08-20 #i100466# 93 Add optional parameter <bForceJoinNext>, default value <false> 94 Needed for hiding of deletion redlines 95 */ 96 virtual bool DeleteAndJoin( SwPaM&, 97 const bool bForceJoinNext = false ) = 0; 98 99 /** verschieben eines Bereiches 100 */ 101 virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) = 0; 102 103 /** verschieben ganzer Nodes 104 */ 105 virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags) = 0; 106 107 /** verschieben eines Bereiches 108 */ 109 virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0; 110 111 /** Ueberschreiben eines Strings in einem bestehenden Textnode. 112 */ 113 virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0; 114 115 /** Insert string into existing text node at position rRg.Point(). 116 */ 117 virtual bool InsertString(const SwPaM &rRg, const String&, 118 const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0; 119 120 /** change text to Upper/Lower/Hiragana/Katagana/... 121 */ 122 virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0; 123 124 /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert. 125 */ 126 virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, 127 const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 128 129 /** 130 */ 131 virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet, 132 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 133 134 /** austauschen einer Grafik (mit Undo) 135 */ 136 virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0; 137 138 /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel 139 angemeldet sein. 140 */ 141 virtual SwDrawFrmFmt* InsertDrawObj( const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet ) = 0; 142 143 /** Einfuegen von OLE-Objecten. 144 */ 145 virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet, 146 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 147 148 virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet, 149 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 150 151 /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert) 152 */ 153 virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0; 154 155 /** 156 */ 157 virtual bool AppendTxtNode(SwPosition& rPos) = 0; 158 159 /** Ersetz einen selektierten Bereich in einem TextNode mit dem 160 String. Ist fuers Suchen&Ersetzen gedacht. 161 bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String 162 ein ( nicht \& ) 163 z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&" 164 --> "xx\t<Tab>..zzz..&" 165 */ 166 virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr, 167 const bool bRegExReplace) = 0; 168 169 /** Einfuegen eines Attributs. Erstreckt sich rRg ueber 170 mehrere Nodes, wird das Attribut aufgespaltet, sofern 171 dieses Sinn macht. Nodes, in denen dieses Attribut keinen 172 Sinn macht, werden ignoriert. In vollstaendig in der 173 Selektion eingeschlossenen Nodes wird das Attribut zu 174 harter Formatierung, in den anderen (Text-)Nodes wird das 175 Attribut in das Attributearray eingefuegt. Bei einem 176 Zeichenattribut wird ein "leerer" Hint eingefuegt, 177 wenn keine Selektion 178 vorliegt; andernfalls wird das Attribut als harte 179 Formatierung dem durch rRg.Start() bezeichneten Node 180 hinzugefuegt. Wenn das Attribut nicht eingefuegt werden 181 konnte, liefert die Methode sal_False. 182 */ 183 //Modify here for #119405, by chengjh, 2012-08-16 184 //Add a para for the char attribute exp... 185 virtual bool InsertPoolItem( 186 const SwPaM &rRg, 187 const SfxPoolItem&, 188 const sal_uInt16 nFlags, 189 const bool bExpandCharToPara=false ) = 0; 190 //End 191 192 /** 193 */ 194 virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&, 195 const sal_uInt16 nFlags) = 0; 196 197 /** Removes any leading white space from the paragraph 198 */ 199 virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos ) = 0; 200 201 protected: ~IDocumentContentOperations()202 virtual ~IDocumentContentOperations() {}; 203 }; 204 205 #endif // IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 206 207