summaryrefslogtreecommitdiff
path: root/lingucomponent/source/spellcheck
diff options
context:
space:
mode:
Diffstat (limited to 'lingucomponent/source/spellcheck')
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component34
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macreg.cxx73
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx657
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx155
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/makefile.mk100
-rw-r--r--lingucomponent/source/spellcheck/spell/exports.dxp1
-rw-r--r--lingucomponent/source/spellcheck/spell/makefile.mk95
-rw-r--r--lingucomponent/source/spellcheck/spell/spell.component34
-rw-r--r--lingucomponent/source/spellcheck/spell/sreg.cxx71
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.cxx700
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.hxx143
11 files changed, 0 insertions, 2063 deletions
diff --git a/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component b/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component
deleted file mode 100644
index 2f2f9e102..000000000
--- a/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--**********************************************************************
-*
-* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-*
-* Copyright 2000, 2010 Oracle and/or its affiliates.
-*
-* OpenOffice.org - a multi-platform office productivity suite
-*
-* This file is part of OpenOffice.org.
-*
-* OpenOffice.org is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License version 3
-* only, as published by the Free Software Foundation.
-*
-* OpenOffice.org is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Lesser General Public License version 3 for more details
-* (a copy is included in the LICENSE file that accompanied this code).
-*
-* You should have received a copy of the GNU Lesser General Public License
-* version 3 along with OpenOffice.org. If not, see
-* <http://www.openoffice.org/license.html>
-* for a copy of the LGPLv3 License.
-*
-**********************************************************************-->
-
-<component loader="com.sun.star.loader.SharedLibrary"
- xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="org.openoffice.lingu.MacOSXSpellChecker">
- <service name="com.sun.star.linguistic2.SpellChecker"/>
- </implementation>
-</component>
diff --git a/lingucomponent/source/spellcheck/macosxspell/macreg.cxx b/lingucomponent/source/spellcheck/macosxspell/macreg.cxx
deleted file mode 100644
index 42a26c40a..000000000
--- a/lingucomponent/source/spellcheck/macosxspell/macreg.cxx
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_lingucomponent.hxx"
-
-
-#include <cppuhelper/factory.hxx> // helper for factories
-#include <rtl/string.hxx>
-
-#include <com/sun/star/registry/XRegistryKey.hpp>
-
-using namespace com::sun::star::lang;
-using namespace com::sun::star::registry;
-
-////////////////////////////////////////
-// declaration of external RegEntry-functions defined by the service objects
-//
-
-extern void * SAL_CALL MacSpellChecker_getFactory(
- const sal_Char * pImplName,
- XMultiServiceFactory * pServiceManager,
- void * /*pRegistryKey*/ );
-
-////////////////////////////////////////
-// definition of the two functions that are used to provide the services
-//
-
-extern "C"
-{
-
-SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
- const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
-{
- void * pRet = NULL;
- pRet = MacSpellChecker_getFactory(
- pImplName,
- reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
- pRegistryKey );
-
- return pRet;
-}
-
-}
-
-///////////////////////////////////////////////////////////////////////////
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx
deleted file mode 100644
index fd9004e28..000000000
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx
+++ /dev/null
@@ -1,657 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_lingucomponent.hxx"
-#include <com/sun/star/uno/Reference.h>
-#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
-
-#include <com/sun/star/linguistic2/SpellFailure.hpp>
-#include <cppuhelper/factory.hxx> // helper for factories
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include <tools/debug.hxx>
-#include <unotools/processfactory.hxx>
-#include <osl/mutex.hxx>
-
-#include <dictmgr.hxx>
-#include <macspellimp.hxx>
-
-#include <linguistic/spelldta.hxx>
-#include <unotools/pathoptions.hxx>
-#include <unotools/useroptions.hxx>
-#include <osl/file.hxx>
-#include <rtl/ustrbuf.hxx>
-
-using namespace utl;
-using namespace osl;
-using namespace com::sun::star;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::linguistic2;
-using namespace linguistic;
-
-using ::rtl::OUString;
-using ::rtl::OString;
-using ::rtl::OUStringBuffer;
-using ::rtl::OUStringToOString;
-
-///////////////////////////////////////////////////////////////////////////
-// dbg_dump for development
-#if OSL_DEBUG_LEVEL > 1
-#include <rtl/strbuf.hxx>
-#include <rtl/ustring.hxx>
-
-const sal_Char *dbg_dump(const rtl::OString &rStr)
-{
- static rtl::OStringBuffer aStr;
-
- aStr = rtl::OStringBuffer(rStr);
- aStr.append(static_cast<char>(0));
- return aStr.getStr();
-}
-
-const sal_Char *dbg_dump(const rtl::OUString &rStr)
-{
- return dbg_dump(rtl::OUStringToOString(rStr, RTL_TEXTENCODING_UTF8));
-}
-
-const sal_Char *dbg_dump(rtl_String *pStr)
-{
- return dbg_dump(rtl::OString(pStr));
-}
-
-const sal_Char *dbg_dump(rtl_uString *pStr)
-{
- return dbg_dump(rtl::OUString(pStr));
-}
-
-#endif
-///////////////////////////////////////////////////////////////////////////
-
-MacSpellChecker::MacSpellChecker() :
- aEvtListeners ( GetLinguMutex() )
-{
- aDEncs = NULL;
- aDLocs = NULL;
- aDNames = NULL;
- bDisposing = sal_False;
- pPropHelper = NULL;
- numdict = 0;
- NSApplicationLoad();
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
- macSpell = [NSSpellChecker sharedSpellChecker];
- macTag = [NSSpellChecker uniqueSpellDocumentTag];
- [pool release];
-}
-
-
-MacSpellChecker::~MacSpellChecker()
-{
- numdict = 0;
- if (aDEncs) delete[] aDEncs;
- aDEncs = NULL;
- if (aDLocs) delete[] aDLocs;
- aDLocs = NULL;
- if (aDNames) delete[] aDNames;
- aDNames = NULL;
- if (pPropHelper)
- pPropHelper->RemoveAsPropListener();
-}
-
-
-PropertyHelper_Spell & MacSpellChecker::GetPropHelper_Impl()
-{
- if (!pPropHelper)
- {
- Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
-
- pPropHelper = new PropertyHelper_Spell( (XSpellChecker *) this, xPropSet );
- xPropHelper = pPropHelper;
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- return *pPropHelper;
-}
-
-
-Sequence< Locale > SAL_CALL MacSpellChecker::getLocales()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- // this routine should return the locales supported by the installed
- // dictionaries. So here we need to parse both the user edited
- // dictionary list and the shared dictionary list
- // to see what dictionaries the admin/user has installed
-
- int numusr; // number of user dictionary entries
- int numshr; // number of shared dictionary entries
- dictentry * spdict; // shared dict entry pointer
- dictentry * updict; // user dict entry pointer
- SvtPathOptions aPathOpt;
- rtl_TextEncoding aEnc = RTL_TEXTENCODING_UTF8;
-
- std::vector<objc_object *> postspdict;
- std::vector<dictentry *> postupdict;
-
-
- if (!numdict) {
-
- // invoke a dictionary manager to get the user dictionary list
- // TODO How on Mac OS X?
-
- // invoke a second dictionary manager to get the shared dictionary list
- NSArray *aLocales = [NSLocale availableLocaleIdentifiers];
-
- //Test for existence of the dictionaries
- for (unsigned int i = 0; i < [aLocales count]; i++)
- {
- if( [macSpell setLanguage:[aLocales objectAtIndex:i] ] )
- {
- postspdict.push_back( [ aLocales objectAtIndex:i ] );
- }
- }
-
- numusr = postupdict.size();
- numshr = postspdict.size();
-
- // we really should merge these and remove duplicates but since
- // users can name their dictionaries anything they want it would
- // be impossible to know if a real duplication exists unless we
- // add some unique key to each myspell dictionary
- numdict = numshr + numusr;
-
- if (numdict) {
- aDLocs = new Locale [numdict];
- aDEncs = new rtl_TextEncoding [numdict];
- aDNames = new OUString [numdict];
- aSuppLocales.realloc(numdict);
- Locale * pLocale = aSuppLocales.getArray();
- int numlocs = 0;
- int newloc;
- int i,j;
- int k = 0;
-
- //first add the user dictionaries
- //TODO for MAC?
-
- // now add the shared dictionaries
- for (i = 0; i < numshr; i++) {
- NSDictionary *aLocDict = [ NSLocale componentsFromLocaleIdentifier:postspdict[i] ];
- NSString* aLang = [ aLocDict objectForKey:NSLocaleLanguageCode ];
- NSString* aCountry = [ aLocDict objectForKey:NSLocaleCountryCode ];
- OUString lang([aLang cStringUsingEncoding: NSUTF8StringEncoding], [aLang length], aEnc);
- OUString country([ aCountry cStringUsingEncoding: NSUTF8StringEncoding], [aCountry length], aEnc);
- Locale nLoc( lang, country, OUString() );
- newloc = 1;
- //eliminate duplicates (is this needed for MacOS?)
- for (j = 0; j < numlocs; j++) {
- if (nLoc == pLocale[j]) newloc = 0;
- }
- if (newloc) {
- pLocale[numlocs] = nLoc;
- numlocs++;
- }
- aDLocs[k] = nLoc;
- aDEncs[k] = 0;
- k++;
- }
-
- aSuppLocales.realloc(numlocs);
-
- } else {
- /* no dictionary.lst found so register no dictionaries */
- numdict = 0;
- aDEncs = NULL;
- aDLocs = NULL;
- aDNames = NULL;
- aSuppLocales.realloc(0);
- }
-
- /* de-allocation of memory is handled inside the DictMgr */
- updict = NULL;
- spdict = NULL;
-
- }
-
- return aSuppLocales;
-}
-
-
-
-sal_Bool SAL_CALL MacSpellChecker::hasLocale(const Locale& rLocale)
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!aSuppLocales.getLength())
- getLocales();
-
- sal_Int32 nLen = aSuppLocales.getLength();
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- const Locale *pLocale = aSuppLocales.getConstArray();
- if (rLocale == pLocale[i])
- {
- bRes = sal_True;
- break;
- }
- }
- return bRes;
-}
-
-
-sal_Int16 MacSpellChecker::GetSpellFailure( const OUString &rWord, const Locale &rLocale )
-{
- rtl_TextEncoding aEnc;
-
- // initialize a myspell object for each dictionary once
- // (note: mutex is held higher up in isValid)
-
-
- sal_Int16 nRes = -1;
-
- // first handle smart quotes both single and double
- OUStringBuffer rBuf(rWord);
- sal_Int32 n = rBuf.getLength();
- sal_Unicode c;
- for (sal_Int32 ix=0; ix < n; ix++) {
- c = rBuf.charAt(ix);
- if ((c == 0x201C) || (c == 0x201D)) rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((c == 0x2018) || (c == 0x2019)) rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
-
- if (n)
- {
- aEnc = 0;
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
- NSString* aNSStr = [[NSString alloc] initWithCharacters: nWord.getStr() length: nWord.getLength()];
- NSString* aLang = [[NSString alloc] initWithCharacters: rLocale.Language.getStr() length: rLocale.Language.getLength()];
- if(rLocale.Country.getLength()>0)
- {
- NSString* aCountry = [[NSString alloc] initWithCharacters: rLocale.Country.getStr() length: rLocale.Country.getLength()];
- NSString* aTag = @"_";
- NSString* aTaggedCountry = [aTag stringByAppendingString:aCountry];
- [aLang autorelease];
- aLang = [aLang stringByAppendingString:aTaggedCountry];
- }
-
- int aCount;
- NSRange range = [macSpell checkSpellingOfString:aNSStr startingAt:0 language:aLang wrap:sal_False inSpellDocumentWithTag:macTag wordCount:&aCount];
- int rVal = 0;
- if(range.length>0)
- {
- rVal = -1;
- }
- else
- {
- rVal = 1;
- }
- [pool release];
- if (rVal != 1)
- {
- nRes = SpellFailure::SPELLING_ERROR;
- } else {
- return -1;
- }
- }
- return nRes;
-}
-
-
-
-sal_Bool SAL_CALL
- MacSpellChecker::isValid( const OUString& rWord, const Locale& rLocale,
- const PropertyValues& rProperties )
- throw(IllegalArgumentException, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (rLocale == Locale() || !rWord.getLength())
- return sal_True;
-
- if (!hasLocale( rLocale ))
-#ifdef LINGU_EXCEPTIONS
- throw( IllegalArgumentException() );
-#else
- return sal_True;
-#endif
-
- // Get property values to be used.
- // These are be the default values set in the SN_LINGU_PROPERTIES
- // PropertySet which are overridden by the supplied ones from the
- // last argument.
- // You'll probably like to use a simplier solution than the provided
- // one using the PropertyHelper_Spell.
-
- PropertyHelper_Spell &rHelper = GetPropHelper();
- rHelper.SetTmpPropVals( rProperties );
-
- sal_Int16 nFailure = GetSpellFailure( rWord, rLocale );
- if (nFailure != -1)
- {
- sal_Int16 nLang = LocaleToLanguage( rLocale );
- // postprocess result for errors that should be ignored
- if ( (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang ))
- || (!rHelper.IsSpellWithDigits() && HasDigits( rWord ))
- || (!rHelper.IsSpellCapitalization()
- && nFailure == SpellFailure::CAPTION_ERROR)
- )
- nFailure = -1;
- }
-
- return (nFailure == -1);
-}
-
-
-Reference< XSpellAlternatives >
- MacSpellChecker::GetProposals( const OUString &rWord, const Locale &rLocale )
-{
- // Retrieves the return values for the 'spell' function call in case
- // of a misspelled word.
- // Especially it may give a list of suggested (correct) words:
-
- Reference< XSpellAlternatives > xRes;
- // note: mutex is held by higher up by spell which covers both
-
- sal_Int16 nLang = LocaleToLanguage( rLocale );
- int count;
- Sequence< OUString > aStr( 0 );
-
- // first handle smart quotes (single and double)
- OUStringBuffer rBuf(rWord);
- sal_Int32 n = rBuf.getLength();
- sal_Unicode c;
- for (sal_Int32 ix=0; ix < n; ix++) {
- c = rBuf.charAt(ix);
- if ((c == 0x201C) || (c == 0x201D)) rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((c == 0x2018) || (c == 0x2019)) rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
-
- if (n)
- {
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
- NSString* aNSStr = [[NSString alloc] initWithCharacters: nWord.getStr() length: nWord.getLength()];
- NSString* aLang = [[NSString alloc] initWithCharacters: rLocale.Language.getStr() length: rLocale.Language.getLength() ];
- if(rLocale.Country.getLength()>0)
- {
- NSString* aCountry = [[NSString alloc] initWithCharacters: rLocale.Country.getStr() length: rLocale.Country.getLength() ];
- NSString* aTag = @"_";
- NSString* aTaggedCountry = [aTag stringByAppendingString:aCountry];
- [aLang autorelease];
- aLang = [aLang stringByAppendingString:aTaggedCountry];
- }
- [macSpell setLanguage:aLang];
- NSArray *guesses = [macSpell guessesForWord:aNSStr];
- count = [guesses count];
- if (count)
- {
- aStr.realloc( count );
- OUString *pStr = aStr.getArray();
- for (int ii=0; ii < count; ii++)
- {
- // if needed add: if (suglst[ii] == NULL) continue;
- NSString* guess = [guesses objectAtIndex:ii];
- OUString cvtwrd((const sal_Unicode*)[guess cStringUsingEncoding:NSUnicodeStringEncoding], (sal_Int32)[guess length]);
- pStr[ii] = cvtwrd;
- }
- }
- [pool release];
- }
-
- // now return an empty alternative for no suggestions or the list of alternatives if some found
- SpellAlternatives *pAlt = new SpellAlternatives;
- String aTmp(rWord);
- pAlt->SetWordLanguage( aTmp, nLang );
- pAlt->SetFailureType( SpellFailure::SPELLING_ERROR );
- pAlt->SetAlternatives( aStr );
- xRes = pAlt;
- return xRes;
-
-}
-
-
-
-
-Reference< XSpellAlternatives > SAL_CALL
- MacSpellChecker::spell( const OUString& rWord, const Locale& rLocale,
- const PropertyValues& rProperties )
- throw(IllegalArgumentException, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (rLocale == Locale() || !rWord.getLength())
- return NULL;
-
- if (!hasLocale( rLocale ))
-#ifdef LINGU_EXCEPTIONS
- throw( IllegalArgumentException() );
-#else
- return NULL;
-#endif
-
- Reference< XSpellAlternatives > xAlt;
- if (!isValid( rWord, rLocale, rProperties ))
- {
- xAlt = GetProposals( rWord, rLocale );
- }
- return xAlt;
-}
-
-
-Reference< XInterface > SAL_CALL MacSpellChecker_CreateInstance(
- const Reference< XMultiServiceFactory > & /*rSMgr*/ )
- throw(Exception)
-{
-
- Reference< XInterface > xService = (cppu::OWeakObject*) new MacSpellChecker;
- return xService;
-}
-
-
-sal_Bool SAL_CALL
- MacSpellChecker::addLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!bDisposing && rxLstnr.is())
- {
- bRes = GetPropHelper().addLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-sal_Bool SAL_CALL
- MacSpellChecker::removeLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!bDisposing && rxLstnr.is())
- {
- DBG_ASSERT( xPropHelper.is(), "xPropHelper non existent" );
- bRes = GetPropHelper().removeLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-OUString SAL_CALL
- MacSpellChecker::getServiceDisplayName( const Locale& /*rLocale*/ )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
- return A2OU( "Mac OS X Spell Checker" );
-}
-
-
-void SAL_CALL
- MacSpellChecker::initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!pPropHelper)
- {
- sal_Int32 nLen = rArguments.getLength();
- if (2 == nLen)
- {
- Reference< XPropertySet > xPropSet;
- rArguments.getConstArray()[0] >>= xPropSet;
- //rArguments.getConstArray()[1] >>= xDicList;
-
- //! Pointer allows for access of the non-UNO functions.
- //! And the reference to the UNO-functions while increasing
- //! the ref-count and will implicitly free the memory
- //! when the object is not longer used.
- pPropHelper = new PropertyHelper_Spell( (XSpellChecker *) this, xPropSet );
- xPropHelper = pPropHelper;
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- else
- OSL_FAIL( "wrong number of arguments in sequence" );
-
- }
-}
-
-
-void SAL_CALL
- MacSpellChecker::dispose()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing)
- {
- bDisposing = sal_True;
- EventObject aEvtObj( (XSpellChecker *) this );
- aEvtListeners.disposeAndClear( aEvtObj );
- }
-}
-
-
-void SAL_CALL
- MacSpellChecker::addEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.addInterface( rxListener );
-}
-
-
-void SAL_CALL
- MacSpellChecker::removeEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.removeInterface( rxListener );
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-// Service specific part
-//
-
-OUString SAL_CALL MacSpellChecker::getImplementationName()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getImplementationName_Static();
-}
-
-
-sal_Bool SAL_CALL MacSpellChecker::supportsService( const OUString& ServiceName )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNL = getSupportedServiceNames();
- const OUString * pArray = aSNL.getConstArray();
- for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return sal_True;
- return sal_False;
-}
-
-
-Sequence< OUString > SAL_CALL MacSpellChecker::getSupportedServiceNames()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getSupportedServiceNames_Static();
-}
-
-
-Sequence< OUString > MacSpellChecker::getSupportedServiceNames_Static()
- throw()
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNS( 1 ); // auch mehr als 1 Service moeglich
- aSNS.getArray()[0] = A2OU( SN_SPELLCHECKER );
- return aSNS;
-}
-
-void * SAL_CALL MacSpellChecker_getFactory( const sal_Char * pImplName,
- XMultiServiceFactory * pServiceManager, void * )
-{
- void * pRet = 0;
- if ( !MacSpellChecker::getImplementationName_Static().compareToAscii( pImplName ) )
- {
- Reference< XSingleServiceFactory > xFactory =
- cppu::createOneInstanceFactory(
- pServiceManager,
- MacSpellChecker::getImplementationName_Static(),
- MacSpellChecker_CreateInstance,
- MacSpellChecker::getSupportedServiceNames_Static());
- // acquire, because we return an interface pointer instead of a reference
- xFactory->acquire();
- pRet = xFactory.get();
- }
- return pRet;
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
deleted file mode 100644
index 7e20d332c..000000000
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
+++ /dev/null
@@ -1,155 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _MACSPELLIMP_H_
-#define _MACSPELLIMP_H_
-
-#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
-#include <cppuhelper/implbase1.hxx> // helper for implementations
-#include <cppuhelper/implbase6.hxx> // helper for implementations
-
-#ifdef MACOSX
-#include <premac.h>
-#include <Carbon/Carbon.h>
-#import <Cocoa/Cocoa.h>
-#include <postmac.h>
-#endif
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/lang/XServiceDisplayName.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyValues.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/linguistic2/XSpellChecker.hpp>
-#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
-#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
-#include <tools/table.hxx>
-
-#include <linguistic/misc.hxx>
-#include <linguistic/lngprophelp.hxx>
-
-#include <lingutil.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::linguistic2;
-
-using ::rtl::OUString;
-
-
-///////////////////////////////////////////////////////////////////////////
-
-
-class MacSpellChecker :
- public cppu::WeakImplHelper6
- <
- XSpellChecker,
- XLinguServiceEventBroadcaster,
- XInitialization,
- XComponent,
- XServiceInfo,
- XServiceDisplayName
- >
-{
- Sequence< Locale > aSuppLocales;
-// Hunspell ** aDicts;
- rtl_TextEncoding * aDEncs;
- Locale * aDLocs;
- OUString * aDNames;
- sal_Int32 numdict;
- NSSpellChecker * macSpell;
- int macTag; //unique tag for this doc
-
- ::cppu::OInterfaceContainerHelper aEvtListeners;
- Reference< XPropertyChangeListener > xPropHelper;
- linguistic::PropertyHelper_Spell * pPropHelper;
- sal_Bool bDisposing;
-
- // disallow copy-constructor and assignment-operator for now
- MacSpellChecker(const MacSpellChecker &);
- MacSpellChecker & operator = (const MacSpellChecker &);
-
- linguistic::PropertyHelper_Spell & GetPropHelper_Impl();
- linguistic::PropertyHelper_Spell & GetPropHelper()
- {
- return pPropHelper ? *pPropHelper : GetPropHelper_Impl();
- }
-
- sal_Int16 GetSpellFailure( const OUString &rWord, const Locale &rLocale );
- Reference< XSpellAlternatives > GetProposals( const OUString &rWord, const Locale &rLocale );
-
-public:
- MacSpellChecker();
- virtual ~MacSpellChecker();
-
- // XSupportedLocales (for XSpellChecker)
- virtual Sequence< Locale > SAL_CALL getLocales() throw(RuntimeException);
- virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale ) throw(RuntimeException);
-
- // XSpellChecker
- virtual sal_Bool SAL_CALL isValid( const OUString& rWord, const Locale& rLocale, const PropertyValues& rProperties ) throw(IllegalArgumentException, RuntimeException);
- virtual Reference< XSpellAlternatives > SAL_CALL spell( const OUString& rWord, const Locale& rLocale, const PropertyValues& rProperties ) throw(IllegalArgumentException, RuntimeException);
-
- // XLinguServiceEventBroadcaster
- virtual sal_Bool SAL_CALL addLinguServiceEventListener( const Reference< XLinguServiceEventListener >& rxLstnr ) throw(RuntimeException);
- virtual sal_Bool SAL_CALL removeLinguServiceEventListener( const Reference< XLinguServiceEventListener >& rxLstnr ) throw(RuntimeException);
-
- // XServiceDisplayName
- virtual OUString SAL_CALL getServiceDisplayName( const Locale& rLocale ) throw(RuntimeException);
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& rArguments ) throw(Exception, RuntimeException);
-
- // XComponent
- virtual void SAL_CALL dispose() throw(RuntimeException);
- virtual void SAL_CALL addEventListener( const Reference< XEventListener >& rxListener ) throw(RuntimeException);
- virtual void SAL_CALL removeEventListener( const Reference< XEventListener >& rxListener ) throw(RuntimeException);
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName() throw(RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const OUString& rServiceName ) throw(RuntimeException);
- virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException);
-
-
- static inline OUString getImplementationName_Static() throw();
- static Sequence< OUString > getSupportedServiceNames_Static() throw();
-};
-
-inline OUString MacSpellChecker::getImplementationName_Static() throw()
-{
- return A2OU( "org.openoffice.lingu.MacOSXSpellChecker" );
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lingucomponent/source/spellcheck/macosxspell/makefile.mk b/lingucomponent/source/spellcheck/macosxspell/makefile.mk
deleted file mode 100644
index 0a724f0f1..000000000
--- a/lingucomponent/source/spellcheck/macosxspell/makefile.mk
+++ /dev/null
@@ -1,100 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ = ..$/..$/..
-
-PRJNAME = lingucomponent
-TARGET = MacOSXSpell
-ENABLE_EXCEPTIONS=TRUE
-USE_DEFFILE=TRUE
-
-.IF "$(GUIBASE)"=="aqua"
-
-#----- Settings ---------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-.IF "$(SYSTEM_HUNSPELL)" != "YES"
-HUNSPELL_CFLAGS += -I$(SOLARINCDIR)$/hunspell -DHUNSPELL_STATIC
-.ENDIF
-
-CXXFLAGS += $(HUNSPELL_CFLAGS)
-CFLAGSCXX += $(HUNSPELL_CFLAGS)
-CFLAGSCC += $(HUNSPELL_CFLAGS)
-
-# --- Files --------------------------------------------------------
-
-CFLAGSCXX+=$(OBJCXXFLAGS)
-CFLAGSCXX+=-I..$/..$/lingutil
-
-EXCEPTIONSFILES= \
- $(SLO)$/macspellimp.obj
-
-
-SLOFILES= \
- $(SLO)$/macreg.obj\
- $(SLO)$/macspellimp.obj
-
-
-SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(CPPUHELPERLIB) \
- $(TOOLSLIB) \
- $(SVLLIB) \
- $(SALLIB) \
- $(UCBHELPERLIB) \
- $(UNOTOOLSLIB) \
- $(LNGLIB)
-
-SHL1STDLIBS+= -framework Cocoa
-
-# build DLL
-SHL1LIBS= $(SLB)$/$(TARGET).lib
-SHL1IMPLIB= i$(TARGET)
-SHL1DEPN= $(SHL1LIBS)
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-SHL1VERSIONMAP=$(SOLARENV)/src/component.map
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-.ELSE
-dummy:
- @echo " Nothing to build for GUIBASE=$(GUIBASE)"
-.ENDIF
-
-ALLTAR : $(MISC)/MacOSXSpell.component
-
-$(MISC)/MacOSXSpell.component .ERRREMOVE : \
- $(SOLARENV)/bin/createcomponent.xslt MacOSXSpell.component
- $(XSLTPROC) --nonet --stringparam uri \
- '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
- $(SOLARENV)/bin/createcomponent.xslt MacOSXSpell.component
diff --git a/lingucomponent/source/spellcheck/spell/exports.dxp b/lingucomponent/source/spellcheck/spell/exports.dxp
deleted file mode 100644
index 700330789..000000000
--- a/lingucomponent/source/spellcheck/spell/exports.dxp
+++ /dev/null
@@ -1 +0,0 @@
-component_getFactory
diff --git a/lingucomponent/source/spellcheck/spell/makefile.mk b/lingucomponent/source/spellcheck/spell/makefile.mk
deleted file mode 100644
index 81a683c99..000000000
--- a/lingucomponent/source/spellcheck/spell/makefile.mk
+++ /dev/null
@@ -1,95 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ = ..$/..$/..
-
-PRJNAME = lingucomponent
-TARGET = spell
-ENABLE_EXCEPTIONS=TRUE
-USE_DEFFILE=TRUE
-
-.IF "$(SYSTEM_HUNSPELL)" != "YES"
-HUNSPELL_CFLAGS += -I$(SOLARINCDIR)$/hunspell -DHUNSPELL_STATIC
-.ENDIF
-
-#----- Settings ---------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-CXXFLAGS += -I$(PRJ)$/source$/lingutil $(HUNSPELL_CFLAGS)
-CFLAGSCXX += -I$(PRJ)$/source$/lingutil $(HUNSPELL_CFLAGS)
-CFLAGSCC += -I$(PRJ)$/source$/lingutil $(HUNSPELL_CFLAGS)
-
-EXCEPTIONSFILES= \
- $(SLO)$/sspellimp.obj
-
-SLOFILES= \
- $(SLO)$/sreg.obj\
- $(SLO)$/sspellimp.obj
-
-
-SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(CPPUHELPERLIB) \
- $(I18NISOLANGLIB) \
- $(TOOLSLIB) \
- $(UNOTOOLSLIB) \
- $(SVLLIB) \
- $(SALLIB) \
- $(LNGLIB) \
- $(ULINGULIB) \
- $(ICUUCLIB) \
- $(HUNSPELLLIB)
-
-# build DLL
-SHL1LIBS= $(SLB)$/$(TARGET).lib $(SLB)$/libulingu.lib
-SHL1IMPLIB= i$(TARGET)
-SHL1DEPN= $(SHL1LIBS)
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-SHL1VERSIONMAP=$(SOLARENV)/src/component.map
-
-# build DEF file
-DEF1NAME =$(SHL1TARGET)
-DEF1EXPORTFILE= exports.dxp
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-
-ALLTAR : $(MISC)/spell.component
-
-$(MISC)/spell.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
- spell.component
- $(XSLTPROC) --nonet --stringparam uri \
- '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
- $(SOLARENV)/bin/createcomponent.xslt spell.component
diff --git a/lingucomponent/source/spellcheck/spell/spell.component b/lingucomponent/source/spellcheck/spell/spell.component
deleted file mode 100644
index 9f951a8a8..000000000
--- a/lingucomponent/source/spellcheck/spell/spell.component
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--**********************************************************************
-*
-* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-*
-* Copyright 2000, 2010 Oracle and/or its affiliates.
-*
-* OpenOffice.org - a multi-platform office productivity suite
-*
-* This file is part of OpenOffice.org.
-*
-* OpenOffice.org is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License version 3
-* only, as published by the Free Software Foundation.
-*
-* OpenOffice.org is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Lesser General Public License version 3 for more details
-* (a copy is included in the LICENSE file that accompanied this code).
-*
-* You should have received a copy of the GNU Lesser General Public License
-* version 3 along with OpenOffice.org. If not, see
-* <http://www.openoffice.org/license.html>
-* for a copy of the LGPLv3 License.
-*
-**********************************************************************-->
-
-<component loader="com.sun.star.loader.SharedLibrary"
- xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="org.openoffice.lingu.MySpellSpellChecker">
- <service name="com.sun.star.linguistic2.SpellChecker"/>
- </implementation>
-</component>
diff --git a/lingucomponent/source/spellcheck/spell/sreg.cxx b/lingucomponent/source/spellcheck/spell/sreg.cxx
deleted file mode 100644
index 6be89517e..000000000
--- a/lingucomponent/source/spellcheck/spell/sreg.cxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_lingucomponent.hxx"
-
-
-#include <cppuhelper/factory.hxx> // helper for factories
-#include <rtl/string.hxx>
-
-#include <com/sun/star/registry/XRegistryKey.hpp>
-
-using namespace com::sun::star::lang;
-using namespace com::sun::star::registry;
-
-////////////////////////////////////////
-// declaration of external RegEntry-functions defined by the service objects
-//
-extern void * SAL_CALL SpellChecker_getFactory(
- const sal_Char * pImplName,
- XMultiServiceFactory * pServiceManager,
- void * /*pRegistryKey*/ );
-////////////////////////////////////////
-// definition of the two functions that are used to provide the services
-//
-
-extern "C"
-{
-
-SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
- const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
-{
- void * pRet = NULL;
- pRet = SpellChecker_getFactory(
- pImplName,
- reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
- pRegistryKey );
-
- return pRet;
-}
-
-}
-
-///////////////////////////////////////////////////////////////////////////
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
deleted file mode 100644
index 52d22af29..000000000
--- a/lingucomponent/source/spellcheck/spell/sspellimp.cxx
+++ /dev/null
@@ -1,700 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_lingucomponent.hxx"
-
-#include <com/sun/star/uno/Reference.h>
-#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
-
-#include <com/sun/star/linguistic2/SpellFailure.hpp>
-#include <cppuhelper/factory.hxx> // helper for factories
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include <tools/debug.hxx>
-#include <unotools/processfactory.hxx>
-#include <osl/mutex.hxx>
-
-#include <lingutil.hxx>
-#include <hunspell.hxx>
-#include <dictmgr.hxx>
-#include <sspellimp.hxx>
-
-#include <linguistic/lngprops.hxx>
-#include <linguistic/spelldta.hxx>
-#include <i18npool/mslangid.hxx>
-#include <unotools/pathoptions.hxx>
-#include <unotools/lingucfg.hxx>
-#include <unotools/useroptions.hxx>
-#include <osl/file.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <rtl/textenc.h>
-
-#include <list>
-#include <set>
-#include <string.h>
-
-using namespace utl;
-using namespace osl;
-using namespace com::sun::star;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::linguistic2;
-using namespace linguistic;
-
-using ::rtl::OUString;
-using ::rtl::OUStringBuffer;
-using ::rtl::OString;
-
-// XML-header of SPELLML queries
-#define SPELLML_HEADER "<?xml?>"
-
-///////////////////////////////////////////////////////////////////////////
-
-SpellChecker::SpellChecker()
- : aEvtListeners(GetLinguMutex())
-{
- aDicts = NULL;
- aDEncs = NULL;
- aDLocs = NULL;
- aDNames = NULL;
- bDisposing = sal_False;
- pPropHelper = NULL;
- numdict = 0;
-}
-
-SpellChecker::~SpellChecker()
-{
- if (aDicts)
- {
- for (int i = 0; i < numdict; ++i)
- {
- delete aDicts[i];
- aDicts[i] = NULL;
- }
- delete[] aDicts;
- }
- aDicts = NULL;
- numdict = 0;
- delete[] aDEncs;
- aDEncs = NULL;
- delete[] aDLocs;
- aDLocs = NULL;
- delete[] aDNames;
- aDNames = NULL;
- if (pPropHelper)
- {
- pPropHelper->RemoveAsPropListener();
- delete pPropHelper;
- }
-}
-
-PropertyHelper_Spelling & SpellChecker::GetPropHelper_Impl()
-{
- if (!pPropHelper)
- {
- Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
-
- pPropHelper = new PropertyHelper_Spelling( (XSpellChecker *) this, xPropSet );
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- return *pPropHelper;
-}
-
-
-Sequence< Locale > SAL_CALL SpellChecker::getLocales()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- // this routine should return the locales supported by the installed
- // dictionaries.
-
- if (!numdict)
- {
- SvtLinguConfig aLinguCfg;
-
- // get list of extension dictionaries-to-use
- // (or better speaking: the list of dictionaries using the
- // new configuration entries).
- std::list< SvtLinguConfigDictionaryEntry > aDics;
- uno::Sequence< rtl::OUString > aFormatList;
- aLinguCfg.GetSupportedDictionaryFormatsFor( A2OU("SpellCheckers"),
- A2OU("org.openoffice.lingu.MySpellSpellChecker"), aFormatList );
- sal_Int32 nLen = aFormatList.getLength();
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- std::vector< SvtLinguConfigDictionaryEntry > aTmpDic(
- aLinguCfg.GetActiveDictionariesByFormat( aFormatList[i] ) );
- aDics.insert( aDics.end(), aTmpDic.begin(), aTmpDic.end() );
- }
-
- //!! for compatibility with old dictionaries (the ones not using extensions
- //!! or new configuration entries, but still using the dictionary.lst file)
- //!! Get the list of old style spell checking dictionaries to use...
- std::vector< SvtLinguConfigDictionaryEntry > aOldStyleDics(
- GetOldStyleDics( "DICT" ) );
-
- // to prefer dictionaries with configuration entries we will only
- // use those old style dictionaries that add a language that
- // is not yet supported by the list od new style dictionaries
- MergeNewStyleDicsAndOldStyleDics( aDics, aOldStyleDics );
-
- numdict = aDics.size();
- if (numdict)
- {
- // get supported locales from the dictionaries-to-use...
- sal_Int32 k = 0;
- std::set< rtl::OUString, lt_rtl_OUString > aLocaleNamesSet;
- std::list< SvtLinguConfigDictionaryEntry >::const_iterator aDictIt;
- for (aDictIt = aDics.begin(); aDictIt != aDics.end(); ++aDictIt)
- {
- uno::Sequence< rtl::OUString > aLocaleNames( aDictIt->aLocaleNames );
- sal_Int32 nLen2 = aLocaleNames.getLength();
- for (k = 0; k < nLen2; ++k)
- {
- aLocaleNamesSet.insert( aLocaleNames[k] );
- }
- }
- // ... and add them to the resulting sequence
- aSuppLocales.realloc( aLocaleNamesSet.size() );
- std::set< rtl::OUString, lt_rtl_OUString >::const_iterator aItB;
- k = 0;
- for (aItB = aLocaleNamesSet.begin(); aItB != aLocaleNamesSet.end(); ++aItB)
- {
- Locale aTmp( MsLangId::convertLanguageToLocale(
- MsLangId::convertIsoStringToLanguage( *aItB )));
- aSuppLocales[k++] = aTmp;
- }
-
- //! For each dictionary and each locale we need a seperate entry.
- //! If this results in more than one dictionary per locale than (for now)
- //! it is undefined which dictionary gets used.
- //! In the future the implementation should support using several dictionaries
- //! for one locale.
- numdict = 0;
- for (aDictIt = aDics.begin(); aDictIt != aDics.end(); ++aDictIt)
- numdict = numdict + aDictIt->aLocaleNames.getLength();
-
- // add dictionary information
- aDicts = new Hunspell* [numdict];
- aDEncs = new rtl_TextEncoding [numdict];
- aDLocs = new Locale [numdict];
- aDNames = new OUString [numdict];
- k = 0;
- for (aDictIt = aDics.begin(); aDictIt != aDics.end(); ++aDictIt)
- {
- if (aDictIt->aLocaleNames.getLength() > 0 &&
- aDictIt->aLocations.getLength() > 0)
- {
- uno::Sequence< rtl::OUString > aLocaleNames( aDictIt->aLocaleNames );
- sal_Int32 nLocales = aLocaleNames.getLength();
-
- // currently only one language per dictionary is supported in the actual implementation...
- // Thus here we work-around this by adding the same dictionary several times.
- // Once for each of it's supported locales.
- for (sal_Int32 i = 0; i < nLocales; ++i)
- {
- aDicts[k] = NULL;
- aDEncs[k] = RTL_TEXTENCODING_DONTKNOW;
- aDLocs[k] = MsLangId::convertLanguageToLocale(
- MsLangId::convertIsoStringToLanguage( aLocaleNames[i] ));
- // also both files have to be in the same directory and the
- // file names must only differ in the extension (.aff/.dic).
- // Thus we use the first location only and strip the extension part.
- rtl::OUString aLocation = aDictIt->aLocations[0];
- sal_Int32 nPos = aLocation.lastIndexOf( '.' );
- aLocation = aLocation.copy( 0, nPos );
- aDNames[k] = aLocation;
-
- ++k;
- }
- }
- }
- DBG_ASSERT( k == numdict, "index mismatch?" );
- }
- else
- {
- /* no dictionary found so register no dictionaries */
- numdict = 0;
- aDicts = NULL;
- aDEncs = NULL;
- aDLocs = NULL;
- aDNames = NULL;
- aSuppLocales.realloc(0);
- }
- }
-
- return aSuppLocales;
-}
-
-
-sal_Bool SAL_CALL SpellChecker::hasLocale(const Locale& rLocale)
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!aSuppLocales.getLength())
- getLocales();
-
- sal_Int32 nLen = aSuppLocales.getLength();
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- const Locale *pLocale = aSuppLocales.getConstArray();
- if (rLocale == pLocale[i])
- {
- bRes = sal_True;
- break;
- }
- }
- return bRes;
-}
-
-
-sal_Int16 SpellChecker::GetSpellFailure( const OUString &rWord, const Locale &rLocale )
-{
- Hunspell * pMS = NULL;
- rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
-
- // initialize a myspell object for each dictionary once
- // (note: mutex is held higher up in isValid)
-
- sal_Int16 nRes = -1;
-
- // first handle smart quotes both single and double
- OUStringBuffer rBuf(rWord);
- sal_Int32 n = rBuf.getLength();
- sal_Unicode c;
- for (sal_Int32 ix=0; ix < n; ix++)
- {
- c = rBuf.charAt(ix);
- if ((c == 0x201C) || (c == 0x201D))
- rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((c == 0x2018) || (c == 0x2019))
- rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
-
- if (n)
- {
- for (sal_Int32 i = 0; i < numdict; ++i)
- {
- pMS = NULL;
- eEnc = RTL_TEXTENCODING_DONTKNOW;
-
- if (rLocale == aDLocs[i])
- {
- if (!aDicts[i])
- {
- OUString dicpath = aDNames[i] + A2OU(".dic");
- OUString affpath = aDNames[i] + A2OU(".aff");
- OUString dict;
- OUString aff;
- osl::FileBase::getSystemPathFromFileURL(dicpath,dict);
- osl::FileBase::getSystemPathFromFileURL(affpath,aff);
- OString aTmpaff(OU2ENC(aff,osl_getThreadTextEncoding()));
- OString aTmpdict(OU2ENC(dict,osl_getThreadTextEncoding()));
-
-#if defined(WNT)
- // workaround for Windows specifc problem that the
- // path length in calls to 'fopen' is limted to somewhat
- // about 120+ characters which will usually be exceed when
- // using dictionaries as extensions.
- aTmpaff = Win_GetShortPathName( aff );
- aTmpdict = Win_GetShortPathName( dict );
-#endif
-
- aDicts[i] = new Hunspell(aTmpaff.getStr(),aTmpdict.getStr());
- aDEncs[i] = RTL_TEXTENCODING_DONTKNOW;
- if (aDicts[i])
- aDEncs[i] = getTextEncodingFromCharset(aDicts[i]->get_dic_encoding());
- }
- pMS = aDicts[i];
- eEnc = aDEncs[i];
- }
-
- if (pMS)
- {
- // we don't want to work with a default text encoding since following incorrect
- // results may occur only for specific text and thus may be hard to notice.
- // Thus better always make a clean exit here if the text encoding is in question.
- // Hopefully something not working at all will raise proper attention quickly. ;-)
- DBG_ASSERT( eEnc != RTL_TEXTENCODING_DONTKNOW, "failed to get text encoding! (maybe incorrect encoding string in file)" );
- if (eEnc == RTL_TEXTENCODING_DONTKNOW)
- return -1;
-
- OString aWrd(OU2ENC(nWord,eEnc));
- int rVal = pMS->spell((char*)aWrd.getStr());
- if (rVal != 1)
- nRes = SpellFailure::SPELLING_ERROR;
- else
- return -1;
- pMS = NULL;
- }
- }
- }
-
- return nRes;
-}
-
-
-sal_Bool SAL_CALL SpellChecker::isValid( const OUString& rWord, const Locale& rLocale,
- const PropertyValues& rProperties )
- throw(IllegalArgumentException, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (rLocale == Locale() || !rWord.getLength())
- return sal_True;
-
- if (!hasLocale( rLocale ))
-#ifdef LINGU_EXCEPTIONS
- throw( IllegalArgumentException() );
-#else
- return sal_True;
-#endif
-
- // return sal_False to process SPELLML requests (they are longer than the header)
- if (rWord.match(A2OU(SPELLML_HEADER), 0) && (rWord.getLength() > 10)) return sal_False;
-
- // Get property values to be used.
- // These are be the default values set in the SN_LINGU_PROPERTIES
- // PropertySet which are overridden by the supplied ones from the
- // last argument.
- // You'll probably like to use a simplier solution than the provided
- // one using the PropertyHelper_Spell.
-
- PropertyHelper_Spelling& rHelper = GetPropHelper();
- rHelper.SetTmpPropVals( rProperties );
-
- sal_Int16 nFailure = GetSpellFailure( rWord, rLocale );
- if (nFailure != -1 && !rWord.match(A2OU(SPELLML_HEADER), 0))
- {
- sal_Int16 nLang = LocaleToLanguage( rLocale );
- // postprocess result for errors that should be ignored
- const bool bIgnoreError =
- (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang )) ||
- (!rHelper.IsSpellWithDigits() && HasDigits( rWord )) ||
- (!rHelper.IsSpellCapitalization() && nFailure == SpellFailure::CAPTION_ERROR);
- if (bIgnoreError)
- nFailure = -1;
- }
-
- return (nFailure == -1);
-}
-
-
-Reference< XSpellAlternatives >
- SpellChecker::GetProposals( const OUString &rWord, const Locale &rLocale )
-{
- // Retrieves the return values for the 'spell' function call in case
- // of a misspelled word.
- // Especially it may give a list of suggested (correct) words:
-
- Reference< XSpellAlternatives > xRes;
- // note: mutex is held by higher up by spell which covers both
-
- Hunspell* pMS = NULL;
- rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
- int count = 0;
- int numsug = 0;
-
- // first handle smart quotes (single and double)
- OUStringBuffer rBuf(rWord);
- sal_Int32 n = rBuf.getLength();
- sal_Unicode c;
- for (sal_Int32 ix=0; ix < n; ix++)
- {
- c = rBuf.charAt(ix);
- if ((c == 0x201C) || (c == 0x201D))
- rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((c == 0x2018) || (c == 0x2019))
- rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
-
- if (n)
- {
- sal_Int16 nLang = LocaleToLanguage( rLocale );
-
- Sequence< OUString > aStr( 0 );
-
- for (int i =0; i < numdict; i++)
- {
- pMS = NULL;
- eEnc = RTL_TEXTENCODING_DONTKNOW;
- count = 0;
-
- if (rLocale == aDLocs[i])
- {
- pMS = aDicts[i];
- eEnc = aDEncs[i];
- }
-
- if (pMS)
- {
- char ** suglst = NULL;
- OString aWrd(OU2ENC(nWord,eEnc));
- count = pMS->suggest(&suglst, (const char *) aWrd.getStr());
-
- if (count)
- {
- aStr.realloc( numsug + count );
- OUString *pStr = aStr.getArray();
- for (int ii=0; ii < count; ++ii)
- {
- OUString cvtwrd(suglst[ii],strlen(suglst[ii]),eEnc);
- pStr[numsug + ii] = cvtwrd;
- }
- pMS->free_list(&suglst, count);
- numsug += count;
- }
- }
- }
-
- // now return an empty alternative for no suggestions or the list of alternatives if some found
- String aTmp(rWord);
- xRes = SpellAlternatives::CreateSpellAlternatives( aTmp, nLang, SpellFailure::SPELLING_ERROR, aStr );
- return xRes;
- }
- return xRes;
-}
-
-
-Reference< XSpellAlternatives > SAL_CALL SpellChecker::spell(
- const OUString& rWord, const Locale& rLocale,
- const PropertyValues& rProperties )
- throw(IllegalArgumentException, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (rLocale == Locale() || !rWord.getLength())
- return NULL;
-
- if (!hasLocale( rLocale ))
-#ifdef LINGU_EXCEPTIONS
- throw( IllegalArgumentException() );
-#else
- return NULL;
-#endif
-
- Reference< XSpellAlternatives > xAlt;
- if (!isValid( rWord, rLocale, rProperties ))
- {
- xAlt = GetProposals( rWord, rLocale );
- }
- return xAlt;
-}
-
-
-Reference< XInterface > SAL_CALL SpellChecker_CreateInstance(
- const Reference< XMultiServiceFactory > & /*rSMgr*/ )
- throw(Exception)
-{
-
- Reference< XInterface > xService = (cppu::OWeakObject*) new SpellChecker;
- return xService;
-}
-
-
-sal_Bool SAL_CALL SpellChecker::addLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!bDisposing && rxLstnr.is())
- {
- bRes = GetPropHelper().addLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-sal_Bool SAL_CALL SpellChecker::removeLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- sal_Bool bRes = sal_False;
- if (!bDisposing && rxLstnr.is())
- {
- bRes = GetPropHelper().removeLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-OUString SAL_CALL SpellChecker::getServiceDisplayName( const Locale& /*rLocale*/ )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
- return A2OU( "Hunspell SpellChecker" );
-}
-
-
-void SAL_CALL SpellChecker::initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!pPropHelper)
- {
- sal_Int32 nLen = rArguments.getLength();
- if (2 == nLen)
- {
- Reference< XPropertySet > xPropSet;
- rArguments.getConstArray()[0] >>= xPropSet;
- //rArguments.getConstArray()[1] >>= xDicList;
-
- //! Pointer allows for access of the non-UNO functions.
- //! And the reference to the UNO-functions while increasing
- //! the ref-count and will implicitly free the memory
- //! when the object is not longer used.
- pPropHelper = new PropertyHelper_Spelling( (XSpellChecker *) this, xPropSet );
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- else {
- OSL_FAIL( "wrong number of arguments in sequence" );
- }
- }
-}
-
-
-void SAL_CALL SpellChecker::dispose()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing)
- {
- bDisposing = sal_True;
- EventObject aEvtObj( (XSpellChecker *) this );
- aEvtListeners.disposeAndClear( aEvtObj );
- if (pPropHelper)
- {
- pPropHelper->RemoveAsPropListener();
- delete pPropHelper;
- pPropHelper = NULL;
- }
- }
-}
-
-
-void SAL_CALL SpellChecker::addEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.addInterface( rxListener );
-}
-
-
-void SAL_CALL SpellChecker::removeEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.removeInterface( rxListener );
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-// Service specific part
-//
-
-OUString SAL_CALL SpellChecker::getImplementationName()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getImplementationName_Static();
-}
-
-
-sal_Bool SAL_CALL SpellChecker::supportsService( const OUString& ServiceName )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNL = getSupportedServiceNames();
- const OUString * pArray = aSNL.getConstArray();
- for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return sal_True;
- return sal_False;
-}
-
-
-Sequence< OUString > SAL_CALL SpellChecker::getSupportedServiceNames()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getSupportedServiceNames_Static();
-}
-
-
-Sequence< OUString > SpellChecker::getSupportedServiceNames_Static()
- throw()
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNS( 1 ); // auch mehr als 1 Service moeglich
- aSNS.getArray()[0] = A2OU( SN_SPELLCHECKER );
- return aSNS;
-}
-
-void * SAL_CALL SpellChecker_getFactory( const sal_Char * pImplName,
- XMultiServiceFactory * pServiceManager, void * )
-{
- void * pRet = 0;
- if ( !SpellChecker::getImplementationName_Static().compareToAscii( pImplName ) )
- {
- Reference< XSingleServiceFactory > xFactory =
- cppu::createOneInstanceFactory(
- pServiceManager,
- SpellChecker::getImplementationName_Static(),
- SpellChecker_CreateInstance,
- SpellChecker::getSupportedServiceNames_Static());
- // acquire, because we return an interface pointer instead of a reference
- xFactory->acquire();
- pRet = xFactory.get();
- }
- return pRet;
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.hxx b/lingucomponent/source/spellcheck/spell/sspellimp.hxx
deleted file mode 100644
index 09417d4dc..000000000
--- a/lingucomponent/source/spellcheck/spell/sspellimp.hxx
+++ /dev/null
@@ -1,143 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _LINGU2_SPELLIMP_HXX_
-#define _LINGU2_SPELLIMP_HXX_
-
-#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
-#include <cppuhelper/implbase1.hxx> // helper for implementations
-#include <cppuhelper/implbase6.hxx> // helper for implementations
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/lang/XServiceDisplayName.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyValues.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/linguistic2/XSpellChecker.hpp>
-#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
-#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
-#include <tools/table.hxx>
-
-#include <linguistic/misc.hxx>
-#include <linguistic/lngprophelp.hxx>
-
-#include <lingutil.hxx>
-
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::linguistic2;
-
-
-///////////////////////////////////////////////////////////////////////////
-
-
-class SpellChecker :
- public cppu::WeakImplHelper6
- <
- XSpellChecker,
- XLinguServiceEventBroadcaster,
- XInitialization,
- XComponent,
- XServiceInfo,
- XServiceDisplayName
- >
-{
- Sequence< Locale > aSuppLocales;
- Hunspell ** aDicts;
- rtl_TextEncoding * aDEncs;
- Locale * aDLocs;
- OUString * aDNames;
- sal_Int32 numdict;
-
- ::cppu::OInterfaceContainerHelper aEvtListeners;
- linguistic::PropertyHelper_Spelling* pPropHelper;
- sal_Bool bDisposing;
-
- // disallow copy-constructor and assignment-operator for now
- SpellChecker(const SpellChecker &);
- SpellChecker & operator = (const SpellChecker &);
-
- linguistic::PropertyHelper_Spelling& GetPropHelper_Impl();
- linguistic::PropertyHelper_Spelling& GetPropHelper()
- {
- return pPropHelper ? *pPropHelper : GetPropHelper_Impl();
- }
-
- sal_Int16 GetSpellFailure( const OUString &rWord, const Locale &rLocale );
- Reference< XSpellAlternatives > GetProposals( const OUString &rWord, const Locale &rLocale );
-
-public:
- SpellChecker();
- virtual ~SpellChecker();
-
- // XSupportedLocales (for XSpellChecker)
- virtual Sequence< Locale > SAL_CALL getLocales() throw(RuntimeException);
- virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale ) throw(RuntimeException);
-
- // XSpellChecker
- virtual sal_Bool SAL_CALL isValid( const OUString& rWord, const Locale& rLocale, const PropertyValues& rProperties ) throw(IllegalArgumentException, RuntimeException);
- virtual Reference< XSpellAlternatives > SAL_CALL spell( const OUString& rWord, const Locale& rLocale, const PropertyValues& rProperties ) throw(IllegalArgumentException, RuntimeException);
-
- // XLinguServiceEventBroadcaster
- virtual sal_Bool SAL_CALL addLinguServiceEventListener( const Reference< XLinguServiceEventListener >& rxLstnr ) throw(RuntimeException);
- virtual sal_Bool SAL_CALL removeLinguServiceEventListener( const Reference< XLinguServiceEventListener >& rxLstnr ) throw(RuntimeException);
-
- // XServiceDisplayName
- virtual OUString SAL_CALL getServiceDisplayName( const Locale& rLocale ) throw(RuntimeException);
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& rArguments ) throw(Exception, RuntimeException);
-
- // XComponent
- virtual void SAL_CALL dispose() throw(RuntimeException);
- virtual void SAL_CALL addEventListener( const Reference< XEventListener >& rxListener ) throw(RuntimeException);
- virtual void SAL_CALL removeEventListener( const Reference< XEventListener >& rxListener ) throw(RuntimeException);
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName() throw(RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const OUString& rServiceName ) throw(RuntimeException);
- virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException);
-
-
- static inline OUString getImplementationName_Static() throw();
- static Sequence< OUString > getSupportedServiceNames_Static() throw();
-};
-
-inline OUString SpellChecker::getImplementationName_Static() throw()
-{
- return A2OU( "org.openoffice.lingu.MySpellSpellChecker" );
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */