@@ -57,7 +58,11 @@ class OImageControlModel
{
::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageProducer> m_xImageProducer;
ImageProducer* m_pImageProducer;
+ bool m_bExternalGraphic;
sal_Bool m_bReadOnly;
+ ::rtl::OUString m_sImageURL;
+ ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphicObject >
+ m_xGraphicObject;
::rtl::OUString m_sDocumentURL;
protected:
@@ -86,9 +91,6 @@ public:
// OComponentHelper
virtual void SAL_CALL disposing();
- // OPropertyChangeListener
- virtual void _propertyChanged( const ::com::sun::star::beans::PropertyChangeEvent& ) throw(::com::sun::star::uno::RuntimeException);
-
// XPersistObject
virtual ::rtl::OUString SAL_CALL getServiceName() throw ( ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
@@ -103,6 +105,9 @@ public:
virtual void SAL_CALL startProduction( ) throw (::com::sun::star::uno::RuntimeException);
// OControlModel's property handling
+ virtual void describeAggregateProperties(
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rAggregateProps
+ ) const;
virtual void describeFixedProperties(
::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps
) const;
@@ -119,6 +124,8 @@ protected:
translateDbColumnToControlValue( );
virtual sal_Bool commitControlValueToDbColumn( bool _bPostReset );
+ virtual ::com::sun::star::uno::Any
+ getControlValue( ) const;
virtual void doSetControlValue( const ::com::sun::star::uno::Any& _rValue );
virtual sal_Bool approveDbColumnType(sal_Int32 _nColumnType);
@@ -134,12 +141,14 @@ protected:
@precond
our own mutex is locked
*/
- sal_Bool impl_handleNewImageURL_lck( const ::rtl::OUString& _rURL, ValueChangeInstigator _eInstigator );
+ sal_Bool impl_handleNewImageURL_lck( ValueChangeInstigator _eInstigator );
/** updates the binary stream, created from loading the file which the given URL points to, into our
bound field, or the control itself if there is no bound field
*/
sal_Bool impl_updateStreamForURL_lck( const ::rtl::OUString& _rURL, ValueChangeInstigator _eInstigator );
+
+ DECL_LINK( OnImageImportDone, ::Graphic* );
};
//==================================================================
diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx
index 8bd02173fc3f..07abd703281d 100644
--- a/forms/source/component/imgprod.cxx
+++ b/forms/source/component/imgprod.cxx
@@ -190,11 +190,7 @@ ErrCode ImgProdLockBytes::Stat( SvLockBytesStat* pStat, SvLockBytesStatFlag eFla
ImageProducer::ImageProducer() :
mpStm ( NULL ),
- mpFilter ( NULL ),
- mnStatus ( 0UL ),
- mbConsInit ( sal_False ),
- mnLastError ( 0UL ),
- mbAsync ( sal_False )
+ mbConsInit ( sal_False )
{
mpGraphic = new Graphic;
DBG_ASSERT( Application::GetFilterHdl().IsSet(), "ImageProducer::ImageProducer(): No filter handler set" );
@@ -207,9 +203,6 @@ ImageProducer::~ImageProducer()
delete mpGraphic;
mpGraphic = NULL;
- delete mpFilter;
- mpFilter = NULL;
-
delete mpStm;
mpStm = NULL;
@@ -261,7 +254,6 @@ void ImageProducer::SetImage( const ::rtl::OUString& rPath )
maURL = rPath;
mpGraphic->Clear();
mbConsInit = sal_False;
- mbAsync = sal_False;
delete mpStm;
if ( ::svt::GraphicAccess::isSupportedURL( maURL ) )
@@ -284,7 +276,6 @@ void ImageProducer::SetImage( SvStream& rStm )
maURL = ::rtl::OUString();
mpGraphic->Clear();
mbConsInit = sal_False;
- mbAsync = sal_False;
delete mpStm;
mpStm = new SvStream( new ImgProdLockBytes( &rStm, sal_False ) );
@@ -297,7 +288,6 @@ void ImageProducer::setImage( ::com::sun::star::uno::Reference< ::com::sun::star
maURL = ::rtl::OUString();
mpGraphic->Clear();
mbConsInit = sal_False;
- mbAsync = sal_False;
delete mpStm;
if( rInputStmRef.is() )
@@ -318,9 +308,7 @@ void ImageProducer::NewDataAvailable()
void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeException)
{
- ResetLastError();
-
- if( maConsList.Count() )
+ if( maConsList.Count() || maDoneHdl.IsSet() )
{
bool bNotifyEmptyGraphics = false;
@@ -331,8 +319,8 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept
// graphic is cleared if a new Stream is set
if( ( mpGraphic->GetType() == GRAPHIC_NONE ) || mpGraphic->GetContext() )
{
- if( !ImplImportGraphic( *mpGraphic ) && maErrorHdl.IsSet() )
- maErrorHdl.Call( this );
+ if ( ImplImportGraphic( *mpGraphic ) && maDoneHdl.IsSet() )
+ maDoneHdl.Call( mpGraphic );
}
if( mpGraphic->GetType() != GRAPHIC_NONE )
@@ -363,6 +351,9 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept
// delete interfaces in temporary list
for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() )
delete (::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons;
+
+ if ( maDoneHdl.IsSet() )
+ maDoneHdl.Call( NULL );
}
}
}
@@ -371,33 +362,16 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept
sal_Bool ImageProducer::ImplImportGraphic( Graphic& rGraphic )
{
- USHORT nFilter = GRFILTER_FORMAT_DONTKNOW;
- short nRet;
- sal_Bool bRet = sal_False;
-
if( ERRCODE_IO_PENDING == mpStm->GetError() )
mpStm->ResetError();
mpStm->Seek( 0UL );
- if( mpFilter )
- nRet = mpFilter->ImportGraphic( rGraphic, String(), *mpStm, nFilter );
- else
- {
- if( GraphicConverter::Import( *mpStm, rGraphic ) == ERRCODE_NONE )
- nRet = GRFILTER_OK;
- else
- nRet = GRFILTER_FILTERERROR;
- }
+ sal_Bool bRet = GraphicConverter::Import( *mpStm, rGraphic ) == ERRCODE_NONE;
if( ERRCODE_IO_PENDING == mpStm->GetError() )
mpStm->ResetError();
- if( nRet == GRFILTER_OK )
- bRet = sal_True;
- else
- mnLastError = nRet;
-
return bRet;
}
@@ -405,10 +379,6 @@ sal_Bool ImageProducer::ImplImportGraphic( Graphic& rGraphic )
void ImageProducer::ImplUpdateData( const Graphic& rGraphic )
{
- // asynchronous?
- if( mpGraphic->GetContext() )
- mbAsync = sal_True;
-
ImplInitConsumer( rGraphic );
if( mbConsInit && maConsList.Count() )
@@ -425,7 +395,7 @@ void ImageProducer::ImplUpdateData( const Graphic& rGraphic )
// iterate through interfaces
for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() )
- ( *(::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons )->complete( mnStatus = ::com::sun::star::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this );
+ ( *(::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons )->complete( ::com::sun::star::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this );
// delete interfaces in temporary list
for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() )
diff --git a/forms/source/component/imgprod.hxx b/forms/source/component/imgprod.hxx
index 0da5d04755df..170fc186fa73 100644
--- a/forms/source/component/imgprod.hxx
+++ b/forms/source/component/imgprod.hxx
@@ -64,20 +64,9 @@ private:
List maConsList;
Graphic* mpGraphic;
SvStream* mpStm;
- GraphicFilter* mpFilter;
sal_uInt32 mnTransIndex;
- sal_uInt32 mnStatus;
sal_Bool mbConsInit;
- sal_Bool mbStmDel;
- Link maErrorHdl;
- sal_uInt32 mnLastError;
-
- sal_uInt32 mnExtra2;
-
- sal_Bool mbAsync;
- sal_Bool mbExtra1;
- sal_Bool mbExtra2;
- sal_Bool mbExtra3;
+ Link maDoneHdl;
sal_Bool ImplImportGraphic( Graphic& rGraphic );
void ImplUpdateData( const Graphic& rGraphic );
@@ -92,14 +81,11 @@ public:
void SetImage( const ::rtl::OUString& rPath );
void SetImage( SvStream& rStm );
- void SetErrorHandler( const Link& rErrorHdl ) { maErrorHdl = rErrorHdl; }
- const Link& GetErrorHandler() const { return maErrorHdl; }
-
- sal_uInt32 GetLastError() const { return mnLastError; }
- void ResetLastError() { mnLastError = 0; }
-
void NewDataAvailable();
+ void SetDoneHdl( const Link& i_rHdl ) { maDoneHdl = i_rHdl; }
+ const Link& GetDoneHdl() const { return maDoneHdl; }
+
// ::com::sun::star::uno::XInterface
::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
void SAL_CALL acquire() throw() { OWeakObject::acquire(); }
diff --git a/forms/source/inc/FormComponent.hxx b/forms/source/inc/FormComponent.hxx
index de72e2b392e8..0c8b421008a3 100644
--- a/forms/source/inc/FormComponent.hxx
+++ b/forms/source/inc/FormComponent.hxx
@@ -759,6 +759,18 @@ protected:
sal_Int32 _nValuePropertyExternalHandle
);
+ /** initializes the part of the class which is related to the control value.
+
+ In opposite to ->initValueProperty, this method is to be used for value properties which are not
+ implemented by our aggregate, but by ourselves.
+
+ Certain functionality is not available when using own value properties. This includes binding to an external
+ value and external validation. (This is not a conceptual limit, but simply missing implementation.)
+ */
+ void initOwnValueProperty(
+ const ::rtl::OUString& i_rValuePropertyName
+ );
+
/** suspends listening at the value property
As long as this listening is suspended, changes in the value property will not be
@@ -782,6 +794,16 @@ protected:
*/
void resumeValueListening( );
+ /** (to be) called when the value property changed
+
+ Normally, this is done automatically, since the value property is a property of our aggregate, and we're
+ a listener at this property.
+ However, in some cases the value property might not be an aggregate property, but a property of the
+ delegator instance. In this case, you'll need to call onValuePropertyChange
whenever this
+ property changes.
+ */
+ void onValuePropertyChange( ControlModelLock& i_rControLock );
+
/** starts listening at the aggregate, for changes in the given property
The OBoundControlModel automatically registers a multiplexer which listens for
diff --git a/forms/source/inc/forms_module.hxx b/forms/source/inc/forms_module.hxx
index 6655fb750e8d..912323d93194 100644
--- a/forms/source/inc/forms_module.hxx
+++ b/forms/source/inc/forms_module.hxx
@@ -101,21 +101,6 @@ namespace FORMS_MODULE_NAMESPACE
static void revokeComponent(
const ::rtl::OUString& _rImplementationName);
- /** write the registration information of all known components
-
writes the registration information of all components which are currently registered into the
- specified registry.
- Usually used from within component_writeInfo.
- @param _rxServiceManager
- the service manager
- @param _rRootKey
- the registry key under which the information will be stored
- @return
- sal_True if the registration of all implementations was successfull, sal_False otherwise
- */
- static sal_Bool writeComponentInfos(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceManager,
- const ::com::sun::star::uno::Reference< ::com::sun::star::registry::XRegistryKey >& _rRootKey);
-
/** creates a Factory for the component with the given implementation name.
Usually used from within component_getFactory.
@param _rxServiceManager
diff --git a/forms/source/inc/forms_module_impl.hxx b/forms/source/inc/forms_module_impl.hxx
index a2c0e50e55e7..d10527075ae3 100644
--- a/forms/source/inc/forms_module_impl.hxx
+++ b/forms/source/inc/forms_module_impl.hxx
@@ -106,54 +106,6 @@ namespace FORMS_MODULE_NAMESPACE
}
}
- //--------------------------------------------------------------------------
- sal_Bool OFormsModule::writeComponentInfos(
- const Reference< XMultiServiceFactory >& /*_rxServiceManager*/,
- const Reference< XRegistryKey >& _rxRootKey)
- {
- OSL_ENSURE(_rxRootKey.is(), "OFormsModule::writeComponentInfos : invalid argument !");
-
- if (!s_pImplementationNames)
- {
- OSL_ASSERT("OFormsModule::writeComponentInfos : have no class infos ! Are you sure called this method at the right time ?");
- return sal_True;
- }
- OSL_ENSURE(s_pImplementationNames && s_pSupportedServices && s_pCreationFunctionPointers && s_pFactoryFunctionPointers,
- "OFormsModule::writeComponentInfos : inconsistent state (the pointers) !");
- OSL_ENSURE( (s_pImplementationNames->getLength() == s_pSupportedServices->getLength())
- && (s_pImplementationNames->getLength() == s_pCreationFunctionPointers->getLength())
- && (s_pImplementationNames->getLength() == s_pFactoryFunctionPointers->getLength()),
- "OFormsModule::writeComponentInfos : inconsistent state !");
-
- sal_Int32 nLen = s_pImplementationNames->getLength();
- const ::rtl::OUString* pImplName = s_pImplementationNames->getConstArray();
- const Sequence< ::rtl::OUString >* pServices = s_pSupportedServices->getConstArray();
-
- ::rtl::OUString sRootKey("/", 1, RTL_TEXTENCODING_ASCII_US);
- for (sal_Int32 i=0; i xNewKey( _rxRootKey->createKey(aMainKeyName) );
-
- const ::rtl::OUString* pService = pServices->getConstArray();
- for (sal_Int32 j=0; jgetLength(); ++j, ++pService)
- xNewKey->createKey(*pService);
- }
- catch(Exception&)
- {
- OSL_ASSERT("OFormsModule::writeComponentInfos : something went wrong while creating the keys !");
- return sal_False;
- }
- }
-
- return sal_True;
- }
-
//--------------------------------------------------------------------------
Reference< XInterface > OFormsModule::getComponentFactory(
const ::rtl::OUString& _rImplementationName,
diff --git a/forms/source/inc/frm_strings.hxx b/forms/source/inc/frm_strings.hxx
index 8a8105d2e1a7..1e3b1b1bd312 100644
--- a/forms/source/inc/frm_strings.hxx
+++ b/forms/source/inc/frm_strings.hxx
@@ -141,6 +141,7 @@ namespace frm
FORMS_CONSTASCII_STRING( PROPERTY_SUBMIT_METHOD, "SubmitMethod" );
FORMS_CONSTASCII_STRING( PROPERTY_SUBMIT_ENCODING, "SubmitEncoding" );
FORMS_CONSTASCII_STRING( PROPERTY_IMAGE_URL, "ImageURL" );
+ FORMS_CONSTASCII_STRING( PROPERTY_GRAPHIC, "Graphic" );
FORMS_CONSTASCII_STRING( PROPERTY_IMAGE_POSITION, "ImagePosition" );
FORMS_CONSTASCII_STRING( PROPERTY_EMPTY_IS_NULL, "ConvertEmptyToNull" );
FORMS_CONSTASCII_STRING( PROPERTY_LISTSOURCETYPE, "ListSourceType" );
diff --git a/forms/source/inc/property.hrc b/forms/source/inc/property.hrc
index c1064e6d56b9..0582ce36c6ee 100644
--- a/forms/source/inc/property.hrc
+++ b/forms/source/inc/property.hrc
@@ -61,7 +61,7 @@ namespace frm
#define PROPERTY_ID_WRITING_MODE (PROPERTY_ID_START + 20)
#define PROPERTY_ID_CONTEXT_WRITING_MODE (PROPERTY_ID_START + 21)
#define PROPERTY_ID_VERTICAL_ALIGN (PROPERTY_ID_START + 22)
- // free
+#define PROPERTY_ID_GRAPHIC (PROPERTY_ID_START + 23)
// free
// free
// free
diff --git a/forms/source/misc/property.cxx b/forms/source/misc/property.cxx
index 04bc9c8c8911..fffb7557ad5e 100644
--- a/forms/source/misc/property.cxx
+++ b/forms/source/misc/property.cxx
@@ -134,6 +134,7 @@ void PropertyInfoService::initialize()
ADD_PROP_ASSIGNMENT(SUBMIT_METHOD);
ADD_PROP_ASSIGNMENT(SUBMIT_ENCODING);
ADD_PROP_ASSIGNMENT(IMAGE_URL);
+ ADD_PROP_ASSIGNMENT(GRAPHIC);
ADD_PROP_ASSIGNMENT(EMPTY_IS_NULL);
ADD_PROP_ASSIGNMENT(LISTSOURCETYPE);
ADD_PROP_ASSIGNMENT(LISTSOURCE);
diff --git a/forms/source/misc/services.cxx b/forms/source/misc/services.cxx
index dbda0ae3896d..9a38d49e3e67 100644
--- a/forms/source/misc/services.cxx
+++ b/forms/source/misc/services.cxx
@@ -283,22 +283,6 @@ void ensureClassInfos()
}
-//---------------------------------------------------------------------------------------
-void registerServiceProvider(const ::rtl::OUString& _rServiceImplName, const Sequence< ::rtl::OUString >& _rServices, XRegistryKey* _pKey)
-{
- ::rtl::OUString sMainKeyName = ::rtl::OUString::createFromAscii("/");
- sMainKeyName += _rServiceImplName;
- sMainKeyName += ::rtl::OUString::createFromAscii("/UNO/SERVICES");
- Reference< XRegistryKey > xNewKey = _pKey->createKey(sMainKeyName);
- OSL_ENSURE(xNewKey.is(), "forms::registerProvider : could not create a registry key !");
- if (!xNewKey.is())
- return;
-
- const ::rtl::OUString* pSupportedServices = _rServices.getConstArray();
- for (sal_Int32 i=0; i<_rServices.getLength(); ++i, ++pSupportedServices)
- xNewKey->createKey(*pSupportedServices);
-}
-
//=======================================================================================
extern "C"
{
@@ -341,57 +325,6 @@ SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(const
*_ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-//---------------------------------------------------------------------------------------
-SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(void* _pServiceManager, XRegistryKey* _pRegistryKey)
-{
- if (_pRegistryKey)
- {
- try
- {
- // ========================================================================
- // the real way - use the OModule
- createRegistryInfo_FORMS();
- if ( !::frm::OFormsModule::writeComponentInfos(
- static_cast( _pServiceManager ),
- static_cast( _pRegistryKey ) )
- )
- return sal_False;
-
- // ========================================================================
- // a lot of stuff which is implemented "manually" here in this file
-
- // collect the class infos
- ensureClassInfos();
-
- // both our static sequences should have the same length ...
- sal_Int32 nClasses = s_aClassImplementationNames.getLength();
- OSL_ENSURE(s_aClassServiceNames.getLength() == nClasses,
- "forms::component_writeInfo : invalid class infos !");
-
- // loop through the sequences and register the service providers
- const ::rtl::OUString* pClasses = s_aClassImplementationNames.getConstArray();
- const Sequence< ::rtl::OUString >* pServices = s_aClassServiceNames.getConstArray();
-
- for (sal_Int32 i=0; i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/forms/util/frm.dxp b/forms/util/frm.dxp
index 9e59e94034a6..f0e1c69934bc 100644
--- a/forms/util/frm.dxp
+++ b/forms/util/frm.dxp
@@ -1,3 +1,2 @@
-component_writeInfo
component_getImplementationEnvironment
component_getFactory
diff --git a/forms/util/makefile.mk b/forms/util/makefile.mk
index 00d7a81d5a97..5ce7dd2566d2 100644
--- a/forms/util/makefile.mk
+++ b/forms/util/makefile.mk
@@ -112,3 +112,11 @@ $(MISC)$/$(SHL1TARGET).flt: makefile.mk
@echo NavigationToolBar >>$@
@echo ONavigationBar >>$@
+
+ALLTAR : $(MISC)/frm.component
+
+$(MISC)/frm.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ frm.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt frm.component
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
index aefd78e480b7..358ebd489db4 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
@@ -75,6 +75,9 @@ public class InstallData
static private boolean databaseQueried = false;
static private boolean useRtl = false;
static private boolean installedProductMinorSet = false;
+ static private boolean isDebianSystem = false;
+ static private boolean useForceDebian = false; /* --force-debian */
+ static private boolean debianInvestigated = false;
static private String installType; /* custom or typical installation */
static private String osType; /* Linux, SunOS, ... */
static private String installDir = null;
@@ -649,6 +652,30 @@ public class InstallData
installedProductMinorSet = value;
}
+ public boolean debianInvestigated() {
+ return debianInvestigated;
+ }
+
+ public void setDebianInvestigated(boolean value) {
+ debianInvestigated = value;
+ }
+
+ public boolean isDebianSystem() {
+ return isDebianSystem;
+ }
+
+ public void setIsDebianSystem(boolean value) {
+ isDebianSystem = value;
+ }
+
+ public boolean useForceDebian() {
+ return useForceDebian;
+ }
+
+ public void setUseForceDebian(boolean value) {
+ useForceDebian = value;
+ }
+
public boolean databaseQueried() {
return databaseQueried;
}
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
index fa1ce919245c..4383904569c0 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
@@ -190,8 +190,25 @@ public class LinuxInstaller extends Installer {
if ( sofficeLink.exists() ) { useForce = true; }
}
- String rpmCommand = "";
- String[] rpmCommandArray;
+ // On Debian based systems, rpms can be installed with the switch --force-debian, if a rpm
+ // is installed.
+
+ String forceDebianString = "";
+ String nodepsString = "";
+
+ if ( ! data.debianInvestigated() ) {
+ helper.investigateDebian(data);
+ data.setDebianInvestigated(true);
+ }
+
+ if ( data.isDebianSystem() ) {
+ nodepsString = "--nodeps";
+
+ if ( data.useForceDebian() ) {
+ forceDebianString = "--force-debian";
+ }
+ }
+
String databasePath = null;
String databaseString = "";
boolean useLocalDatabase = false;
@@ -209,114 +226,57 @@ public class LinuxInstaller extends Installer {
useLocalDatabase = true;
}
- if (useForce) {
- if (useLocalDatabase) {
- if ( relocations != null ) {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
- "--relocate " + relocations + " " + databaseString +
- " " + databasePath + " " + packageName;
- rpmCommandArray = new String[10];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = "--relocate";
- rpmCommandArray[6] = relocations;
- rpmCommandArray[7] = databaseString;
- rpmCommandArray[8] = databasePath;
- rpmCommandArray[9] = packageName;
- } else {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
- databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[8];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = databaseString;
- rpmCommandArray[6] = databasePath;
- rpmCommandArray[7] = packageName;
- }
- } else {
- if ( relocations != null )
- {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
- "--relocate " + relocations + " " + packageName;
- rpmCommandArray = new String[8];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = "--relocate";
- rpmCommandArray[6] = relocations;
- rpmCommandArray[7] = packageName;
- } else {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " + packageName;
- rpmCommandArray = new String[6];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = packageName;
- }
- }
- } else {
- if (useLocalDatabase) {
- if ( relocations != null ) {
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
- "--relocate " + relocations + " " + databaseString +
- " " + databasePath + " " + packageName;
- rpmCommandArray = new String[9];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = "--relocate";
- rpmCommandArray[5] = relocations;
- rpmCommandArray[6] = databaseString;
- rpmCommandArray[7] = databasePath;
- rpmCommandArray[8] = packageName;
- } else {
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
- databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[7];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = databaseString;
- rpmCommandArray[5] = databasePath;
- rpmCommandArray[6] = packageName;
- }
- } else {
- if ( relocations != null )
- {
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
- "--relocate " + relocations + " " + packageName;
- rpmCommandArray = new String[7];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = "--relocate";
- rpmCommandArray[5] = relocations;
- rpmCommandArray[6] = packageName;
- } else {
- rpmCommand = "rpm --upgrade --ignoresize -vh " + packageName;
- rpmCommandArray = new String[5];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "--upgrade";
- rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = packageName;
- }
- }
+ // Defining a Vector that contains the full rpm command. Then the string array can be
+ // created dynamically. Otherwise there would be too many different scenarios.
+
+ Vector rpmVector = new Vector();
+
+ rpmVector.add("rpm");
+ rpmVector.add("--upgrade");
+ rpmVector.add("--ignoresize");
+
+ if ( useForce ) {
+ rpmVector.add("--force");
}
+ if ( ! forceDebianString.equals("") ) {
+ rpmVector.add(forceDebianString);
+ }
+
+ if ( ! nodepsString.equals("") ) {
+ rpmVector.add(nodepsString);
+ }
+
+ rpmVector.add("-vh");
+
+ if ( relocations != null ) {
+ rpmVector.add("--relocate");
+ rpmVector.add(relocations);
+ }
+
+ if ( useLocalDatabase ) {
+ rpmVector.add(databaseString);
+ rpmVector.add(databasePath);
+ }
+
+ rpmVector.add(packageName);
+
+ // Creating String and StringArray for rpm command
+
+ int capacity = rpmVector.size();
+
+ String rpmCommand = "";
+ String[] rpmCommandArray = new String[capacity];
+
+ for (int i = 0; i < rpmVector.size(); i++) {
+ rpmCommandArray[i] = (String)rpmVector.get(i);
+ rpmCommand = rpmCommand + " " + (String)rpmVector.get(i);
+ }
+
+ rpmCommand = rpmCommand.trim();
+
+ // Staring rpm process
+
Vector returnVector = new Vector();
Vector returnErrorVector = new Vector();
// int returnValue = SystemManager.executeProcessReturnVector(rpmCommand, returnVector, returnErrorVector);
@@ -375,30 +335,71 @@ public class LinuxInstaller extends Installer {
String databasePath = data.getDatabasePath();
String databaseString = "";
boolean useLocalDatabase = false;
- String rpmCommand;
- String[] rpmCommandArray;
if (( databasePath != null ) && (! databasePath.equalsIgnoreCase("null"))) {
databaseString = "--dbpath";
useLocalDatabase = true;
}
- if (useLocalDatabase) {
- rpmCommand = "rpm -ev" + " " + databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[5];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "-ev";
- rpmCommandArray[2] = databaseString;
- rpmCommandArray[3] = databasePath;
- rpmCommandArray[4] = packageName;
- } else {
- rpmCommand = "rpm -ev" + " " + packageName;
- rpmCommandArray = new String[3];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "-ev";
- rpmCommandArray[2] = packageName;
+ // On Debian based systems, rpms can be installed with the switch --force-debian, if a rpm
+ // is installed.
+
+ String forceDebianString = "";
+ String nodepsString = "";
+
+ if ( ! data.debianInvestigated() ) {
+ helper.investigateDebian(data);
+ data.setDebianInvestigated(true);
}
+ if ( data.isDebianSystem() ) {
+ nodepsString = "--nodeps";
+
+ if ( data.useForceDebian() ) {
+ forceDebianString = "--force-debian";
+ }
+ }
+
+ // Defining a Vector that contains the full rpm command. Then the string array can be
+ // created dynamically. Otherwise there would be too many different scenarios.
+
+ Vector rpmVector = new Vector();
+
+ rpmVector.add("rpm");
+
+ if ( ! forceDebianString.equals("") ) {
+ rpmVector.add(forceDebianString);
+ }
+
+ if ( ! nodepsString.equals("") ) {
+ rpmVector.add(nodepsString);
+ }
+
+ rpmVector.add("-ev");
+
+ if ( useLocalDatabase ) {
+ rpmVector.add(databaseString);
+ rpmVector.add(databasePath);
+ }
+
+ rpmVector.add(packageName);
+
+ // Creating String and StringArray for rpm command
+
+ int capacity = rpmVector.size();
+
+ String rpmCommand = "";
+ String[] rpmCommandArray = new String[capacity];
+
+ for (int i = 0; i < rpmVector.size(); i++) {
+ rpmCommandArray[i] = (String)rpmVector.get(i);
+ rpmCommand = rpmCommand + " " + (String)rpmVector.get(i);
+ }
+
+ rpmCommand = rpmCommand.trim();
+
+ // Starting rpm process
+
Vector returnVector = new Vector();
Vector returnErrorVector = new Vector();
int returnValue = ExecuteProcess.executeProcessReturnVector(rpmCommandArray, returnVector, returnErrorVector);
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
index 1640ae706a46..91e8463fdc03 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
@@ -381,6 +381,39 @@ import java.util.Vector;public class LinuxHelper {
return databasePath;
}
+ public void investigateDebian(InstallData data) {
+
+ // First check: Is this a Debian system?
+
+ String dpkgFile = "/usr/bin/dpkg";
+
+ if ( new File(dpkgFile).exists() ) {
+
+ data.setIsDebianSystem(true);
+
+ // Second check: If this is a Debian system, is "--force-debian" required? Older
+ // versions do not support "--force-debian".
+
+ // String rpmQuery = "rpm --help;
+ String[] rpmQueryArray = new String[2];
+ rpmQueryArray[0] = "rpm";
+ rpmQueryArray[1] = "--help";
+
+ Vector returnVector = new Vector();
+ Vector returnErrorVector = new Vector();
+ int returnValue = ExecuteProcess.executeProcessReturnVector(rpmQueryArray, returnVector, returnErrorVector);
+
+ // Checking if the return vector contains the string "force-debian"
+
+ for (int i = 0; i < returnVector.size(); i++) {
+ String line = (String) returnVector.get(i);
+ if ( line.indexOf("force-debian") > -1 ) {
+ data.setUseForceDebian(true);
+ }
+ }
+ }
+ }
+
public void getLinuxFileInfo(PackageDescription packageData) {
// analyzing a string like "openoffice-core01-2.0.3-159" as "name-version-release"
InstallData data = InstallData.getInstance();
diff --git a/lingucomponent/prj/build.lst b/lingucomponent/prj/build.lst
index 045aaee82999..15ee595c67c0 100644
--- a/lingucomponent/prj/build.lst
+++ b/lingucomponent/prj/build.lst
@@ -1,4 +1,4 @@
-lc lingucomponent : linguistic libtextcat svl HYPHEN:hyphen HUNSPELL:hunspell MYTHES:mythes NULL
+lc lingucomponent : linguistic LIBTEXTCAT:libtextcat LIBTEXTCATDATA:libtextcat svl HYPHEN:hyphen HUNSPELL:hunspell MYTHES:mythes NULL
lc lingucomponent usr1 - all lc_mkout NULL
lc lingucomponent\inc nmake - all lc_inc NULL
lc lingucomponent\source\lingutil nmake - all lc_util lc_inc NULL
diff --git a/lingucomponent/prj/d.lst b/lingucomponent/prj/d.lst
index 666ee38d5b1d..4760a299c84d 100644
--- a/lingucomponent/prj/d.lst
+++ b/lingucomponent/prj/d.lst
@@ -46,3 +46,8 @@ mkdir: %_DEST%\xml%_EXT%\registry\data\org\openoffice
mkdir: %_DEST%\xml%_EXT%\registry\data\org\openoffice\Office
..\config\*.xcu %_DEST%\xml%_EXT%\registry\data\org\openoffice\Office\*.xcu
+..\%__SRC%\misc\MacOSXSpell.component %_DEST%\xml%_EXT%\MacOSXSpell.component
+..\%__SRC%\misc\guesslang.component %_DEST%\xml%_EXT%\guesslang.component
+..\%__SRC%\misc\hyphen.component %_DEST%\xml%_EXT%\hyphen.component
+..\%__SRC%\misc\lnth.component %_DEST%\xml%_EXT%\lnth.component
+..\%__SRC%\misc\spell.component %_DEST%\xml%_EXT%\spell.component
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
index b0f85bf7bebf..a9861e3ffc0c 100644
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
@@ -1,3 +1,2 @@
component_getFactory
component_getImplementationEnvironment
-component_writeInfo
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
index 448ecc529bf0..9d975a83b8ef 100644
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
@@ -42,9 +42,6 @@ using namespace com::sun::star::registry;
// declaration of external RegEntry-functions defined by the service objects
//
-extern sal_Bool SAL_CALL Hyphenator_writeInfo(
- void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
-
extern void * SAL_CALL Hyphenator_getFactory(
const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager,
@@ -57,12 +54,6 @@ extern void * SAL_CALL Hyphenator_getFactory(
extern "C"
{
-sal_Bool SAL_CALL component_writeInfo(
- void * pServiceManager, XRegistryKey * pRegistryKey )
-{
- return Hyphenator_writeInfo( pServiceManager, pRegistryKey );
-}
-
void SAL_CALL component_getImplementationEnvironment(
const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
{
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.component b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.component
new file mode 100644
index 000000000000..aeae4c577b98
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.component
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
old mode 100644
new mode 100755
index 3b0871cc36b6..5d040be72cb9
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
@@ -32,7 +32,6 @@
#include
#include
-//#include
#include // helper for factories
#include
#include
@@ -43,15 +42,12 @@
#include
#include
-
-#ifndef _HYPHENIMP_HXX
#include
-#endif
#include
#include
-
#include
+#include
#include
#include
@@ -97,9 +93,8 @@ Hyphenator::Hyphenator() :
{
bDisposing = FALSE;
pPropHelper = NULL;
- aDicts = NULL;
- numdict = 0;
-
+ aDicts = NULL;
+ numdict = 0;
}
@@ -108,21 +103,22 @@ Hyphenator::~Hyphenator()
if (pPropHelper)
pPropHelper->RemoveAsPropListener();
- if ((numdict) && (aDicts)) {
- for (int i=0; i < numdict; i++) {
+ if ((numdict) && (aDicts))
+ {
+ for (int i=0; i < numdict; i++)
+ {
if (aDicts[i].apCC) delete aDicts[i].apCC;
aDicts[i].apCC = NULL;
- }
+ }
}
- if (aDicts) delete[] aDicts;
+ if (aDicts) delete[] aDicts;
aDicts = NULL;
- numdict = 0;
+ numdict = 0;
}
PropertyHelper_Hyphen & Hyphenator::GetPropHelper_Impl()
{
-
if (!pPropHelper)
{
Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
@@ -212,12 +208,7 @@ Sequence< Locale > SAL_CALL Hyphenator::getLocales()
// add dictionary information
aDicts = new HDInfo[numdict];
-/*
- aTEncs = new rtl_TextEncoding [numdict];
- aTLocs = new Locale [numdict];
- aTNames = new OUString [numdict];
- aCharSetInfo = new CharClass* [numdict];
-*/
+
k = 0;
for (aDictIt = aDics.begin(); aDictIt != aDics.end(); ++aDictIt)
{
@@ -233,7 +224,7 @@ Sequence< Locale > SAL_CALL Hyphenator::getLocales()
for (sal_Int32 i = 0; i < nLocales; ++i)
{
aDicts[k].aPtr = NULL;
- aDicts[k].aEnc = 0;
+ aDicts[k].eEnc = RTL_TEXTENCODING_DONTKNOW;
aDicts[k].aLoc = MsLangId::convertLanguageToLocale(
MsLangId::convertIsoStringToLanguage( aDictIt->aLocaleNames[i] ));
aDicts[k].apCC = new CharClass( aDicts[k].aLoc );
@@ -288,240 +279,268 @@ sal_Bool SAL_CALL Hyphenator::hasLocale(const Locale& rLocale)
}
-Reference< XHyphenatedWord > SAL_CALL
-Hyphenator::hyphenate( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- sal_Int16 nMaxLeading,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw (com::sun::star::uno::RuntimeException,
- com::sun::star::lang::IllegalArgumentException)
+Reference< XHyphenatedWord > SAL_CALL Hyphenator::hyphenate( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ sal_Int16 nMaxLeading,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw (com::sun::star::uno::RuntimeException, com::sun::star::lang::IllegalArgumentException)
{
int nHyphenationPos = -1;
- int nHyphenationPosAlt = -1;
- int nHyphenationPosAltHyph = -1;
+ int nHyphenationPosAlt = -1;
+ int nHyphenationPosAltHyph = -1;
int wordlen;
char *hyphens;
- char *lcword;
- int k = 0;
+ char *lcword;
+ int k = 0;
- PropertyHelper_Hyphen & rHelper = GetPropHelper();
- rHelper.SetTmpPropVals(aProperties);
+ PropertyHelper_Hyphen & rHelper = GetPropHelper();
+ rHelper.SetTmpPropVals(aProperties);
sal_Int16 minTrail = rHelper.GetMinTrailing();
sal_Int16 minLead = rHelper.GetMinLeading();
sal_Int16 minLen = rHelper.GetMinWordLength();
HyphenDict *dict = NULL;
- rtl_TextEncoding aEnc = 0;
- CharClass * pCC = NULL;
+ rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
+ CharClass * pCC = NULL;
Reference< XHyphenatedWord > xRes;
- k = -1;
- for (int j = 0; j < numdict; j++)
- if (aLocale == aDicts[j].aLoc) k = j;
-
-
- // if we have a hyphenation dictionary matching this locale
- if (k != -1) {
+ k = -1;
+ for (int j = 0; j < numdict; j++)
+ {
+ if (aLocale == aDicts[j].aLoc)
+ k = j;
+ }
+ // if we have a hyphenation dictionary matching this locale
+ if (k != -1)
+ {
// if this dictinary has not been loaded yet do that
- if (!aDicts[k].aPtr) {
+ if (!aDicts[k].aPtr)
+ {
+ OUString DictFN = aDicts[k].aName + A2OU(".dic");
+ OUString dictpath;
- OUString DictFN = aDicts[k].aName + A2OU(".dic");
- OUString dictpath;
-
- osl::FileBase::getSystemPathFromFileURL( DictFN, dictpath );
- OString sTmp( OU2ENC( dictpath, osl_getThreadTextEncoding() ) );
+ osl::FileBase::getSystemPathFromFileURL( DictFN, dictpath );
+ OString sTmp( OU2ENC( dictpath, 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.
- sTmp = Win_GetShortPathName( dictpath );
+ // 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.
+ sTmp = Win_GetShortPathName( dictpath );
#endif
- if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
- {
- fprintf(stderr, "Couldn't find file %s\n", OU2ENC(dictpath, osl_getThreadTextEncoding()) );
- return NULL;
- }
- aDicts[k].aPtr = dict;
- aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
- if (aDicts[k].aEnc == RTL_TEXTENCODING_DONTKNOW) {
- if (strcmp("ISCII-DEVANAGARI", dict->cset) == 0) {
- aDicts[k].aEnc = RTL_TEXTENCODING_ISCII_DEVANAGARI;
- } else if (strcmp("UTF-8", dict->cset) == 0) {
- aDicts[k].aEnc = RTL_TEXTENCODING_UTF8;
- }
- }
+ if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
+ {
+ fprintf(stderr, "Couldn't find file %s\n", OU2ENC(dictpath, osl_getThreadTextEncoding()) );
+ return NULL;
+ }
+ aDicts[k].aPtr = dict;
+ aDicts[k].eEnc = getTextEncodingFromCharset(dict->cset);
}
- // other wise hyphenate the word with that dictionary
- dict = aDicts[k].aPtr;
- aEnc = aDicts[k].aEnc;
- pCC = aDicts[k].apCC;
+ // other wise hyphenate the word with that dictionary
+ dict = aDicts[k].aPtr;
+ eEnc = aDicts[k].eEnc;
+ pCC = aDicts[k].apCC;
- sal_uInt16 ct = CAPTYPE_UNKNOWN;
- ct = capitalType(aWord, pCC);
+ // 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 NULL;
- // first convert any smart quotes or apostrophes to normal ones
+ sal_uInt16 ct = CAPTYPE_UNKNOWN;
+ ct = capitalType(aWord, pCC);
+
+ // first convert any smart quotes or apostrophes to normal ones
OUStringBuffer rBuf(aWord);
- sal_Int32 nc = rBuf.getLength();
- sal_Unicode ch;
- for (sal_Int32 ix=0; ix < nc; ix++) {
+ sal_Int32 nc = rBuf.getLength();
+ sal_Unicode ch;
+ for (sal_Int32 ix=0; ix < nc; ix++)
+ {
ch = rBuf.charAt(ix);
- if ((ch == 0x201C) || (ch == 0x201D)) rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((ch == 0x2018) || (ch == 0x2019)) rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
+ if ((ch == 0x201C) || (ch == 0x201D))
+ rBuf.setCharAt(ix,(sal_Unicode)0x0022);
+ if ((ch == 0x2018) || (ch == 0x2019))
+ rBuf.setCharAt(ix,(sal_Unicode)0x0027);
+ }
+ OUString nWord(rBuf.makeStringAndClear());
- // now convert word to all lowercase for pattern recognition
- OUString nTerm(makeLowerCase(nWord, pCC));
+ // now convert word to all lowercase for pattern recognition
+ OUString nTerm(makeLowerCase(nWord, pCC));
- // now convert word to needed encoding
- OString encWord(OU2ENC(nTerm,aEnc));
+ // now convert word to needed encoding
+ OString encWord(OU2ENC(nTerm,eEnc));
wordlen = encWord.getLength();
- lcword = new char[wordlen + 1];
+ lcword = new char[wordlen + 1];
hyphens = new char[wordlen + 5];
- char ** rep = NULL; // replacements of discretionary hyphenation
- int * pos = NULL; // array of [hyphenation point] minus [deletion position]
- int * cut = NULL; // length of deletions in original word
+ char ** rep = NULL; // replacements of discretionary hyphenation
+ int * pos = NULL; // array of [hyphenation point] minus [deletion position]
+ int * cut = NULL; // length of deletions in original word
- // copy converted word into simple char buffer
- strcpy(lcword,encWord.getStr());
+ // copy converted word into simple char buffer
+ strcpy(lcword,encWord.getStr());
- // now strip off any ending periods
- int n = wordlen-1;
- while((n >=0) && (lcword[n] == '.')) n--;
- n++;
- if (n > 0) {
- if (hnj_hyphen_hyphenate3(dict, lcword, n, hyphens, NULL, &rep, &pos, &cut,
- minLead, minTrail, Max(dict->clhmin, Max(dict->clhmin, 2) + Max(0, minLead - Max(dict->lhmin, 2))),
- Max(dict->crhmin, Max(dict->crhmin, 2) + Max(0, minTrail - Max(dict->rhmin, 2)))))
- {
- //whoops something did not work
- delete[] hyphens;
- delete[] lcword;
- if (rep) {
- for(int j = 0; j < n; j++) {
+ // now strip off any ending periods
+ int n = wordlen-1;
+ while((n >=0) && (lcword[n] == '.'))
+ n--;
+ n++;
+ if (n > 0)
+ {
+ const bool bFailed = 0 != hnj_hyphen_hyphenate3( dict, lcword, n, hyphens, NULL,
+ &rep, &pos, &cut, minLead, minTrail,
+ Max(dict->clhmin, Max(dict->clhmin, 2) + Max(0, minLead - Max(dict->lhmin, 2))),
+ Max(dict->crhmin, Max(dict->crhmin, 2) + Max(0, minTrail - Max(dict->rhmin, 2))) );
+ if (bFailed)
+ {
+ //whoops something did not work
+ delete[] hyphens;
+ delete[] lcword;
+ if (rep)
+ {
+ for(int j = 0; j < n; j++)
+ {
if (rep[j]) free(rep[j]);
}
free(rep);
- }
- if (pos) free(pos);
- if (cut) free(cut);
- return NULL;
- }
+ }
+ if (pos) free(pos);
+ if (cut) free(cut);
+ return NULL;
}
+ }
- // now backfill hyphens[] for any removed trailing periods
- for (int c = n; c < wordlen; c++) hyphens[c] = '0';
- hyphens[wordlen] = '\0';
+ // now backfill hyphens[] for any removed trailing periods
+ for (int c = n; c < wordlen; c++) hyphens[c] = '0';
+ hyphens[wordlen] = '\0';
INT32 Leading = GetPosInWordToCheck( aWord, nMaxLeading );
for (INT32 i = 0; i < n; i++)
{
- int leftrep = 0;
- BOOL hit = (n >= minLen);
- if (!rep || !rep[i] || (i >= n)) {
- hit = hit && (hyphens[i]&1) && (i < Leading);
- hit = hit && (i >= (minLead-1) );
- hit = hit && ((n - i - 1) >= minTrail);
- } else {
- // calculate change character length before hyphenation point signed with '='
- for (char * c = rep[i]; *c && (*c != '='); c++) {
- if (aEnc == RTL_TEXTENCODING_UTF8) {
- if (((unsigned char) *c) >> 6 != 2) leftrep++;
- } else leftrep++;
- }
- hit = hit && (hyphens[i]&1) && ((i + leftrep - pos[i]) < Leading);
- hit = hit && ((i + leftrep - pos[i]) >= (minLead-1) );
- hit = hit && ((n - i - 1 + sal::static_int_cast< sal_sSize >(strlen(rep[i])) - leftrep - 1) >= minTrail);
- }
- if (hit) {
- nHyphenationPos = i;
- if (rep && (i < n) && rep[i]) {
- nHyphenationPosAlt = i - pos[i];
- nHyphenationPosAltHyph = i + leftrep - pos[i];
- }
- }
- }
-
- if (nHyphenationPos == -1) {
- xRes = NULL;
- } else {
- if (rep && rep[nHyphenationPos]) {
- // remove equal sign
- char * s = rep[nHyphenationPos];
- int eq = 0;
- for (; *s; s++) {
- if (*s == '=') eq = 1;
- if (eq) *s = *(s + 1);
- }
- OUString repHyphlow(rep[nHyphenationPos], strlen(rep[nHyphenationPos]), aEnc);
- OUString repHyph;
- switch (ct) {
- case CAPTYPE_ALLCAP:
- {
- repHyph = makeUpperCase(repHyphlow, pCC);
- break;
- }
- case CAPTYPE_INITCAP:
- {
- if (nHyphenationPosAlt == 0) {
- repHyph = makeInitCap(repHyphlow, pCC);
- } else {
- repHyph = repHyphlow;
- }
- break;
- }
- default:
- {
- repHyph = repHyphlow;
- break;
- }
+ int leftrep = 0;
+ BOOL hit = (n >= minLen);
+ if (!rep || !rep[i] || (i >= n))
+ {
+ hit = hit && (hyphens[i]&1) && (i < Leading);
+ hit = hit && (i >= (minLead-1) );
+ hit = hit && ((n - i - 1) >= minTrail);
}
-
- // handle shortening
- INT16 nPos = (INT16) ((nHyphenationPosAltHyph < nHyphenationPos) ?
- nHyphenationPosAltHyph : nHyphenationPos);
- // dicretionary hyphenation
- xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ), nPos,
- aWord.replaceAt(nHyphenationPosAlt + 1, cut[nHyphenationPos], repHyph),
- (INT16) nHyphenationPosAltHyph);
- } else {
- xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ),
- (INT16)nHyphenationPos, aWord, (INT16) nHyphenationPos);
+ else
+ {
+ // calculate change character length before hyphenation point signed with '='
+ for (char * c = rep[i]; *c && (*c != '='); c++)
+ {
+ if (eEnc == RTL_TEXTENCODING_UTF8)
+ {
+ if (((unsigned char) *c) >> 6 != 2)
+ leftrep++;
+ }
+ else
+ leftrep++;
}
+ hit = hit && (hyphens[i]&1) && ((i + leftrep - pos[i]) < Leading);
+ hit = hit && ((i + leftrep - pos[i]) >= (minLead-1) );
+ hit = hit && ((n - i - 1 + sal::static_int_cast< sal_sSize >(strlen(rep[i])) - leftrep - 1) >= minTrail);
+ }
+ if (hit)
+ {
+ nHyphenationPos = i;
+ if (rep && (i < n) && rep[i])
+ {
+ nHyphenationPosAlt = i - pos[i];
+ nHyphenationPosAltHyph = i + leftrep - pos[i];
+ }
+ }
}
- delete[] lcword;
- delete[] hyphens;
- if (rep) {
- for(int j = 0; j < n; j++) {
- if (rep[j]) free(rep[j]);
+ if (nHyphenationPos == -1)
+ {
+ xRes = NULL;
+ }
+ else
+ {
+ if (rep && rep[nHyphenationPos])
+ {
+ // remove equal sign
+ char * s = rep[nHyphenationPos];
+ int eq = 0;
+ for (; *s; s++)
+ {
+ if (*s == '=') eq = 1;
+ if (eq) *s = *(s + 1);
}
- free(rep);
+ OUString repHyphlow(rep[nHyphenationPos], strlen(rep[nHyphenationPos]), eEnc);
+ OUString repHyph;
+ switch (ct)
+ {
+ case CAPTYPE_ALLCAP:
+ {
+ repHyph = makeUpperCase(repHyphlow, pCC);
+ break;
+ }
+ case CAPTYPE_INITCAP:
+ {
+ if (nHyphenationPosAlt == 0)
+ repHyph = makeInitCap(repHyphlow, pCC);
+ else
+ repHyph = repHyphlow;
+ break;
+ }
+ default:
+ {
+ repHyph = repHyphlow;
+ break;
+ }
+ }
+
+ // handle shortening
+ INT16 nPos = (INT16) ((nHyphenationPosAltHyph < nHyphenationPos) ?
+ nHyphenationPosAltHyph : nHyphenationPos);
+ // dicretionary hyphenation
+ xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ), nPos,
+ aWord.replaceAt(nHyphenationPosAlt + 1, cut[nHyphenationPos], repHyph),
+ (INT16) nHyphenationPosAltHyph);
}
- if (pos) free(pos);
- if (cut) free(cut);
+ else
+ {
+ xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ),
+ (INT16)nHyphenationPos, aWord, (INT16) nHyphenationPos);
+ }
+ }
+
+ delete[] lcword;
+ delete[] hyphens;
+ if (rep)
+ {
+ for(int j = 0; j < n; j++)
+ {
+ if (rep[j]) free(rep[j]);
+ }
+ free(rep);
+ }
+ if (pos) free(pos);
+ if (cut) free(cut);
return xRes;
}
- return NULL;
+ return NULL;
}
-Reference < XHyphenatedWord > SAL_CALL
- Hyphenator::queryAlternativeSpelling( const ::rtl::OUString& /*aWord*/,
- const ::com::sun::star::lang::Locale& /*aLocale*/,
- sal_Int16 /*nIndex*/,
- const ::com::sun::star::beans::PropertyValues& /*aProperties*/ )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException)
+Reference < XHyphenatedWord > SAL_CALL Hyphenator::queryAlternativeSpelling(
+ const ::rtl::OUString& /*aWord*/,
+ const ::com::sun::star::lang::Locale& /*aLocale*/,
+ sal_Int16 /*nIndex*/,
+ const ::com::sun::star::beans::PropertyValues& /*aProperties*/ )
+ throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
{
/* alternative spelling isn't supported by tex dictionaries */
/* XXX: OOo's extended libhjn algorithm can support alternative spellings with extended TeX dic. */
@@ -529,251 +548,262 @@ Reference < XHyphenatedWord > SAL_CALL
return NULL;
}
-Reference< XPossibleHyphens > SAL_CALL
- Hyphenator::createPossibleHyphens( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException)
-
+Reference< XPossibleHyphens > SAL_CALL Hyphenator::createPossibleHyphens( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
{
- int wordlen;
- char *hyphens;
- char *lcword;
- int k;
+ int wordlen;
+ char *hyphens;
+ char *lcword;
+ int k;
- PropertyHelper_Hyphen & rHelper = GetPropHelper();
- rHelper.SetTmpPropVals(aProperties);
- sal_Int16 minTrail = rHelper.GetMinTrailing();
- sal_Int16 minLead = rHelper.GetMinLeading();
+ PropertyHelper_Hyphen & rHelper = GetPropHelper();
+ rHelper.SetTmpPropVals(aProperties);
+ sal_Int16 minTrail = rHelper.GetMinTrailing();
+ sal_Int16 minLead = rHelper.GetMinLeading();
- HyphenDict *dict = NULL;
- rtl_TextEncoding aEnc = 0;
- CharClass* pCC = NULL;
+ HyphenDict *dict = NULL;
+ rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
+ CharClass* pCC = NULL;
- Reference< XPossibleHyphens > xRes;
+ Reference< XPossibleHyphens > xRes;
- k = -1;
- for (int j = 0; j < numdict; j++)
- if (aLocale == aDicts[j].aLoc) k = j;
+ k = -1;
+ for (int j = 0; j < numdict; j++)
+ {
+ if (aLocale == aDicts[j].aLoc) k = j;
+ }
+ // if we have a hyphenation dictionary matching this locale
+ if (k != -1)
+ {
+ // if this dictioanry has not been loaded yet do that
+ if (!aDicts[k].aPtr)
+ {
+ OUString DictFN = aDicts[k].aName + A2OU(".dic");
+ OUString dictpath;
- // if we have a hyphenation dictionary matching this locale
- if (k != -1) {
-
- // if this dictioanry has not been loaded yet do that
- if (!aDicts[k].aPtr) {
-
- OUString DictFN = aDicts[k].aName + A2OU(".dic");
- OUString dictpath;
-
- osl::FileBase::getSystemPathFromFileURL( DictFN, dictpath );
- OString sTmp( OU2ENC( dictpath, osl_getThreadTextEncoding() ) );
+ osl::FileBase::getSystemPathFromFileURL( DictFN, dictpath );
+ OString sTmp( OU2ENC( dictpath, 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.
- sTmp = Win_GetShortPathName( dictpath );
+ // 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.
+ sTmp = Win_GetShortPathName( dictpath );
#endif
- if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
- {
- fprintf(stderr, "Couldn't find file %s and %s\n", sTmp.getStr(), OU2ENC(dictpath, osl_getThreadTextEncoding()) );
- return NULL;
- }
- aDicts[k].aPtr = dict;
- aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
- if (aDicts[k].aEnc == RTL_TEXTENCODING_DONTKNOW) {
- if (strcmp("ISCII-DEVANAGARI", dict->cset) == 0) {
- aDicts[k].aEnc = RTL_TEXTENCODING_ISCII_DEVANAGARI;
- } else if (strcmp("UTF-8", dict->cset) == 0) {
- aDicts[k].aEnc = RTL_TEXTENCODING_UTF8;
+ if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
+ {
+ fprintf(stderr, "Couldn't find file %s and %s\n", sTmp.getStr(), OU2ENC(dictpath, osl_getThreadTextEncoding()) );
+ return NULL;
}
- }
- }
+ aDicts[k].aPtr = dict;
+ aDicts[k].eEnc = getTextEncodingFromCharset(dict->cset);
+ }
- // other wise hyphenate the word with that dictionary
- dict = aDicts[k].aPtr;
- aEnc = aDicts[k].aEnc;
- pCC = aDicts[k].apCC;
+ // other wise hyphenate the word with that dictionary
+ dict = aDicts[k].aPtr;
+ eEnc = aDicts[k].eEnc;
+ pCC = aDicts[k].apCC;
- // first handle smart quotes both single and double
- OUStringBuffer rBuf(aWord);
- sal_Int32 nc = rBuf.getLength();
- sal_Unicode ch;
- for (sal_Int32 ix=0; ix < nc; ix++) {
- ch = rBuf.charAt(ix);
- if ((ch == 0x201C) || (ch == 0x201D)) rBuf.setCharAt(ix,(sal_Unicode)0x0022);
- if ((ch == 0x2018) || (ch == 0x2019)) rBuf.setCharAt(ix,(sal_Unicode)0x0027);
- }
- OUString nWord(rBuf.makeStringAndClear());
+ // 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 NULL;
- // now convert word to all lowercase for pattern recognition
- OUString nTerm(makeLowerCase(nWord, pCC));
+ // first handle smart quotes both single and double
+ OUStringBuffer rBuf(aWord);
+ sal_Int32 nc = rBuf.getLength();
+ sal_Unicode ch;
+ for (sal_Int32 ix=0; ix < nc; ix++)
+ {
+ ch = rBuf.charAt(ix);
+ if ((ch == 0x201C) || (ch == 0x201D))
+ rBuf.setCharAt(ix,(sal_Unicode)0x0022);
+ if ((ch == 0x2018) || (ch == 0x2019))
+ rBuf.setCharAt(ix,(sal_Unicode)0x0027);
+ }
+ OUString nWord(rBuf.makeStringAndClear());
- // now convert word to needed encoding
- OString encWord(OU2ENC(nTerm,aEnc));
+ // now convert word to all lowercase for pattern recognition
+ OUString nTerm(makeLowerCase(nWord, pCC));
- wordlen = encWord.getLength();
- lcword = new char[wordlen+1];
- hyphens = new char[wordlen+5];
- char ** rep = NULL; // replacements of discretionary hyphenation
- int * pos = NULL; // array of [hyphenation point] minus [deletion position]
- int * cut = NULL; // length of deletions in original word
+ // now convert word to needed encoding
+ OString encWord(OU2ENC(nTerm,eEnc));
- // copy converted word into simple char buffer
- strcpy(lcword,encWord.getStr());
+ wordlen = encWord.getLength();
+ lcword = new char[wordlen+1];
+ hyphens = new char[wordlen+5];
+ char ** rep = NULL; // replacements of discretionary hyphenation
+ int * pos = NULL; // array of [hyphenation point] minus [deletion position]
+ int * cut = NULL; // length of deletions in original word
- // first remove any trailing periods
- int n = wordlen-1;
- while((n >=0) && (lcword[n] == '.')) n--;
- n++;
- // fprintf(stderr,"hyphenate... %s\n",lcword); fflush(stderr);
- if (n > 0) {
- if (hnj_hyphen_hyphenate3(dict, lcword, n, hyphens, NULL, &rep, &pos, &cut,
- minLead, minTrail, Max(dict->clhmin, Max(dict->clhmin, 2) + Max(0, minLead - Max(dict->lhmin, 2))),
- Max(dict->crhmin, Max(dict->crhmin, 2) + Max(0, minTrail - Max(dict->rhmin, 2)))))
- {
- delete[] hyphens;
- delete[] lcword;
+ // copy converted word into simple char buffer
+ strcpy(lcword,encWord.getStr());
- if (rep) {
- for(int j = 0; j < n; j++) {
- if (rep[j]) free(rep[j]);
- }
- free(rep);
- }
- if (pos) free(pos);
- if (cut) free(cut);
+ // first remove any trailing periods
+ int n = wordlen-1;
+ while((n >=0) && (lcword[n] == '.'))
+ n--;
+ n++;
+ // fprintf(stderr,"hyphenate... %s\n",lcword); fflush(stderr);
+ if (n > 0)
+ {
+ const bool bFailed = 0 != hnj_hyphen_hyphenate3(dict, lcword, n, hyphens, NULL,
+ &rep, &pos, &cut, minLead, minTrail,
+ Max(dict->clhmin, Max(dict->clhmin, 2) + Max(0, minLead - Max(dict->lhmin, 2))),
+ Max(dict->crhmin, Max(dict->crhmin, 2) + Max(0, minTrail - Max(dict->rhmin, 2))) );
+ if (bFailed)
+ {
+ delete[] hyphens;
+ delete[] lcword;
- return NULL;
- }
- }
- // now backfill hyphens[] for any removed periods
- for (int c = n; c < wordlen; c++) hyphens[c] = '0';
- hyphens[wordlen] = '\0';
- // fprintf(stderr,"... %s\n",hyphens); fflush(stderr);
+ if (rep)
+ {
+ for(int j = 0; j < n; j++)
+ {
+ if (rep[j]) free(rep[j]);
+ }
+ free(rep);
+ }
+ if (pos) free(pos);
+ if (cut) free(cut);
- INT16 nHyphCount = 0;
- INT16 i;
+ return NULL;
+ }
+ }
+ // now backfill hyphens[] for any removed periods
+ for (int c = n; c < wordlen; c++)
+ hyphens[c] = '0';
+ hyphens[wordlen] = '\0';
+ // fprintf(stderr,"... %s\n",hyphens); fflush(stderr);
- for ( i = 0; i < encWord.getLength(); i++)
- if (hyphens[i]&1 && (!rep || !rep[i]))
- nHyphCount++;
+ INT16 nHyphCount = 0;
+ INT16 i;
- Sequence< INT16 > aHyphPos(nHyphCount);
- INT16 *pPos = aHyphPos.getArray();
- OUStringBuffer hyphenatedWordBuffer;
- OUString hyphenatedWord;
- nHyphCount = 0;
+ for ( i = 0; i < encWord.getLength(); i++)
+ {
+ if (hyphens[i]&1 && (!rep || !rep[i]))
+ nHyphCount++;
+ }
- for (i = 0; i < nWord.getLength(); i++) {
- hyphenatedWordBuffer.append(aWord[i]);
- // hyphenation position (not alternative)
- if (hyphens[i]&1 && (!rep || !rep[i])) {
- pPos[nHyphCount] = i;
- hyphenatedWordBuffer.append(sal_Unicode('='));
- nHyphCount++;
- }
- }
+ Sequence< INT16 > aHyphPos(nHyphCount);
+ INT16 *pPos = aHyphPos.getArray();
+ OUStringBuffer hyphenatedWordBuffer;
+ OUString hyphenatedWord;
+ nHyphCount = 0;
- hyphenatedWord = hyphenatedWordBuffer.makeStringAndClear();
- //fprintf(stderr,"result is %s\n",OU2A(hyphenatedWord));
- //fflush(stderr);
+ for (i = 0; i < nWord.getLength(); i++)
+ {
+ hyphenatedWordBuffer.append(aWord[i]);
+ // hyphenation position (not alternative)
+ if (hyphens[i]&1 && (!rep || !rep[i]))
+ {
+ pPos[nHyphCount] = i;
+ hyphenatedWordBuffer.append(sal_Unicode('='));
+ nHyphCount++;
+ }
+ }
- xRes = new PossibleHyphens( aWord, LocaleToLanguage( aLocale ),
- hyphenatedWord, aHyphPos );
+ hyphenatedWord = hyphenatedWordBuffer.makeStringAndClear();
+ //fprintf(stderr,"result is %s\n",OU2A(hyphenatedWord));
+ //fflush(stderr);
- delete[] hyphens;
- delete[] lcword;
+ xRes = new PossibleHyphens( aWord, LocaleToLanguage( aLocale ),
+ hyphenatedWord, aHyphPos );
- if (rep) {
- for(int j = 0; j < n; j++) {
- if (rep[j]) free(rep[j]);
- }
- free(rep);
- }
- if (pos) free(pos);
- if (cut) free(cut);
+ delete[] hyphens;
+ delete[] lcword;
- return xRes;
- }
+ if (rep)
+ {
+ for(int j = 0; j < n; j++)
+ {
+ if (rep[j]) free(rep[j]);
+ }
+ free(rep);
+ }
+ if (pos) free(pos);
+ if (cut) free(cut);
- return NULL;
+ return xRes;
+ }
+ return NULL;
}
sal_uInt16 SAL_CALL Hyphenator::capitalType(const OUString& aTerm, CharClass * pCC)
{
- sal_Int32 tlen = aTerm.getLength();
- if ((pCC) && (tlen)) {
- String aStr(aTerm);
- sal_Int32 nc = 0;
- for (xub_StrLen tindex = 0; tindex < tlen; tindex++) {
- if (pCC->getCharacterType(aStr,tindex) &
- ::com::sun::star::i18n::KCharacterType::UPPER) nc++;
- }
+ sal_Int32 tlen = aTerm.getLength();
+ if ((pCC) && (tlen))
+ {
+ String aStr(aTerm);
+ sal_Int32 nc = 0;
+ for (xub_StrLen tindex = 0; tindex < tlen; tindex++)
+ {
+ if (pCC->getCharacterType(aStr,tindex) & ::com::sun::star::i18n::KCharacterType::UPPER)
+ nc++;
+ }
- if (nc == 0) return (sal_uInt16) CAPTYPE_NOCAP;
+ if (nc == 0)
+ return (sal_uInt16) CAPTYPE_NOCAP;
+ if (nc == tlen)
+ return (sal_uInt16) CAPTYPE_ALLCAP;
+ if ((nc == 1) && (pCC->getCharacterType(aStr,0) & ::com::sun::star::i18n::KCharacterType::UPPER))
+ return (sal_uInt16) CAPTYPE_INITCAP;
- if (nc == tlen) return (sal_uInt16) CAPTYPE_ALLCAP;
-
- if ((nc == 1) && (pCC->getCharacterType(aStr,0) &
- ::com::sun::star::i18n::KCharacterType::UPPER))
- return (sal_uInt16) CAPTYPE_INITCAP;
-
- return (sal_uInt16) CAPTYPE_MIXED;
+ return (sal_uInt16) CAPTYPE_MIXED;
}
- return (sal_uInt16) CAPTYPE_UNKNOWN;
+ return (sal_uInt16) CAPTYPE_UNKNOWN;
}
OUString SAL_CALL Hyphenator::makeLowerCase(const OUString& aTerm, CharClass * pCC)
{
- if (pCC)
- return pCC->toLower_rtl(aTerm, 0, aTerm.getLength());
- return aTerm;
+ if (pCC)
+ return pCC->toLower_rtl(aTerm, 0, aTerm.getLength());
+ return aTerm;
}
OUString SAL_CALL Hyphenator::makeUpperCase(const OUString& aTerm, CharClass * pCC)
{
- if (pCC)
- return pCC->toUpper_rtl(aTerm, 0, aTerm.getLength());
- return aTerm;
+ if (pCC)
+ return pCC->toUpper_rtl(aTerm, 0, aTerm.getLength());
+ return aTerm;
}
OUString SAL_CALL Hyphenator::makeInitCap(const OUString& aTerm, CharClass * pCC)
{
- sal_Int32 tlen = aTerm.getLength();
- if ((pCC) && (tlen)) {
- OUString bTemp = aTerm.copy(0,1);
- if (tlen > 1)
- return ( pCC->toUpper_rtl(bTemp, 0, 1)
- + pCC->toLower_rtl(aTerm,1,(tlen-1)) );
+ sal_Int32 tlen = aTerm.getLength();
+ if ((pCC) && (tlen))
+ {
+ OUString bTemp = aTerm.copy(0,1);
+ if (tlen > 1)
+ return ( pCC->toUpper_rtl(bTemp, 0, 1) + pCC->toLower_rtl(aTerm,1,(tlen-1)) );
- return pCC->toUpper_rtl(bTemp, 0, 1);
+ return pCC->toUpper_rtl(bTemp, 0, 1);
}
- return aTerm;
+ return aTerm;
}
-
-
Reference< XInterface > SAL_CALL Hyphenator_CreateInstance(
- const Reference< XMultiServiceFactory > & /*rSMgr*/ )
+ const Reference< XMultiServiceFactory > & /*rSMgr*/ )
throw(Exception)
{
-
Reference< XInterface > xService = (cppu::OWeakObject*) new Hyphenator;
return xService;
}
-sal_Bool SAL_CALL
- Hyphenator::addLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
+sal_Bool SAL_CALL Hyphenator::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -787,9 +817,8 @@ sal_Bool SAL_CALL
}
-sal_Bool SAL_CALL
- Hyphenator::removeLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
+sal_Bool SAL_CALL Hyphenator::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -804,8 +833,7 @@ sal_Bool SAL_CALL
}
-OUString SAL_CALL
- Hyphenator::getServiceDisplayName( const Locale& /*rLocale*/ )
+OUString SAL_CALL Hyphenator::getServiceDisplayName( const Locale& /*rLocale*/ )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -813,8 +841,7 @@ OUString SAL_CALL
}
-void SAL_CALL
- Hyphenator::initialize( const Sequence< Any >& rArguments )
+void SAL_CALL Hyphenator::initialize( const Sequence< Any >& rArguments )
throw(Exception, RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -836,16 +863,15 @@ void SAL_CALL
xPropHelper = pPropHelper;
pPropHelper->AddAsPropListener(); //! after a reference is established
}
- else {
+ else
+ {
DBG_ERROR( "wrong number of arguments in sequence" );
}
-
}
}
-void SAL_CALL
- Hyphenator::dispose()
+void SAL_CALL Hyphenator::dispose()
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -859,8 +885,7 @@ void SAL_CALL
}
-void SAL_CALL
- Hyphenator::addEventListener( const Reference< XEventListener >& rxListener )
+void SAL_CALL Hyphenator::addEventListener( const Reference< XEventListener >& rxListener )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -870,8 +895,7 @@ void SAL_CALL
}
-void SAL_CALL
- Hyphenator::removeEventListener( const Reference< XEventListener >& rxListener )
+void SAL_CALL Hyphenator::removeEventListener( const Reference< XEventListener >& rxListener )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -927,32 +951,6 @@ Sequence< OUString > Hyphenator::getSupportedServiceNames_Static()
return aSNS;
}
-
-sal_Bool SAL_CALL Hyphenator_writeInfo(
- void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
-{
-
- try
- {
- String aImpl( '/' );
- aImpl += Hyphenator::getImplementationName_Static().getStr();
- aImpl.AppendAscii( "/UNO/SERVICES" );
- Reference< registry::XRegistryKey > xNewKey =
- pRegistryKey->createKey( aImpl );
- Sequence< OUString > aServices =
- Hyphenator::getSupportedServiceNames_Static();
- for( INT32 i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[i] );
-
- return sal_True;
- }
- catch(Exception &)
- {
- return sal_False;
- }
-}
-
-
void * SAL_CALL Hyphenator_getFactory( const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager, void * )
{
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
old mode 100644
new mode 100755
index 031217914754..e20b4f58f589
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
@@ -65,7 +65,7 @@ struct HDInfo {
HyphenDict * aPtr;
OUString aName;
Locale aLoc;
- rtl_TextEncoding aEnc;
+ rtl_TextEncoding eEnc;
CharClass * apCC;
};
@@ -83,12 +83,12 @@ class Hyphenator :
>
{
Sequence< Locale > aSuppLocales;
- HDInfo * aDicts;
- sal_Int32 numdict;
+ HDInfo * aDicts;
+ sal_Int32 numdict;
::cppu::OInterfaceContainerHelper aEvtListeners;
Reference< XPropertyChangeListener > xPropHelper;
- Reference< XMultiServiceFactory > rSMgr;
+ Reference< XMultiServiceFactory > rSMgr;
linguistic::PropertyHelper_Hyphen * pPropHelper;
BOOL bDisposing;
@@ -108,87 +108,37 @@ public:
virtual ~Hyphenator();
// XSupportedLocales (for XHyphenator)
- virtual Sequence< Locale > SAL_CALL getLocales()
- throw(RuntimeException);
- virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale )
- throw(RuntimeException);
+ virtual Sequence< Locale > SAL_CALL getLocales() throw(RuntimeException);
+ virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale ) throw(RuntimeException);
// XHyphenator
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
- hyphenate( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- sal_Int16 nMaxLeading,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException);
-
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
- queryAlternativeSpelling( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- sal_Int16 nIndex,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException);
-
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XPossibleHyphens > SAL_CALL
- createPossibleHyphens( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL hyphenate( const ::rtl::OUString& aWord, const ::com::sun::star::lang::Locale& aLocale, sal_Int16 nMaxLeading, const ::com::sun::star::beans::PropertyValues& aProperties ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL queryAlternativeSpelling( const ::rtl::OUString& aWord, const ::com::sun::star::lang::Locale& aLocale, sal_Int16 nIndex, const ::com::sun::star::beans::PropertyValues& aProperties ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XPossibleHyphens > SAL_CALL createPossibleHyphens( const ::rtl::OUString& aWord, const ::com::sun::star::lang::Locale& aLocale, const ::com::sun::star::beans::PropertyValues& aProperties ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::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);
+ 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);
+ virtual OUString SAL_CALL getServiceDisplayName( const Locale& rLocale ) throw(RuntimeException);
// XInitialization
- virtual void SAL_CALL
- initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException);
+ 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);
-
- ////////////////////////////////////////////////////////////
- // Service specific part
- //
+ 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);
+ 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();
-
+ static inline OUString getImplementationName_Static() throw();
+ static Sequence< OUString > getSupportedServiceNames_Static() throw();
private:
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
index f3626c70312b..6f767d8bfa9e 100644
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
@@ -91,3 +91,11 @@ DEF1EXPORTFILE= exports.dxp
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/hyphen.component
+
+$(MISC)/hyphen.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ hyphen.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt hyphen.component
diff --git a/lingucomponent/source/languageguessing/guesslang.component b/lingucomponent/source/languageguessing/guesslang.component
new file mode 100644
index 000000000000..633a489c38fa
--- /dev/null
+++ b/lingucomponent/source/languageguessing/guesslang.component
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/lingucomponent/source/languageguessing/guesslang.cxx b/lingucomponent/source/languageguessing/guesslang.cxx
index c8486c1bc471..baac0fd7e856 100644
--- a/lingucomponent/source/languageguessing/guesslang.cxx
+++ b/lingucomponent/source/languageguessing/guesslang.cxx
@@ -465,13 +465,6 @@ void SAL_CALL component_getImplementationEnvironment(
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-sal_Bool SAL_CALL component_writeInfo(
- XMultiServiceFactory * xMgr, registry::XRegistryKey * xRegistry )
-{
- return ::cppu::component_writeInfoHelper(
- xMgr, xRegistry, s_component_entries );
-}
-
void * SAL_CALL component_getFactory(
sal_Char const * implName, lang::XMultiServiceFactory * xMgr,
registry::XRegistryKey * xRegistry )
diff --git a/lingucomponent/source/languageguessing/makefile.mk b/lingucomponent/source/languageguessing/makefile.mk
index ebad4076b3ed..624ccba3c334 100644
--- a/lingucomponent/source/languageguessing/makefile.mk
+++ b/lingucomponent/source/languageguessing/makefile.mk
@@ -78,3 +78,11 @@ DEF1NAME =$(SHL1TARGET)
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/guesslang.component
+
+$(MISC)/guesslang.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ guesslang.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt guesslang.component
diff --git a/lingucomponent/source/lingutil/lingutil.cxx b/lingucomponent/source/lingutil/lingutil.cxx
old mode 100644
new mode 100755
index ee7d71de4435..14253fca5cd3
--- a/lingucomponent/source/lingutil/lingutil.cxx
+++ b/lingucomponent/source/lingutil/lingutil.cxx
@@ -50,6 +50,7 @@
#include
#include
#include
+#include
#include
#include
@@ -268,5 +269,25 @@ void MergeNewStyleDicsAndOldStyleDics(
}
}
+
+rtl_TextEncoding getTextEncodingFromCharset(const sal_Char* pCharset)
+{
+ // default result: used to indicate that we failed to get the proper encoding
+ rtl_TextEncoding eRet = RTL_TEXTENCODING_DONTKNOW;
+
+ if (pCharset)
+ {
+ eRet = rtl_getTextEncodingFromMimeCharset(pCharset);
+ if (eRet == RTL_TEXTENCODING_DONTKNOW)
+ eRet = rtl_getTextEncodingFromUnixCharset(pCharset);
+ if (eRet == RTL_TEXTENCODING_DONTKNOW)
+ {
+ if (strcmp("ISCII-DEVANAGARI", pCharset) == 0)
+ eRet = RTL_TEXTENCODING_ISCII_DEVANAGARI;
+ }
+ }
+ return eRet;
+}
+
//////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/lingutil/lingutil.hxx b/lingucomponent/source/lingutil/lingutil.hxx
index 8b45b1f509ad..82d2e646edfc 100644
--- a/lingucomponent/source/lingutil/lingutil.hxx
+++ b/lingucomponent/source/lingutil/lingutil.hxx
@@ -101,5 +101,13 @@ void MergeNewStyleDicsAndOldStyleDics( std::list< SvtLinguConfigDictionaryEntry
///////////////////////////////////////////////////////////////////////////
+
+//Find an encoding from a charset string, using
+//rtl_getTextEncodingFromMimeCharset and falling back to
+//rtl_getTextEncodingFromUnixCharset with the addition of
+//ISCII-DEVANAGARI. On failure will return final fallback of
+//RTL_TEXTENCODING_ISO_8859_1
+rtl_TextEncoding getTextEncodingFromCharset(const sal_Char* pCharset);
+
#endif
diff --git a/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component b/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component
new file mode 100644
index 000000000000..2f2f9e102087
--- /dev/null
+++ b/lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.component
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/lingucomponent/source/spellcheck/macosxspell/macreg.cxx b/lingucomponent/source/spellcheck/macosxspell/macreg.cxx
index b60ffffe42e9..9df90f79cca7 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macreg.cxx
+++ b/lingucomponent/source/spellcheck/macosxspell/macreg.cxx
@@ -42,9 +42,6 @@ using namespace com::sun::star::registry;
// declaration of external RegEntry-functions defined by the service objects
//
-extern sal_Bool SAL_CALL MacSpellChecker_writeInfo(
- void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
-
extern void * SAL_CALL MacSpellChecker_getFactory(
const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager,
@@ -57,12 +54,6 @@ extern void * SAL_CALL MacSpellChecker_getFactory(
extern "C"
{
-sal_Bool SAL_CALL component_writeInfo(
- void * pServiceManager, XRegistryKey * pRegistryKey )
-{
- return MacSpellChecker_writeInfo( pServiceManager, pRegistryKey );
-}
-
void SAL_CALL component_getImplementationEnvironment(
const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
{
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx
index 70996793c186..002f1dec0b36 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.cxx
@@ -644,32 +644,6 @@ Sequence< OUString > MacSpellChecker::getSupportedServiceNames_Static()
return aSNS;
}
-
-sal_Bool SAL_CALL MacSpellChecker_writeInfo(
- void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
-{
-
- try
- {
- String aImpl( '/' );
- aImpl += MacSpellChecker::getImplementationName_Static().getStr();
- aImpl.AppendAscii( "/UNO/SERVICES" );
- Reference< registry::XRegistryKey > xNewKey =
- pRegistryKey->createKey( aImpl );
- Sequence< OUString > aServices =
- MacSpellChecker::getSupportedServiceNames_Static();
- for( INT32 i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[i] );
-
- return sal_True;
- }
- catch(Exception &)
- {
- return sal_False;
- }
-}
-
-
void * SAL_CALL MacSpellChecker_getFactory( const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager, void * )
{
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
old mode 100644
new mode 100755
index b3cfce92fd8b..fc1906e18025
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
@@ -75,14 +75,14 @@ class MacSpellChecker :
XServiceDisplayName
>
{
- Sequence< Locale > aSuppLocales;
+ Sequence< Locale > aSuppLocales;
// Hunspell ** aDicts;
- rtl_TextEncoding * aDEncs;
- Locale * aDLocs;
- OUString * aDNames;
- sal_Int32 numdict;
- NSSpellChecker * macSpell;
- int macTag; //unique tag for this doc
+ 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;
@@ -100,84 +100,43 @@ class MacSpellChecker :
}
INT16 GetSpellFailure( const OUString &rWord, const Locale &rLocale );
- Reference< XSpellAlternatives >
- GetProposals( 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);
+ 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);
+ 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);
+ 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);
+ virtual OUString SAL_CALL getServiceDisplayName( const Locale& rLocale ) throw(RuntimeException);
// XInitialization
- virtual void SAL_CALL
- initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException);
+ 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);
-
- ////////////////////////////////////////////////////////////
- // Service specific part
- //
+ 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);
+ 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();
+ static inline OUString getImplementationName_Static() throw();
+ static Sequence< OUString > getSupportedServiceNames_Static() throw();
};
inline OUString MacSpellChecker::getImplementationName_Static() throw()
diff --git a/lingucomponent/source/spellcheck/macosxspell/makefile.mk b/lingucomponent/source/spellcheck/macosxspell/makefile.mk
index 6414560e0f4a..4e88b808ddc0 100644
--- a/lingucomponent/source/spellcheck/macosxspell/makefile.mk
+++ b/lingucomponent/source/spellcheck/macosxspell/makefile.mk
@@ -91,3 +91,11 @@ SHL1VERSIONMAP=$(SOLARENV)/src/component.map
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
index b0f85bf7bebf..a9861e3ffc0c 100644
--- a/lingucomponent/source/spellcheck/spell/exports.dxp
+++ b/lingucomponent/source/spellcheck/spell/exports.dxp
@@ -1,3 +1,2 @@
component_getFactory
component_getImplementationEnvironment
-component_writeInfo
diff --git a/lingucomponent/source/spellcheck/spell/makefile.mk b/lingucomponent/source/spellcheck/spell/makefile.mk
index 4173d4dbae22..56dd79939b40 100644
--- a/lingucomponent/source/spellcheck/spell/makefile.mk
+++ b/lingucomponent/source/spellcheck/spell/makefile.mk
@@ -85,3 +85,11 @@ DEF1EXPORTFILE= exports.dxp
.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
new file mode 100644
index 000000000000..9f951a8a8f76
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/spell.component
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/lingucomponent/source/spellcheck/spell/sreg.cxx b/lingucomponent/source/spellcheck/spell/sreg.cxx
index bd97403c89d6..4c6375698de6 100644
--- a/lingucomponent/source/spellcheck/spell/sreg.cxx
+++ b/lingucomponent/source/spellcheck/spell/sreg.cxx
@@ -42,9 +42,6 @@ using namespace com::sun::star::registry;
// declaration of external RegEntry-functions defined by the service objects
//
-extern sal_Bool SAL_CALL SpellChecker_writeInfo(
- void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
-
extern void * SAL_CALL SpellChecker_getFactory(
const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager,
@@ -56,12 +53,6 @@ extern void * SAL_CALL SpellChecker_getFactory(
extern "C"
{
-sal_Bool SAL_CALL component_writeInfo(
- void * pServiceManager, XRegistryKey * pRegistryKey )
-{
- return SpellChecker_writeInfo( pServiceManager, pRegistryKey );
-}
-
void SAL_CALL component_getImplementationEnvironment(
const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
{
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
old mode 100644
new mode 100755
index 0cb6ad8ec3da..05ae1ab1a6e9
--- a/lingucomponent/source/spellcheck/spell/sspellimp.cxx
+++ b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
@@ -27,6 +27,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_lingucomponent.hxx"
+
#include
#include
@@ -37,12 +38,10 @@
#include
#include
+#include
#include
#include
-
-#ifndef _SPELLIMP_HXX
#include
-#endif
#include
#include
@@ -52,8 +51,7 @@
#include
#include
#include
-
-#include
+#include
#include
#include
@@ -77,35 +75,37 @@ using namespace linguistic;
SpellChecker::SpellChecker() :
aEvtListeners ( GetLinguMutex() )
{
- aDicts = NULL;
+ aDicts = NULL;
aDEncs = NULL;
aDLocs = NULL;
aDNames = NULL;
bDisposing = FALSE;
pPropHelper = NULL;
- numdict = 0;
+ numdict = 0;
}
SpellChecker::~SpellChecker()
{
- if (aDicts) {
- for (int i = 0; i < numdict; i++) {
+ if (aDicts)
+ {
+ for (int i = 0; i < numdict; i++)
+ {
if (aDicts[i]) delete aDicts[i];
aDicts[i] = NULL;
- }
- delete[] aDicts;
- }
- aDicts = NULL;
- numdict = 0;
- if (aDEncs) delete[] aDEncs;
- aDEncs = NULL;
- if (aDLocs) delete[] aDLocs;
- aDLocs = NULL;
- if (aDNames) delete[] aDNames;
- aDNames = NULL;
- if (pPropHelper)
- pPropHelper->RemoveAsPropListener();
+ }
+ delete[] aDicts;
+ }
+ aDicts = NULL;
+ numdict = 0;
+ if (aDEncs) delete[] aDEncs;
+ aDEncs = NULL;
+ if (aDLocs) delete[] aDLocs;
+ aDLocs = NULL;
+ if (aDNames) delete[] aDNames;
+ aDNames = NULL;
+ if (pPropHelper)
+ pPropHelper->RemoveAsPropListener();
}
@@ -217,7 +217,7 @@ Sequence< Locale > SAL_CALL SpellChecker::getLocales()
for (sal_Int32 i = 0; i < nLocales; ++i)
{
aDicts[k] = NULL;
- aDEncs[k] = 0;
+ 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
@@ -272,84 +272,86 @@ sal_Bool SAL_CALL SpellChecker::hasLocale(const Locale& rLocale)
return bRes;
}
+
INT16 SpellChecker::GetSpellFailure( const OUString &rWord, const Locale &rLocale )
{
- Hunspell * pMS;
- rtl_TextEncoding aEnc;
+ 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)
-
+ // (note: mutex is held higher up in isValid)
INT16 nRes = -1;
- // first handle smart quotes both single and double
+ // 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++) {
+ 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 ((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) {
+ for (sal_Int32 i = 0; i < numdict; ++i)
+ {
pMS = NULL;
- aEnc = 0;
+ 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 (!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 );
+ // 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] = 0;
- if (aDicts[i]) {
- char * dic_encoding = aDicts[i]->get_dic_encoding();
- aDEncs[i] = rtl_getTextEncodingFromUnixCharset(aDicts[i]->get_dic_encoding());
- if (aDEncs[i] == RTL_TEXTENCODING_DONTKNOW) {
- if (strcmp("ISCII-DEVANAGARI", dic_encoding) == 0) {
- aDEncs[i] = RTL_TEXTENCODING_ISCII_DEVANAGARI;
- } else if (strcmp("UTF-8", dic_encoding) == 0) {
- aDEncs[i] = RTL_TEXTENCODING_UTF8;
- }
- }
- }
- }
- pMS = aDicts[i];
- aEnc = aDEncs[i];
- }
+ 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)
- {
- OString aWrd(OU2ENC(nWord,aEnc));
+ {
+ // 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;
+ if (rVal != 1)
+ nRes = SpellFailure::SPELLING_ERROR;
+ else
+ return -1;
+ pMS = NULL;
}
}
}
@@ -358,8 +360,7 @@ INT16 SpellChecker::GetSpellFailure( const OUString &rWord, const Locale &rLocal
}
-sal_Bool SAL_CALL
- SpellChecker::isValid( const OUString& rWord, const Locale& rLocale,
+sal_Bool SAL_CALL SpellChecker::isValid( const OUString& rWord, const Locale& rLocale,
const PropertyValues& rProperties )
throw(IllegalArgumentException, RuntimeException)
{
@@ -390,11 +391,11 @@ sal_Bool SAL_CALL
{
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)
- )
+ const bool bIgnoreError =
+ (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang )) ||
+ (!rHelper.IsSpellWithDigits() && HasDigits( rWord )) ||
+ (!rHelper.IsSpellCapitalization() && nFailure == SpellFailure::CAPTION_ERROR);
+ if (bIgnoreError)
nFailure = -1;
}
@@ -410,23 +411,26 @@ Reference< XSpellAlternatives >
// 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
+ // note: mutex is held by higher up by spell which covers both
- Hunspell* pMS;
- rtl_TextEncoding aEnc;
- int count;
- int numsug = 0;
+ Hunspell* pMS = NULL;
+ rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
+ int count = 0;
+ int numsug = 0;
- // first handle smart quotes (single and double)
+ // 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());
+ 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)
{
@@ -434,56 +438,55 @@ Reference< XSpellAlternatives >
Sequence< OUString > aStr( 0 );
- for (int i =0; i < numdict; i++) {
+ for (int i =0; i < numdict; i++)
+ {
pMS = NULL;
- aEnc = 0;
- count = 0;
+ eEnc = RTL_TEXTENCODING_DONTKNOW;
+ count = 0;
if (rLocale == aDLocs[i])
{
- pMS = aDicts[i];
- aEnc = aDEncs[i];
- }
+ pMS = aDicts[i];
+ eEnc = aDEncs[i];
+ }
if (pMS)
{
char ** suglst = NULL;
- OString aWrd(OU2ENC(nWord,aEnc));
- count = pMS->suggest(&suglst, (const char *) aWrd.getStr());
+ 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]),aEnc);
- pStr[numsug + ii] = cvtwrd;
- }
- pMS->free_list(&suglst, count);
- numsug += count;
+ 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
+ // now return an empty alternative for no suggestions or the list of alternatives if some found
SpellAlternatives *pAlt = new SpellAlternatives;
- String aTmp(rWord);
+ String aTmp(rWord);
pAlt->SetWordLanguage( aTmp, nLang );
pAlt->SetFailureType( SpellFailure::SPELLING_ERROR );
pAlt->SetAlternatives( aStr );
xRes = pAlt;
- return xRes;
-
- }
return xRes;
+ }
+ return xRes;
}
-
-
-Reference< XSpellAlternatives > SAL_CALL
- SpellChecker::spell( const OUString& rWord, const Locale& rLocale,
- const PropertyValues& rProperties )
+Reference< XSpellAlternatives > SAL_CALL SpellChecker::spell(
+ const OUString& rWord, const Locale& rLocale,
+ const PropertyValues& rProperties )
throw(IllegalArgumentException, RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -508,7 +511,7 @@ Reference< XSpellAlternatives > SAL_CALL
Reference< XInterface > SAL_CALL SpellChecker_CreateInstance(
- const Reference< XMultiServiceFactory > & /*rSMgr*/ )
+ const Reference< XMultiServiceFactory > & /*rSMgr*/ )
throw(Exception)
{
@@ -517,9 +520,8 @@ Reference< XInterface > SAL_CALL SpellChecker_CreateInstance(
}
-sal_Bool SAL_CALL
- SpellChecker::addLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
+sal_Bool SAL_CALL SpellChecker::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -533,9 +535,8 @@ sal_Bool SAL_CALL
}
-sal_Bool SAL_CALL
- SpellChecker::removeLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
+sal_Bool SAL_CALL SpellChecker::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -550,8 +551,7 @@ sal_Bool SAL_CALL
}
-OUString SAL_CALL
- SpellChecker::getServiceDisplayName( const Locale& /*rLocale*/ )
+OUString SAL_CALL SpellChecker::getServiceDisplayName( const Locale& /*rLocale*/ )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -559,8 +559,7 @@ OUString SAL_CALL
}
-void SAL_CALL
- SpellChecker::initialize( const Sequence< Any >& rArguments )
+void SAL_CALL SpellChecker::initialize( const Sequence< Any >& rArguments )
throw(Exception, RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -582,16 +581,15 @@ void SAL_CALL
xPropHelper = pPropHelper;
pPropHelper->AddAsPropListener(); //! after a reference is established
}
- else {
+ else
+ {
DBG_ERROR( "wrong number of arguments in sequence" );
}
-
}
}
-void SAL_CALL
- SpellChecker::dispose()
+void SAL_CALL SpellChecker::dispose()
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -605,8 +603,7 @@ void SAL_CALL
}
-void SAL_CALL
- SpellChecker::addEventListener( const Reference< XEventListener >& rxListener )
+void SAL_CALL SpellChecker::addEventListener( const Reference< XEventListener >& rxListener )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -616,8 +613,7 @@ void SAL_CALL
}
-void SAL_CALL
- SpellChecker::removeEventListener( const Reference< XEventListener >& rxListener )
+void SAL_CALL SpellChecker::removeEventListener( const Reference< XEventListener >& rxListener )
throw(RuntimeException)
{
MutexGuard aGuard( GetLinguMutex() );
@@ -673,32 +669,6 @@ Sequence< OUString > SpellChecker::getSupportedServiceNames_Static()
return aSNS;
}
-
-sal_Bool SAL_CALL SpellChecker_writeInfo(
- void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
-{
-
- try
- {
- String aImpl( '/' );
- aImpl += SpellChecker::getImplementationName_Static().getStr();
- aImpl.AppendAscii( "/UNO/SERVICES" );
- Reference< registry::XRegistryKey > xNewKey =
- pRegistryKey->createKey( aImpl );
- Sequence< OUString > aServices =
- SpellChecker::getSupportedServiceNames_Static();
- for( INT32 i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[i] );
-
- return sal_True;
- }
- catch(Exception &)
- {
- return sal_False;
- }
-}
-
-
void * SAL_CALL SpellChecker_getFactory( const sal_Char * pImplName,
XMultiServiceFactory * pServiceManager, void * )
{
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.hxx b/lingucomponent/source/spellcheck/spell/sspellimp.hxx
old mode 100644
new mode 100755
index 94c57fa8b742..9bcbdec5250b
--- a/lingucomponent/source/spellcheck/spell/sspellimp.hxx
+++ b/lingucomponent/source/spellcheck/spell/sspellimp.hxx
@@ -69,11 +69,11 @@ class SpellChecker :
>
{
Sequence< Locale > aSuppLocales;
- Hunspell ** aDicts;
- rtl_TextEncoding * aDEncs;
- Locale * aDLocs;
- OUString * aDNames;
- sal_Int32 numdict;
+ Hunspell ** aDicts;
+ rtl_TextEncoding * aDEncs;
+ Locale * aDLocs;
+ OUString * aDNames;
+ sal_Int32 numdict;
::cppu::OInterfaceContainerHelper aEvtListeners;
Reference< XPropertyChangeListener > xPropHelper;
@@ -91,84 +91,43 @@ class SpellChecker :
}
INT16 GetSpellFailure( const OUString &rWord, const Locale &rLocale );
- Reference< XSpellAlternatives >
- GetProposals( 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);
+ 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);
+ 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);
+ 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);
+ virtual OUString SAL_CALL getServiceDisplayName( const Locale& rLocale ) throw(RuntimeException);
// XInitialization
- virtual void SAL_CALL
- initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException);
+ 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);
-
- ////////////////////////////////////////////////////////////
- // Service specific part
- //
+ 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);
+ 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();
+ static inline OUString getImplementationName_Static() throw();
+ static Sequence< OUString > getSupportedServiceNames_Static() throw();
};
inline OUString SpellChecker::getImplementationName_Static() throw()
@@ -177,7 +136,6 @@ inline OUString SpellChecker::getImplementationName_Static() throw()
}
-
///////////////////////////////////////////////////////////////////////////
#endif
diff --git a/lingucomponent/source/thesaurus/libnth/exports.dxp b/lingucomponent/source/thesaurus/libnth/exports.dxp
index b0f85bf7bebf..a9861e3ffc0c 100644
--- a/lingucomponent/source/thesaurus/libnth/exports.dxp
+++ b/lingucomponent/source/thesaurus/libnth/exports.dxp
@@ -1,3 +1,2 @@
component_getFactory
component_getImplementationEnvironment
-component_writeInfo
diff --git a/lingucomponent/source/thesaurus/libnth/lnth.component b/lingucomponent/source/thesaurus/libnth/lnth.component
new file mode 100644
index 000000000000..bea91b94c1fe
--- /dev/null
+++ b/lingucomponent/source/thesaurus/libnth/lnth.component
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/lingucomponent/source/thesaurus/libnth/makefile.mk b/lingucomponent/source/thesaurus/libnth/makefile.mk
index 58e4d97e5561..91d39d2d3eeb 100644
--- a/lingucomponent/source/thesaurus/libnth/makefile.mk
+++ b/lingucomponent/source/thesaurus/libnth/makefile.mk
@@ -105,3 +105,11 @@ DEF1EXPORTFILE= exports.dxp
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/lnth.component
+
+$(MISC)/lnth.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ lnth.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt lnth.component
diff --git a/lingucomponent/source/thesaurus/libnth/nthesdta.hxx b/lingucomponent/source/thesaurus/libnth/nthesdta.hxx
old mode 100644
new mode 100755
index 259bf5454359..23804d54f60f
--- a/lingucomponent/source/thesaurus/libnth/nthesdta.hxx
+++ b/lingucomponent/source/thesaurus/libnth/nthesdta.hxx
@@ -48,11 +48,11 @@ class Meaning :
{
::com::sun::star::uno::Sequence< ::rtl::OUString > aSyn; // list of synonyms, may be empty.
::rtl::OUString aTerm;
- INT16 nLanguage;
+ INT16 nLanguage;
#if 0
// this is for future use by a German thesaurus
- BOOL bIsGermanPreReform;
+ BOOL bIsGermanPreReform;
#endif
// disallow copy-constructor and assignment-operator for now
@@ -68,22 +68,12 @@ public:
virtual ~Meaning();
// XMeaning
- virtual ::rtl::OUString SAL_CALL
- getMeaning()
- throw(::com::sun::star::uno::RuntimeException);
-
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
- querySynonyms()
- throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getMeaning() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL querySynonyms() throw(::com::sun::star::uno::RuntimeException);
// non-interface specific functions
- void SetSynonyms(
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >
- &rSyn );
-
- void SetMeaning(const ::rtl::OUString &rTerm );
-
-
+ void SetSynonyms( const ::com::sun::star::uno::Sequence< ::rtl::OUString > &rSyn );
+ void SetMeaning( const ::rtl::OUString &rTerm );
};
diff --git a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx
old mode 100644
new mode 100755
index bd6afffdbd6a..02d469514593
--- a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx
+++ b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx
@@ -28,9 +28,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_lingucomponent.hxx"
-// include
#include
-
#include // helper for factories
#include
#include
@@ -43,6 +41,8 @@
#include
#include
+#include
+
#include "nthesimp.hxx"
#include
#include
@@ -100,23 +100,27 @@ Thesaurus::Thesaurus() :
aTEncs = NULL;
aTLocs = NULL;
aTNames = NULL;
- numthes = 0;
+ numthes = 0;
}
Thesaurus::~Thesaurus()
{
- if (aThes) {
- for (int i = 0; i < numthes; i++) {
+ if (aThes)
+ {
+ for (int i = 0; i < numthes; i++)
+ {
if (aThes[i]) delete aThes[i];
aThes[i] = NULL;
}
delete[] aThes;
}
aThes = NULL;
- if (aCharSetInfo) {
- for (int i = 0; i < numthes; i++) {
+ if (aCharSetInfo)
+ {
+ for (int i = 0; i < numthes; i++)
+ {
if (aCharSetInfo[i]) delete aCharSetInfo[i];
aCharSetInfo[i] = NULL;
}
@@ -244,7 +248,7 @@ Sequence< Locale > SAL_CALL Thesaurus::getLocales()
for (sal_Int32 i = 0; i < nLocales; ++i)
{
aThes[k] = NULL;
- aTEncs[k] = 0;
+ aTEncs[k] = RTL_TEXTENCODING_DONTKNOW;
aTLocs[k] = MsLangId::convertLanguageToLocale(
MsLangId::convertIsoStringToLanguage( aDictIt->aLocaleNames[i] ));
aCharSetInfo[k] = new CharClass( aTLocs[k] );
@@ -302,28 +306,28 @@ sal_Bool SAL_CALL Thesaurus::hasLocale(const Locale& rLocale)
}
-Sequence < Reference < ::com::sun::star::linguistic2::XMeaning > > SAL_CALL
- Thesaurus::queryMeanings( const OUString& qTerm, const Locale& rLocale,
- const PropertyValues& rProperties)
- throw(IllegalArgumentException, RuntimeException)
+Sequence < Reference < ::com::sun::star::linguistic2::XMeaning > > SAL_CALL Thesaurus::queryMeanings(
+ const OUString& qTerm, const Locale& rLocale,
+ const PropertyValues& rProperties)
+ throw(IllegalArgumentException, RuntimeException)
{
- MutexGuard aGuard( GetLinguMutex() );
+ MutexGuard aGuard( GetLinguMutex() );
- uno::Sequence< Reference< XMeaning > > aMeanings( 1 );
- uno::Sequence< Reference< XMeaning > > noMeanings( 0 );
- uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
- uno::Reference< XSpellChecker1 > xSpell;
+ uno::Sequence< Reference< XMeaning > > aMeanings( 1 );
+ uno::Sequence< Reference< XMeaning > > noMeanings( 0 );
+ uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
+ uno::Reference< XSpellChecker1 > xSpell;
- OUString rTerm(qTerm);
- OUString pTerm(qTerm);
- sal_uInt16 ct = CAPTYPE_UNKNOWN;
- sal_Int32 stem = 0;
- sal_Int32 stem2 = 0;
+ OUString rTerm(qTerm);
+ OUString pTerm(qTerm);
+ sal_uInt16 ct = CAPTYPE_UNKNOWN;
+ sal_Int32 stem = 0;
+ sal_Int32 stem2 = 0;
- INT16 nLanguage = LocaleToLanguage( rLocale );
+ INT16 nLanguage = LocaleToLanguage( rLocale );
- if (nLanguage == LANGUAGE_NONE || !rTerm.getLength())
- return noMeanings;
+ if (nLanguage == LANGUAGE_NONE || !rTerm.getLength())
+ return noMeanings;
if (!hasLocale( rLocale ))
#ifdef LINGU_EXCEPTIONS
@@ -332,195 +336,202 @@ Sequence < Reference < ::com::sun::star::linguistic2::XMeaning > > SAL_CALL
return noMeanings;
#endif
- if (prevTerm == qTerm && prevLocale == nLanguage) return prevMeanings;
+ if (prevTerm == qTerm && prevLocale == nLanguage)
+ return prevMeanings;
- mentry * pmean = NULL;
+ mentry * pmean = NULL;
sal_Int32 nmean = 0;
- PropertyHelper_Thes &rHelper = GetPropHelper();
- rHelper.SetTmpPropVals( rProperties );
+ PropertyHelper_Thes &rHelper = GetPropHelper();
+ rHelper.SetTmpPropVals( rProperties );
- MyThes * pTH = NULL;
- rtl_TextEncoding aEnc = 0;
- CharClass * pCC = NULL;
+ MyThes * pTH = NULL;
+ rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
+ CharClass * pCC = NULL;
- // find the first thesaurus that matches the locale
- for (int i =0; i < numthes; i++) {
- if (rLocale == aTLocs[i])
+ // find the first thesaurus that matches the locale
+ for (int i =0; i < numthes; i++)
+ {
+ if (rLocale == aTLocs[i])
+ {
+ // open up and intialize this thesaurus if need be
+ if (!aThes[i])
{
- // open up and intialize this thesaurus if need be
- if (!aThes[i])
- {
- OUString datpath = aTNames[i] + A2OU(".dat");
- OUString idxpath = aTNames[i] + A2OU(".idx");
- OUString ndat;
- OUString nidx;
- osl::FileBase::getSystemPathFromFileURL(datpath,ndat);
- osl::FileBase::getSystemPathFromFileURL(idxpath,nidx);
- OString aTmpidx(OU2ENC(nidx,osl_getThreadTextEncoding()));
- OString aTmpdat(OU2ENC(ndat,osl_getThreadTextEncoding()));
+ OUString datpath = aTNames[i] + A2OU(".dat");
+ OUString idxpath = aTNames[i] + A2OU(".idx");
+ OUString ndat;
+ OUString nidx;
+ osl::FileBase::getSystemPathFromFileURL(datpath,ndat);
+ osl::FileBase::getSystemPathFromFileURL(idxpath,nidx);
+ OString aTmpidx(OU2ENC(nidx,osl_getThreadTextEncoding()));
+ OString aTmpdat(OU2ENC(ndat,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.
- aTmpidx = Win_GetShortPathName( nidx );
- aTmpdat = Win_GetShortPathName( ndat );
+ // 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.
+ aTmpidx = Win_GetShortPathName( nidx );
+ aTmpdat = Win_GetShortPathName( ndat );
#endif
- aThes[i] = new MyThes(aTmpidx.getStr(),aTmpdat.getStr());
- if (aThes[i]) {
- const char * enc_string = aThes[i]->get_th_encoding();
- if (!enc_string) {
- aTEncs[i] = rtl_getTextEncodingFromUnixCharset("ISO8859-1");
- } else {
- aTEncs[i] = rtl_getTextEncodingFromUnixCharset(enc_string);
- if (aTEncs[i] == RTL_TEXTENCODING_DONTKNOW) {
- if (strcmp("ISCII-DEVANAGARI", enc_string) == 0) {
- aTEncs[i] = RTL_TEXTENCODING_ISCII_DEVANAGARI;
- } else if (strcmp("UTF-8", enc_string) == 0) {
- aTEncs[i] = RTL_TEXTENCODING_UTF8;
- }
- }
- }
- }
- }
- pTH = aThes[i];
- aEnc = aTEncs[i];
- pCC = aCharSetInfo[i];
+ aThes[i] = new MyThes(aTmpidx.getStr(),aTmpdat.getStr());
+ if (aThes[i])
+ aTEncs[i] = getTextEncodingFromCharset(aThes[i]->get_th_encoding());
+ }
+ pTH = aThes[i];
+ eEnc = aTEncs[i];
+ pCC = aCharSetInfo[i];
- if (pTH)
- break;
+ if (pTH)
+ break;
}
}
- while (pTH) {
- // convert word to all lower case for searching
- if (!stem) ct = capitalType(rTerm, pCC);
- OUString nTerm(makeLowerCase(rTerm, pCC));
- OString aTmp( OU2ENC(nTerm, aEnc) );
- nmean = pTH->Lookup(aTmp.getStr(),aTmp.getLength(),&pmean);
+ // 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 noMeanings;
- if (nmean) aMeanings.realloc( nmean );
+ while (pTH)
+ {
+ // convert word to all lower case for searching
+ if (!stem)
+ ct = capitalType(rTerm, pCC);
+ OUString nTerm(makeLowerCase(rTerm, pCC));
+ OString aTmp( OU2ENC(nTerm, eEnc) );
+ nmean = pTH->Lookup(aTmp.getStr(),aTmp.getLength(),&pmean);
- mentry * pe = pmean;
- OUString codeTerm = qTerm;
- Reference< XSpellAlternatives > xTmpRes2;
+ if (nmean)
+ aMeanings.realloc( nmean );
- if (stem) {
- xTmpRes2 = xSpell->spell( A2OU("") +
+ mentry * pe = pmean;
+ OUString codeTerm = qTerm;
+ Reference< XSpellAlternatives > xTmpRes2;
+
+ if (stem)
+ {
+ xTmpRes2 = xSpell->spell( A2OU("") +
pTerm + A2OU(""), nLanguage, rProperties );
- if (xTmpRes2.is()) {
- Sequenceseq = xTmpRes2->getAlternatives();
- if (seq.getLength() > 0) {
+ if (xTmpRes2.is())
+ {
+ Sequenceseq = xTmpRes2->getAlternatives();
+ if (seq.getLength() > 0)
+ {
codeTerm = seq[0];
stem2 = 1;
- }
+ }
#if 0
- OString o = OUStringToOString(codeTerm, rtl_getTextEncodingFromUnixCharset("UTF-8"));
- fprintf(stderr, "CODETERM: %s\n", o.pData->buffer);
+ OString o = OUStringToOString(codeTerm, RTL_TEXTENCODING_UTF8);
+ fprintf(stderr, "CODETERM: %s\n", o.pData->buffer);
#endif
- }
- }
+ }
+ }
- for (int j = 0; j < nmean; j++) {
- int count = pe->count;
- if (count) {
- Sequence< OUString > aStr( count );
- OUString *pStr = aStr.getArray();
+ for (int j = 0; j < nmean; j++)
+ {
+ int count = pe->count;
+ if (count)
+ {
+ Sequence< OUString > aStr( count );
+ OUString *pStr = aStr.getArray();
- for (int i=0; i < count; i++) {
- OUString sTerm(pe->psyns[i],strlen(pe->psyns[i]),aEnc );
- sal_Int32 catpos = sTerm.indexOf('(');
- sal_Int32 catpos2 = 0;
- OUString catst;
- OUString catst2;
- if (catpos > 2) {
- // remove category name for affixation and casing
- catst = A2OU(" ") + sTerm.copy(catpos);
- sTerm = sTerm.copy(0, catpos);
- sTerm = sTerm.trim();
- }
- // generate synonyms with affixes
- if (stem && stem2) {
- Reference< XSpellAlternatives > xTmpRes;
- xTmpRes = xSpell->spell( A2OU("