/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _unotools_LINGUCFG_HXX_ #define _unotools_LINGUCFG_HXX_ #include "unotools/unotoolsdllapi.h" #include #include #include #include #include #include #include #include #include #include #include #include class SvtLinguConfigItem; ////////////////////////////////////////////////////////////////////// struct UNOTOOLS_DLLPUBLIC SvtLinguOptions { ::com::sun::star::uno::Sequence< rtl::OUString > aActiveDics; ::com::sun::star::uno::Sequence< rtl::OUString > aActiveConvDics; sal_Bool bROActiveDics; sal_Bool bROActiveConvDics; // Hyphenator service specific options sal_Int16 nHyphMinLeading, nHyphMinTrailing, nHyphMinWordLength; sal_Bool bROHyphMinLeading, bROHyphMinTrailing, bROHyphMinWordLength; // misc options (non-service specific) sal_Int16 nDefaultLanguage; sal_Int16 nDefaultLanguage_CJK; sal_Int16 nDefaultLanguage_CTL; sal_Bool bRODefaultLanguage; sal_Bool bRODefaultLanguage_CJK; sal_Bool bRODefaultLanguage_CTL; // spelling options (non-service specific) sal_Bool bIsSpellSpecial; sal_Bool bIsSpellAuto; sal_Bool bIsSpellReverse; sal_Bool bROIsSpellSpecial; sal_Bool bROIsSpellAuto; sal_Bool bROIsSpellReverse; // hyphenation options (non-service specific) sal_Bool bIsHyphSpecial; sal_Bool bIsHyphAuto; sal_Bool bROIsHyphSpecial; sal_Bool bROIsHyphAuto; // common to SpellChecker, Hyphenator and Thesaurus service sal_Bool bIsUseDictionaryList; sal_Bool bIsIgnoreControlCharacters; sal_Bool bROIsUseDictionaryList; sal_Bool bROIsIgnoreControlCharacters; // SpellChecker service specific options sal_Bool bIsSpellWithDigits, bIsSpellUpperCase, bIsSpellCapitalization; sal_Bool bROIsSpellWithDigits, bROIsSpellUpperCase, bROIsSpellCapitalization; // text conversion specific options sal_Bool bIsIgnorePostPositionalWord; sal_Bool bIsAutoCloseDialog; sal_Bool bIsShowEntriesRecentlyUsedFirst; sal_Bool bIsAutoReplaceUniqueEntries; sal_Bool bIsDirectionToSimplified; sal_Bool bIsUseCharacterVariants; sal_Bool bIsTranslateCommonTerms; sal_Bool bIsReverseMapping; sal_Bool bROIsIgnorePostPositionalWord; sal_Bool bROIsAutoCloseDialog; sal_Bool bROIsShowEntriesRecentlyUsedFirst; sal_Bool bROIsAutoReplaceUniqueEntries; sal_Bool bROIsDirectionToSimplified; sal_Bool bROIsUseCharacterVariants; sal_Bool bROIsTranslateCommonTerms; sal_Bool bROIsReverseMapping; // check value need to determine if the configuration needs to updatet // or not (used for a quick check if data files have been changed/added // or deleted sal_Int32 nDataFilesChangedCheckValue; sal_Bool bRODataFilesChangedCheckValue; sal_Bool bIsGrammarAuto; sal_Bool bIsGrammarInteractive; sal_Bool bROIsGrammarAuto; sal_Bool bROIsGrammarInteractive; SvtLinguOptions(); }; ////////////////////////////////////////////////////////////////////// struct UNOTOOLS_DLLPUBLIC SvtLinguConfigDictionaryEntry { // the URL's pointing to the location of the files the dictionary consists of com::sun::star::uno::Sequence< rtl::OUString > aLocations; // the name of the dictionary format implement rtl::OUString aFormatName; // the list of languages (ISO names) the dictionary can be used for com::sun::star::uno::Sequence< rtl::OUString > aLocaleNames; }; ////////////////////////////////////////////////////////////////////// class UNOTOOLS_DLLPUBLIC SvtLinguConfig: public utl::detail::Options { // returns static object UNOTOOLS_DLLPRIVATE SvtLinguConfigItem & GetConfigItem(); SvtLinguConfigItem & GetConfigItem() const { return const_cast< SvtLinguConfig * >( this )->GetConfigItem(); } // configuration update access for the 'Linguistic' main node mutable com::sun::star::uno::Reference< com::sun::star::util::XChangesBatch > m_xMainUpdateAccess; com::sun::star::uno::Reference< com::sun::star::util::XChangesBatch > GetMainUpdateAccess() const; com::sun::star::uno::Sequence< rtl::OUString > GetCurrentOrLastActiveDicts_Impl( const rtl::OUString &rPropName ) const; void SetCurrentOrLastActiveDicts_Impl( const rtl::OUString &rPropName, const com::sun::star::uno::Sequence< rtl::OUString > &rDictionaries ) const; rtl::OUString GetVendorImageUrl_Impl( const rtl::OUString &rServiceImplName, const rtl::OUString &rImageName ) const; // disallow copy-constructor and assignment-operator for now SvtLinguConfig( const SvtLinguConfig & ); SvtLinguConfig & operator = ( const SvtLinguConfig & ); public: SvtLinguConfig(); virtual ~SvtLinguConfig(); // // borrowed from utl::ConfigItem // com::sun::star::uno::Sequence< rtl::OUString > GetNodeNames( const rtl::OUString &rNode ); // com::sun::star::uno::Sequence< com::sun::star::uno::Any > GetProperties( const com::sun::star::uno::Sequence< rtl::OUString > &rNames ); // sal_Bool ReplaceSetProperties( const rtl::OUString &rNode, com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > rValues ); com::sun::star::uno::Any GetProperty( const rtl::OUString &rPropertyName ) const; com::sun::star::uno::Any GetProperty( sal_Int32 nPropertyHandle ) const; sal_Bool SetProperty( const rtl::OUString &rPropertyName, const com::sun::star::uno::Any &rValue ); sal_Bool SetProperty( sal_Int32 nPropertyHandle, const com::sun::star::uno::Any &rValue ); sal_Bool GetOptions( SvtLinguOptions &rOptions ) const; sal_Bool SetOptions( const SvtLinguOptions &rOptions ); sal_Bool IsReadOnly( const rtl::OUString &rPropertyName ) const; sal_Bool IsReadOnly( sal_Int32 nPropertyHandle ) const; //! //! the following functions work on the 'ServiceManager' sub node of the //! linguistic configuration only //! sal_Bool GetElementNamesFor( const rtl::OUString &rNodeName, com::sun::star::uno::Sequence< rtl::OUString > &rElementNames ) const; // sal_Bool GetSupportedDictionaryFormatsFor( const rtl::OUString &rSetName, const rtl::OUString &rSetEntry, com::sun::star::uno::Sequence< rtl::OUString > &rFormatList ) const; void SetOrCreateSupportedDictionaryFormatsFor( const rtl::OUString &rSetName, const rtl::OUString &rSetEntry, const com::sun::star::uno::Sequence< rtl::OUString > &rFormatList ) const; // sal_Bool GetDictionaryEntry( const rtl::OUString &rNodeName, SvtLinguConfigDictionaryEntry &rDicEntry ) const; void SetOrCreateDictionaryEntry( const rtl::OUString &rNodeName, const SvtLinguConfigDictionaryEntry &rDicEntry ) const; // com::sun::star::uno::Sequence< rtl::OUString > GetDisabledDictionaries() const; void SetDisabledDictionaries( const com::sun::star::uno::Sequence< rtl::OUString > &rDictionaries ) const; // std::vector< SvtLinguConfigDictionaryEntry > GetActiveDictionariesByFormat( const rtl::OUString &rFormatName ); // functions returning file URLs to the respective images (if found) and empty string otherwise ::rtl::OUString GetSpellAndGrammarDialogImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const; ::rtl::OUString GetSpellAndGrammarContextSuggestionImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const; ::rtl::OUString GetSpellAndGrammarContextDictionaryImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const; ::rtl::OUString GetThesaurusDialogImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const; ::rtl::OUString GetSynonymsContextImage( const ::rtl::OUString &rServiceImplName, bool bHighContrast = false ) const; bool HasVendorImages( const char *pImageName ) const; bool HasGrammarChecker() const; }; ////////////////////////////////////////////////////////////////////// #endif