1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: IDocumentContentOperations.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
32 #define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
35 #include <sal/types.h>
53 namespace utl
{ class TransliterationWrapper
; }
54 namespace svt
{ class EmbeddedObjectRef
; }
56 /** Text operation/manipulation interface
58 class IDocumentContentOperations
63 DOC_MOVEDEFAULT
= 0x00,
64 DOC_MOVEALLFLYS
= 0x01,
65 DOC_CREATEUNDOOBJ
= 0x02,
66 DOC_MOVEREDLINES
= 0x04,
71 /** Kopieren eines Bereiches im oder in ein anderes Dokument !
72 Die Position kann auch im Bereich liegen !!
74 virtual bool Copy(SwPaM
&, SwPosition
&, bool bCopyAll
) const = 0;
76 /** Loesche die Section, in der der Node steht.
78 virtual void DeleteSection(SwNode
* pNode
) = 0;
80 /** loeschen eines BereichesSwFlyFrmFmt
82 virtual bool Delete(SwPaM
&) = 0;
84 /** loeschen gesamter Absaetze
86 virtual bool DelFullPara(SwPaM
&) = 0;
88 /** complete delete of a given PaM
90 OD 2009-08-20 #i100466#
91 Add optional parameter <bForceJoinNext>, default value <false>
92 Needed for hiding of deletion redlines
94 virtual bool DeleteAndJoin( SwPaM
&,
95 const bool bForceJoinNext
= false ) = 0;
97 /** verschieben eines Bereiches
99 virtual bool Move(SwPaM
&, SwPosition
&, SwMoveFlags
) = 0;
101 /** verschieben ganzer Nodes
103 virtual bool Move(SwNodeRange
&, SwNodeIndex
&, SwMoveFlags
) = 0;
105 /** verschieben eines Bereiches
107 virtual bool MoveAndJoin(SwPaM
&, SwPosition
&, SwMoveFlags
) = 0;
109 /** Ueberschreiben eines einzelnen Zeichens. rRg.Start() bezeichnet
110 den Node und die Position in dem Node, an der eingefuegt wird,
112 virtual bool Overwrite(const SwPaM
&rRg
, sal_Unicode c
) = 0;
114 /** Ueberschreiben eines Strings in einem bestehenden Textnode.
116 virtual bool Overwrite(const SwPaM
&rRg
, const String
& rStr
) = 0;
118 /** Einfuegen eines einzelnen Zeichens. rRg.Start() bezeichnet
119 den Node und die Position in dem Node, an der eingefuegt wird.
121 virtual bool Insert(const SwPaM
&rRg
, sal_Unicode c
) = 0;
123 /** Einfuegen eines Strings in einen bestehenden
124 Textnode. Der Text wird kopiert.
126 virtual bool Insert(const SwPaM
&rRg
, const String
&, bool bHintExpand
) = 0;
128 /** change text to Upper/Lower/Hiragana/Katagana/...
130 virtual void TransliterateText(const SwPaM
& rPaM
, utl::TransliterationWrapper
&) = 0;
132 /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert.
134 virtual SwFlyFrmFmt
* Insert(const SwPaM
&rRg
, const String
& rGrfName
, const String
& rFltName
, const Graphic
* pGraphic
,
135 const SfxItemSet
* pFlyAttrSet
, const SfxItemSet
* pGrfAttrSet
, SwFrmFmt
*) = 0;
139 virtual SwFlyFrmFmt
* Insert(const SwPaM
& rRg
, const GraphicObject
& rGrfObj
, const SfxItemSet
* pFlyAttrSet
,
140 const SfxItemSet
* pGrfAttrSet
, SwFrmFmt
*) = 0;
142 /** austauschen einer Grafik (mit Undo)
144 virtual void ReRead(SwPaM
&, const String
& rGrfName
, const String
& rFltName
, const Graphic
* pGraphic
, const GraphicObject
* pGrfObj
) = 0;
146 /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
149 virtual SwDrawFrmFmt
* Insert(const SwPaM
&rRg
, SdrObject
& rDrawObj
, const SfxItemSet
* pFlyAttrSet
, SwFrmFmt
*) = 0;
151 /** Einfuegen von OLE-Objecten.
153 virtual SwFlyFrmFmt
* Insert(const SwPaM
&rRg
, const svt::EmbeddedObjectRef
& xObj
, const SfxItemSet
* pFlyAttrSet
,
154 const SfxItemSet
* pGrfAttrSet
, SwFrmFmt
*) = 0;
156 virtual SwFlyFrmFmt
* InsertOLE(const SwPaM
&rRg
, const String
& rObjName
, sal_Int64 nAspect
, const SfxItemSet
* pFlyAttrSet
,
157 const SfxItemSet
* pGrfAttrSet
, SwFrmFmt
*) = 0;
159 /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert)
161 virtual bool SplitNode(const SwPosition
&rPos
, bool bChkTableStart
) = 0;
165 virtual bool AppendTxtNode(SwPosition
& rPos
) = 0;
167 /** Ersetz einen selektierten Bereich in einem TextNode mit dem
168 String. Ist fuers Suchen&Ersetzen gedacht.
169 bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
171 z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
172 --> "xx\t<Tab>..zzz..&"
174 virtual bool Replace(SwPaM
& rPam
, const String
& rNewStr
, bool bRegExpRplc
) = 0;
176 /** Einfuegen eines Attributs. Erstreckt sich rRg ueber
177 mehrere Nodes, wird das Attribut aufgespaltet, sofern
178 dieses Sinn macht. Nodes, in denen dieses Attribut keinen
179 Sinn macht, werden ignoriert. In vollstaendig in der
180 Selektion eingeschlossenen Nodes wird das Attribut zu
181 harter Formatierung, in den anderen (Text-)Nodes wird das
182 Attribut in das Attributearray eingefuegt. Bei einem
183 Zeichenattribut wird ein "leerer" Hint eingefuegt,
185 vorliegt; andernfalls wird das Attribut als harte
186 Formatierung dem durch rRg.Start() bezeichneten Node
187 hinzugefuegt. Wenn das Attribut nicht eingefuegt werden
188 konnte, liefert die Methode sal_False.
190 virtual bool Insert(const SwPaM
&rRg
, const SfxPoolItem
&, sal_uInt16 nFlags
) = 0;
194 virtual bool Insert(const SwPaM
&rRg
, const SfxItemSet
&, sal_uInt16 nFlags
) = 0;
196 /** Removes any leading white space from the paragraph
198 virtual void RemoveLeadingWhiteSpace(const SwPosition
& rPos
) = 0;
201 virtual ~IDocumentContentOperations() {};
204 #endif // IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED