diff options
Diffstat (limited to 'sw/source/ui/shells/textglos.cxx')
-rw-r--r-- | sw/source/ui/shells/textglos.cxx | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/sw/source/ui/shells/textglos.cxx b/sw/source/ui/shells/textglos.cxx new file mode 100644 index 000000000000..a1a9f87ca918 --- /dev/null +++ b/sw/source/ui/shells/textglos.cxx @@ -0,0 +1,145 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" + + +#include <sfx2/request.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> + +#include "errhdl.hxx" +#include "view.hxx" +#include "initui.hxx" +#include "cmdid.h" +#include "textsh.hxx" +#include "initui.hxx" +#include "gloshdl.hxx" +#include "glosdoc.hxx" +#include "gloslst.hxx" +#include "swabstdlg.hxx" +#include <misc.hrc> + +// STATIC DATA ----------------------------------------------------------- + +void SwTextShell::ExecGlossary(SfxRequest &rReq) +{ + USHORT nSlot = rReq.GetSlot(); + ::GetGlossaries()->UpdateGlosPath(!rReq.IsAPI() || + FN_GLOSSARY_DLG == nSlot ); + SwGlossaryHdl* pGlosHdl = GetView().GetGlosHdl(); + // SwGlossaryList updaten? + BOOL bUpdateList = FALSE; + + const SfxItemSet *pArgs = rReq.GetArgs(); + const SfxPoolItem* pItem = 0; + if(pArgs) + pArgs->GetItemState(nSlot, FALSE, &pItem ); + + switch( nSlot ) + { + case FN_GLOSSARY_DLG: + pGlosHdl->GlossaryDlg(); + bUpdateList = TRUE; + rReq.Ignore(); + break; + case FN_EXPAND_GLOSSARY: + { + BOOL bReturn; + bReturn = pGlosHdl->ExpandGlossary(); + rReq.SetReturnValue( SfxBoolItem( nSlot, bReturn ) ); + rReq.Done(); + } + break; + case FN_NEW_GLOSSARY: + if(pItem && pArgs->Count() == 3 ) + { + String aGroup = (( const SfxStringItem *)pItem)->GetValue(); + String aName; + if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_1, FALSE, &pItem )) + aName = (( const SfxStringItem *)pItem)->GetValue(); + String aShortName; + if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_2, FALSE, &pItem )) + aShortName = (( const SfxStringItem *)pItem)->GetValue(); + + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + DBG_ASSERT(pFact, "Dialogdiet fail!"); + ::GlossarySetActGroup fnSetActGroup = pFact->SetGlossaryActGroupFunc( DLG_RENAME_GLOS ); + if ( fnSetActGroup ) + (*fnSetActGroup)( aGroup ); + pGlosHdl->SetCurGroup(aGroup, TRUE); + //eingestellte Gruppe muss in NewGlossary ggf. erzeugt werden! + pGlosHdl->NewGlossary( aName, aShortName, TRUE ); + rReq.Done(); + } + bUpdateList = TRUE; + break; + case FN_SET_ACT_GLOSSARY: + if(pItem) + { + String aGroup = (( const SfxStringItem *)pItem)->GetValue(); + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + DBG_ASSERT(pFact, "Dialogdiet fail!"); + ::GlossarySetActGroup fnSetActGroup = pFact->SetGlossaryActGroupFunc( DLG_RENAME_GLOS ); + if ( fnSetActGroup ) + (*fnSetActGroup)( aGroup ); + rReq.Done(); + } + break; + case FN_INSERT_GLOSSARY: + { + if(pItem && pArgs->Count() > 1) + { + String aGroup = (( const SfxStringItem *)pItem)->GetValue(); + String aName; + if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_1, FALSE, &pItem )) + aName = (( const SfxStringItem *)pItem)->GetValue(); + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + DBG_ASSERT(pFact, "Dialogdiet fail!"); + ::GlossarySetActGroup fnSetActGroup = pFact->SetGlossaryActGroupFunc( DLG_RENAME_GLOS ); + if ( fnSetActGroup ) + (*fnSetActGroup)( aGroup ); + pGlosHdl->SetCurGroup(aGroup, TRUE); + rReq.SetReturnValue(SfxBoolItem(nSlot, pGlosHdl->InsertGlossary( aName ))); + rReq.Done(); + } + } + break; + default: + ASSERT(FALSE, falscher Dispatcher); + return; + } + if(bUpdateList) + { + SwGlossaryList* pList = ::GetGlossaryList(); + if(pList->IsActive()) + pList->Update(); + } +} + + |