summaryrefslogtreecommitdiff
path: root/svx/source/dialog/thesdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/dialog/thesdlg.cxx')
-rw-r--r--svx/source/dialog/thesdlg.cxx500
1 files changed, 0 insertions, 500 deletions
diff --git a/svx/source/dialog/thesdlg.cxx b/svx/source/dialog/thesdlg.cxx
deleted file mode 100644
index c27115ff64cd..000000000000
--- a/svx/source/dialog/thesdlg.cxx
+++ /dev/null
@@ -1,500 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: thesdlg.cxx,v $
- * $Revision: 1.21 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <tools/shl.hxx>
-#include <svl/lngmisc.hxx>
-#include <vcl/wrkwin.hxx>
-#ifndef _MSGBOX_HXX //autogen
-#include <vcl/msgbox.hxx>
-#endif
-#ifndef _APP_HXX //autogen
-#include <vcl/svapp.hxx>
-#endif
-#include <com/sun/star/linguistic2/XThesaurus.hpp>
-#include <com/sun/star/linguistic2/XMeaning.hpp>
-
-
-#define _SVX_THESDLG_CXX
-
-#include <svx/thesdlg.hxx>
-#include "dlgutil.hxx"
-#include <svx/dialmgr.hxx>
-#include "svxerr.hxx"
-
-#include <svx/dialogs.hrc>
-#include "thesdlg.hrc"
-#include <unolingu.hxx>
-#include <svx/langbox.hxx>
-
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::linguistic2;
-
-#undef S2U
-#undef U2S
-//#define S2U(s) StringToOUString(s, CHARSET_SYSTEM)
-//#define U2S(s) OUStringToString(s, CHARSET_SYSTEM)
-
-
-// GetReplaceEditString -------------------------------
-
-static void GetReplaceEditString( String &rText )
-{
- // The strings returned by the thesaurus saometimes have some
- // explanation text put in between '(' and ')' or a trailing '*'.
- // These parts should not be put in the ReplaceEdit Text that may get
- // inserted into the document. Thus we strip them from the text.
-
- xub_StrLen nPos = rText.Search( sal_Unicode('(') );
- while (STRING_NOTFOUND != nPos)
- {
- xub_StrLen nEnd = rText.Search( sal_Unicode(')'), nPos );
- if (STRING_NOTFOUND != nEnd)
- rText.Erase( nPos, nEnd-nPos+1 );
- else
- break;
- nPos = rText.Search( sal_Unicode('(') );
- }
-
- nPos = rText.Search( sal_Unicode('*') );
- if (STRING_NOTFOUND != nPos)
- rText.Erase( nPos );
-
- // remove any possible remaining ' ' that may confuse the thesaurus
- // when it gets called with the text
- rText.EraseLeadingAndTrailingChars( sal_Unicode(' ') );
-}
-
-// struct ThesDlg_Impl ---------------------------------------------------
-
-struct ThesDlg_Impl
-{
- Reference< XThesaurus > xThesaurus;
- ::rtl::OUString aLookUpText;
- sal_Int16 nLookUpLanguage;
-
- ThesDlg_Impl( Reference< XThesaurus > & xThes );
- SfxErrorContext* pErrContext; // ErrorContext,
- // w"ahrend der Dialog oben ist
-};
-
-ThesDlg_Impl::ThesDlg_Impl(Reference< XThesaurus > & xThes) :
- xThesaurus (xThes)
-{
- pErrContext = NULL;
- nLookUpLanguage = LANGUAGE_NONE;
-}
-
-
-// class SvxThesaurusLanguageDlg_Impl ------------------------------------
-
-class SvxThesaurusLanguageDlg_Impl : public ModalDialog
-{
-private:
- SvxLanguageBox aLangLB;
- FixedLine aLangFL;
- OKButton aOKBtn;
- CancelButton aCancelBtn;
- HelpButton aHelpBtn;
-
- DECL_LINK( DoubleClickHdl_Impl, ListBox * );
-
-public:
- SvxThesaurusLanguageDlg_Impl( Window* pParent );
-
- sal_uInt16 GetLanguage() const;
- void SetLanguage( sal_uInt16 nLang );
-};
-
-// -----------------------------------------------------------------------
-
-
-SvxThesaurusLanguageDlg_Impl::SvxThesaurusLanguageDlg_Impl( Window* pParent ) :
-
- ModalDialog( pParent, SVX_RES( RID_SVXDLG_THES_LANGUAGE ) ),
-
- aLangLB ( this, SVX_RES( LB_THES_LANGUAGE ) ),
- aLangFL ( this, SVX_RES( FL_THES_LANGUAGE ) ),
- aOKBtn ( this, SVX_RES( BTN_LANG_OK ) ),
- aCancelBtn ( this, SVX_RES( BTN_LANG_CANCEL ) ),
- aHelpBtn ( this, SVX_RES( BTN_LANG_HELP ) )
-{
- FreeResource();
-
- aLangLB.SetLanguageList( LANG_LIST_THES_USED, FALSE, FALSE );
- aLangLB.SetDoubleClickHdl(
- LINK( this, SvxThesaurusLanguageDlg_Impl, DoubleClickHdl_Impl ) );
-}
-
-
-// -----------------------------------------------------------------------
-
-sal_uInt16 SvxThesaurusLanguageDlg_Impl::GetLanguage() const
-{
- sal_uInt16 nLang = aLangLB.GetSelectLanguage();
- return nLang;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxThesaurusLanguageDlg_Impl::SetLanguage( sal_uInt16 nLang )
-{
- aLangLB.SelectLanguage( nLang );
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK_INLINE_START( SvxThesaurusLanguageDlg_Impl, DoubleClickHdl_Impl, ListBox *, EMPTYARG )
-{
- EndDialog( RET_OK );
- return 0;
-}
-IMPL_LINK_INLINE_END( SvxThesaurusLanguageDlg_Impl, DoubleClickHdl_Impl, ListBox *, EMPTYARG )
-
-// class SvxThesaurusDialog ----------------------------------------------
-
-
-// -----------------------------------------------------------------------
-
-
-SvxThesaurusDialog::SvxThesaurusDialog( Window* pParent, Reference< XThesaurus > xThes,
- const String &rWord, sal_Int16 nLanguage) :
-
- SvxStandardDialog( pParent, SVX_RES( RID_SVXDLG_THESAURUS ) ),
-
- aWordText ( this, SVX_RES( FT_WORD ) ),
- aWordLB ( this, SVX_RES( LB_WORD ) ),
- aReplaceText( this, SVX_RES( FT_REPL ) ),
- aReplaceEdit( this, SVX_RES( ED_REPL ) ),
- aMeanText ( this, SVX_RES( FT_MEAN ) ),
- aMeanLB ( this, SVX_RES( LB_MEAN ) ),
- aSynonymText( this, SVX_RES( FT_SYNON ) ),
- aSynonymLB ( this, SVX_RES( LB_SYNON ) ),
- aVarFL ( this, SVX_RES( FL_VAR ) ),
- aOkBtn ( this, SVX_RES( BTN_THES_OK ) ),
- aCancelBtn ( this, SVX_RES( BTN_THES_CANCEL ) ),
- aLookUpBtn ( this, SVX_RES( BTN_LOOKUP ) ),
- aLangBtn ( this, SVX_RES( BTN_LANGUAGE ) ),
- aHelpBtn ( this, SVX_RES( BTN_THES_HELP ) ),
- aErrStr ( SVX_RES( STR_ERR_WORDNOTFOUND ) )
-{
- pImpl = new ThesDlg_Impl( xThes );
- pImpl->aLookUpText = ::rtl::OUString( rWord );
- pImpl->nLookUpLanguage = nLanguage;
- pImpl->pErrContext =
- new SfxErrorContext( ERRCTX_SVX_LINGU_THESAURUS, String(), this,
- RID_SVXERRCTX, &DIALOG_MGR() );
-
- aLangBtn.SetClickHdl( LINK( this, SvxThesaurusDialog, LanguageHdl_Impl ) );
- aLookUpBtn.SetClickHdl( LINK( this, SvxThesaurusDialog, LookUpHdl_Impl ) );
- aMeanLB.SetSelectHdl( LINK( this, SvxThesaurusDialog, EntryHdl_Impl ) );
- aSynonymLB.SetSelectHdl( LINK( this, SvxThesaurusDialog, SynonymHdl_Impl ) );
- Link aLink = LINK( this, SvxThesaurusDialog, SelectHdl_Impl );
- aMeanLB.SetDoubleClickHdl( aLink );
- aSynonymLB.SetDoubleClickHdl( aLink );
- aWordLB.SetSelectHdl( aLink );
-
- FreeResource();
-
- ::rtl::OUString aTmp( rWord );
- linguistic::RemoveHyphens( aTmp );
- linguistic::ReplaceControlChars( aTmp );
- aReplaceEdit.SetText( aTmp );
- aWordLB.InsertEntry( aTmp );
- aWordLB.SelectEntry( aTmp );
-
- Init_Impl( nLanguage );
-
- // disable controls if service is missing
- if (!pImpl->xThesaurus.is())
- Enable( sal_False );
-}
-
-
-// -----------------------------------------------------------------------
-
-SvxThesaurusDialog::~SvxThesaurusDialog()
-{
- delete pImpl->pErrContext;
- delete pImpl;
-}
-
-// -----------------------------------------------------------------------
-
-uno::Sequence< Reference< XMeaning > > SAL_CALL
- SvxThesaurusDialog::queryMeanings_Impl(
- ::rtl::OUString& rTerm,
- const Locale& rLocale,
- const beans::PropertyValues& rProperties )
- throw(lang::IllegalArgumentException, uno::RuntimeException)
-{
- uno::Sequence< Reference< XMeaning > > aMeanings(
- pImpl->xThesaurus->queryMeanings( rTerm, rLocale, rProperties ) );
-
- // text with '.' at the end?
- if (0 == aMeanings.getLength() && rTerm.getLength() &&
- rTerm.getStr()[ rTerm.getLength() - 1 ] == '.')
- {
- // try again without trailing '.' chars. It may be a word at the
- // end of a sentence and not an abbreviation...
- String aTxt( rTerm );
- aTxt.EraseTrailingChars( '.' );
- aMeanings = pImpl->xThesaurus->queryMeanings( aTxt, rLocale, rProperties );
- if (aMeanings.getLength())
- {
- rTerm = aTxt;
- }
- }
-
- return aMeanings;
-}
-
-// -----------------------------------------------------------------------
-
-sal_uInt16 SvxThesaurusDialog::GetLanguage() const
-{
- return pImpl->nLookUpLanguage;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxThesaurusDialog::UpdateMeaningBox_Impl( uno::Sequence< Reference< XMeaning > > *pMeaningSeq )
-{
- // create temporary meaning list if not supplied from somewhere else
- sal_Bool bTmpSeq = sal_False;
- if (!pMeaningSeq && pImpl->xThesaurus.is())
- {
- bTmpSeq = sal_True;
- lang::Locale aLocale( SvxCreateLocale( pImpl->nLookUpLanguage ) );
- uno::Sequence< Reference< XMeaning > > aTmpMean = queryMeanings_Impl(
- pImpl->aLookUpText, aLocale, Sequence< PropertyValue >() );
-
- pMeaningSeq = new Sequence< Reference< XMeaning > > ( aTmpMean );
-
- // set new replace edit text if a different look up text was used
- // see: queryMeanings_Impl
- aReplaceEdit.SetText( pImpl->aLookUpText );
- }
-
- sal_Int32 nMeaningCount = pMeaningSeq ? pMeaningSeq->getLength() : 0;
- const Reference< XMeaning > *pMeaning = pMeaningSeq ? pMeaningSeq->getConstArray() : NULL;
- aMeanLB.Clear();
- for ( sal_Int32 i = 0; i < nMeaningCount; ++i )
- aMeanLB.InsertEntry( pMeaning[i]->getMeaning() );
-
- // remove temporary meaning list
- if (bTmpSeq)
- delete pMeaningSeq;
-
- if (aMeanLB.GetEntryCount() > 0)
- aMeanLB.SelectEntryPos(0);
- UpdateSynonymBox_Impl();
-}
-
-
-// -----------------------------------------------------------------------
-void SvxThesaurusDialog::UpdateSynonymBox_Impl()
-{
-
- aSynonymLB.Clear();
-
- sal_uInt16 nPos = aMeanLB.GetSelectEntryPos(); // active meaning pos
- if (nPos != LISTBOX_ENTRY_NOTFOUND && pImpl->xThesaurus.is())
- {
- // get Reference< XMeaning > for selected meaning
- lang::Locale aLocale( SvxCreateLocale( pImpl->nLookUpLanguage ) );
- Reference< XMeaning > xMeaning = queryMeanings_Impl(
- pImpl->aLookUpText, aLocale, Sequence< PropertyValue >() )
- .getConstArray()[ nPos ];
-
- uno::Sequence< ::rtl::OUString > aSynonyms;
- if (xMeaning.is())
- aSynonyms = xMeaning->querySynonyms();
-
- sal_Int32 nSynonymCount = aSynonyms.getLength();
- const ::rtl::OUString *pSynonym = aSynonyms.getConstArray();
- for ( sal_Int32 i=0; i < nSynonymCount; ++i )
- aSynonymLB.InsertEntry( pSynonym[i] );
- }
-
-}
-
-// -----------------------------------------------------------------------
-
-void SvxThesaurusDialog::Apply()
-{
-}
-
-// -----------------------------------------------------------------------
-void SvxThesaurusDialog::Init_Impl(sal_Int16 nLanguage)
-{
- // Sprache anpassen
- String aStr( GetText() );
- aStr.Erase( aStr.Search( sal_Unicode( '(' ) ) - 1 );
- aStr.Append( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( " (" ) ) );
- //aStr += GetLanguageString( (LanguageType)pImpl->pThesaurus->GetLanguage() );
- aStr += GetLanguageString( (LanguageType) nLanguage );
- aStr.Append( sal_Unicode( ')' ) );
- SetText( aStr ); // Text der Window-Leiste setzen (Wort + Sprache)
-
- // adapt meanings according to (new) language
- UpdateMeaningBox_Impl();
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, LookUpHdl_Impl, Button *, pBtn )
-{
-
- EnterWait();
-
- String aText( aReplaceEdit.GetText() );
-
- ::rtl::OUString aOldLookUpText = pImpl->aLookUpText;
- pImpl->aLookUpText = ::rtl::OUString( aText );
-
- uno::Sequence< Reference< XMeaning > > aMeanings;
- if (pImpl->xThesaurus.is())
- aMeanings = queryMeanings_Impl(
- pImpl->aLookUpText,
- SvxCreateLocale( pImpl->nLookUpLanguage ),
- Sequence< PropertyValue >() );
-
- LeaveWait();
- if ( aMeanings.getLength() == 0 )
- {
- if( pBtn == &aCancelBtn ) // called via double click
- {
- pImpl->aLookUpText = aOldLookUpText;
- }
- else
- {
- UpdateMeaningBox_Impl( &aMeanings );
- if( pBtn == &aLookUpBtn )
- InfoBox( this, aErrStr ).Execute();
- }
- return 0;
- }
-
- UpdateMeaningBox_Impl( &aMeanings );
-
- if ( aWordLB.GetEntryPos( aText ) == LISTBOX_ENTRY_NOTFOUND )
- aWordLB.InsertEntry( aText );
-
- aWordLB.SelectEntry( aText );
- aMeanLB.SelectEntryPos( 0 );
-
- String aStr( aMeanLB.GetSelectEntry() );
- GetReplaceEditString( aStr );
- aReplaceEdit.SetText( aStr );
- aSynonymLB.SetNoSelection();
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, LanguageHdl_Impl, Button *, EMPTYARG )
-{
- if (!pImpl->xThesaurus.is())
- return 0;
-
- SvxThesaurusLanguageDlg_Impl aDlg( this );
- sal_uInt16 nLang = pImpl->nLookUpLanguage;
- aDlg.SetLanguage( nLang );
-
- if ( aDlg.Execute() == RET_OK )
- {
- nLang = aDlg.GetLanguage();
- if (pImpl->xThesaurus->hasLocale( SvxCreateLocale( nLang ) ))
- pImpl->nLookUpLanguage = nLang;
- UpdateMeaningBox_Impl();
- Init_Impl( nLang );
- }
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, SynonymHdl_Impl, ListBox *, EMPTYARG )
-{
- if ( aSynonymLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
- {
- String aStr( aSynonymLB.GetSelectEntry() );
- GetReplaceEditString( aStr );
- aReplaceEdit.SetText( aStr );
- }
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, SelectHdl_Impl, ListBox *, pBox )
-{
- String aStr( pBox->GetSelectEntry() );
- GetReplaceEditString( aStr );
- aReplaceEdit.SetText( aStr );
-
- //! 'aCancelBtn' is used to indicate that the handler is called as result
- //! of a double click action.
- LookUpHdl_Impl( &aCancelBtn /* ??? &aLookUpBtn */ );
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, EntryHdl_Impl, ListBox *, EMPTYARG )
-{
-
- UpdateSynonymBox_Impl();
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxThesaurusDialog, SpellErrorHdl_Impl, void *, pError )
-{
- // Der "ubergebene Pointer pError ist die falsche Sprachen-Nummer
- LanguageType eLang = (LanguageType)(sal_uIntPtr)pError;
- String aErr( ::GetLanguageString( eLang ) );
- // Fehlermeldung ausgeben
- ErrorHandler::HandleError(
- *new StringErrorInfo( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
- return 0;
-}
-