blob: 64ea8f7e694d2a14ed814661e9f06957f5af02f0 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SVX_SPLWRAP_HXX
#define _SVX_SPLWRAP_HXX
// include ---------------------------------------------------------------
#include <editeng/svxenum.hxx>
#include <tools/string.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include "editeng/editengdllapi.h"
// forward ---------------------------------------------------------------
namespace com { namespace sun { namespace star { namespace linguistic2 {
class XDictionary;
class XSpellChecker1;
class XHyphenator;
}}}}
class Window;
class SdrObject;
// misc functions ---------------------------------------------------------------
void EDITENG_DLLPUBLIC SvxPrepareAutoCorrect( String &rOldText, String &rNewText );
/*--------------------------------------------------------------------
Beschreibung: Der SpellWrapper
--------------------------------------------------------------------*/
class EDITENG_DLLPUBLIC SvxSpellWrapper {
private:
friend class SvxSpellCheckDialog;
friend class SvxHyphenWordDialog;
friend class SvxHyphenWordDialog_Impl;
Window* pWin;
::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface > xLast; // result of last spelling/hyphenation attempt
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XSpellChecker1 > xSpell;
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XHyphenator > xHyph;
SdrObject* mpTextObj;
sal_uInt16 nOldLang; // Sprache merken, nur bei Aenderung SetLanguage rufen
sal_Bool bOtherCntnt : 1; // gesetzt => Sonderbereiche zunaechst pruefen
sal_Bool bDialog : 1; // Ist pWin der Svx...Dialog?
sal_Bool bHyphen : 1; // Trennen statt Spellen
sal_Bool bAuto : 1; // Autokorrektur vorhanden?
sal_Bool bReverse : 1; // Rueckwaerts Spellen
sal_Bool bStartDone : 1; // Vorderen Teil bereits korrigiert
sal_Bool bEndDone : 1; // Hinteren Teil bereits korrigiert
sal_Bool bStartChk : 1; // Vorderen Teil pruefen
sal_Bool bRevAllowed : 1; // Niemals rueckwaerts spellen
sal_Bool bAllRight : 1; // falsche Woerter in geignetes Woerterbuch
// aufnehmen und nicht den Dialog starten.
EDITENG_DLLPRIVATE sal_Bool SpellNext(); // naechsten Bereich anwaehlen
sal_Bool FindSpellError(); // Suche nach Fehlern ( ueber Bereiche hinweg )
public:
SvxSpellWrapper( Window* pWn,
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XSpellChecker1 > &xSpellChecker,
const sal_Bool bStart = sal_False, const sal_Bool bIsAllRight = sal_False,
const sal_Bool bOther = sal_False, const sal_Bool bRevAllow = sal_True );
SvxSpellWrapper( Window* pWn,
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XHyphenator > &xHyphenator,
const sal_Bool bStart = sal_False, const sal_Bool bOther = sal_False );
virtual ~SvxSpellWrapper();
static sal_Int16 CheckSpellLang(
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XSpellChecker1 > xSpell,
sal_Int16 nLang );
static sal_Int16 CheckHyphLang(
::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XHyphenator > xHyph,
sal_Int16 nLang );
static void ShowLanguageErrors();
void SpellDocument(); // Rechtschreibpruefung durchfuehren
inline sal_Bool IsStartDone(){ return bStartDone; }
inline sal_Bool IsEndDone(){ return bEndDone; }
inline sal_Bool IsReverse(){ return bReverse; }
inline sal_Bool IsDialog(){ return bDialog; } // SvxSpellCheckDialog OnScreen
inline sal_Bool IsHyphen(){ return bHyphen; } // Trennen statt Spellen
inline void SetHyphen( const sal_Bool bNew = sal_True ){ bHyphen = bNew; }
inline ::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XSpellChecker1 >
GetXSpellChecker() { return xSpell; }
inline ::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XHyphenator >
GetXHyphenator() { return xHyph; }
inline sal_Bool IsAllRight() { return bAllRight; }
inline Window* GetWin() { return pWin; }
// kann evtl entfallen in ONE_LINGU:
inline void SetOldLang( const sal_uInt16 nNew ){ nOldLang = nNew; }
// kann evtl entfallen in ONE_LINGU:
inline void ChangeLanguage( const sal_uInt16 nNew ) // rufe ggf. SetLanguage
{ if ( nNew != nOldLang ) { SetLanguage( nNew ); nOldLang = nNew; } }
inline void EnableAutoCorrect() { bAuto = sal_True; }
protected:
::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface >
GetLast() { return xLast; }
void SetLast(const ::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface > &xNewLast)
{ xLast = xNewLast; }
virtual sal_Bool SpellMore(); // weitere Dokumente pruefen?
virtual sal_Bool HasOtherCnt(); // gibt es ueberhaupt Sonderbereiche
virtual void SpellStart( SvxSpellArea eSpell ); // Bereich vorbereiten
virtual sal_Bool SpellContinue(); // Bereich pruefen
// Ergebnis mit GetLast verfuegbar
virtual void ReplaceAll( const String &rNewText, sal_Int16 nLanguage ); // Wort aus Replace-Liste ersetzen
virtual void StartThesaurus( const String &rWord, sal_uInt16 nLang ); // Thesaurus starten
virtual ::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XDictionary >
GetAllRightDic() const;
virtual void SpellEnd(); // Bereich abschliessen
virtual void ScrollArea(); // ScrollArea einstellen
// Wort ersetzen
virtual void ChangeWord( const String& rNewWord, const sal_uInt16 nLang );
virtual String GetThesWord();
// Wort via Thesaurus ersetzen
virtual void ChangeThesWord( const String& rNewWord );
virtual void SetLanguage( const sal_uInt16 nLang ); // Sprache aendern
virtual void AutoCorrect( const String& rAktStr, const String& rNewStr );
virtual void InsertHyphen( const sal_uInt16 nPos ); // Hyphen einfuegen
void SetCurTextObj( SdrObject* pObj ) { mpTextObj = pObj; }
SdrObject* GetCurTextObj() { return mpTextObj; }
};
#endif