Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : // MyEDITENG, due to exported EditEng
20 : #ifndef _MyEDITENG_HXX
21 : #define _MyEDITENG_HXX
22 :
23 : #include <rtl/ref.hxx>
24 : #include <vector>
25 : #include <com/sun/star/uno/Reference.h>
26 : #include <com/sun/star/i18n/WordType.hpp>
27 : #include <com/sun/star/i18n/CharacterIteratorMode.hpp>
28 :
29 : #include <rsc/rscsfx.hxx>
30 : #include <editeng/editdata.hxx>
31 : #include <i18nlangtag/lang.h>
32 : #include "editeng/editengdllapi.h"
33 :
34 : #include <tools/rtti.hxx> // due to typedef TypeId
35 :
36 : #include <editeng/eedata.hxx>
37 :
38 : namespace com { namespace sun { namespace star {
39 : namespace linguistic2 {
40 : class XSpellChecker1;
41 : class XHyphenator;
42 : }
43 : namespace datatransfer {
44 : class XTransferable;
45 : }
46 : namespace lang {
47 : struct Locale;
48 : }
49 : }}}
50 :
51 : namespace svx {
52 : struct SpellPortion;
53 : typedef std::vector<SpellPortion> SpellPortions;
54 : }
55 :
56 : namespace svl { class IUndoManager; }
57 : namespace basegfx { class B2DPolyPolygon; }
58 :
59 : class ImpEditEngine;
60 : class EditView;
61 : class OutputDevice;
62 : class EditUndo;
63 : class SvxFont;
64 : class SfxItemPool;
65 : class SfxStyleSheet;
66 : class String;
67 : class SfxStyleSheetPool;
68 : class SvxSearchItem;
69 : class SvxFieldItem;
70 : class SvxCharSetColorItem;
71 : class SfxUndoAction;
72 : class MapMode;
73 : class Color;
74 : class Font;
75 : class KeyEvent;
76 : class PolyPolygon;
77 : class Size;
78 : class Point;
79 : class Rectangle;
80 : class SvStream;
81 : class Link;
82 : class OutputDevice;
83 : class Window;
84 : class SfxPoolItem;
85 : class SvxNumBulletItem;
86 : class SvxBulletItem;
87 : class SvxLRSpaceItem;
88 : class SvKeyValueIterator;
89 : class SvxForbiddenCharactersTable;
90 : class SvxNumberFormat;
91 : class FontList;
92 : class SvxFieldData;
93 : class ContentNode;
94 : class ParaPortion;
95 : class EditSelection;
96 : class EditPaM;
97 : class EditLine;
98 : class InternalEditStatus;
99 : class EditSelectionEngine;
100 : class EditDoc;
101 : struct PasteOrDropInfos;
102 : class Range;
103 : struct EPaM;
104 : class DeletedNodeInfo;
105 : class ParaPortionList;
106 :
107 : //////////////////////////////////////////////////////////////////////////////
108 :
109 : /** values for GetAttribs
110 : */
111 : const sal_uInt8 EditEngineAttribs_All = 0; /// returns all attributes even when theire not set
112 : const sal_uInt8 EditEngineAttribs_HardAndPara = 1; /// returns all attributes set on paragraph and on portions
113 : const sal_uInt8 EditEngineAttribs_OnlyHard = 2; /// returns only attributes hard set on portions
114 :
115 : #define GETATTRIBS_STYLESHEET (sal_uInt8)0x01
116 : #define GETATTRIBS_PARAATTRIBS (sal_uInt8)0x02
117 : #define GETATTRIBS_CHARATTRIBS (sal_uInt8)0x04
118 : #define GETATTRIBS_ALL (sal_uInt8)0xFF
119 :
120 : class EDITENG_DLLPUBLIC EditEngine
121 : {
122 : friend class EditView;
123 : friend class ImpEditView;
124 : friend class EditDbg;
125 : friend class Outliner;
126 :
127 : public:
128 : typedef std::vector<EditView*> ViewsType;
129 :
130 : private:
131 : ImpEditEngine* pImpEditEngine;
132 :
133 : EDITENG_DLLPRIVATE EditEngine( const EditEngine& );
134 : EDITENG_DLLPRIVATE EditEngine& operator=( const EditEngine& );
135 : EDITENG_DLLPRIVATE sal_uInt8 PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pView, Window* pFrameWin = NULL );
136 :
137 : EDITENG_DLLPRIVATE void CursorMoved(ContentNode* pPrevNode);
138 : EDITENG_DLLPRIVATE void CheckIdleFormatter();
139 : EDITENG_DLLPRIVATE bool IsIdleFormatterActive() const;
140 : EDITENG_DLLPRIVATE ParaPortion* FindParaPortion(ContentNode* pNode);
141 : EDITENG_DLLPRIVATE const ParaPortion* FindParaPortion(ContentNode* pNode) const;
142 : EDITENG_DLLPRIVATE const ParaPortion* GetPrevVisPortion(const ParaPortion* pCurPortion) const;
143 :
144 : EDITENG_DLLPRIVATE com::sun::star::uno::Reference<
145 : com::sun::star::datatransfer::XTransferable>
146 : CreateTransferable(const EditSelection& rSelection);
147 :
148 : EDITENG_DLLPRIVATE EditSelection InsertText(
149 : com::sun::star::uno::Reference<com::sun::star::datatransfer::XTransferable >& rxDataObj,
150 : const String& rBaseURL, const EditPaM& rPaM, bool bUseSpecial);
151 :
152 : EDITENG_DLLPRIVATE EditPaM EndOfWord(
153 : const EditPaM& rPaM, sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES);
154 :
155 : EDITENG_DLLPRIVATE EditPaM GetPaM(const Point& aDocPos, bool bSmart = true);
156 :
157 : EDITENG_DLLPRIVATE EditSelection SelectWord(
158 : const EditSelection& rCurSelection,
159 : sal_Int16 nWordType = ::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES,
160 : bool bAcceptStartOfWord = true);
161 :
162 : EDITENG_DLLPRIVATE long GetXPos(
163 : const ParaPortion* pParaPortion, const EditLine* pLine, sal_uInt16 nIndex, bool bPreferPortionStart = false) const;
164 :
165 : EDITENG_DLLPRIVATE Range GetLineXPosStartEnd(
166 : const ParaPortion* pParaPortion, const EditLine* pLine) const;
167 :
168 : EDITENG_DLLPRIVATE sal_uInt16 GetOnePixelInRef() const;
169 : EDITENG_DLLPRIVATE InternalEditStatus& GetInternalEditStatus();
170 :
171 : EDITENG_DLLPRIVATE void HandleBeginPasteOrDrop(PasteOrDropInfos& rInfos);
172 : EDITENG_DLLPRIVATE void HandleEndPasteOrDrop(PasteOrDropInfos& rInfos);
173 : EDITENG_DLLPRIVATE bool HasText() const;
174 : EDITENG_DLLPRIVATE const EditSelectionEngine& GetSelectionEngine() const;
175 : EDITENG_DLLPRIVATE void SetInSelectionMode(bool b);
176 :
177 : protected:
178 :
179 :
180 : public:
181 : EditEngine( SfxItemPool* pItemPool );
182 : virtual ~EditEngine();
183 :
184 : const SfxItemSet& GetEmptyItemSet();
185 :
186 : void SetDefTab( sal_uInt16 nDefTab );
187 :
188 : void SetRefDevice( OutputDevice* pRefDef );
189 : OutputDevice* GetRefDevice() const;
190 :
191 : void SetRefMapMode( const MapMode& rMapMode );
192 : MapMode GetRefMapMode();
193 :
194 : void SetUpdateMode( sal_Bool bUpdate );
195 : sal_Bool GetUpdateMode() const;
196 :
197 : void SetBackgroundColor( const Color& rColor );
198 : Color GetBackgroundColor() const;
199 : Color GetAutoColor() const;
200 : void EnableAutoColor( sal_Bool b );
201 : void ForceAutoColor( sal_Bool b );
202 : sal_Bool IsForceAutoColor() const;
203 :
204 : void InsertView(EditView* pEditView, size_t nIndex = EE_APPEND);
205 : EditView* RemoveView( EditView* pEditView );
206 : EditView* RemoveView(size_t nIndex = EE_APPEND);
207 : EditView* GetView(size_t nIndex = 0) const;
208 : size_t GetViewCount() const;
209 : sal_Bool HasView( EditView* pView ) const;
210 : EditView* GetActiveView() const;
211 : void SetActiveView(EditView* pView);
212 :
213 : void SetPaperSize( const Size& rSize );
214 : const Size& GetPaperSize() const;
215 :
216 : void SetVertical( bool bVertical );
217 : bool IsVertical() const;
218 :
219 : void SetFixedCellHeight( sal_Bool bUseFixedCellHeight );
220 :
221 : void SetDefaultHorizontalTextDirection( EEHorizontalTextDirection eHTextDir );
222 : EEHorizontalTextDirection GetDefaultHorizontalTextDirection() const;
223 :
224 : sal_uInt16 GetScriptType( const ESelection& rSelection ) const;
225 : LanguageType GetLanguage(const EditPaM& rPaM) const;
226 : LanguageType GetLanguage( sal_Int32 nPara, sal_uInt16 nPos ) const;
227 :
228 : void TransliterateText( const ESelection& rSelection, sal_Int32 nTransliterationMode );
229 : EditSelection TransliterateText( const EditSelection& rSelection, sal_Int32 nTransliterationMode );
230 :
231 : void SetAsianCompressionMode( sal_uInt16 nCompression );
232 :
233 : void SetKernAsianPunctuation( sal_Bool bEnabled );
234 :
235 : void SetAddExtLeading( sal_Bool b );
236 :
237 : void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon );
238 : void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DPolyPolygon* pLinePolyPolygon);
239 : void ClearPolygon();
240 :
241 : const Size& GetMinAutoPaperSize() const;
242 : void SetMinAutoPaperSize( const Size& rSz );
243 :
244 : const Size& GetMaxAutoPaperSize() const;
245 : void SetMaxAutoPaperSize( const Size& rSz );
246 :
247 : OUString GetText( LineEnd eEnd = LINEEND_LF ) const;
248 : String GetText( const ESelection& rSelection, const LineEnd eEnd = LINEEND_LF ) const;
249 : sal_uInt32 GetTextLen() const;
250 : sal_uInt32 GetTextHeight() const;
251 : sal_uInt32 GetTextHeightNTP() const;
252 : sal_uInt32 CalcTextWidth();
253 :
254 : String GetText( sal_Int32 nParagraph ) const;
255 : xub_StrLen GetTextLen( sal_Int32 nParagraph ) const;
256 : sal_uInt32 GetTextHeight( sal_Int32 nParagraph ) const;
257 :
258 : sal_Int32 GetParagraphCount() const;
259 :
260 : sal_uInt16 GetLineCount( sal_Int32 nParagraph ) const;
261 : xub_StrLen GetLineLen( sal_Int32 nParagraph, sal_uInt16 nLine ) const;
262 : void GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_Int32 nParagraph, sal_uInt16 nLine ) const;
263 : sal_uInt16 GetLineNumberAtIndex( sal_Int32 nPara, sal_uInt16 nIndex ) const;
264 : sal_uInt32 GetLineHeight( sal_Int32 nParagraph, sal_uInt16 nLine = 0 );
265 : ParagraphInfos GetParagraphInfos( sal_Int32 nPara );
266 : sal_Int32 FindParagraph( long nDocPosY );
267 : EPosition FindDocPosition( const Point& rDocPos ) const;
268 : Rectangle GetCharacterBounds( const EPosition& rPos ) const;
269 :
270 : String GetWord( sal_Int32 nPara, xub_StrLen nIndex );
271 :
272 : ESelection GetWord( const ESelection& rSelection, sal_uInt16 nWordType ) const;
273 :
274 : void Clear();
275 : void SetText( const OUString& rStr );
276 :
277 : EditTextObject* CreateTextObject();
278 : EditTextObject* CreateTextObject( sal_Int32 nPara, sal_Int32 nParas = 1 );
279 : EditTextObject* CreateTextObject( const ESelection& rESelection );
280 : void SetText( const EditTextObject& rTextObject );
281 :
282 : void RemoveParagraph( sal_Int32 nPara );
283 : void InsertParagraph( sal_Int32 nPara, const EditTextObject& rTxtObj );
284 : void InsertParagraph( sal_Int32 nPara, const String& rText);
285 :
286 : void SetText( sal_Int32 nPara, const String& rText);
287 :
288 : virtual void SetParaAttribs( sal_Int32 nPara, const SfxItemSet& rSet );
289 : virtual const SfxItemSet& GetParaAttribs( sal_Int32 nPara ) const;
290 :
291 : void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const;
292 :
293 : SfxItemSet GetAttribs( sal_Int32 nPara, sal_uInt16 nStart, sal_uInt16 nEnd, sal_uInt8 nFlags = 0xFF ) const;
294 : SfxItemSet GetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib = EditEngineAttribs_All );
295 :
296 : sal_Bool HasParaAttrib( sal_Int32 nPara, sal_uInt16 nWhich ) const;
297 : const SfxPoolItem& GetParaAttrib( sal_Int32 nPara, sal_uInt16 nWhich );
298 :
299 : Font GetStandardFont( sal_Int32 nPara );
300 : SvxFont GetStandardSvxFont( sal_Int32 nPara );
301 :
302 : void RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich );
303 :
304 : void ShowParagraph( sal_Int32 nParagraph, sal_Bool bShow = sal_True );
305 :
306 : ::svl::IUndoManager& GetUndoManager();
307 : ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew);
308 : void UndoActionStart( sal_uInt16 nId );
309 : void UndoActionStart(sal_uInt16 nId, const ESelection& rSel);
310 : void UndoActionEnd( sal_uInt16 nId );
311 : sal_Bool IsInUndo();
312 :
313 : void EnableUndo( sal_Bool bEnable );
314 : sal_Bool IsUndoEnabled();
315 :
316 : /** returns the value last used for bTryMerge while calling ImpEditEngine::InsertUndo
317 : This is currently used in a bad but needed hack to get undo actions merged in the
318 : OutlineView in impress. Do not use it unless you want to sell your soul too! */
319 : bool HasTriedMergeOnLastAddUndo() const;
320 :
321 : void ClearModifyFlag();
322 : void SetModified();
323 : sal_Bool IsModified() const;
324 :
325 : void SetModifyHdl( const Link& rLink );
326 : Link GetModifyHdl() const;
327 :
328 : sal_Bool IsInSelectionMode() const;
329 :
330 : void StripPortions();
331 : void GetPortions( sal_Int32 nPara, std::vector<sal_uInt16>& rList );
332 :
333 : long GetFirstLineStartX( sal_Int32 nParagraph );
334 : Point GetDocPosTopLeft( sal_Int32 nParagraph );
335 : Point GetDocPos( const Point& rPaperPos ) const;
336 : sal_Bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder = 0 );
337 :
338 : // StartDocPos corrresponds to VisArea.TopLeft().
339 : void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect );
340 : void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos );
341 : void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos, sal_Bool bClip );
342 : void Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation = 0 );
343 :
344 : // sal_uInt32: Error code of the stream.
345 : sal_uLong Read( SvStream& rInput, const String& rBaseURL, EETextFormat, SvKeyValueIterator* pHTTPHeaderAttrs = NULL );
346 : sal_uLong Write( SvStream& rOutput, EETextFormat );
347 :
348 : void SetStatusEventHdl( const Link& rLink );
349 : Link GetStatusEventHdl() const;
350 :
351 : void SetNotifyHdl( const Link& rLink );
352 : Link GetNotifyHdl() const;
353 :
354 : void SetImportHdl( const Link& rLink );
355 : Link GetImportHdl() const;
356 :
357 : // Do not evaluate font formatting => For Outliner
358 : sal_Bool IsFlatMode() const;
359 : void SetFlatMode( sal_Bool bFlat );
360 :
361 : void SetControlWord( sal_uInt32 nWord );
362 : sal_uInt32 GetControlWord() const;
363 :
364 : void QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel );
365 : void QuickRemoveCharAttribs( sal_Int32 nPara, sal_uInt16 nWhich = 0 );
366 : void QuickMarkInvalid( const ESelection& rSel );
367 : void QuickFormatDoc( sal_Bool bFull = sal_False );
368 : void QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel );
369 : void QuickInsertLineBreak( const ESelection& rSel );
370 : void QuickInsertText( const String& rText, const ESelection& rSel );
371 : void QuickDelete( const ESelection& rSel );
372 : void QuickMarkToBeRepainted( sal_Int32 nPara );
373 :
374 : void SetGlobalCharStretching( sal_uInt16 nX = 100, sal_uInt16 nY = 100 );
375 : void GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY ) const;
376 :
377 : void SetEditTextObjectPool( SfxItemPool* pPool );
378 : SfxItemPool* GetEditTextObjectPool() const;
379 :
380 : void SetStyleSheetPool( SfxStyleSheetPool* pSPool );
381 : SfxStyleSheetPool* GetStyleSheetPool();
382 :
383 : void SetStyleSheet(const EditSelection& aSel, SfxStyleSheet* pStyle);
384 : void SetStyleSheet( sal_Int32 nPara, SfxStyleSheet* pStyle );
385 : const SfxStyleSheet* GetStyleSheet( sal_Int32 nPara ) const;
386 : SfxStyleSheet* GetStyleSheet( sal_Int32 nPara );
387 :
388 : void SetWordDelimiters( const String& rDelimiters );
389 : String GetWordDelimiters() const;
390 :
391 : void EraseVirtualDevice();
392 :
393 : void SetSpeller( ::com::sun::star::uno::Reference<
394 : ::com::sun::star::linguistic2::XSpellChecker1 > &xSpeller );
395 : ::com::sun::star::uno::Reference<
396 : ::com::sun::star::linguistic2::XSpellChecker1 >
397 : GetSpeller();
398 : void SetHyphenator( ::com::sun::star::uno::Reference<
399 : ::com::sun::star::linguistic2::XHyphenator >& xHyph );
400 :
401 : void SetForbiddenCharsTable( rtl::Reference<SvxForbiddenCharactersTable> xForbiddenChars );
402 :
403 : void SetDefaultLanguage( LanguageType eLang );
404 : LanguageType GetDefaultLanguage() const;
405 :
406 : sal_Bool HasOnlineSpellErrors() const;
407 : void CompleteOnlineSpelling();
408 :
409 : sal_Bool ShouldCreateBigTextObject() const;
410 :
411 : // For fast Pre-Test without view:
412 : EESpellState HasSpellErrors();
413 : sal_Bool HasText( const SvxSearchItem& rSearchItem );
414 :
415 : //initialize sentence spelling
416 : void StartSpelling(EditView& rEditView, sal_Bool bMultipleDoc);
417 : //spell and return a sentence
418 : bool SpellSentence(EditView& rEditView, ::svx::SpellPortions& rToFill, bool bIsGrammarChecking );
419 : // put spell position to start of current sentence
420 : void PutSpellingToSentenceStart( EditView& rEditView );
421 : //applies a changed sentence
422 : void ApplyChangedSentence(EditView& rEditView, const ::svx::SpellPortions& rNewPortions, bool bRecheck );
423 :
424 : // for text conversion (see also HasSpellErrors)
425 : sal_Bool HasConvertibleTextPortion( LanguageType nLang );
426 : virtual sal_Bool ConvertNextDocument();
427 :
428 : bool UpdateFields();
429 : bool UpdateFieldsOnly();
430 : void RemoveFields( sal_Bool bKeepFieldText, TypeId aType = NULL );
431 :
432 : sal_uInt16 GetFieldCount( sal_Int32 nPara ) const;
433 : EFieldInfo GetFieldInfo( sal_Int32 nPara, sal_uInt16 nField ) const;
434 :
435 : sal_Bool IsRightToLeft( sal_Int32 nPara ) const;
436 :
437 : ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >
438 : CreateTransferable( const ESelection& rSelection ) const;
439 :
440 : // MT: Can't create new virtual functions like for ParagraphInserted/Deleted, musst be compatible in SRC638, change later...
441 : void SetBeginMovingParagraphsHdl( const Link& rLink );
442 : void SetEndMovingParagraphsHdl( const Link& rLink );
443 : void SetBeginPasteOrDropHdl( const Link& rLink );
444 : void SetEndPasteOrDropHdl( const Link& rLink );
445 :
446 : virtual void PaintingFirstLine( sal_Int32 nPara, const Point& rStartPos, long nBaseLineY, const Point& rOrigin, short nOrientation, OutputDevice* pOutDev );
447 : virtual void ParagraphInserted( sal_Int32 nNewParagraph );
448 : virtual void ParagraphDeleted( sal_Int32 nDeletedParagraph );
449 : virtual void ParagraphConnected( sal_Int32 nLeftParagraph, sal_Int32 nRightParagraph );
450 : virtual void ParaAttribsChanged( sal_Int32 nParagraph );
451 : virtual void StyleSheetChanged( SfxStyleSheet* pStyle );
452 : virtual void ParagraphHeightChanged( sal_Int32 nPara );
453 :
454 : virtual void DrawingText(
455 : const Point& rStartPos, const String& rText, sal_uInt16 nTextStart, sal_uInt16 nTextLen, const sal_Int32* pDXArray,
456 : const SvxFont& rFont, sal_Int32 nPara, xub_StrLen nIndex, sal_uInt8 nRightToLeft,
457 : const EEngineData::WrongSpellVector* pWrongSpellVector,
458 : const SvxFieldData* pFieldData,
459 : bool bEndOfLine,
460 : bool bEndOfParagraph,
461 : bool bEndOfBullet,
462 : const ::com::sun::star::lang::Locale* pLocale,
463 : const Color& rOverlineColor,
464 : const Color& rTextLineColor);
465 :
466 : virtual void DrawingTab(
467 : const Point& rStartPos, long nWidth, const String& rChar,
468 : const SvxFont& rFont, sal_Int32 nPara, xub_StrLen nIndex, sal_uInt8 nRightToLeft,
469 : bool bEndOfLine,
470 : bool bEndOfParagraph,
471 : const Color& rOverlineColor,
472 : const Color& rTextLineColor);
473 : virtual String GetUndoComment( sal_uInt16 nUndoId ) const;
474 : virtual sal_Bool FormattingParagraph( sal_Int32 nPara );
475 : virtual sal_Bool SpellNextDocument();
476 : virtual void FieldClicked( const SvxFieldItem& rField, sal_Int32 nPara, xub_StrLen nPos );
477 : virtual void FieldSelected( const SvxFieldItem& rField, sal_Int32 nPara, xub_StrLen nPos );
478 : virtual OUString CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, xub_StrLen nPos, Color*& rTxtColor, Color*& rFldColor );
479 :
480 : // to be overloaded if access to bullet information needs to be provided
481 : virtual const SvxNumberFormat * GetNumberFormat( sal_Int32 nPara ) const;
482 :
483 : virtual Rectangle GetBulletArea( sal_Int32 nPara );
484 :
485 : static SfxItemPool* CreatePool( sal_Bool bLoadRefCounts = sal_True );
486 : static SfxItemPool& GetGlobalItemPool();
487 : static sal_Bool DoesKeyChangeText( const KeyEvent& rKeyEvent );
488 : static sal_Bool DoesKeyMoveCursor( const KeyEvent& rKeyEvent );
489 : static sal_Bool IsSimpleCharInput( const KeyEvent& rKeyEvent );
490 : static void SetFontInfoInItemSet( SfxItemSet& rItemSet, const Font& rFont );
491 : static void SetFontInfoInItemSet( SfxItemSet& rItemSet, const SvxFont& rFont );
492 : static Font CreateFontFromItemSet( const SfxItemSet& rItemSet, sal_uInt16 nScriptType );
493 : static SvxFont CreateSvxFontFromItemSet( const SfxItemSet& rItemSet );
494 0 : static sal_Bool IsPrintable( sal_Unicode c ) { return ( ( c >= 32 ) && ( c != 127 ) ); }
495 : static sal_Bool HasValidData( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rTransferable );
496 :
497 : /** sets a link that is called at the beginning of a drag operation at an edit view */
498 : void SetBeginDropHdl( const Link& rLink );
499 : Link GetBeginDropHdl() const;
500 :
501 : /** sets a link that is called at the end of a drag operation at an edit view */
502 : void SetEndDropHdl( const Link& rLink );
503 : Link GetEndDropHdl() const;
504 :
505 : /// specifies if auto-correction should capitalize the first word or not (default is on)
506 : void SetFirstWordCapitalization( sal_Bool bCapitalize );
507 :
508 : EditDoc& GetEditDoc();
509 : const EditDoc& GetEditDoc() const;
510 :
511 : ParaPortionList& GetParaPortions();
512 : const ParaPortionList& GetParaPortions() const;
513 :
514 : bool IsFormatted() const;
515 : bool IsImportHandlerSet() const;
516 : bool IsImportRTFStyleSheetsSet() const;
517 :
518 : void CallImportHandler(ImportInfo& rInfo);
519 :
520 : void ParaAttribsToCharAttribs(ContentNode* pNode);
521 :
522 : EditPaM CreateEditPaM(const EPaM& rEPaM);
523 : EditPaM ConnectParagraphs(
524 : ContentNode* pLeft, ContentNode* pRight, bool bBackward = false);
525 :
526 : EditPaM InsertField(const EditSelection& rEditSelection, const SvxFieldItem& rFld);
527 : EditPaM InsertText(const EditSelection& aCurEditSelection, const String& rStr);
528 : EditSelection InsertText(const EditTextObject& rTextObject, const EditSelection& rSel);
529 : EditPaM InsertParaBreak(
530 : const EditSelection& rEditSelection, bool bKeepEndingAttribs = true);
531 : EditPaM InsertLineBreak(const EditSelection& rEditSelection);
532 :
533 : EditPaM CursorLeft(
534 : const EditPaM& rPaM, sal_uInt16 nCharacterIteratorMode = com::sun::star::i18n::CharacterIteratorMode::SKIPCELL);
535 : EditPaM CursorRight(
536 : const EditPaM& rPaM, sal_uInt16 nCharacterIteratorMode = com::sun::star::i18n::CharacterIteratorMode::SKIPCELL);
537 :
538 : void SeekCursor(
539 : ContentNode* pNode, sal_uInt16 nPos, SvxFont& rFont, OutputDevice* pOut = NULL, sal_uInt16 nIgnoreWhich = 0);
540 :
541 : EditPaM DeleteSelection(const EditSelection& rSel);
542 :
543 : ESelection CreateESelection(const EditSelection& rSel);
544 : EditSelection CreateSelection(const ESelection& rSel);
545 :
546 : const SfxItemSet& GetBaseParaAttribs(sal_Int32 nPara) const;
547 : void SetParaAttribsOnly(sal_Int32 nPara, const SfxItemSet& rSet);
548 : void SetAttribs(const EditSelection& rSel, const SfxItemSet& rSet, sal_uInt8 nSpecial = 0);
549 :
550 : String GetSelected(const EditSelection& rSel, const LineEnd eParaSep = LINEEND_LF) const;
551 : EditPaM DeleteSelected(const EditSelection& rSel);
552 :
553 : sal_uInt16 GetScriptType(const EditSelection& rSel) const;
554 :
555 : void RemoveParaPortion(sal_Int32 nNode);
556 :
557 : void SetCallParaInsertedOrDeleted(bool b);
558 : bool IsCallParaInsertedOrDeleted() const;
559 :
560 : void AppendDeletedNodeInfo(DeletedNodeInfo* pInfo);
561 : void UpdateSelections();
562 :
563 : void InsertContent(ContentNode* pNode, sal_Int32 nPos);
564 : EditPaM SplitContent(sal_Int32 nNode, sal_uInt16 nSepPos);
565 : EditPaM ConnectContents(sal_Int32 nLeftNode, bool bBackward);
566 :
567 : EditPaM InsertFeature(const EditSelection& rEditSelection, const SfxPoolItem& rItem);
568 :
569 : EditSelection MoveParagraphs(const Range& rParagraphs, sal_Int32 nNewPos, EditView* pCurView);
570 :
571 : void RemoveCharAttribs(sal_Int32 nPara, sal_uInt16 nWhich = 0, bool bRemoveFeatures = false);
572 : void RemoveCharAttribs(const EditSelection& rSel, bool bRemoveParaAttribs, sal_uInt16 nWhich = 0);
573 :
574 : ViewsType& GetEditViews();
575 : const ViewsType& GetEditViews() const;
576 :
577 : void SetUndoMode(bool b);
578 : void FormatAndUpdate(EditView* pCurView = NULL);
579 :
580 : bool Undo(EditView* pView);
581 : bool Redo(EditView* pView);
582 : };
583 :
584 : #endif // _MyEDITENG_HXX
585 :
586 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|