2000-09-18 11:07:07 -05:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* $RCSfile: drviewsf.cxx,v $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2006-03-21 10:45:34 -06:00
|
|
|
* $Revision: 1.15 $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2006-03-21 10:45:34 -06:00
|
|
|
* last change: $Author: obo $ $Date: 2006-03-21 17:45:34 $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* The Contents of this file are made available subject to
|
|
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* This library 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 for more details.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-09 01:12:24 -05:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
#include "DrawViewShell.hxx"
|
|
|
|
|
2000-09-18 11:07:07 -05:00
|
|
|
#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
|
|
|
|
#include <com/sun/star/form/FormButtonType.hpp>
|
|
|
|
#endif
|
|
|
|
#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
|
|
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _SVXIDS_HRC
|
|
|
|
#include <svx/svxids.hrc>
|
|
|
|
#endif
|
|
|
|
#ifndef _GLOBL3D_HXX
|
|
|
|
#include <svx/globl3d.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_HLNKITEM_HXX
|
|
|
|
#include <svx/hlnkitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _EEITEM_HXX //autogen
|
|
|
|
#include <svx/eeitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _FLDITEM_HXX
|
|
|
|
#define ITEMID_FIELD EE_FEATURE_FIELD
|
|
|
|
#include <svx/flditem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXVIEWFRM_HXX //autogen
|
|
|
|
#include <sfx2/viewfrm.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFX_WHITER_HXX //autogen
|
|
|
|
#include <svtools/whiter.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXENUMITEM_HXX //autogen
|
|
|
|
#include <svtools/eitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXITEMPOOL_HXX //autogen
|
|
|
|
#include <svtools/itempool.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFX_TPLPITEM_HXX //autogen
|
|
|
|
#include <sfx2/tplpitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _BINDING_HXX //autogen
|
|
|
|
#include <sfx2/bindings.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXAPP_HXX //autogen
|
|
|
|
#include <sfx2/app.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFX_TEMPLDLG_HXX //autogen
|
|
|
|
#include <sfx2/templdlg.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _XDEF_HXX //autogen
|
|
|
|
#include <svx/xdef.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVDDEF_HXX //autogen
|
|
|
|
#include <svx/svddef.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_FMGLOB_HXX
|
|
|
|
#include <svx/fmglob.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVDOUNO_HXX //autogen
|
|
|
|
#include <svx/svdouno.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _URLOBJ_HXX //autogen
|
|
|
|
#include <tools/urlobj.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_FMSHELL_HXX //autogen
|
|
|
|
#include <svx/fmshell.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFX_TOPFRM_HXX //autogen wg. SfxTopViewFrame
|
|
|
|
#include <sfx2/topfrm.hxx>
|
|
|
|
#endif
|
2001-06-26 05:32:08 -05:00
|
|
|
#ifndef _SVTOOLS_CJKOPTIONS_HXX
|
|
|
|
#include <svtools/cjkoptions.hxx>
|
|
|
|
#endif
|
2000-09-18 11:07:07 -05:00
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
#ifndef SD_FRAME_VIEW
|
|
|
|
#include "FrameView.hxx"
|
|
|
|
#endif
|
|
|
|
#include "Outliner.hxx"
|
2000-09-18 11:07:07 -05:00
|
|
|
#include "app.hrc"
|
|
|
|
|
|
|
|
#include "app.hxx"
|
|
|
|
#include "stlsheet.hxx"
|
2004-01-20 05:48:15 -06:00
|
|
|
#ifndef SD_DRAW_VIEW_HXX
|
2000-09-18 11:07:07 -05:00
|
|
|
#include "drawview.hxx"
|
2004-01-20 05:48:15 -06:00
|
|
|
#endif
|
2000-09-18 11:07:07 -05:00
|
|
|
#include "drawdoc.hxx"
|
2004-01-20 05:48:15 -06:00
|
|
|
#ifndef SD_WINDOW_HXX
|
|
|
|
#include "Window.hxx"
|
|
|
|
#endif
|
2004-07-13 08:57:41 -05:00
|
|
|
#ifndef SD_VIEW_SHELL_BASE_HXX
|
|
|
|
#include "ViewShellBase.hxx"
|
|
|
|
#endif
|
2006-03-21 10:45:34 -06:00
|
|
|
#ifndef SD_FORM_SHELL_MANAGER_HXX
|
|
|
|
#include "FormShellManager.hxx"
|
|
|
|
#endif
|
2000-09-18 11:07:07 -05:00
|
|
|
#include "cfgids.hxx"
|
|
|
|
|
|
|
|
using namespace ::rtl;
|
|
|
|
using namespace ::com::sun::star;
|
|
|
|
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
namespace sd {
|
|
|
|
|
2000-09-18 11:07:07 -05:00
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Status von Controller-SfxSlots setzen
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
void DrawViewShell::GetCtrlState(SfxItemSet &rSet)
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
// rSet.Put(SfxUInt16Item(SID_SWITCHPAGE, aTabControl.GetCurPageId()));
|
|
|
|
// rSet.Put(SfxUInt16Item(SID_SWITCHLAYER, aLayerTab.GetCurPageId()));
|
|
|
|
|
|
|
|
if (rSet.GetItemState(SID_RELOAD) != SFX_ITEM_UNKNOWN)
|
|
|
|
{
|
|
|
|
// "Letzte Version" vom SFx en/disablen lassen
|
|
|
|
SfxViewFrame* pViewFrame = GetViewFrame();
|
|
|
|
DBG_ASSERT(pViewFrame, "ViewFrame nicht gefunden");
|
|
|
|
if (pViewFrame->ISA(SfxTopViewFrame))
|
|
|
|
{
|
|
|
|
pViewFrame->GetSlotState (SID_RELOAD, NULL, &rSet);
|
|
|
|
}
|
|
|
|
else // MI sagt: kein MDIFrame --> disablen
|
|
|
|
{
|
|
|
|
rSet.DisableItem(SID_RELOAD);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_HYPERLINK_GETLINK))
|
|
|
|
{
|
|
|
|
SvxHyperlinkItem aHLinkItem;
|
|
|
|
|
|
|
|
OutlinerView* pOLV = pDrView->GetTextEditOutlinerView();
|
|
|
|
|
|
|
|
if (pOLV)
|
|
|
|
{
|
|
|
|
const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
|
|
|
|
if (pFieldItem)
|
|
|
|
{
|
2001-06-12 07:59:49 -05:00
|
|
|
ESelection aSel = pOLV->GetSelection();
|
|
|
|
if ( abs( aSel.nEndPos - aSel.nStartPos ) == 1 )
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
2001-06-12 07:59:49 -05:00
|
|
|
const SvxFieldData* pField = pFieldItem->GetField();
|
|
|
|
if (pField->ISA(SvxURLField))
|
|
|
|
{
|
|
|
|
aHLinkItem.SetName(((const SvxURLField*) pField)->GetRepresentation());
|
|
|
|
aHLinkItem.SetURL(((const SvxURLField*) pField)->GetURL());
|
|
|
|
aHLinkItem.SetTargetFrame(((const SvxURLField*) pField)->GetTargetFrame());
|
|
|
|
}
|
2000-09-18 11:07:07 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if (pDrView->GetMarkedObjectList().GetMarkCount() > 0)
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, pDrView->GetMarkedObjectList().GetMark(0)->GetObj());
|
2000-09-18 11:07:07 -05:00
|
|
|
|
|
|
|
if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
|
|
|
|
{
|
|
|
|
uno::Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel() );
|
|
|
|
|
|
|
|
if( !xControlModel.is() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY );
|
|
|
|
if( !xPropSet.is())
|
|
|
|
return;
|
|
|
|
|
|
|
|
uno::Reference< beans::XPropertySetInfo > xPropInfo( xPropSet->getPropertySetInfo() );
|
|
|
|
|
|
|
|
uno::Any aTmp;
|
|
|
|
|
|
|
|
form::FormButtonType eButtonType = form::FormButtonType_URL;
|
|
|
|
if(!xPropInfo->hasPropertyByName( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ButtonType" ))))
|
|
|
|
return;
|
|
|
|
|
|
|
|
aTmp = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )));
|
|
|
|
if( aTmp >>= eButtonType )
|
|
|
|
{
|
|
|
|
OUString aString;
|
|
|
|
|
|
|
|
// Label
|
|
|
|
if(!xPropInfo->hasPropertyByName(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" ))))
|
|
|
|
return;
|
|
|
|
aTmp = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" )));
|
|
|
|
|
|
|
|
if( aTmp >>= aString )
|
|
|
|
aHLinkItem.SetName(String( aString ));
|
|
|
|
|
|
|
|
// URL
|
|
|
|
if(!xPropInfo->hasPropertyByName(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetURL" ))))
|
|
|
|
return;
|
|
|
|
aTmp = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )));
|
|
|
|
if( aTmp >>= aString )
|
|
|
|
aHLinkItem.SetURL(String( aString ));
|
|
|
|
|
|
|
|
// Target
|
|
|
|
if(!xPropInfo->hasPropertyByName(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" ))))
|
|
|
|
return;
|
|
|
|
aTmp = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )));
|
|
|
|
if( aTmp >>= aString )
|
|
|
|
aHLinkItem.SetTargetFrame(String( aString ));
|
|
|
|
|
|
|
|
aHLinkItem.SetInsertMode(HLINK_BUTTON);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
rSet.Put(aHLinkItem);
|
|
|
|
}
|
2001-06-12 07:59:49 -05:00
|
|
|
rSet.Put( SfxBoolItem( SID_READONLY_MODE, bReadOnly ) );
|
2000-09-18 11:07:07 -05:00
|
|
|
|
|
|
|
// Ausgabequalitaet
|
|
|
|
if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_COLOR ) ||
|
|
|
|
SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_GRAYSCALE ) ||
|
2002-03-06 09:27:58 -06:00
|
|
|
SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_BLACKWHITE ) ||
|
|
|
|
SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_CONTRAST ) )
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
2004-07-13 08:57:41 -05:00
|
|
|
ULONG nMode = GetActiveWindow()->GetDrawMode();
|
2002-03-06 09:27:58 -06:00
|
|
|
UINT16 nQuality = 0;
|
|
|
|
|
|
|
|
if( OUTPUT_DRAWMODE_COLOR == nMode )
|
2000-09-18 11:07:07 -05:00
|
|
|
nQuality = 0;
|
2002-03-06 09:27:58 -06:00
|
|
|
else if( OUTPUT_DRAWMODE_GRAYSCALE == nMode )
|
2000-09-18 11:07:07 -05:00
|
|
|
nQuality = 1;
|
2002-03-06 09:27:58 -06:00
|
|
|
else if( OUTPUT_DRAWMODE_BLACKWHITE == nMode )
|
2000-09-18 11:07:07 -05:00
|
|
|
nQuality = 2;
|
2002-03-06 09:27:58 -06:00
|
|
|
else if( OUTPUT_DRAWMODE_CONTRAST == nMode )
|
|
|
|
nQuality = 3;
|
2000-09-18 11:07:07 -05:00
|
|
|
|
|
|
|
rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_COLOR, (BOOL)(nQuality == 0) ) );
|
|
|
|
rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_GRAYSCALE, (BOOL)(nQuality == 1) ) );
|
|
|
|
rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_BLACKWHITE, (BOOL)(nQuality == 2) ) );
|
2002-03-06 09:27:58 -06:00
|
|
|
rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_CONTRAST, (BOOL)(nQuality == 3) ) );
|
2000-09-18 11:07:07 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if ( SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_MAIL_SCROLLBODY_PAGEDOWN) )
|
|
|
|
{
|
|
|
|
rSet.Put( SfxBoolItem( SID_MAIL_SCROLLBODY_PAGEDOWN, TRUE ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_ATTR_YEAR2000) )
|
|
|
|
{
|
2006-03-21 10:45:34 -06:00
|
|
|
FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager().GetFormShell();
|
2004-01-20 05:48:15 -06:00
|
|
|
if (pFormShell != NULL)
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
UINT16 nState = 0;
|
2004-01-20 05:48:15 -06:00
|
|
|
if (pFormShell->GetY2KState(nState))
|
2000-09-18 11:07:07 -05:00
|
|
|
rSet.Put( SfxUInt16Item( SID_ATTR_YEAR2000, nState ) );
|
|
|
|
else
|
|
|
|
rSet.DisableItem( SID_ATTR_YEAR2000 );
|
|
|
|
}
|
|
|
|
}
|
2001-05-08 08:00:29 -05:00
|
|
|
|
2004-07-13 08:57:41 -05:00
|
|
|
if ( !GetView()->GetTextEditOutliner() )
|
2001-05-08 08:00:29 -05:00
|
|
|
{
|
2004-11-17 06:09:05 -06:00
|
|
|
SvtCJKOptions aCJKOptions;
|
|
|
|
if( !aCJKOptions.IsChangeCaseMapEnabled() )
|
|
|
|
{
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HALFWIDTH, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_FULLWIDTH, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HIRAGANA, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_KATAGANA, sal_False );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HALFWIDTH, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_FULLWIDTH, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HIRAGANA, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_KATAGANA, sal_True );
|
|
|
|
}
|
|
|
|
|
2001-05-08 08:00:29 -05:00
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_UPPER );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_LOWER );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_HALFWIDTH );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_FULLWIDTH );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_HIRAGANA );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_KATAGANA );
|
|
|
|
}
|
2001-06-26 05:32:08 -05:00
|
|
|
else
|
|
|
|
{
|
|
|
|
SvtCJKOptions aCJKOptions;
|
|
|
|
if( !aCJKOptions.IsChangeCaseMapEnabled() )
|
|
|
|
{
|
2004-11-17 06:09:05 -06:00
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HALFWIDTH, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_FULLWIDTH, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HIRAGANA, sal_False );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_KATAGANA, sal_False );
|
2001-06-26 05:32:08 -05:00
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_HALFWIDTH );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_FULLWIDTH );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_HIRAGANA );
|
|
|
|
rSet.DisableItem( SID_TRANSLITERATE_KATAGANA );
|
|
|
|
}
|
2004-11-17 06:09:05 -06:00
|
|
|
else
|
|
|
|
{
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HALFWIDTH, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_FULLWIDTH, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_HIRAGANA, sal_True );
|
|
|
|
GetViewFrame()->GetBindings().SetVisibleState( SID_TRANSLITERATE_KATAGANA, sal_True );
|
|
|
|
}
|
2001-06-26 05:32:08 -05:00
|
|
|
}
|
2000-09-18 11:07:07 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Status der Attribut-Items
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
void DrawViewShell::GetAttrState( SfxItemSet& rSet )
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
SfxWhichIter aIter( rSet );
|
|
|
|
USHORT nWhich = aIter.FirstWhich();
|
|
|
|
|
|
|
|
BOOL bAttr = FALSE;
|
|
|
|
SfxAllItemSet aAllSet( *rSet.GetPool() );
|
|
|
|
|
|
|
|
while ( nWhich )
|
|
|
|
{
|
|
|
|
USHORT nSlotId = SfxItemPool::IsWhich(nWhich)
|
|
|
|
? GetPool().GetSlotId(nWhich)
|
|
|
|
: nWhich;
|
|
|
|
switch ( nSlotId )
|
|
|
|
{
|
|
|
|
case SID_ATTR_FILL_STYLE:
|
|
|
|
case SID_ATTR_FILL_COLOR:
|
|
|
|
case SID_ATTR_FILL_GRADIENT:
|
|
|
|
case SID_ATTR_FILL_HATCH:
|
|
|
|
case SID_ATTR_FILL_BITMAP:
|
|
|
|
case SID_ATTR_FILL_SHADOW:
|
|
|
|
case SID_ATTR_LINE_STYLE:
|
|
|
|
case SID_ATTR_LINE_DASH:
|
|
|
|
case SID_ATTR_LINE_WIDTH:
|
|
|
|
case SID_ATTR_LINE_COLOR:
|
|
|
|
case SID_ATTR_TEXT_FITTOSIZE:
|
|
|
|
{
|
|
|
|
bAttr = TRUE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_HYPHENATION:
|
|
|
|
{
|
2004-01-20 05:48:15 -06:00
|
|
|
SfxItemSet aAttrs( GetDoc()->GetPool() );
|
2000-09-18 11:07:07 -05:00
|
|
|
pDrView->GetAttributes( aAttrs );
|
|
|
|
if( aAttrs.GetItemState( EE_PARA_HYPHENATE ) >= SFX_ITEM_AVAILABLE )
|
|
|
|
{
|
|
|
|
BOOL bValue = ( (const SfxBoolItem&) aAttrs.Get( EE_PARA_HYPHENATE ) ).GetValue();
|
|
|
|
rSet.Put( SfxBoolItem( SID_HYPHENATION, bValue ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_FAMILY2:
|
|
|
|
case SID_STYLE_FAMILY5:
|
|
|
|
case SID_STYLE_APPLY: // StyleControl
|
|
|
|
{
|
|
|
|
SfxStyleSheet* pStyleSheet = pDrView->GetStyleSheet();
|
|
|
|
if( pStyleSheet )
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if( nSlotId != SID_STYLE_APPLY && !pDrView->AreObjectsMarked() )
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
SfxTemplateItem aTmpItem( nWhich, String() );
|
|
|
|
aAllSet.Put( aTmpItem, aTmpItem.Which() );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (pStyleSheet->GetFamily() == SD_LT_FAMILY)
|
|
|
|
pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
|
|
|
|
|
|
|
|
if( pStyleSheet )
|
|
|
|
{
|
|
|
|
SfxStyleFamily eFamily = pStyleSheet->GetFamily();
|
|
|
|
|
|
|
|
if ((eFamily == SFX_STYLE_FAMILY_PARA &&
|
|
|
|
nSlotId == SID_STYLE_FAMILY2) ||
|
|
|
|
(eFamily == SFX_STYLE_FAMILY_PSEUDO &&
|
|
|
|
nSlotId == SID_STYLE_FAMILY5))
|
|
|
|
{
|
|
|
|
SfxTemplateItem aTmpItem ( nWhich, pStyleSheet->GetName() );
|
|
|
|
aAllSet.Put( aTmpItem, aTmpItem.Which() );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SfxTemplateItem aTmpItem(nWhich, String());
|
|
|
|
aAllSet.Put(aTmpItem,aTmpItem.Which() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{ SfxTemplateItem aItem( nWhich, String() );
|
|
|
|
aAllSet.Put( aItem, aItem.Which() );
|
|
|
|
// rSet.DisableItem( nWhich );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_SET_DEFAULT:
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if( !pDrView->GetMarkedObjectList().GetMarkCount() ||
|
2002-10-18 07:03:41 -05:00
|
|
|
( !pDrView->IsTextEdit() && !pDrView->GetStyleSheet() )
|
|
|
|
)
|
2000-09-18 11:07:07 -05:00
|
|
|
rSet.DisableItem( nWhich );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_WATERCAN:
|
|
|
|
{
|
|
|
|
ISfxTemplateCommon* pTemplateCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings());
|
|
|
|
if (pTemplateCommon && pTemplateCommon->GetActualFamily() == SFX_STYLE_FAMILY_PSEUDO)
|
|
|
|
rSet.Put(SfxBoolItem(nWhich,FALSE));
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SfxBoolItem aItem(nWhich, SD_MOD()->GetWaterCan());
|
|
|
|
aAllSet.Put( aItem, aItem.Which());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_NEW:
|
|
|
|
{
|
|
|
|
ISfxTemplateCommon* pTemplateCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings());
|
|
|
|
if (pTemplateCommon && pTemplateCommon->GetActualFamily() == SFX_STYLE_FAMILY_PSEUDO)
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_DRAGHIERARCHIE:
|
|
|
|
{
|
|
|
|
ISfxTemplateCommon* pTemplateCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings());
|
|
|
|
if (pTemplateCommon && pTemplateCommon->GetActualFamily() == SFX_STYLE_FAMILY_PSEUDO)
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_NEW_BY_EXAMPLE:
|
|
|
|
{
|
|
|
|
// PseudoStyleSheets koennen nicht 'by Example' erzeugt werden;
|
|
|
|
// normale StyleSheets brauchen dafuer ein selektiertes Objekt
|
|
|
|
ISfxTemplateCommon* pTemplCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings());
|
|
|
|
if (pTemplCommon)
|
|
|
|
{
|
|
|
|
if (pTemplCommon->GetActualFamily() == SFX_STYLE_FAMILY_PSEUDO)
|
|
|
|
{
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
else if (pTemplCommon->GetActualFamily() == SFX_STYLE_FAMILY_PARA)
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if (!pDrView->AreObjectsMarked())
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// falls (noch) kein Gestalter da ist, muessen wir uns auf den
|
|
|
|
// View-Zustand zurueckziehen; eine aktuell eingestellte Familie
|
|
|
|
// kann nicht beruecksichtigt werden
|
|
|
|
else
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if (!pDrView->AreObjectsMarked())
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_STYLE_UPDATE_BY_EXAMPLE:
|
|
|
|
{
|
2004-07-12 09:20:25 -05:00
|
|
|
if (!pDrView->AreObjectsMarked())
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
rSet.DisableItem(nWhich);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
nWhich = aIter.NextWhich();
|
|
|
|
}
|
|
|
|
|
|
|
|
SfxItemSet* pSet = NULL;
|
|
|
|
|
|
|
|
if( bAttr )
|
|
|
|
{
|
2004-01-20 05:48:15 -06:00
|
|
|
pSet = new SfxItemSet( GetDoc()->GetPool() );
|
2000-09-18 11:07:07 -05:00
|
|
|
pDrView->GetAttributes( *pSet );
|
|
|
|
rSet.Put( *pSet, FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
rSet.Put( aAllSet, FALSE );
|
|
|
|
|
|
|
|
// Flaechen und/oder Linienattribute wurden geaendert
|
|
|
|
if( bAttr && pSet )
|
|
|
|
{
|
|
|
|
// Wenn die View selektierte Objekte besitzt, muessen entspr. Items
|
|
|
|
// von SFX_ITEM_DEFAULT (_ON) auf SFX_ITEM_DISABLED geaendert werden
|
2004-07-12 09:20:25 -05:00
|
|
|
if( pDrView->AreObjectsMarked() )
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
SfxWhichIter aNewIter( *pSet, XATTR_LINE_FIRST, XATTR_FILL_LAST );
|
|
|
|
nWhich = aNewIter.FirstWhich();
|
|
|
|
while( nWhich )
|
|
|
|
{
|
|
|
|
if( SFX_ITEM_DEFAULT == pSet->GetItemState( nWhich ) )
|
|
|
|
{
|
|
|
|
rSet.ClearItem( nWhich );
|
|
|
|
rSet.DisableItem( nWhich );
|
|
|
|
}
|
|
|
|
nWhich = aNewIter.NextWhich();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
delete pSet;
|
|
|
|
}
|
|
|
|
|
2004-07-12 09:20:25 -05:00
|
|
|
// const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList();
|
2000-09-18 11:07:07 -05:00
|
|
|
// ULONG nMarkCount = rMarkList.GetMarkCount();
|
|
|
|
// BOOL bDisabled = FALSE;
|
|
|
|
//
|
|
|
|
// for (ULONG i = 0;
|
|
|
|
// i < nMarkCount && !bDisabled && i < 50; i++)
|
|
|
|
// {
|
|
|
|
// SdrObject* pObj = rMarkList.GetMark(i)->GetObj();
|
|
|
|
//
|
|
|
|
// if (pObj->GetObjInventor() == E3dInventor)
|
|
|
|
// {
|
|
|
|
// bDisabled = TRUE;
|
|
|
|
// rSet.ClearItem(SDRATTR_SHADOW);
|
|
|
|
// rSet.DisableItem(SDRATTR_SHADOW);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Text der Selektion zurueckgeben
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
String DrawViewShell::GetSelectionText(BOOL bCompleteWords)
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
String aStrSelection;
|
2004-01-20 05:48:15 -06:00
|
|
|
::Outliner* pOl = pDrView->GetTextEditOutliner();
|
2000-09-18 11:07:07 -05:00
|
|
|
OutlinerView* pOlView = pDrView->GetTextEditOutlinerView();
|
|
|
|
|
|
|
|
if (pOl && pOlView)
|
|
|
|
{
|
|
|
|
if (bCompleteWords)
|
|
|
|
{
|
|
|
|
ESelection aSel = pOlView->GetSelection();
|
|
|
|
String aStrCurrentDelimiters = pOl->GetWordDelimiters();
|
|
|
|
|
|
|
|
pOl->SetWordDelimiters( String( RTL_CONSTASCII_USTRINGPARAM( " .,;\"'" )));
|
|
|
|
aStrSelection = pOl->GetWord( aSel.nEndPara, aSel.nEndPos );
|
|
|
|
pOl->SetWordDelimiters( aStrCurrentDelimiters );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
aStrSelection = pOlView->GetSelected();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return (aStrSelection);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Ist etwas selektiert?
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
BOOL DrawViewShell::HasSelection(BOOL bText) const
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
BOOL bReturn = FALSE;
|
|
|
|
|
|
|
|
if (bText)
|
|
|
|
{
|
|
|
|
OutlinerView* pOlView = pDrView->GetTextEditOutlinerView();
|
|
|
|
|
|
|
|
if (pOlView && pOlView->GetSelected().Len() != 0)
|
|
|
|
{
|
|
|
|
bReturn = TRUE;
|
|
|
|
}
|
|
|
|
}
|
2004-07-12 09:20:25 -05:00
|
|
|
else if (pDrView->GetMarkedObjectList().GetMarkCount() != 0)
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
bReturn = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
return bReturn;
|
|
|
|
}
|
|
|
|
|
2004-01-20 05:48:15 -06:00
|
|
|
} // end of namespace sd
|