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 46 namespace utl { class TransliterationWrapper; } 47 namespace svt { class EmbeddedObjectRef; } 48 49 /** Text operation/manipulation interface 50 */ 51 class IDocumentContentOperations 52 { 53 public: 54 enum SwMoveFlags 55 { 56 DOC_MOVEDEFAULT = 0x00, 57 DOC_MOVEALLFLYS = 0x01, 58 DOC_CREATEUNDOOBJ = 0x02, 59 DOC_MOVEREDLINES = 0x04, 60 DOC_NO_DELFRMS = 0x08 61 }; 62 63 // constants for inserting text 64 enum InsertFlags 65 { INS_DEFAULT = 0x00 // no extras 66 , INS_EMPTYEXPAND = 0x01 // expand empty hints at insert position 67 , INS_NOHINTEXPAND = 0x02 // do not expand any hints at insert pos 68 , INS_FORCEHINTEXPAND = 0x04 // expand all hints at insert position 69 }; 70 71 public: 72 /** Kopieren eines Bereiches im oder in ein anderes Dokument ! 73 Die Position kann auch im Bereich liegen !! 74 */ 75 virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll ) const = 0; 76 77 /** Loesche die Section, in der der Node steht. 78 */ 79 virtual void DeleteSection(SwNode* pNode) = 0; 80 81 /** loeschen eines BereichesSwFlyFrmFmt 82 */ 83 virtual bool DeleteRange(SwPaM&) = 0; 84 85 /** loeschen gesamter Absaetze 86 */ 87 virtual bool DelFullPara(SwPaM&) = 0; 88 89 /** complete delete of a given PaM 90 91 OD 2009-08-20 #i100466# 92 Add optional parameter <bForceJoinNext>, default value <false> 93 Needed for hiding of deletion redlines 94 */ 95 virtual bool DeleteAndJoin( SwPaM&, 96 const bool bForceJoinNext = false ) = 0; 97 98 /** verschieben eines Bereiches 99 */ 100 virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) = 0; 101 102 /** verschieben ganzer Nodes 103 */ 104 virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags) = 0; 105 106 /** verschieben eines Bereiches 107 */ 108 virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0; 109 110 /** Ueberschreiben eines Strings in einem bestehenden Textnode. 111 */ 112 virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0; 113 114 /** Insert string into existing text node at position rRg.Point(). 115 */ 116 virtual bool InsertString(const SwPaM &rRg, const String&, 117 const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0; 118 119 /** change text to Upper/Lower/Hiragana/Katagana/... 120 */ 121 virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0; 122 123 /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert. 124 */ 125 virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, 126 const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 127 128 /** 129 */ 130 virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet, 131 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 132 133 /** austauschen einer Grafik (mit Undo) 134 */ 135 virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0; 136 137 /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel 138 angemeldet sein. 139 */ 140 virtual SwDrawFrmFmt* Insert(const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet, SwFrmFmt*) = 0; 141 142 /** Einfuegen von OLE-Objecten. 143 */ 144 virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet, 145 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 146 147 virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet, 148 const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0; 149 150 /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert) 151 */ 152 virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0; 153 154 /** 155 */ 156 virtual bool AppendTxtNode(SwPosition& rPos) = 0; 157 158 /** Ersetz einen selektierten Bereich in einem TextNode mit dem 159 String. Ist fuers Suchen&Ersetzen gedacht. 160 bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String 161 ein ( nicht \& ) 162 z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&" 163 --> "xx\t<Tab>..zzz..&" 164 */ 165 virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr, 166 const bool bRegExReplace) = 0; 167 168 /** Einfuegen eines Attributs. Erstreckt sich rRg ueber 169 mehrere Nodes, wird das Attribut aufgespaltet, sofern 170 dieses Sinn macht. Nodes, in denen dieses Attribut keinen 171 Sinn macht, werden ignoriert. In vollstaendig in der 172 Selektion eingeschlossenen Nodes wird das Attribut zu 173 harter Formatierung, in den anderen (Text-)Nodes wird das 174 Attribut in das Attributearray eingefuegt. Bei einem 175 Zeichenattribut wird ein "leerer" Hint eingefuegt, 176 wenn keine Selektion 177 vorliegt; andernfalls wird das Attribut als harte 178 Formatierung dem durch rRg.Start() bezeichneten Node 179 hinzugefuegt. Wenn das Attribut nicht eingefuegt werden 180 konnte, liefert die Methode sal_False. 181 */ 182 virtual bool InsertPoolItem(const SwPaM &rRg, const SfxPoolItem&, 183 const sal_uInt16 nFlags) = 0; 184 185 /** 186 */ 187 virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&, 188 const sal_uInt16 nFlags) = 0; 189 190 /** Removes any leading white space from the paragraph 191 */ 192 virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos ) = 0; 193 194 protected: 195 virtual ~IDocumentContentOperations() {}; 196 }; 197 198 #endif // IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED 199 200