diff options
Diffstat (limited to 'sd/source/ui/view/drviews3.cxx')
-rw-r--r-- | sd/source/ui/view/drviews3.cxx | 1001 |
1 files changed, 0 insertions, 1001 deletions
diff --git a/sd/source/ui/view/drviews3.cxx b/sd/source/ui/view/drviews3.cxx deleted file mode 100644 index d520a8b1c..000000000 --- a/sd/source/ui/view/drviews3.cxx +++ /dev/null @@ -1,1001 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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_sd.hxx" - -#include "DrawViewShell.hxx" - -#include <sfx2/viewfrm.hxx> -#include <editeng/eeitem.hxx> -#include <editeng/tstpitem.hxx> -#include <editeng/lrspitem.hxx> -#include <editeng/protitem.hxx> -#include <editeng/frmdiritem.hxx> -#include <svx/ruler.hxx> -#include <editeng/numitem.hxx> -#include <svx/rulritem.hxx> -#include <svx/zoomitem.hxx> -#include <svx/svxids.hrc> -#include <svx/svdpagv.hxx> -#include <sfx2/request.hxx> -#include <sfx2/dispatch.hxx> -#include <tools/urlobj.hxx> -#include <svl/aeitem.hxx> -#include <svl/eitem.hxx> -#include <svl/rectitem.hxx> -#include <svl/stritem.hxx> -#include <svx/svdoole2.hxx> -#include <svl/itempool.hxx> -#include <svl/ptitem.hxx> -#include <basic/sbstar.hxx> -#include <basic/sberrors.hxx> -#include <svx/fmshell.hxx> -#include <svx/f3dchild.hxx> -#include <svx/float3d.hxx> -#include "optsitem.hxx" - -#include "app.hrc" -#include "glob.hrc" -#include "strings.hrc" -#include "res_bmp.hrc" - -#include "sdundogr.hxx" -#include "undopage.hxx" -#include "glob.hxx" -#include "app.hxx" -#include "fupoor.hxx" -#include "slideshow.hxx" -#ifndef SD_FRAME_VIEW -#include "FrameView.hxx" -#endif -#include "sdpage.hxx" -#include "Window.hxx" -#include "sdresid.hxx" -#include "drawview.hxx" -#include "drawdoc.hxx" -#include "DrawViewShell.hxx" -#include "Ruler.hxx" -#include "DrawDocShell.hxx" -#include "headerfooterdlg.hxx" -#include "masterlayoutdlg.hxx" -#include "Ruler.hxx" -#include "DrawDocShell.hxx" -#include "sdabstdlg.hxx" -#include <sfx2/ipclient.hxx> -#include <tools/diagnose_ex.h> -#include "ViewShellBase.hxx" -#include "FormShellManager.hxx" -#include "LayerTabBar.hxx" -#include "sdabstdlg.hxx" -#include "sdpage.hxx" -#include <com/sun/star/drawing/framework/XControllerManager.hpp> -#include <com/sun/star/drawing/framework/XConfigurationController.hpp> -#include <com/sun/star/drawing/framework/XConfiguration.hpp> -#include <com/sun/star/frame/XFrame.hpp> - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::drawing::framework; -using ::com::sun::star::frame::XFrame; -using ::com::sun::star::frame::XController; - -namespace sd { - -#ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED -#define SO2_DECL_SVINPLACEOBJECT_DEFINED -SO2_DECL_REF(SvInPlaceObject) -#endif - - - -/************************************************************************* -|* -|* SfxRequests fuer Controller bearbeiten -|* -\************************************************************************/ - -void DrawViewShell::ExecCtrl(SfxRequest& rReq) -{ - // waehrend einer Diashow wird nichts ausser dem Seitenwechsel und dem - // Sprung zur Bookmark ausgefuehrt! - if( HasCurrentFunction(SID_PRESENTATION) && - rReq.GetSlot() != SID_SWITCHPAGE && - rReq.GetSlot() != SID_JUMPTOMARK) - return; - - CheckLineTo (rReq); - - // End text edit mode for some requests. - sal_uInt16 nSlot = rReq.GetSlot(); - switch (nSlot) - { - case SID_OUTPUT_QUALITY_COLOR: - case SID_OUTPUT_QUALITY_GRAYSCALE: - case SID_OUTPUT_QUALITY_BLACKWHITE: - case SID_OUTPUT_QUALITY_CONTRAST: - // Do nothing. - break; - default: - if ( mpDrawView->IsTextEdit() ) - { - mpDrawView->SdrEndTextEdit(); - } - } - - // sal_uInt16 nSlot = rReq.GetSlot(); - switch (nSlot) - { - case SID_SWITCHPAGE: // BASIC - { - // switch page in running slide show - if(SlideShow::IsRunning(GetViewShellBase()) && rReq.GetArgs()) - { - SFX_REQUEST_ARG(rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, sal_False); - SlideShow::GetSlideShow(GetViewShellBase())->jumpToPageNumber((sal_Int32)((pWhatPage->GetValue()-1)>>1)); - } - else - { - const SfxItemSet *pArgs = rReq.GetArgs (); - sal_uInt16 nSelectedPage = 0; - - if (! pArgs) - { - nSelectedPage = maTabControl.GetCurPageId() - 1; - } - else if (pArgs->Count () == 2) - { - SFX_REQUEST_ARG (rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, sal_False); - SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, sal_False); - - sal_Int32 nWhatPage = (sal_Int32)pWhatPage->GetValue (); - sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue (); - if (! CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT)) - { - StarBASIC::FatalError (SbERR_BAD_PROP_VALUE); - rReq.Ignore (); - break; - } - else if (meEditMode != EM_MASTERPAGE) - { - if (! CHECK_RANGE (0, nWhatPage, GetDoc()->GetSdPageCount((PageKind)nWhatKind))) - { - StarBASIC::FatalError (SbERR_BAD_PROP_VALUE); - rReq.Ignore (); - break; - } - - nSelectedPage = (short) nWhatPage; - mePageKind = (PageKind) nWhatKind; - } - } - else - { - StarBASIC::FatalError (SbERR_WRONG_ARGS); - rReq.Ignore (); - break; - } - - - if( GetDocSh() && (GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)) - GetDocSh()->SetModified(); - - SwitchPage(nSelectedPage); - - if(HasCurrentFunction(SID_BEZIER_EDIT)) - GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON); - - Invalidate(); - InvalidateWindows(); - rReq.Done (); - } - break; - } - - case SID_SWITCHLAYER: // BASIC - { - const SfxItemSet *pArgs = rReq.GetArgs (); - sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId (); - - if( pArgs && pArgs->Count () == 1) - { - SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); - if( pWhatLayer ) - nCurPage = (short) pWhatLayer->GetValue (); - } - - mpDrawView->SetActiveLayer( GetLayerTabControl()->GetPageText(nCurPage) ); - Invalidate(); - rReq.Done (); - - break; - } - - case SID_PAGEMODE: // BASIC - { - - const SfxItemSet *pArgs = rReq.GetArgs (); - - if ( pArgs && pArgs->Count () == 2) - { - SFX_REQUEST_ARG (rReq, pIsActive, SfxBoolItem, ID_VAL_ISACTIVE, sal_False); - SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, sal_False); - - sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue (); - if (CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT)) - { - mbIsLayerModeActive = pIsActive->GetValue (); - mePageKind = (PageKind) nWhatKind; - } - } - - // Default-Layer der Page einschalten - mpDrawView->SetActiveLayer( String( SdResId(STR_LAYER_LAYOUT) ) ); - - ChangeEditMode(EM_PAGE, mbIsLayerModeActive); - - Invalidate(); - rReq.Done (); - - break; - } - - case SID_LAYERMODE: // BASIC - { - const SfxItemSet *pArgs = rReq.GetArgs (); - - if ( pArgs && pArgs->Count () == 2) - { - SFX_REQUEST_ARG (rReq, pWhatLayerMode, SfxBoolItem, ID_VAL_ISACTIVE, sal_False); - SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); - - sal_Int32 nWhatLayer = (sal_Int32)pWhatLayer->GetValue (); - if (CHECK_RANGE (EM_PAGE, nWhatLayer, EM_MASTERPAGE)) - { - mbIsLayerModeActive = pWhatLayerMode->GetValue (); - meEditMode = (EditMode) nWhatLayer; - } - } - - ChangeEditMode(meEditMode, !mbIsLayerModeActive); - - Invalidate(); - rReq.Done (); - - break; - } - - case SID_HEADER_AND_FOOTER: - case SID_INSERT_PAGE_NUMBER: - case SID_INSERT_DATE_TIME: - { - SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); - AbstractHeaderFooterDialog* pDlg = pFact ? pFact->CreateHeaderFooterDialog( (::ViewShell*)this, GetActiveWindow(), GetDoc(), mpActualPage ) : 0; - if( pDlg ) - { - pDlg->Execute(); - delete pDlg; - - GetActiveWindow()->Invalidate(); - UpdatePreview( mpActualPage ); - } - - Invalidate(); - rReq.Done (); - - break; - } - - case SID_MASTER_LAYOUTS: - { - SdPage* pPage = GetActualPage(); - if (meEditMode == EM_MASTERPAGE) - // Use the master page of the current page. - pPage = static_cast<SdPage*>(&pPage->TRG_GetMasterPage()); - - SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); - VclAbstractDialog* pDlg = pFact ? pFact->CreateMasterLayoutDialog( GetActiveWindow(), GetDoc(), pPage ) : 0; - if( pDlg ) - { - pDlg->Execute(); - delete pDlg; - Invalidate(); - } - rReq.Done (); - break; - } - case SID_OBJECTRESIZE: - { - /****************************************************************** - * Der Server moechte die Clientgrosse verandern - ******************************************************************/ - OSL_ASSERT (GetViewShell()!=NULL); - SfxInPlaceClient* pIPClient = GetViewShell()->GetIPClient(); - - if ( pIPClient && pIPClient->IsObjectInPlaceActive() ) - { - const SfxRectangleItem& rRect = - (SfxRectangleItem&)rReq.GetArgs()->Get(SID_OBJECTRESIZE); - Rectangle aRect( GetActiveWindow()->PixelToLogic( rRect.GetValue() ) ); - - if ( mpDrawView->AreObjectsMarked() ) - { - const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList(); - - if (rMarkList.GetMarkCount() == 1) - { - SdrMark* pMark = rMarkList.GetMark(0); - SdrObject* pObj = pMark->GetMarkedSdrObj(); - - SdrOle2Obj* pOle2Obj = dynamic_cast< SdrOle2Obj* >( pObj ); - if(pOle2Obj) - { - if( pOle2Obj->GetObjRef().is() ) - { - pOle2Obj->SetLogicRect(aRect); - } - } - } - } - } - rReq.Ignore (); - break; - } - - case SID_RELOAD: - { - sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId(); - SfxViewFrame* pFrame = GetViewFrame(); - - try - { - Reference< XFrame > xFrame( pFrame->GetFrame().GetFrameInterface(), UNO_SET_THROW ); - - // Save the current configuration of panes and views. - Reference<XControllerManager> xControllerManager ( - GetViewShellBase().GetController(), UNO_QUERY_THROW); - Reference<XConfigurationController> xConfigurationController ( - xControllerManager->getConfigurationController(), UNO_QUERY_THROW ); - Reference<XConfiguration> xConfiguration ( - xConfigurationController->getRequestedConfiguration(), UNO_SET_THROW ); - - SfxChildWindow* pWindow = pFrame->GetChildWindow(nId); - if(pWindow) - { - Svx3DWin* p3DWin = (Svx3DWin*)(pWindow->GetWindow()); - if(p3DWin) - p3DWin->DocumentReload(); - } - - // Normale Weiterleitung an ViewFrame zur Ausfuehrung - GetViewFrame()->ExecuteSlot(rReq); - - // From here on we must cope with this object and the frame already being - // deleted. Do not call any methods or use data members. - Reference<XController> xController( xFrame->getController(), UNO_SET_THROW ); - - // Restore the configuration. - xControllerManager = Reference<XControllerManager>( xController, UNO_QUERY_THROW); - xConfigurationController = Reference<XConfigurationController>( - xControllerManager->getConfigurationController()); - if ( ! xConfigurationController.is()) - throw RuntimeException(); - xConfigurationController->restoreConfiguration(xConfiguration); - } - catch (RuntimeException&) - { - DBG_UNHANDLED_EXCEPTION(); - } - - // We have to return immediately to avoid accessing this object. - return; - } - - case SID_JUMPTOMARK: - { - if( rReq.GetArgs() ) - { - SFX_REQUEST_ARG(rReq, pBookmark, SfxStringItem, SID_JUMPTOMARK, sal_False); - - if (pBookmark) - { - UniString sBookmark( INetURLObject::decode( pBookmark->GetValue(), '%', INetURLObject::DECODE_WITH_CHARSET ) ); - - rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetViewShellBase() ) ); - if(xSlideshow.is() && xSlideshow->isRunning()) - { - xSlideshow->jumpToBookmark(sBookmark); - } - else - { - GotoBookmark( sBookmark ); - } - } - } - rReq.Done(); - break; - } - - case SID_OUTPUT_QUALITY_COLOR: - case SID_OUTPUT_QUALITY_GRAYSCALE: - case SID_OUTPUT_QUALITY_BLACKWHITE: - case SID_OUTPUT_QUALITY_CONTRAST: - { - ExecReq( rReq ); - break; - } - - case SID_MAIL_SCROLLBODY_PAGEDOWN: - { - ExecReq( rReq ); - break; - } - - case SID_ATTR_YEAR2000: - { - FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell(); - if (pFormShell != NULL) - { - const SfxPoolItem* pItem; - if (rReq.GetArgs()->GetItemState( - SID_ATTR_YEAR2000, sal_True, &pItem) == SFX_ITEM_SET) - pFormShell->SetY2KState ( - static_cast<const SfxUInt16Item*>(pItem)->GetValue()); - } - - rReq.Done(); - } - break; - - case SID_OPT_LOCALE_CHANGED: - { - GetActiveWindow()->Invalidate(); - UpdatePreview( mpActualPage ); - rReq.Done(); - } - - default: - break; - } -} - -/************************************************************************* -|* -|* SfxRequests fuer Lineale bearbeiten -|* -\************************************************************************/ - -void DrawViewShell::ExecRuler(SfxRequest& rReq) -{ - // waehrend einer Diashow wird nichts ausgefuehrt! - if(HasCurrentFunction(SID_PRESENTATION)) - return; - - CheckLineTo (rReq); - - const SfxItemSet* pArgs = rReq.GetArgs(); - const Point aPagePos( GetActiveWindow()->GetViewOrigin() ); - Size aPageSize = mpActualPage->GetSize(); - Size aViewSize = GetActiveWindow()->GetViewSize(); - SdUndoGroup* pUndoGroup = NULL; - - if ( rReq.GetSlot() == SID_ATTR_LONG_LRSPACE || - rReq.GetSlot() == SID_ATTR_LONG_ULSPACE ) - { - pUndoGroup = new SdUndoGroup(GetDoc()); - String aString(SdResId(STR_UNDO_CHANGE_PAGEBORDER)); - pUndoGroup->SetComment(aString); - } - - switch ( rReq.GetSlot() ) - { - case SID_ATTR_LONG_LRSPACE: - { - const SvxLongLRSpaceItem& rLRSpace = (const SvxLongLRSpaceItem&) - pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_LRSPACE)); - - if( mpDrawView->IsTextEdit() ) - { - Rectangle aRect = maMarkRect; - aRect.SetPos(aRect.TopLeft() + aPagePos); - aRect.Left() = rLRSpace.GetLeft(); - aRect.Right() = aViewSize.Width() - rLRSpace.GetRight(); - aRect.SetPos(aRect.TopLeft() - aPagePos); - if ( aRect != maMarkRect) - { - mpDrawView->SetAllMarkedRect(aRect); - maMarkRect = mpDrawView->GetAllMarkedRect(); - Invalidate( SID_RULER_OBJECT ); - } - } - else - { - long nLeft = Max(0L, rLRSpace.GetLeft() - aPagePos.X()); - long nRight = Max(0L, rLRSpace.GetRight() + aPagePos.X() + - aPageSize.Width() - aViewSize.Width()); - - sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind); - sal_uInt16 i; - for ( i = 0; i < nPageCnt; i++) - { - SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind); - SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(), - pPage, - pPage->GetLftBorder(), - pPage->GetRgtBorder(), - nLeft, nRight); - pUndoGroup->AddAction(pUndo); - pPage->SetLftBorder(nLeft); - pPage->SetRgtBorder(nRight); - } - nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind); - SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(), - pPage, - pPage->GetLftBorder(), - pPage->GetRgtBorder(), - nLeft, nRight); - pUndoGroup->AddAction(pUndo); - pPage->SetLftBorder(nLeft); - pPage->SetRgtBorder(nRight); - } - InvalidateWindows(); - } - break; - } - case SID_ATTR_LONG_ULSPACE: - { - const SvxLongULSpaceItem& rULSpace = (const SvxLongULSpaceItem&) - pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_ULSPACE)); - - if( mpDrawView->IsTextEdit() ) - { - Rectangle aRect = maMarkRect; - aRect.SetPos(aRect.TopLeft() + aPagePos); - aRect.Top() = rULSpace.GetUpper(); - aRect.Bottom() = aViewSize.Height() - rULSpace.GetLower(); - aRect.SetPos(aRect.TopLeft() - aPagePos); - - if ( aRect != maMarkRect) - { - mpDrawView->SetAllMarkedRect(aRect); - maMarkRect = mpDrawView->GetAllMarkedRect(); - Invalidate( SID_RULER_OBJECT ); - } - } - else - { - long nUpper = Max(0L, rULSpace.GetUpper() - aPagePos.Y()); - long nLower = Max(0L, rULSpace.GetLower() + aPagePos.Y() + - aPageSize.Height() - aViewSize.Height()); - - sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind); - sal_uInt16 i; - for ( i = 0; i < nPageCnt; i++) - { - SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind); - SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(), - pPage, - pPage->GetUppBorder(), - pPage->GetLwrBorder(), - nUpper, nLower); - pUndoGroup->AddAction(pUndo); - pPage->SetUppBorder(nUpper); - pPage->SetLwrBorder(nLower); - } - nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind); - SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(), - pPage, - pPage->GetUppBorder(), - pPage->GetLwrBorder(), - nUpper, nLower); - pUndoGroup->AddAction(pUndo); - pPage->SetUppBorder(nUpper); - pPage->SetLwrBorder(nLower); - } - InvalidateWindows(); - } - break; - } - - case SID_RULER_OBJECT: - { - Rectangle aRect = maMarkRect; - aRect.SetPos(aRect.TopLeft() + aPagePos); - - const SvxObjectItem& rOI = (const SvxObjectItem&) - pArgs->Get(GetPool().GetWhich(SID_RULER_OBJECT)); - - if ( rOI.GetStartX() != rOI.GetEndX() ) - { - aRect.Left() = rOI.GetStartX(); - aRect.Right() = rOI.GetEndX(); - } - if ( rOI.GetStartY() != rOI.GetEndY() ) - { - aRect.Top() = rOI.GetStartY(); - aRect.Bottom() = rOI.GetEndY(); - } - aRect.SetPos(aRect.TopLeft() - aPagePos); - if ( aRect != maMarkRect) - { - mpDrawView->SetAllMarkedRect(aRect); - maMarkRect = mpDrawView->GetAllMarkedRect(); - Invalidate( SID_RULER_OBJECT ); - } - break; - } - - case SID_ATTR_TABSTOP: - { - if( mpDrawView->IsTextEdit() ) - { - const SvxTabStopItem& rItem = (const SvxTabStopItem&) - pArgs->Get( EE_PARA_TABS ); - - SfxItemSet aEditAttr( GetPool(), EE_PARA_TABS, EE_PARA_TABS ); - - aEditAttr.Put( rItem ); - mpDrawView->SetAttributes( aEditAttr ); - - Invalidate(SID_ATTR_TABSTOP); - } - break; - } - - case SID_ATTR_PARA_LRSPACE: - { - if( mpDrawView->IsTextEdit() ) - { - sal_uInt16 nId = SID_ATTR_PARA_LRSPACE; - const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&) - pArgs->Get( nId ); - - static const sal_uInt16 aWhichTable[]= - { - EE_PARA_OUTLLEVEL, EE_PARA_OUTLLEVEL, - EE_PARA_LRSPACE, EE_PARA_LRSPACE, - EE_PARA_NUMBULLET, EE_PARA_NUMBULLET, - 0, 0 - }; - - SfxItemSet aEditAttr( GetDoc()->GetPool(), - aWhichTable ); - mpDrawView->GetAttributes( aEditAttr ); - - nId = EE_PARA_LRSPACE; - SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(), - rItem.GetRight(), rItem.GetTxtLeft(), - rItem.GetTxtFirstLineOfst(), nId ); - - const sal_Int16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue(); - const SvxLRSpaceItem& rOrigLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE ); - const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET ); - if( nOutlineLevel != -1 && - rNumBulletItem.GetNumRule() && - rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel ) - { - const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel); - SvxNumberFormat aFormat(rFormat); - - // left margin always controls LRSpace item - aLRSpaceItem.SetTxtLeft(rItem.GetTxtLeft() - aFormat.GetAbsLSpace()); - - // negative first line indent goes to the number - // format, positive to the lrSpace item - if( rItem.GetTxtFirstLineOfst() < 0 ) - { - aFormat.SetFirstLineOffset( - rItem.GetTxtFirstLineOfst() - - rOrigLRSpaceItem.GetTxtFirstLineOfst() - + aFormat.GetCharTextDistance()); - aLRSpaceItem.SetTxtFirstLineOfst(0); - } - else - { - aFormat.SetFirstLineOffset(0); - aLRSpaceItem.SetTxtFirstLineOfst( - rItem.GetTxtFirstLineOfst() - - aFormat.GetFirstLineOffset() - + aFormat.GetCharTextDistance()); - } - - if( rFormat != aFormat ) - { - // put all items - SvxNumBulletItem aNumBulletItem(rNumBulletItem); - aNumBulletItem.GetNumRule()->SetLevel(nOutlineLevel,aFormat); - aEditAttr.Put( aNumBulletItem ); - aEditAttr.Put( aLRSpaceItem ); - mpDrawView->SetAttributes( aEditAttr ); - - Invalidate(SID_ATTR_PARA_LRSPACE); - break; - } - } - - // only put lrSpace item - SfxItemSet aEditAttrReduced( GetDoc()->GetPool(), - EE_PARA_LRSPACE, EE_PARA_LRSPACE ); - aEditAttrReduced.Put( aLRSpaceItem ); - mpDrawView->SetAttributes( aEditAttrReduced ); - - Invalidate(SID_ATTR_PARA_LRSPACE); - } - break; - } - } - if ( pUndoGroup ) - // Undo Gruppe dem Undo Manager uebergeben - GetViewFrame()->GetObjectShell()->GetUndoManager()-> - AddUndoAction(pUndoGroup); -} - -/************************************************************************* -|* -|* Statuswerte der Lineale bestimmen -|* -\************************************************************************/ -void DrawViewShell::GetRulerState(SfxItemSet& rSet) -{ - Point aOrigin; - - if (mpDrawView->GetSdrPageView()) - { - aOrigin = mpDrawView->GetSdrPageView()->GetPageOrigin(); - } - - Size aViewSize = GetActiveWindow()->GetViewSize(); - - const Point aPagePos( GetActiveWindow()->GetViewOrigin() ); - Size aPageSize = mpActualPage->GetSize(); - - Rectangle aRect(aPagePos, Point( aViewSize.Width() - (aPagePos.X() + aPageSize.Width()), - aViewSize.Height() - (aPagePos.Y() + aPageSize.Height()))); - - if( mpDrawView->IsTextEdit() ) - { - Point aPnt1 = GetActiveWindow()->GetWinViewPos(); - Rectangle aMinMaxRect = Rectangle( aPnt1, Size(ULONG_MAX, ULONG_MAX) ); - rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aMinMaxRect) ); - } - else - { - rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aRect) ); - } - - SvxLongLRSpaceItem aLRSpace(aPagePos.X() + mpActualPage->GetLftBorder(), - aRect.Right() + mpActualPage->GetRgtBorder(), - GetPool().GetWhich(SID_ATTR_LONG_LRSPACE)); - SvxLongULSpaceItem aULSpace(aPagePos.Y() + mpActualPage->GetUppBorder(), - aRect.Bottom() + mpActualPage->GetLwrBorder(), - GetPool().GetWhich(SID_ATTR_LONG_ULSPACE)); - rSet.Put(SvxPagePosSizeItem(Point(0,0) - aPagePos, aViewSize.Width(), - aViewSize.Height())); - SfxPointItem aPointItem( SID_RULER_NULL_OFFSET, aPagePos + aOrigin ); - - SvxProtectItem aProtect( SID_RULER_PROTECT ); - - maMarkRect = mpDrawView->GetAllMarkedRect(); - - const sal_Bool bRTL = GetDoc() && GetDoc()->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB; - rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, bRTL)); - - if( mpDrawView->AreObjectsMarked() ) - { - if( mpDrawView->IsTextEdit() ) - { - SdrObject* pObj = mpDrawView->GetMarkedObjectList().GetMark( 0 )->GetMarkedSdrObj(); - if( pObj->GetObjInventor() == SdrInventor) - { - SfxItemSet aEditAttr( GetDoc()->GetPool() ); - mpDrawView->GetAttributes( aEditAttr ); - if( aEditAttr.GetItemState( EE_PARA_TABS ) >= SFX_ITEM_AVAILABLE ) - { - const SvxTabStopItem& rItem = (const SvxTabStopItem&) aEditAttr.Get( EE_PARA_TABS ); - rSet.Put( rItem ); - - const SvxLRSpaceItem& rLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE ); - sal_uInt16 nId = SID_ATTR_PARA_LRSPACE; - SvxLRSpaceItem aLRSpaceItem( rLRSpaceItem.GetLeft(), - rLRSpaceItem.GetRight(), rLRSpaceItem.GetTxtLeft(), - rLRSpaceItem.GetTxtFirstLineOfst(), nId ); - - const sal_Int16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue(); - const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET ); - if( nOutlineLevel != -1 && - rNumBulletItem.GetNumRule() && - rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel ) - { - const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel); - aLRSpaceItem.SetTxtLeft(rFormat.GetAbsLSpace() + rLRSpaceItem.GetTxtLeft()); - aLRSpaceItem.SetTxtFirstLineOfst( - rLRSpaceItem.GetTxtFirstLineOfst() + rFormat.GetFirstLineOffset() - - rFormat.GetCharTextDistance()); - } - - rSet.Put( aLRSpaceItem ); - - Point aPos( aPagePos + maMarkRect.TopLeft() ); - - if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON ) - { - const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&) - aEditAttr.Get( SDRATTR_TEXT_LEFTDIST ); - long nLD = rTLDItem.GetValue(); - aPos.X() += nLD; - } - - aPointItem.SetValue( aPos ); - - aLRSpace.SetLeft( aPagePos.X() + maMarkRect.Left() ); - - if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON ) - { - const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&) - aEditAttr.Get( SDRATTR_TEXT_LEFTDIST ); - long nLD = rTLDItem.GetValue(); - aLRSpace.SetLeft( aLRSpace.GetLeft() + nLD ); - } - - aLRSpace.SetRight( aRect.Right() + aPageSize.Width() - maMarkRect.Right() ); - aULSpace.SetUpper( aPagePos.Y() + maMarkRect.Top() ); - aULSpace.SetLower( aRect.Bottom() + aPageSize.Height() - maMarkRect.Bottom() ); - - rSet.DisableItem( SID_RULER_OBJECT ); - - // Seitenraender werden gelocked - aProtect.SetSizeProtect( sal_True ); - aProtect.SetPosProtect( sal_True ); - } - - if( aEditAttr.GetItemState( EE_PARA_WRITINGDIR ) >= SFX_ITEM_AVAILABLE ) - { - const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&) aEditAttr.Get( EE_PARA_WRITINGDIR ); - rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, rItem.GetValue() == ::com::sun::star::text::WritingMode_RL_TB)); - } - } - } - else - { - rSet.DisableItem( EE_PARA_TABS ); - rSet.DisableItem( SID_RULER_TEXT_RIGHT_TO_LEFT ); - - if( mpDrawView->IsResizeAllowed(sal_True) ) - { - Rectangle aResizeRect( maMarkRect ); - - aResizeRect.SetPos(aResizeRect.TopLeft() + aPagePos); - SvxObjectItem aObjItem(aResizeRect.Left(), aResizeRect.Right(), - aResizeRect.Top(), aResizeRect.Bottom()); - rSet.Put(aObjItem); - rSet.DisableItem( EE_PARA_TABS ); - } - else - { - rSet.DisableItem( SID_RULER_OBJECT ); - } - } - } - else - { - rSet.DisableItem( SID_RULER_OBJECT ); - rSet.DisableItem( EE_PARA_TABS ); - } - - rSet.Put( aLRSpace ); - rSet.Put( aULSpace ); - - rSet.Put( aPointItem ); - rSet.Put( aProtect ); -} - -/************************************************************************* -|* -|* SfxRequests fuer StatusBar bearbeiten -|* -\************************************************************************/ - -void DrawViewShell::ExecStatusBar(SfxRequest& rReq) -{ - // waehrend einer Diashow wird nichts ausgefuehrt! - if(HasCurrentFunction(SID_PRESENTATION)) - return; - - CheckLineTo (rReq); - - switch ( rReq.GetSlot() ) - { - case SID_ATTR_SIZE: - { - GetViewFrame()->GetDispatcher()->Execute( SID_ATTR_TRANSFORM, SFX_CALLMODE_ASYNCHRON ); - } - break; - - case SID_STATUS_LAYOUT: - { - GetViewFrame()->GetDispatcher()->Execute( SID_PRESENTATION_LAYOUT, SFX_CALLMODE_ASYNCHRON ); - } - break; - } -} - -/************************************************************************* -|* -|* Status der Snap-Objekt-Eintraege im Popup setzen -|* -\************************************************************************/ - -void DrawViewShell::GetSnapItemState( SfxItemSet &rSet ) -{ - SdrPageView* pPV; - Point aMPos = GetActiveWindow()->PixelToLogic(maMousePos); - sal_uInt16 nHitLog = (sal_uInt16) GetActiveWindow()->PixelToLogic( - Size(FuPoor::HITPIX,0)).Width(); - sal_uInt16 nHelpLine; - - if ( mpDrawView->PickHelpLine(aMPos, nHitLog, *GetActiveWindow(), nHelpLine, pPV) ) - { - const SdrHelpLine& rHelpLine = (pPV->GetHelpLines())[nHelpLine]; - - if ( rHelpLine.GetKind() == SDRHELPLINE_POINT ) - { - rSet.Put( SfxStringItem( SID_SET_SNAPITEM, - String( SdResId( STR_POPUP_EDIT_SNAPPOINT))) ); - rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM, - String( SdResId( STR_POPUP_DELETE_SNAPPOINT))) ); - } - else - { - rSet.Put( SfxStringItem( SID_SET_SNAPITEM, - String( SdResId( STR_POPUP_EDIT_SNAPLINE))) ); - rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM, - String( SdResId( STR_POPUP_DELETE_SNAPLINE))) ); - } - } -} - -void DrawViewShell::AddWindow (::sd::Window* pWin) -{ - mpDrawView->AddWindowToPaintView(pWin); -} - -void DrawViewShell::RemoveWindow(::sd::Window* pWin) -{ - mpDrawView->DeleteWindowFromPaintView(pWin); -} - -} // end of namespace sd - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |