summaryrefslogtreecommitdiff
path: root/linguistic
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2009-05-19 09:31:27 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2009-05-19 09:31:27 +0000
commit7adb1f5739d72fb0d5e5ced375c3771bc7df69de (patch)
tree27eac4acb19264bb47666d7f89c2a2a7b589215d /linguistic
parent756ad3800d5defb7f8cdf5404d14c9a20cc168d6 (diff)
CWS-TOOLING: integrate CWS tl66
2009-05-15 12:28:55 +0200 tl r271932 : #i91812# include fixed 2009-05-07 16:52:41 +0200 tl r271680 : #i97200# one more MathML export problem to fix 2009-05-05 08:33:29 +0200 tl r271494 : #i99401# positiv user-dicts vs negativ user-dicts 2009-05-04 14:14:03 +0200 tl r271452 : #i97200# warning free code; MathML 2.0 export 2009-05-04 13:26:30 +0200 tl r271448 : #i97200# write valid MathML 2.0 on export 2009-04-29 14:21:54 +0200 tl r271371 : #i97200# new MathML token 2009-04-29 11:12:07 +0200 tl r271360 : #i97200# inroducing separate files for import and export 2009-04-28 16:47:42 +0200 tl r271331 : #i97200# better MathML pretty printing 2009-04-28 11:21:57 +0200 tl r271315 : #i97200# MathML attributes and default namespace for MathML 2009-04-28 11:21:24 +0200 tl r271314 : #i97200# MathML attributes and default namespace for MathML 2009-04-23 12:44:18 +0200 tl r271154 : #i97200# math.dtd removed 2009-04-23 12:31:56 +0200 tl r271151 : #i97200# MathML: don't use namespace on attributes 2009-04-22 13:21:11 +0200 tl r271099 : warning-free code 2009-04-22 12:20:13 +0200 tl r271092 : #i100757# loop fixed 2009-04-22 11:29:51 +0200 tl r271086 : #97327# adding mongolian fingerprint for language guessing 2009-04-22 11:25:56 +0200 tl r271083 : #97327# adding mongolian fingerprint for language guessing 2009-04-21 10:39:21 +0200 tl r271025 : #99599# code fix for LRE/RLE embedding 2009-04-20 16:36:33 +0200 tl r270992 : #i99604# HasDigits fixed 2009-04-20 14:44:19 +0200 tl r270985 : #i99604# warning-free code for Windows 2009-04-20 13:48:13 +0200 tl r270980 : #i99604# HasDigits fix for non-ASCII characters 2009-04-20 13:47:50 +0200 tl r270979 : #i99604# HasDigits fix for non-ASCII characters 2009-04-20 12:28:15 +0200 tl r270973 : warning-free code after merging 2009-04-20 10:16:19 +0200 tl r270964 : warning-free code after merging 2009-04-17 14:43:36 +0200 tl r270948 : #i96846# 2009-04-16 13:09:15 +0200 tl r270883 : CWS-TOOLING: rebase CWS tl66 to trunk@270723 (milestone: DEV300:m46) 2009-04-14 14:34:08 +0200 tl r270770 : #101067# warning-free code 2009-04-02 09:07:44 +0200 tl r270368 : #i100757# performance patch for start-up (initialize language guessing on demand only) 2009-03-11 10:37:59 +0100 tl r269301 : #i100083# fixed system dictionary lookup 2009-03-06 13:10:23 +0100 tl r268998 : warning-free code for Windows non-pro 2009-02-23 14:01:23 +0100 tl r268355 : #i99401# winning rules for user-dictionaries changed 2009-02-19 14:05:57 +0100 tl r268281 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 14:05:02 +0100 tl r268280 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 13:58:51 +0100 tl r268279 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 11:38:03 +0100 tl r268266 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-12 11:58:34 +0100 tl r267642 : #i96846# some properties declared as maybevoid 2009-02-06 12:43:55 +0100 tl r267454 : #i98644# provide sugestions from secondary spell checkers if the primary does not provide ones 2009-02-05 13:02:26 +0100 tl r267418 : #i98880# a bit clean-up in the grammar checking framework 2009-02-04 12:15:37 +0100 tl r267363 : #i91812# remove unused/duplicate code 2009-02-04 12:09:34 +0100 tl r267362 : #i91812# remove unused/duplicate code 2009-02-04 11:07:57 +0100 tl r267355 : #i91812# remove unused code 2009-02-04 11:06:48 +0100 tl r267354 : #i91812# remove unused code 2009-02-03 14:52:43 +0100 tl r267331 : #i91812# remove unused code 2009-02-03 14:26:00 +0100 tl r267324 : #i91198# adding fingerprint for luxembourgish 2009-02-03 14:20:58 +0100 tl r267323 : #i91198# adding fingerprint for luxembourgish 2009-02-03 14:18:33 +0100 tl r267322 : #i91198# adding fingerprint for luxembourgish 2009-02-03 13:56:39 +0100 tl r267319 : #i91812# remove unused code 2009-02-03 12:41:50 +0100 tl r267314 : #i48400# auto-spellcheck improvement when deleting wrong chars 2009-02-03 11:48:51 +0100 tl r267310 : #i91812# remove unused code 2009-02-03 11:14:29 +0100 tl r267307 : warning free code 2009-02-03 10:45:21 +0100 tl r267306 : #i91812# remove unused code 2009-02-03 10:37:04 +0100 tl r267304 : #i33387# name change for 'View/Selection' 2009-02-03 10:36:17 +0100 tl r267303 : #i33387# name change for 'View/Selection' 2009-02-03 10:32:12 +0100 tl r267302 : #i30642# spelling error in context menu fixed 2009-02-03 10:27:34 +0100 tl r267301 : #i92210# remove unused code types.cxx cfgitem.*
Diffstat (limited to 'linguistic')
-rw-r--r--linguistic/inc/lngprophelp.hxx (renamed from linguistic/inc/prophelp.hxx)21
-rw-r--r--linguistic/inc/misc.hxx22
-rw-r--r--linguistic/source/iprcache.cxx1
-rw-r--r--linguistic/source/lngopt.cxx7
-rw-r--r--linguistic/source/lngprophelp.cxx (renamed from linguistic/source/prophelp.cxx)40
-rw-r--r--linguistic/source/lngsvcmgr.cxx12
-rw-r--r--linguistic/source/makefile.mk2
-rw-r--r--linguistic/source/misc.cxx68
-rw-r--r--linguistic/source/spelldsp.cxx162
-rw-r--r--linguistic/source/spelldta.cxx4
10 files changed, 215 insertions, 124 deletions
diff --git a/linguistic/inc/prophelp.hxx b/linguistic/inc/lngprophelp.hxx
index f7519479dc71..9997326c65ab 100644
--- a/linguistic/inc/prophelp.hxx
+++ b/linguistic/inc/lngprophelp.hxx
@@ -28,13 +28,13 @@
*
************************************************************************/
-#ifndef _LINGUISTIC_PROPHELP_HXX_
-#define _LINGUISTIC_PROPHELP_HXX_
+#ifndef _LINGUISTIC_LNGPROPHELP_HXX_
+#define _LINGUISTIC_LNGPROPHELP_HXX_
#include <tools/solar.h>
-#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
-#include <cppuhelper/implbase2.hxx> // helper for implementations
+#include <uno/lbnames.h>
+#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <com/sun/star/beans/XPropertyChangeListener.hpp>
#include <com/sun/star/beans/PropertyValues.hpp>
@@ -83,12 +83,10 @@ class PropertyChgHelper :
int nEvtFlags; // flags for event types allowed to be launched
// default values
- BOOL bIsGermanPreReform;
BOOL bIsIgnoreControlCharacters;
BOOL bIsUseDictionaryList;
// return values, will be set to default value or current temporary value
- BOOL bResIsGermanPreReform;
BOOL bResIsIgnoreControlCharacters;
BOOL bResIsUseDictionaryList;
@@ -160,7 +158,6 @@ public:
::com::sun::star::uno::XInterface > &
GetEvtObj() const { return xMyEvtObj; }
- BOOL IsGermanPreReform() const { return bResIsGermanPreReform; }
BOOL IsIgnoreControlCharacters() const { return bResIsIgnoreControlCharacters; }
BOOL IsUseDictionaryList() const { return bResIsUseDictionaryList; }
};
@@ -242,7 +239,7 @@ public:
///////////////////////////////////////////////////////////////////////////
-class PropertyHelper_Hyph :
+class PropertyHelper_Hyphen :
public PropertyChgHelper
{
// default values
@@ -256,8 +253,8 @@ class PropertyHelper_Hyph :
nResHyphMinWordLength;
// disallow use of copy-constructor and assignment-operator
- PropertyHelper_Hyph( const PropertyHelper_Hyph & );
- PropertyHelper_Hyph & operator = ( const PropertyHelper_Hyph & );
+ PropertyHelper_Hyphen( const PropertyHelper_Hyphen & );
+ PropertyHelper_Hyphen & operator = ( const PropertyHelper_Hyphen & );
protected:
// PropertyChgHelper
@@ -267,12 +264,12 @@ protected:
const ::com::sun::star::beans::PropertyChangeEvent& rEvt );
public:
- PropertyHelper_Hyph(
+ PropertyHelper_Hyphen(
const ::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface > &rxSource,
::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySet > &rxPropSet);
- virtual ~PropertyHelper_Hyph();
+ virtual ~PropertyHelper_Hyphen();
virtual void SetTmpPropVals( const com::sun::star::beans::PropertyValues &rPropVals );
diff --git a/linguistic/inc/misc.hxx b/linguistic/inc/misc.hxx
index f9565f2eb873..6f06948db4af 100644
--- a/linguistic/inc/misc.hxx
+++ b/linguistic/inc/misc.hxx
@@ -196,26 +196,16 @@ String ToUpper( const String &rText, INT16 nLanguage );
String ToTitle( const String &rText, INT16 nLanguage );
sal_Unicode ToLower( const sal_Unicode cChar, INT16 nLanguage );
sal_Unicode ToUpper( const sal_Unicode cChar, INT16 nLanguage );
-BOOL HasDigits( const String &rText );
+BOOL HasDigits( const ::rtl::OUString &rText );
BOOL IsNumeric( const String &rText );
///////////////////////////////////////////////////////////////////////////
-::com::sun::star::uno::Reference<
- ::com::sun::star::uno::XInterface >
- GetOneInstanceService( const char *pServiceName );
-
-::com::sun::star::uno::Reference<
- ::com::sun::star::beans::XPropertySet >
- GetLinguProperties();
-
-::com::sun::star::uno::Reference<
- ::com::sun::star::linguistic2::XSearchableDictionaryList >
- GetSearchableDictionaryList();
-
-::com::sun::star::uno::Reference<
- ::com::sun::star::linguistic2::XDictionaryList >
- GetDictionaryList();
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > GetOneInstanceService( const char *pServiceName );
+::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > GetLinguProperties();
+::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XSearchableDictionaryList > GetSearchableDictionaryList();
+::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XDictionaryList > GetDictionaryList();
+::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XDictionary > GetIgnoreAllList();
///////////////////////////////////////////////////////////////////////////
diff --git a/linguistic/source/iprcache.cxx b/linguistic/source/iprcache.cxx
index a9bb5c3da768..0e4cee1deaea 100644
--- a/linguistic/source/iprcache.cxx
+++ b/linguistic/source/iprcache.cxx
@@ -85,7 +85,6 @@ static const struct
INT32 nPropHdl;
} aFlushProperties[ NUM_FLUSH_PROPS ] =
{
- { UPN_IS_GERMAN_PRE_REFORM, UPH_IS_GERMAN_PRE_REFORM }, /* deprecated */
{ UPN_IS_USE_DICTIONARY_LIST, UPH_IS_USE_DICTIONARY_LIST },
{ UPN_IS_IGNORE_CONTROL_CHARACTERS, UPH_IS_IGNORE_CONTROL_CHARACTERS },
{ UPN_IS_SPELL_UPPER_CASE, UPH_IS_SPELL_UPPER_CASE },
diff --git a/linguistic/source/lngopt.cxx b/linguistic/source/lngopt.cxx
index 2ef63492c719..84055d97eaf1 100644
--- a/linguistic/source/lngopt.cxx
+++ b/linguistic/source/lngopt.cxx
@@ -204,17 +204,18 @@ void LinguOptions::GetValue( Any &rVal, INT32 nWID ) const
INT16 *pnVal = 0;
BOOL *pbVal = 0;
+ BOOL bDummy = FALSE;
switch( nWID )
{
- case WID_IS_GERMAN_PRE_REFORM : /*! deprecated !*/ break;
+ case WID_IS_GERMAN_PRE_REFORM : pbVal = &bDummy; /*! deprecated !*/ break;
case WID_IS_USE_DICTIONARY_LIST : pbVal = &pData->bIsUseDictionaryList; break;
case WID_IS_IGNORE_CONTROL_CHARACTERS : pbVal = &pData->bIsIgnoreControlCharacters; break;
case WID_IS_HYPH_AUTO : pbVal = &pData->bIsHyphAuto; break;
case WID_IS_HYPH_SPECIAL : pbVal = &pData->bIsHyphSpecial; break;
case WID_IS_SPELL_AUTO : pbVal = &pData->bIsSpellAuto; break;
- case WID_IS_SPELL_HIDE : /*! deprecated !*/ break;
- case WID_IS_SPELL_IN_ALL_LANGUAGES :/*! deprecated !*/ break;
+ case WID_IS_SPELL_HIDE : pbVal = &bDummy; /*! deprecated !*/ break;
+ case WID_IS_SPELL_IN_ALL_LANGUAGES :pbVal = &bDummy; /*! deprecated !*/ break;
case WID_IS_SPELL_SPECIAL : pbVal = &pData->bIsSpellSpecial; break;
case WID_IS_WRAP_REVERSE : pbVal = &pData->bIsSpellReverse; break;
case WID_DEFAULT_LANGUAGE : pnVal = &pData->nDefaultLanguage; break;
diff --git a/linguistic/source/prophelp.cxx b/linguistic/source/lngprophelp.cxx
index 7519f80d8619..debc3df2ad1a 100644
--- a/linguistic/source/prophelp.cxx
+++ b/linguistic/source/lngprophelp.cxx
@@ -30,6 +30,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_linguistic.hxx"
+
#include <tools/debug.hxx>
#include <com/sun/star/linguistic2/LinguServiceEvent.hpp>
@@ -38,9 +39,10 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <osl/mutex.hxx>
-#include "misc.hxx"
-#include "lngprops.hxx"
-#include "prophelp.hxx"
+#include <misc.hxx>
+#include <lngprops.hxx>
+
+#include <lngprophelp.hxx>
//using namespace utl;
@@ -60,7 +62,6 @@ namespace linguistic
static const char *aCH[] =
{
- UPN_IS_GERMAN_PRE_REFORM, /* deprectaed */
UPN_IS_IGNORE_CONTROL_CHARACTERS,
UPN_IS_USE_DICTIONARY_LIST,
};
@@ -127,7 +128,6 @@ void PropertyChgHelper::AddPropNames( const char *pNewNames[], INT32 nCount )
void PropertyChgHelper::SetDefaultValues()
{
- bResIsGermanPreReform = bIsGermanPreReform = FALSE;
bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters = TRUE;
bResIsUseDictionaryList = bIsUseDictionaryList = TRUE;
}
@@ -144,12 +144,7 @@ void PropertyChgHelper::GetCurrentValues()
BOOL *pbVal = NULL,
*pbResVal = NULL;
- if (pPropName[i].equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( UPN_IS_GERMAN_PRE_REFORM ) )) /* deprecated */
- {
- pbVal = &bIsGermanPreReform;
- pbResVal = &bResIsGermanPreReform;
- }
- else if (pPropName[i].equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( UPN_IS_IGNORE_CONTROL_CHARACTERS ) ))
+ if (pPropName[i].equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( UPN_IS_IGNORE_CONTROL_CHARACTERS ) ))
{
pbVal = &bIsIgnoreControlCharacters;
pbResVal = &bResIsIgnoreControlCharacters;
@@ -174,7 +169,6 @@ void PropertyChgHelper::SetTmpPropVals( const PropertyValues &rPropVals )
{
// return value is default value unless there is an explicitly supplied
// temporary value
- bResIsGermanPreReform = bIsGermanPreReform;
bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters;
bResIsUseDictionaryList = bIsUseDictionaryList;
//
@@ -187,8 +181,6 @@ void PropertyChgHelper::SetTmpPropVals( const PropertyValues &rPropVals )
BOOL *pbResVal = NULL;
switch (pVal[i].Handle)
{
- case UPH_IS_GERMAN_PRE_REFORM :
- pbResVal = &bResIsGermanPreReform; break; /* deprecated */
case UPH_IS_IGNORE_CONTROL_CHARACTERS :
pbResVal = &bResIsIgnoreControlCharacters; break;
case UPH_IS_USE_DICTIONARY_LIST :
@@ -224,12 +216,6 @@ BOOL PropertyChgHelper::propertyChange_Impl( const PropertyChangeEvent& rEvt )
nLngSvcFlags = 0;
break;
}
- case UPH_IS_GERMAN_PRE_REFORM : /* deprecated */
- {
- pbVal = &bIsGermanPreReform;
- bSCWA = bSWWA = TRUE;
- break;
- }
case UPH_IS_USE_DICTIONARY_LIST :
{
pbVal = &bIsUseDictionaryList;
@@ -588,7 +574,7 @@ static const char *aHP[] =
};
-PropertyHelper_Hyph::PropertyHelper_Hyph(
+PropertyHelper_Hyphen::PropertyHelper_Hyphen(
const Reference< XInterface > & rxSource,
Reference< XPropertySet > &rxPropSet ) :
PropertyChgHelper ( rxSource, rxPropSet, AE_HYPHENATOR )
@@ -599,12 +585,12 @@ PropertyHelper_Hyph::PropertyHelper_Hyph(
}
-PropertyHelper_Hyph::~PropertyHelper_Hyph()
+PropertyHelper_Hyphen::~PropertyHelper_Hyphen()
{
}
-void PropertyHelper_Hyph::SetDefaultValues()
+void PropertyHelper_Hyphen::SetDefaultValues()
{
PropertyChgHelper::SetDefaultValues();
@@ -614,7 +600,7 @@ void PropertyHelper_Hyph::SetDefaultValues()
}
-void PropertyHelper_Hyph::GetCurrentValues()
+void PropertyHelper_Hyphen::GetCurrentValues()
{
PropertyChgHelper::GetCurrentValues();
@@ -653,7 +639,7 @@ void PropertyHelper_Hyph::GetCurrentValues()
}
-BOOL PropertyHelper_Hyph::propertyChange_Impl( const PropertyChangeEvent& rEvt )
+BOOL PropertyHelper_Hyphen::propertyChange_Impl( const PropertyChangeEvent& rEvt )
{
BOOL bRes = PropertyChgHelper::propertyChange_Impl( rEvt );
@@ -689,7 +675,7 @@ BOOL PropertyHelper_Hyph::propertyChange_Impl( const PropertyChangeEvent& rEvt )
void SAL_CALL
- PropertyHelper_Hyph::propertyChange( const PropertyChangeEvent& rEvt )
+ PropertyHelper_Hyphen::propertyChange( const PropertyChangeEvent& rEvt )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -697,7 +683,7 @@ void SAL_CALL
}
-void PropertyHelper_Hyph::SetTmpPropVals( const PropertyValues &rPropVals )
+void PropertyHelper_Hyphen::SetTmpPropVals( const PropertyValues &rPropVals )
{
PropertyChgHelper::SetTmpPropVals( rPropVals );
diff --git a/linguistic/source/lngsvcmgr.cxx b/linguistic/source/lngsvcmgr.cxx
index b6e4fdcef6b5..41d805fe9212 100644
--- a/linguistic/source/lngsvcmgr.cxx
+++ b/linguistic/source/lngsvcmgr.cxx
@@ -881,8 +881,9 @@ void LngSvcMgr::GetAvailableSpellSvcs_Impl()
xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
xSvc = uno::Reference< linguistic2::XSpellChecker >( ( xCompFactory.is() ? xCompFactory->createInstanceWithContext( xContext ) : xFactory->createInstance() ), uno::UNO_QUERY );
}
- catch (uno::Exception &)
+ catch (uno::Exception &rEx)
{
+ (void) rEx;
DBG_ASSERT( 0, "createInstance failed" );
}
}
@@ -946,8 +947,9 @@ void LngSvcMgr::GetAvailableGrammarSvcs_Impl()
xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
xSvc = uno::Reference< linguistic2::XProofreader >( ( xCompFactory.is() ? xCompFactory->createInstanceWithContext( xContext ) : xFactory->createInstance() ), uno::UNO_QUERY );
}
- catch (uno::Exception &)
+ catch (uno::Exception &rEx)
{
+ (void) rEx;
DBG_ASSERT( 0, "createInstance failed" );
}
}
@@ -1010,8 +1012,9 @@ void LngSvcMgr::GetAvailableHyphSvcs_Impl()
xSvc = uno::Reference< linguistic2::XHyphenator >( ( xCompFactory.is() ? xCompFactory->createInstanceWithContext( xContext ) : xFactory->createInstance() ), uno::UNO_QUERY );
}
- catch (uno::Exception &)
+ catch (uno::Exception &rEx)
{
+ (void) rEx;
DBG_ASSERT( 0, "createInstance failed" );
}
}
@@ -1076,8 +1079,9 @@ void LngSvcMgr::GetAvailableThesSvcs_Impl()
xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
xSvc = uno::Reference< linguistic2::XThesaurus >( ( xCompFactory.is() ? xCompFactory->createInstanceWithContext( xContext ) : xFactory->createInstance() ), uno::UNO_QUERY );
}
- catch (uno::Exception &)
+ catch (uno::Exception &rEx)
{
+ (void) rEx;
DBG_ASSERT( 0, "createInstance failed" );
}
}
diff --git a/linguistic/source/makefile.mk b/linguistic/source/makefile.mk
index 037f595a5d90..0012a9acd156 100644
--- a/linguistic/source/makefile.mk
+++ b/linguistic/source/makefile.mk
@@ -52,11 +52,11 @@ SLOFILES = \
$(SLO)$/hyphdta.obj\
$(SLO)$/iprcache.obj\
$(SLO)$/lngopt.obj\
+ $(SLO)$/lngprophelp.obj\
$(SLO)$/lngreg.obj\
$(SLO)$/lngsvcmgr.obj\
$(SLO)$/misc.obj\
$(SLO)$/misc2.obj\
- $(SLO)$/prophelp.obj\
$(SLO)$/spelldsp.obj\
$(SLO)$/spelldta.obj\
$(SLO)$/thesdsp.obj\
diff --git a/linguistic/source/misc.cxx b/linguistic/source/misc.cxx
index 67ebf8e29e92..91beaa2e2c9f 100644
--- a/linguistic/source/misc.cxx
+++ b/linguistic/source/misc.cxx
@@ -796,17 +796,62 @@ sal_Unicode ToUpper( const sal_Unicode cChar, INT16 nLanguage )
return rCC.upper( cChar ).GetChar(0);
}
+// sorted(!) array of unicode ranges for code points that are exclusively(!) used as numbers
+// and thus may NOT not be part of names or words like the Chinese/Japanese number characters
+static const sal_uInt32 the_aDigitZeroes [] =
+{
+ 0x00000030, //0039 ; Decimal # Nd [10] DIGIT ZERO..DIGIT NINE
+ 0x00000660, //0669 ; Decimal # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+ 0x000006F0, //06F9 ; Decimal # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+ 0x000007C0, //07C9 ; Decimal # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+ 0x00000966, //096F ; Decimal # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+ 0x000009E6, //09EF ; Decimal # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+ 0x00000A66, //0A6F ; Decimal # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+ 0x00000AE6, //0AEF ; Decimal # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+ 0x00000B66, //0B6F ; Decimal # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+ 0x00000BE6, //0BEF ; Decimal # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+ 0x00000C66, //0C6F ; Decimal # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+ 0x00000CE6, //0CEF ; Decimal # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+ 0x00000D66, //0D6F ; Decimal # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+ 0x00000E50, //0E59 ; Decimal # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+ 0x00000ED0, //0ED9 ; Decimal # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+ 0x00000F20, //0F29 ; Decimal # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+ 0x00001040, //1049 ; Decimal # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+ 0x00001090, //1099 ; Decimal # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+ 0x000017E0, //17E9 ; Decimal # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+ 0x00001810, //1819 ; Decimal # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+ 0x00001946, //194F ; Decimal # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+ 0x000019D0, //19D9 ; Decimal # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+ 0x00001B50, //1B59 ; Decimal # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+ 0x00001BB0, //1BB9 ; Decimal # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+ 0x00001C40, //1C49 ; Decimal # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+ 0x00001C50, //1C59 ; Decimal # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+ 0x0000A620, //A629 ; Decimal # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE
+ 0x0000A8D0, //A8D9 ; Decimal # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+ 0x0000A900, //A909 ; Decimal # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+ 0x0000AA50, //AA59 ; Decimal # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+ 0x0000FF10, //FF19 ; Decimal # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ 0x000104A0, //104A9 ; Decimal # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+ 0x0001D7CE //1D7FF ; Decimal # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+};
-BOOL HasDigits( const String &rText )
+BOOL HasDigits( const OUString &rText )
{
- xub_StrLen nLen = rText.Len();
+ static const int nNumDigitZeroes = sizeof(the_aDigitZeroes) / sizeof(the_aDigitZeroes[0]);
+ const sal_Int32 nLen = rText.getLength();
- xub_StrLen i = 0;
- while (i < nLen)
+ sal_Int32 i = 0;
+ while (i < nLen) // for all characters ...
{
- sal_Unicode cChar = rText.GetChar( i++ );
- if ((sal_Unicode)'0' <= cChar && cChar <= (sal_Unicode)'9')
- return TRUE;
+ const sal_uInt32 nCodePoint = rText.iterateCodePoints( &i ); // handle unicode surrogates correctly...
+ for (int j = 0; j < nNumDigitZeroes; ++j) // ... check in all 0..9 ranges
+ {
+ sal_uInt32 nDigitZero = the_aDigitZeroes[ j ];
+ if (nDigitZero > nCodePoint)
+ break;
+ if (/*nDigitZero <= nCodePoint &&*/ nCodePoint <= nDigitZero + 9)
+ return TRUE;
+ }
}
return FALSE;
}
@@ -877,6 +922,15 @@ uno::Reference< XDictionaryList > GetDictionaryList()
GetOneInstanceService( SN_DICTIONARY_LIST ), UNO_QUERY );
}
+uno::Reference< XDictionary > GetIgnoreAllList()
+{
+ uno::Reference< XDictionary > xRes;
+ uno::Reference< XDictionaryList > xDL( GetDictionaryList() );
+ if (xDL.is())
+ xRes = xDL->getDictionaryByName( A2OU("IgnoreAllList") );
+ return xRes;
+}
+
///////////////////////////////////////////////////////////////////////////
AppExitListener::AppExitListener()
diff --git a/linguistic/source/spelldsp.cxx b/linguistic/source/spelldsp.cxx
index d9882a3dbae8..48e64163dbe4 100644
--- a/linguistic/source/spelldsp.cxx
+++ b/linguistic/source/spelldsp.cxx
@@ -30,30 +30,25 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_linguistic.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 <cppuhelper/factory.hxx> // helper for factories
#include <unotools/localedatawrapper.hxx>
+#include <unotools/processfactory.hxx>
#include <tools/debug.hxx>
#include <svtools/lngmisc.hxx>
-#include <unotools/processfactory.hxx>
+#include <osl/mutex.hxx>
#include <vector>
-#ifndef _SPELLIMP_HXX
-#include <spelldsp.hxx>
-#endif
-#ifndef _LNGPROPS_HXX
-#include <lngprops.hxx>
-#endif
-
#include "spelldsp.hxx"
#include "spelldta.hxx"
#include "lngsvcmgr.hxx"
-#include <osl/mutex.hxx>
+#include "lngprops.hxx"
using namespace utl;
@@ -90,6 +85,7 @@ public:
//size_t Size() const { return aVec.size(); }
size_t Count() const;
+ void Prepend( const OUString &rText );
void Append( const OUString &rNew );
void Append( const std::vector< OUString > &rNew );
void Append( const Sequence< OUString > &rNew );
@@ -110,6 +106,12 @@ BOOL ProposalList::HasEntry( const OUString &rText ) const
return bFound;
}
+void ProposalList::Prepend( const OUString &rText )
+{
+ if (!HasEntry( rText ))
+ aVec.insert( aVec.begin(), rText );
+}
+
void ProposalList::Append( const OUString &rText )
{
if (!HasEntry( rText ))
@@ -279,6 +281,40 @@ Reference< XSpellAlternatives > SAL_CALL
}
+// returns the overall result of cross-checking with all user-dictionaries
+// including the IgnoreAll list
+static Reference< XDictionaryEntry > lcl_GetRulingDictionaryEntry(
+ const OUString &rWord,
+ LanguageType nLanguage )
+{
+ Reference< XDictionaryEntry > xRes;
+
+ // the order of winning from top to bottom is:
+ // 1) IgnoreAll list will always win
+ // 2) Negative dictionaries will win over positive dictionaries
+ Reference< XDictionary > xIgnoreAll( GetIgnoreAllList() );
+ if (xIgnoreAll.is())
+ xRes = xIgnoreAll->getEntry( rWord );
+ if (!xRes.is())
+ {
+ Reference< XDictionaryList > xDList( GetDictionaryList() );
+ Reference< XDictionaryEntry > xNegEntry( SearchDicList( xDList,
+ rWord, nLanguage, FALSE, TRUE ) );
+ if (xNegEntry.is())
+ xRes = xNegEntry;
+ else
+ {
+ Reference< XDictionaryEntry > xPosEntry( SearchDicList( xDList,
+ rWord, nLanguage, TRUE, TRUE ) );
+ if (xPosEntry.is())
+ xRes = xPosEntry;
+ }
+ }
+
+ return xRes;
+}
+
+
BOOL SpellCheckerDispatcher::isValid_Impl(
const OUString& rWord,
LanguageType nLanguage,
@@ -432,22 +468,13 @@ BOOL SpellCheckerDispatcher::isValid_Impl(
}
}
- // countercheck against results from dictionary which have precedence!
+ // cross-check against results from dictionaries which have precedence!
if (bCheckDics &&
GetDicList().is() && IsUseDicList( rProperties, GetPropSet() ))
{
- Reference< XDictionaryList > xDList( GetDicList(), UNO_QUERY );
- Reference< XDictionaryEntry > xPosEntry( SearchDicList( xDList,
- aChkWord, nLanguage, TRUE, TRUE ) );
- if (xPosEntry.is())
- bRes = TRUE;
- else
- {
- Reference< XDictionaryEntry > xNegEntry( SearchDicList( xDList,
- aChkWord, nLanguage, FALSE, TRUE ) );
- if (xNegEntry.is())
- bRes = FALSE;
- }
+ Reference< XDictionaryEntry > xTmp( lcl_GetRulingDictionaryEntry( aChkWord, nLanguage ) );
+ if (xTmp.is())
+ bRes = !xTmp->isNegative();
}
}
@@ -505,8 +532,8 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
// try already instantiated services first
{
- const Reference< XSpellChecker > *pRef =
- pEntry->aSvcRefs.getConstArray();
+ const Reference< XSpellChecker > *pRef = pEntry->aSvcRefs.getConstArray();
+ sal_Int32 nNumSugestions = -1;
while (i <= pEntry->nLastTriedSvcIndex
&& (!bTmpResValid || xTmpRes.is()) )
{
@@ -530,9 +557,24 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
else
bTmpResValid = FALSE;
- // remember first found alternatives only
+ // return first found result if the word is not known by any checker.
+ // But if that result has no suggestions use the first one that does
+ // provide suggestions for the misspelled word.
if (!xRes.is() && bTmpResValid)
+ {
xRes = xTmpRes;
+ nNumSugestions = 0;
+ if (xRes.is())
+ nNumSugestions = xRes->getAlternatives().getLength();
+ }
+ sal_Int32 nTmpNumSugestions = 0;
+ if (xTmpRes.is() && bTmpResValid)
+ nTmpNumSugestions = xTmpRes->getAlternatives().getLength();
+ if (xRes.is() && nNumSugestions == 0 && nTmpNumSugestions > 0)
+ {
+ xRes = xTmpRes;
+ nNumSugestions = nTmpNumSugestions;
+ }
++i;
}
@@ -555,6 +597,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
//! thus the service needs not to now about it
//aArgs.getArray()[1] <<= GetDicList();
+ sal_Int32 nNumSugestions = -1;
while (i < nLen && (!bTmpResValid || xTmpRes.is()))
{
// create specific service via it's implementation name
@@ -596,9 +639,24 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
else
bTmpResValid = FALSE;
- // remember first found alternatives only
+ // return first found result if the word is not known by any checker.
+ // But if that result has no suggestions use the first one that does
+ // provide suggestions for the misspelled word.
if (!xRes.is() && bTmpResValid)
+ {
+ xRes = xTmpRes;
+ nNumSugestions = 0;
+ if (xRes.is())
+ nNumSugestions = xRes->getAlternatives().getLength();
+ }
+ sal_Int32 nTmpNumSugestions = 0;
+ if (xTmpRes.is() && bTmpResValid)
+ nTmpNumSugestions = xTmpRes->getAlternatives().getLength();
+ if (xRes.is() && nNumSugestions == 0 && nTmpNumSugestions > 0)
+ {
xRes = xTmpRes;
+ nNumSugestions = nTmpNumSugestions;
+ }
pEntry->nLastTriedSvcIndex = (INT16) i;
++i;
@@ -634,42 +692,31 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
if (GetDicList().is() && IsUseDicList( rProperties, GetPropSet() ))
xDList = Reference< XDictionaryList >( GetDicList(), UNO_QUERY );
- // countercheck against results from dictionary which have precedence!
+ // cross-check against results from user-dictionaries which have precedence!
if (bCheckDics && xDList.is())
{
- Reference< XDictionaryEntry > xPosEntry( SearchDicList( xDList,
- aChkWord, nLanguage, TRUE, TRUE ) );
-
- if (xPosEntry.is())
+ Reference< XDictionaryEntry > xTmp( lcl_GetRulingDictionaryEntry( aChkWord, nLanguage ) );
+ if (xTmp.is())
{
- xRes = NULL; // positive dictionaries have precedence over negative ones
- eFailureType = -1; // no failure
- }
- else
- {
- Reference< XDictionaryEntry > xNegEntry( SearchDicList( xDList,
- aChkWord, nLanguage, FALSE, TRUE ) );
- if (xNegEntry.is())
+ if (xTmp->isNegative()) // positive entry found
{
eFailureType = SpellFailure::IS_NEGATIVE_WORD;
// replacement text to be added to suggestions, if not empty
- OUString aAddRplcTxt( xNegEntry->getReplacementText() );
+ OUString aAddRplcTxt( xTmp->getReplacementText() );
// replacement text must not be in negative dictionary itself
if (aAddRplcTxt.getLength() &&
!SearchDicList( xDList, aAddRplcTxt, nLanguage, FALSE, TRUE ).is())
{
- aProposalList.Append( aAddRplcTxt );
-// // add suggestion if not already part of proposals
-// if (!SeqHasEntry( aProposals, aAddRplcTxt))
-// {
-// INT32 nLen = aProposals.getLength();
-// aProposals.realloc( nLen + 1);
-// aProposals.getArray()[ nLen ] = aAddRplcTxt;
-// }
+ aProposalList.Prepend( aAddRplcTxt );
}
}
+ else // positive entry found
+ {
+ xRes = NULL;
+ eFailureType = -1; // no failure
+ }
}
}
@@ -683,6 +730,7 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
Sequence< OUString > aProposals = aProposalList.GetSequence();
// remove entries listed in negative dictionaries
+ // (we don't want to display suggestions that will be regarded as misspelledlater on)
if (bCheckDics && xDList.is())
SeqRemoveNegEntries( aProposals, xDList, nLanguage );
@@ -693,7 +741,19 @@ Reference< XSpellAlternatives > SpellCheckerDispatcher::spell_Impl(
xSetAlt->setFailureType( eFailureType );
}
else
- DBG_ASSERT( 0, "XSetSpellAlternatives not implemented!" );
+ {
+ if (xRes.is())
+ {
+ DBG_ASSERT( 0, "XSetSpellAlternatives not implemented!" );
+ }
+ else if (aProposals.getLength() > 0)
+ {
+ // no xRes but Proposals found from the user-dictionaries.
+ // Thus we need to create an xRes...
+ xRes = new linguistic::SpellAlternatives( rWord, nLanguage,
+ SpellFailure::IS_NEGATIVE_WORD, aProposals );
+ }
+ }
}
}
diff --git a/linguistic/source/spelldta.cxx b/linguistic/source/spelldta.cxx
index f3729f231132..2b3b44dd41be 100644
--- a/linguistic/source/spelldta.cxx
+++ b/linguistic/source/spelldta.cxx
@@ -151,8 +151,8 @@ void SearchSimilarText( const OUString &rText, INT16 nLanguage,
{
#if OSL_DEBUG_LEVEL > 1
DictionaryType eType = xDic->getDictionaryType();
- DBG_ASSERT( eType != DictionaryType_MIXED,
- "unexpected dictionary type" );
+ (void) eType;
+ DBG_ASSERT( eType != DictionaryType_MIXED, "unexpected dictionary type" );
#endif
const Sequence< Reference< XDictionaryEntry > > aEntries = xDic->getEntries();
const Reference< XDictionaryEntry > *pEntries = aEntries.getConstArray();