|  | /************************************************************** | 
|  | * | 
|  | * 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. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  |  | 
|  |  | 
|  | // MARKER(update_precomp.py): autogen include statement, do not remove | 
|  | #include "precompiled_sd.hxx" | 
|  |  | 
|  | #include "DrawViewShell.hxx" | 
|  | #include <com/sun/star/form/FormButtonType.hpp> | 
|  | #include <com/sun/star/beans/XPropertySet.hpp> | 
|  |  | 
|  | #ifndef _SVXIDS_HRC | 
|  | #include <svx/svxids.hrc> | 
|  | #endif | 
|  | #ifndef _GLOBL3D_HXX | 
|  | #include <svx/globl3d.hxx> | 
|  | #endif | 
|  | #include <svx/hlnkitem.hxx> | 
|  | #include <editeng/eeitem.hxx> | 
|  | #ifndef _FLDITEM_HXX | 
|  | #include <editeng/flditem.hxx> | 
|  | #endif | 
|  | #include <sfx2/viewfrm.hxx> | 
|  | #include <svl/whiter.hxx> | 
|  | #include <svl/eitem.hxx> | 
|  | #include <svl/itempool.hxx> | 
|  | #include <sfx2/tplpitem.hxx> | 
|  | #ifndef _BINDING_HXX //autogen | 
|  | #include <sfx2/bindings.hxx> | 
|  | #endif | 
|  | #include <sfx2/app.hxx> | 
|  | #include <sfx2/templdlg.hxx> | 
|  | #include <svx/xdef.hxx> | 
|  | #include <svx/svddef.hxx> | 
|  | #include <svx/fmglob.hxx> | 
|  | #include <svx/svdouno.hxx> | 
|  | #include <tools/urlobj.hxx> | 
|  | #include <svx/fmshell.hxx> | 
|  | #include <svl/cjkoptions.hxx> | 
|  |  | 
|  | #ifndef SD_FRAME_VIEW | 
|  | #include "FrameView.hxx" | 
|  | #endif | 
|  | #include "Outliner.hxx" | 
|  | #include "app.hrc" | 
|  |  | 
|  | #include "app.hxx" | 
|  | #include "stlsheet.hxx" | 
|  | #include "drawview.hxx" | 
|  | #include "drawdoc.hxx" | 
|  | #include "Window.hxx" | 
|  | #include "ViewShellBase.hxx" | 
|  | #include "FormShellManager.hxx" | 
|  | #include "cfgids.hxx" | 
|  | #include "anminfo.hxx" | 
|  |  | 
|  | using ::rtl::OUString; | 
|  | using namespace ::com::sun::star; | 
|  |  | 
|  | namespace sd { | 
|  |  | 
|  | /************************************************************************* | 
|  | |* | 
|  | |* Status von Controller-SfxSlots setzen | 
|  | |* | 
|  | \************************************************************************/ | 
|  |  | 
|  | void DrawViewShell::GetCtrlState(SfxItemSet &rSet) | 
|  | { | 
|  | if (rSet.GetItemState(SID_RELOAD) != SFX_ITEM_UNKNOWN) | 
|  | { | 
|  | // "Letzte Version" vom SFx en/disablen lassen | 
|  | GetViewFrame()->GetSlotState (SID_RELOAD, NULL, &rSet); | 
|  | } | 
|  |  | 
|  | if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_HYPERLINK_GETLINK)) | 
|  | { | 
|  | SvxHyperlinkItem aHLinkItem; | 
|  |  | 
|  | OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView(); | 
|  |  | 
|  | if (pOLV) | 
|  | { | 
|  | bool bField = false; | 
|  | const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection(); | 
|  | if (pFieldItem) | 
|  | { | 
|  | ESelection aSel = pOLV->GetSelection(); | 
|  | if ( abs( aSel.nEndPos - aSel.nStartPos ) == 1 ) | 
|  | { | 
|  | 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()); | 
|  | bField = true; | 
|  | } | 
|  | } | 
|  | } | 
|  | if (!bField) | 
|  | { | 
|  | // use selected text as name for urls | 
|  | String sReturn = pOLV->GetSelected(); | 
|  | sReturn.Erase(255); | 
|  | sReturn.EraseTrailingChars(); | 
|  | aHLinkItem.SetName(sReturn); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | if (mpDrawView->GetMarkedObjectList().GetMarkCount() > 0) | 
|  | { | 
|  | bool bFound = false; | 
|  |  | 
|  | SdrObject* pMarkedObj = mpDrawView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj(); | 
|  | if( pMarkedObj && (FmFormInventor == pMarkedObj->GetObjInventor()) ) | 
|  | { | 
|  | SdrUnoObj* pUnoCtrl = dynamic_cast< SdrUnoObj* >( pMarkedObj ); | 
|  |  | 
|  | if(pUnoCtrl) try | 
|  | { | 
|  | uno::Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), uno::UNO_QUERY_THROW ); | 
|  | uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW ); | 
|  | uno::Reference< beans::XPropertySetInfo > xPropInfo( xPropSet->getPropertySetInfo(), uno::UNO_QUERY_THROW ); | 
|  |  | 
|  | form::FormButtonType eButtonType = form::FormButtonType_URL; | 
|  | const OUString sButtonType( RTL_CONSTASCII_USTRINGPARAM( "ButtonType" ) ); | 
|  | if(xPropInfo->hasPropertyByName( sButtonType ) && (xPropSet->getPropertyValue( sButtonType ) >>= eButtonType ) ) | 
|  | { | 
|  | OUString aString; | 
|  |  | 
|  | // Label | 
|  | const OUString sLabel( RTL_CONSTASCII_USTRINGPARAM( "Label" ) ); | 
|  | if(xPropInfo->hasPropertyByName(sLabel)) | 
|  | { | 
|  | if( xPropSet->getPropertyValue(sLabel) >>= aString ) | 
|  | aHLinkItem.SetName(String( aString )); | 
|  | } | 
|  |  | 
|  | // URL | 
|  | const OUString sTargetURL(RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )); | 
|  | if(xPropInfo->hasPropertyByName(sTargetURL)) | 
|  | { | 
|  | if( xPropSet->getPropertyValue(sTargetURL) >>= aString ) | 
|  | aHLinkItem.SetURL(String( aString )); | 
|  | } | 
|  |  | 
|  | // Target | 
|  | const OUString sTargetFrame( RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" ) ); | 
|  | if(xPropInfo->hasPropertyByName(sTargetFrame) ) | 
|  | { | 
|  | if( xPropSet->getPropertyValue(sTargetFrame) >>= aString ) | 
|  | aHLinkItem.SetTargetFrame(String( aString )); | 
|  | } | 
|  |  | 
|  | aHLinkItem.SetInsertMode(HLINK_BUTTON); | 
|  | bFound = true; | 
|  | } | 
|  | } | 
|  | catch( uno::Exception& ) | 
|  | { | 
|  | } | 
|  | } | 
|  |  | 
|  | // try interaction link | 
|  | if( !bFound && pMarkedObj ) | 
|  | { | 
|  | SdAnimationInfo* pInfo = SdDrawDocument::GetShapeUserData(*pMarkedObj); | 
|  | if( pInfo && (pInfo->meClickAction == presentation::ClickAction_DOCUMENT) ) | 
|  | aHLinkItem.SetURL( pInfo->GetBookmark()); | 
|  | aHLinkItem.SetInsertMode(HLINK_BUTTON); | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | rSet.Put(aHLinkItem); | 
|  | } | 
|  | rSet.Put( SfxBoolItem( SID_READONLY_MODE, mbReadOnly ) ); | 
|  |  | 
|  | // Ausgabequalitaet | 
|  | if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_COLOR ) || | 
|  | SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_GRAYSCALE ) || | 
|  | SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_BLACKWHITE ) || | 
|  | SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTPUT_QUALITY_CONTRAST ) ) | 
|  | { | 
|  | const sal_uLong nMode = (sal_Int32)GetActiveWindow()->GetDrawMode(); | 
|  | rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_COLOR, (sal_Bool)((sal_uLong)OUTPUT_DRAWMODE_COLOR == nMode) ) ); | 
|  | rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_GRAYSCALE, (sal_Bool)((sal_uLong)OUTPUT_DRAWMODE_GRAYSCALE == nMode) ) ); | 
|  | rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_BLACKWHITE, (sal_Bool)((sal_uLong)OUTPUT_DRAWMODE_BLACKWHITE == nMode) ) ); | 
|  | rSet.Put( SfxBoolItem( SID_OUTPUT_QUALITY_CONTRAST, (sal_Bool)((sal_uLong)OUTPUT_DRAWMODE_CONTRAST == nMode) ) ); | 
|  | } | 
|  |  | 
|  | if ( SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_MAIL_SCROLLBODY_PAGEDOWN) ) | 
|  | { | 
|  | rSet.Put( SfxBoolItem( SID_MAIL_SCROLLBODY_PAGEDOWN, sal_True ) ); | 
|  | } | 
|  |  | 
|  | if ( SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_ATTR_YEAR2000) ) | 
|  | { | 
|  | FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell(); | 
|  | if (pFormShell != NULL) | 
|  | { | 
|  | sal_uInt16 nState = 0; | 
|  | if (pFormShell->GetY2KState(nState)) | 
|  | rSet.Put( SfxUInt16Item( SID_ATTR_YEAR2000, nState ) ); | 
|  | else | 
|  | rSet.DisableItem( SID_ATTR_YEAR2000 ); | 
|  | } | 
|  | } | 
|  |  | 
|  | if ( !GetView()->GetTextEditOutliner() ) | 
|  | { | 
|  | 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 ); | 
|  | } | 
|  |  | 
|  | rSet.DisableItem( SID_TRANSLITERATE_SENTENCE_CASE ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_TITLE_CASE ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_TOGGLE_CASE ); | 
|  | 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 ); | 
|  | } | 
|  | else | 
|  | { | 
|  | 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 ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_HALFWIDTH ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_FULLWIDTH ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_HIRAGANA ); | 
|  | rSet.DisableItem( SID_TRANSLITERATE_KATAGANA ); | 
|  | } | 
|  | 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 ); | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | /************************************************************************* | 
|  | |* | 
|  | |* Status der Attribut-Items | 
|  | |* | 
|  | \************************************************************************/ | 
|  |  | 
|  | void DrawViewShell::GetAttrState( SfxItemSet& rSet ) | 
|  | { | 
|  | SfxWhichIter	aIter( rSet ); | 
|  | sal_uInt16			nWhich = aIter.FirstWhich(); | 
|  |  | 
|  | sal_Bool	bAttr = sal_False; | 
|  | SfxAllItemSet aAllSet( *rSet.GetPool() ); | 
|  |  | 
|  | while ( nWhich ) | 
|  | { | 
|  | sal_uInt16 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 = sal_True; | 
|  | } | 
|  | break; | 
|  |  | 
|  | case SID_HYPHENATION: | 
|  | { | 
|  | SfxItemSet aAttrs( GetDoc()->GetPool() ); | 
|  | mpDrawView->GetAttributes( aAttrs ); | 
|  | if( aAttrs.GetItemState( EE_PARA_HYPHENATE ) >= SFX_ITEM_AVAILABLE ) | 
|  | { | 
|  | sal_Bool bValue = ( (const SfxBoolItem&) aAttrs.Get( EE_PARA_HYPHENATE ) ).GetValue(); | 
|  | rSet.Put( SfxBoolItem( SID_HYPHENATION, bValue ) ); | 
|  | } | 
|  | } | 
|  | break; | 
|  |  | 
|  | case SID_STYLE_FAMILY2: | 
|  | case SID_STYLE_FAMILY3: | 
|  | case SID_STYLE_FAMILY5: | 
|  | case SID_STYLE_APPLY: // StyleControl | 
|  | { | 
|  | SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet(); | 
|  | if( pStyleSheet ) | 
|  | { | 
|  | if( nSlotId != SID_STYLE_APPLY && !mpDrawView->AreObjectsMarked() ) | 
|  | { | 
|  | SfxTemplateItem aTmpItem( nWhich, String() ); | 
|  | aAllSet.Put( aTmpItem, aTmpItem.Which()  ); | 
|  | } | 
|  | else | 
|  | { | 
|  | if (pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE) | 
|  | pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet(); | 
|  |  | 
|  | if( pStyleSheet ) | 
|  | { | 
|  | SfxStyleFamily eFamily = pStyleSheet->GetFamily(); | 
|  |  | 
|  | if ((eFamily == SD_STYLE_FAMILY_GRAPHICS &&		nSlotId == SID_STYLE_FAMILY2)       || | 
|  | (eFamily == SD_STYLE_FAMILY_CELL	 &&	nSlotId == SID_STYLE_FAMILY3)		|| | 
|  | (eFamily == SD_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: | 
|  | { | 
|  | if( !mpDrawView->GetMarkedObjectList().GetMarkCount() || | 
|  | ( !mpDrawView->IsTextEdit() && !mpDrawView->GetStyleSheet() ) | 
|  | ) | 
|  | rSet.DisableItem( nWhich ); | 
|  | } | 
|  | break; | 
|  |  | 
|  | case SID_STYLE_WATERCAN: | 
|  | { | 
|  | ISfxTemplateCommon* pTemplateCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings()); | 
|  | if (pTemplateCommon && pTemplateCommon->GetActualFamily() == SD_STYLE_FAMILY_PSEUDO) | 
|  | rSet.Put(SfxBoolItem(nWhich,sal_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() == SD_STYLE_FAMILY_PSEUDO) | 
|  | rSet.DisableItem(nWhich); | 
|  | } | 
|  | break; | 
|  |  | 
|  | case SID_STYLE_DRAGHIERARCHIE: | 
|  | { | 
|  | ISfxTemplateCommon* pTemplateCommon = SFX_APP()->GetCurrentTemplateCommon(GetViewFrame()->GetBindings()); | 
|  | if (pTemplateCommon && pTemplateCommon->GetActualFamily() == SD_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() == SD_STYLE_FAMILY_PSEUDO) | 
|  | { | 
|  | rSet.DisableItem(nWhich); | 
|  | } | 
|  | else if (pTemplCommon->GetActualFamily() == SD_STYLE_FAMILY_GRAPHICS) | 
|  | { | 
|  | if (!mpDrawView->AreObjectsMarked()) | 
|  | { | 
|  | 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 | 
|  | { | 
|  | if (!mpDrawView->AreObjectsMarked()) | 
|  | { | 
|  | rSet.DisableItem(nWhich); | 
|  | } | 
|  | } | 
|  |  | 
|  | } | 
|  | break; | 
|  |  | 
|  | case SID_STYLE_UPDATE_BY_EXAMPLE: | 
|  | { | 
|  | if (!mpDrawView->AreObjectsMarked()) | 
|  | { | 
|  | rSet.DisableItem(nWhich); | 
|  | } | 
|  | } | 
|  | break; | 
|  | } | 
|  | nWhich = aIter.NextWhich(); | 
|  | } | 
|  |  | 
|  | SfxItemSet* pSet = NULL; | 
|  |  | 
|  | if( bAttr ) | 
|  | { | 
|  | pSet = new SfxItemSet( GetDoc()->GetPool() ); | 
|  | mpDrawView->GetAttributes( *pSet ); | 
|  | rSet.Put( *pSet, sal_False ); | 
|  | } | 
|  |  | 
|  | rSet.Put( aAllSet, sal_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 | 
|  | if( mpDrawView->AreObjectsMarked() ) | 
|  | { | 
|  | 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; | 
|  | } | 
|  |  | 
|  | //    const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList(); | 
|  | //    sal_uLong nMarkCount = rMarkList.GetMarkCount(); | 
|  | //    sal_Bool bDisabled = sal_False; | 
|  | // | 
|  | //    for (sal_uLong i = 0; | 
|  | //         i < nMarkCount && !bDisabled && i < 50; i++) | 
|  | //    { | 
|  | //        SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj(); | 
|  | // | 
|  | //        if (pObj->GetObjInventor() == E3dInventor) | 
|  | //        { | 
|  | //            bDisabled = sal_True; | 
|  | //            rSet.ClearItem(SDRATTR_SHADOW); | 
|  | //            rSet.DisableItem(SDRATTR_SHADOW); | 
|  | //        } | 
|  | //    } | 
|  | } | 
|  |  | 
|  |  | 
|  | /************************************************************************* | 
|  | |* | 
|  | |* Text der Selektion zurueckgeben | 
|  | |* | 
|  | \************************************************************************/ | 
|  |  | 
|  | String DrawViewShell::GetSelectionText(sal_Bool bCompleteWords) | 
|  | { | 
|  | String aStrSelection; | 
|  | ::Outliner* pOl = mpDrawView->GetTextEditOutliner(); | 
|  | OutlinerView* pOlView = mpDrawView->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? | 
|  | |* | 
|  | \************************************************************************/ | 
|  |  | 
|  | sal_Bool DrawViewShell::HasSelection(sal_Bool bText) const | 
|  | { | 
|  | sal_Bool bReturn = sal_False; | 
|  |  | 
|  | if (bText) | 
|  | { | 
|  | OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView(); | 
|  |  | 
|  | if (pOlView && pOlView->GetSelected().Len() != 0) | 
|  | { | 
|  | bReturn = sal_True; | 
|  | } | 
|  | } | 
|  | else if (mpDrawView->GetMarkedObjectList().GetMarkCount() != 0) | 
|  | { | 
|  | bReturn = sal_True; | 
|  | } | 
|  |  | 
|  | return bReturn; | 
|  | } | 
|  |  | 
|  | } // end of namespace sd |