xref: /aoo4110/main/editeng/inc/editeng/splwrap.hxx (revision b1cdbd2c)
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 #ifndef _SVX_SPLWRAP_HXX
24 #define _SVX_SPLWRAP_HXX
25 
26 // include ---------------------------------------------------------------
27 
28 #include <editeng/svxenum.hxx>
29 #include <tools/string.hxx>
30 #include <com/sun/star/uno/Reference.hxx>
31 #include "editeng/editengdllapi.h"
32 
33 // forward ---------------------------------------------------------------
34 
35 namespace com { namespace sun { namespace star { namespace linguistic2 {
36 	class XDictionary;
37 	class XSpellChecker1;
38 	class XHyphenator;
39 }}}}
40 
41 class Window;
42 class SdrObject;
43 // misc functions ---------------------------------------------------------------
44 
45 void EDITENG_DLLPUBLIC SvxPrepareAutoCorrect( String &rOldText, String &rNewText );
46 
47 /*--------------------------------------------------------------------
48 	 Beschreibung: Der SpellWrapper
49  --------------------------------------------------------------------*/
50 
51 class EDITENG_DLLPUBLIC SvxSpellWrapper {
52 private:
53 	friend class SvxSpellCheckDialog;
54     friend class SvxHyphenWordDialog;
55     friend class SvxHyphenWordDialog_Impl;
56 
57 	Window*		pWin;
58 	::com::sun::star::uno::Reference<
59 		::com::sun::star::uno::XInterface > 			xLast;	// result of last spelling/hyphenation attempt
60 	::com::sun::star::uno::Reference<
61 		::com::sun::star::linguistic2::XSpellChecker1 > xSpell;
62 	::com::sun::star::uno::Reference<
63 		::com::sun::star::linguistic2::XHyphenator > 	xHyph;
64 	SdrObject* mpTextObj;
65 	sal_uInt16 	nOldLang; 		// Sprache merken, nur bei Aenderung SetLanguage rufen
66 	sal_Bool 	bOtherCntnt : 1; // gesetzt => Sonderbereiche zunaechst pruefen
67 	sal_Bool 	bDialog		: 1; // Ist pWin der Svx...Dialog?
68 	sal_Bool 	bHyphen		: 1; // Trennen statt Spellen
69 	sal_Bool	bAuto		: 1; // Autokorrektur vorhanden?
70 	sal_Bool	bReverse	: 1; // Rueckwaerts Spellen
71 	sal_Bool	bStartDone	: 1; // Vorderen Teil bereits korrigiert
72 	sal_Bool	bEndDone	: 1; // Hinteren Teil bereits korrigiert
73 	sal_Bool	bStartChk	: 1; // Vorderen Teil pruefen
74 	sal_Bool	bRevAllowed : 1; // Niemals rueckwaerts spellen
75 	sal_Bool	bAllRight	: 1; // falsche Woerter in geignetes Woerterbuch
76 							 // aufnehmen und nicht den Dialog starten.
77 
78 	EDITENG_DLLPRIVATE sal_Bool 	SpellNext();   		// naechsten Bereich anwaehlen
79 	sal_Bool	FindSpellError(); 	// Suche nach Fehlern ( ueber Bereiche hinweg )
80 
81 public:
82 	SvxSpellWrapper( Window* pWn,
83 					 ::com::sun::star::uno::Reference<
84 					 	::com::sun::star::linguistic2::XSpellChecker1 >  &xSpellChecker,
85 					 const sal_Bool bStart = sal_False, const sal_Bool bIsAllRight = sal_False,
86 					 const sal_Bool bOther = sal_False, const sal_Bool bRevAllow = sal_True );
87 	SvxSpellWrapper( Window* pWn,
88 					 ::com::sun::star::uno::Reference<
89 					 	::com::sun::star::linguistic2::XHyphenator >  &xHyphenator,
90 					 const sal_Bool bStart = sal_False, const sal_Bool bOther = sal_False );
91 
92 	virtual ~SvxSpellWrapper();
93 
94 	static sal_Int16	CheckSpellLang(
95 							::com::sun::star::uno::Reference<
96 								::com::sun::star::linguistic2::XSpellChecker1 >  xSpell,
97 							sal_Int16 nLang );
98 	static sal_Int16	CheckHyphLang(
99 							::com::sun::star::uno::Reference<
100 								::com::sun::star::linguistic2::XHyphenator >  xHyph,
101 							sal_Int16 nLang );
102 
103 	static void			ShowLanguageErrors();
104 
105 	void 			SpellDocument();		// Rechtschreibpruefung durchfuehren
IsStartDone()106 	inline sal_Bool IsStartDone(){ return bStartDone; }
IsEndDone()107 	inline sal_Bool IsEndDone(){ return bEndDone; }
IsReverse()108 	inline sal_Bool IsReverse(){ return bReverse; }
IsDialog()109 	inline sal_Bool IsDialog(){ return bDialog; } // SvxSpellCheckDialog OnScreen
IsHyphen()110 	inline sal_Bool IsHyphen(){ return bHyphen; } // Trennen statt Spellen
SetHyphen(const sal_Bool bNew=sal_True)111 	inline void 	SetHyphen( const sal_Bool bNew = sal_True ){ bHyphen = bNew; }
112 	inline ::com::sun::star::uno::Reference<
113 		::com::sun::star::linguistic2::XSpellChecker1 >
GetXSpellChecker()114 					GetXSpellChecker() { return xSpell; }
115 	inline ::com::sun::star::uno::Reference<
116 		::com::sun::star::linguistic2::XHyphenator >
GetXHyphenator()117 					GetXHyphenator() 	{ return xHyph; }
IsAllRight()118 	inline sal_Bool				IsAllRight()		{ return bAllRight; }
GetWin()119 	inline Window* 	GetWin() { return pWin; }
120 	// kann evtl entfallen in ONE_LINGU:
SetOldLang(const sal_uInt16 nNew)121 	inline void 	SetOldLang( const sal_uInt16 nNew ){ nOldLang = nNew; }
122 	// kann evtl entfallen in ONE_LINGU:
ChangeLanguage(const sal_uInt16 nNew)123 	inline void 	ChangeLanguage( const sal_uInt16 nNew ) // rufe ggf. SetLanguage
124 		{ if ( nNew != nOldLang ) { SetLanguage( nNew ); nOldLang = nNew; } }
EnableAutoCorrect()125 	inline void 	EnableAutoCorrect() { bAuto = sal_True; }
126 
127 protected:
128 	::com::sun::star::uno::Reference<
129 		::com::sun::star::uno::XInterface >
GetLast()130 					 GetLast()		{ return xLast; }
SetLast(const::com::sun::star::uno::Reference<::com::sun::star::uno::XInterface> & xNewLast)131 	void			 SetLast(const ::com::sun::star::uno::Reference<
132 								::com::sun::star::uno::XInterface >  &xNewLast)
133 							{ xLast = xNewLast; }
134 	virtual	sal_Bool SpellMore(); 				// weitere Dokumente pruefen?
135 	virtual	sal_Bool HasOtherCnt(); 			// gibt es ueberhaupt Sonderbereiche
136 	virtual	void 	 SpellStart( SvxSpellArea eSpell ); // Bereich vorbereiten
137 	virtual	sal_Bool SpellContinue();			// Bereich pruefen
138 											// Ergebnis mit GetLast verfuegbar
139 	virtual void ReplaceAll( const String &rNewText, sal_Int16 nLanguage );	// Wort aus Replace-Liste ersetzen
140 	virtual void StartThesaurus( const String &rWord, sal_uInt16 nLang );	// Thesaurus starten
141 	virtual ::com::sun::star::uno::Reference<
142 		::com::sun::star::linguistic2::XDictionary >
143 				 GetAllRightDic() const;
144 	virtual	void SpellEnd();                        // Bereich abschliessen
145 	virtual void ScrollArea();                      // ScrollArea einstellen
146 	// Wort ersetzen
147 	virtual void ChangeWord( const String& rNewWord, const sal_uInt16 nLang );
148 	virtual String GetThesWord();
149 	// Wort via Thesaurus ersetzen
150 	virtual void ChangeThesWord( const String& rNewWord );
151 	virtual void SetLanguage( const sal_uInt16 nLang ); // Sprache aendern
152 	virtual void AutoCorrect( const String& rAktStr, const String& rNewStr );
153 	virtual void InsertHyphen( const sal_uInt16 nPos ); // Hyphen einfuegen
154 
SetCurTextObj(SdrObject * pObj)155 	void SetCurTextObj( SdrObject* pObj ) { mpTextObj = pObj; }
GetCurTextObj()156 	SdrObject* GetCurTextObj() { return mpTextObj; }
157 };
158 
159 #endif
160