summaryrefslogtreecommitdiff
path: root/sd/source/ui/view/drviewsa.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/view/drviewsa.cxx')
-rw-r--r--sd/source/ui/view/drviewsa.cxx864
1 files changed, 0 insertions, 864 deletions
diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx
deleted file mode 100644
index e2770161f..000000000
--- a/sd/source/ui/view/drviewsa.cxx
+++ /dev/null
@@ -1,864 +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 <cppuhelper/implbase1.hxx>
-#include <comphelper/processfactory.hxx>
-#ifndef _SVX_SIZEITEM
-#include <editeng/sizeitem.hxx>
-#endif
-#include <svx/svdlayer.hxx>
-#ifndef _SVX_ZOOMITEM
-#include <svx/zoomitem.hxx>
-#endif
-#include <svx/svdpagv.hxx>
-#include <svl/ptitem.hxx>
-#include <svl/stritem.hxx>
-#include <sfx2/request.hxx>
-#include <sfx2/dispatch.hxx>
-#include <svx/svdopath.hxx>
-#include <sfx2/docfile.hxx>
-#include <svx/zoomslideritem.hxx>
-#include <svl/eitem.hxx>
-
-#include <svx/dialogs.hrc>
-#include <svx/extrusionbar.hxx>
-#include <svx/fontworkbar.hxx>
-#include <svx/clipfmtitem.hxx>
-
-
-#include <sfx2/viewfrm.hxx>
-#include <svx/fmshell.hxx>
-#include <sfx2/dispatch.hxx>
-#include <svtools/cliplistener.hxx>
-#include <svx/float3d.hxx>
-#include "helpids.h"
-
-#include "view/viewoverlaymanager.hxx"
-#include "app.hrc"
-#include "helpids.h"
-#include "strings.hrc"
-#include "res_bmp.hrc"
-#include "sdpage.hxx"
-#include "FrameView.hxx"
-#include "drawdoc.hxx"
-#include "sdresid.hxx"
-#include "DrawDocShell.hxx"
-#include "Window.hxx"
-#include "fupoor.hxx"
-#include "fusel.hxx"
-#include "drawview.hxx"
-#include "SdUnoDrawView.hxx"
-#include "ViewShellBase.hxx"
-#include "SdUnoDrawView.hxx"
-#include "slideshow.hxx"
-#include "ToolBarManager.hxx"
-#include "annotationmanager.hxx"
-
-using namespace ::rtl;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-
-namespace {
-static const ::rtl::OUString MASTER_VIEW_TOOL_BAR_NAME(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("masterviewtoolbar")));
-}
-
-namespace sd {
-
-sal_Bool DrawViewShell::mbPipette = sal_False;
-
-// ------------------------
-// - ScannerEventListener -
-// ------------------------
-
-class ScannerEventListener : public ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener >
-{
-private:
-
- DrawViewShell* mpParent;
-
-public:
-
- ScannerEventListener( DrawViewShell* pParent ) : mpParent( pParent ) {};
- ~ScannerEventListener();
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rEventObject ) throw (::com::sun::star::uno::RuntimeException);
-
- void ParentDestroyed() { mpParent = NULL; }
-};
-
-// -----------------------------------------------------------------------------
-
-ScannerEventListener::~ScannerEventListener()
-{
-}
-
-// -----------------------------------------------------------------------------
-
-void SAL_CALL ScannerEventListener::disposing( const ::com::sun::star::lang::EventObject& rEventObject ) throw (::com::sun::star::uno::RuntimeException)
-{
- if( mpParent )
- mpParent->ScannerEvent( rEventObject );
-}
-
-/*************************************************************************
-|*
-|* Standard-Konstruktor
-|*
-\************************************************************************/
-
-DrawViewShell::DrawViewShell( SfxViewFrame* pFrame, ViewShellBase& rViewShellBase, ::Window* pParentWindow, PageKind ePageKind, FrameView* pFrameViewArgument )
-: ViewShell (pFrame, pParentWindow, rViewShellBase)
-, maTabControl(this, pParentWindow)
-, mbIsLayerModeActive(false)
-, mbIsInSwitchPage(false)
-{
- ViewShell::doShow();
-
- if (pFrameViewArgument != NULL)
- mpFrameView = pFrameViewArgument;
- else
- mpFrameView = new FrameView(GetDoc());
- Construct(GetDocSh(), ePageKind);
-}
-
-/*************************************************************************
-|*
-|* Destruktor
-|*
-\************************************************************************/
-
-DrawViewShell::~DrawViewShell()
-{
- mpAnnotationManager.reset();
- mpViewOverlayManager.reset();
-
- OSL_ASSERT (GetViewShell()!=NULL);
-
- if( mxScannerListener.is() )
- static_cast< ScannerEventListener* >( mxScannerListener.get() )->ParentDestroyed();
-
- // Remove references to items within Svx3DWin
- // (maybe do a listening sometime in Svx3DWin)
- sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId();
- SfxChildWindow* pWindow = GetViewFrame() ? GetViewFrame()->GetChildWindow(nId) : NULL;
- if(pWindow)
- {
- Svx3DWin* p3DWin = static_cast< Svx3DWin* > (pWindow->GetWindow());
- if(p3DWin)
- p3DWin->DocumentReload();
- }
-
- EndListening (*GetDoc());
- EndListening (*GetDocSh());
-
- if( SlideShow::IsRunning(*this) )
- StopSlideShow(false);
-
- DisposeFunctions();
-
- SdPage* pPage;
- sal_uInt16 aPageCnt = GetDoc()->GetSdPageCount(mePageKind);
-
- for (sal_uInt16 i = 0; i < aPageCnt; i++)
- {
- pPage = GetDoc()->GetSdPage(i, mePageKind);
-
- if (pPage == mpActualPage)
- {
- GetDoc()->SetSelected(pPage, sal_True);
- }
- else
- {
- GetDoc()->SetSelected(pPage, sal_False);
- }
- }
-
- if ( mpClipEvtLstnr )
- {
- mpClipEvtLstnr->AddRemoveListener( GetActiveWindow(), sal_False );
- mpClipEvtLstnr->ClearCallbackLink(); // prevent callback if another thread is waiting
- mpClipEvtLstnr->release();
- }
-
- delete mpDrawView;
- // Set mpView to NULL so that the destructor of the ViewShell base class
- // does not access it.
- mpView = mpDrawView = NULL;
-
- mpFrameView->Disconnect();
- delete [] mpSlotArray;
-}
-
-/*************************************************************************
-|*
-|* gemeinsamer Initialisierungsanteil der beiden Konstruktoren
-|*
-\************************************************************************/
-
-void DrawViewShell::Construct(DrawDocShell* pDocSh, PageKind eInitialPageKind)
-{
- mpActualPage = 0;
- mbMousePosFreezed = sal_False;
- mbReadOnly = GetDocSh()->IsReadOnly();
- mpSlotArray = 0;
- mpClipEvtLstnr = 0;
- mbPastePossible = sal_False;
- mbIsLayerModeActive = false;
-
- mpFrameView->Connect();
-
- OSL_ASSERT (GetViewShell()!=NULL);
-
- // Array fuer Slot-/ImageMapping:
- // Gerader Eintrag: Haupt-/ToolboxSlot
- // Ungerader Eintrag: gemappter Slot
- // Achtung: Anpassen von GetIdBySubId() !!!
- // Reihenfolge (insbesondere Zoom) darf nicht geaendert werden !!!
- mpSlotArray = new sal_uInt16[ SLOTARRAY_COUNT ];
- mpSlotArray[ 0 ] = SID_OBJECT_CHOOSE_MODE;
- mpSlotArray[ 1 ] = SID_OBJECT_ROTATE;
- mpSlotArray[ 2 ] = SID_OBJECT_ALIGN;
- mpSlotArray[ 3 ] = SID_OBJECT_ALIGN_LEFT;
- mpSlotArray[ 4 ] = SID_ZOOM_TOOLBOX;
- mpSlotArray[ 5 ] = SID_ZOOM_TOOLBOX;
- mpSlotArray[ 6 ] = SID_DRAWTBX_TEXT;
- mpSlotArray[ 7 ] = SID_ATTR_CHAR;
- mpSlotArray[ 8 ] = SID_DRAWTBX_RECTANGLES;
- mpSlotArray[ 9 ] = SID_DRAW_RECT;
- mpSlotArray[ 10 ] = SID_DRAWTBX_ELLIPSES;
- mpSlotArray[ 11 ] = SID_DRAW_ELLIPSE;
- mpSlotArray[ 12 ] = SID_DRAWTBX_LINES;
- mpSlotArray[ 13 ] = SID_DRAW_FREELINE_NOFILL;
- mpSlotArray[ 14 ] = SID_DRAWTBX_3D_OBJECTS;
- mpSlotArray[ 15 ] = SID_3D_CUBE;
- mpSlotArray[ 16 ] = SID_DRAWTBX_INSERT;
- mpSlotArray[ 17 ] = SID_INSERT_DIAGRAM;
- mpSlotArray[ 18 ] = SID_POSITION;
- mpSlotArray[ 19 ] = SID_FRAME_TO_TOP;
- mpSlotArray[ 20 ] = SID_DRAWTBX_CONNECTORS;
- mpSlotArray[ 21 ] = SID_TOOL_CONNECTOR;
- mpSlotArray[ 22 ] = SID_DRAWTBX_ARROWS;
- mpSlotArray[ 23 ] = SID_LINE_ARROW_END;
-
- SetPool( &GetDoc()->GetPool() );
-
- GetDoc()->CreateFirstPages();
-
- mpDrawView = new DrawView(pDocSh, GetActiveWindow(), this);
- mpView = mpDrawView; // Pointer der Basisklasse ViewShell
- mpDrawView->SetSwapAsynchron(sal_True); // Asynchrones Laden von Graphiken
-
- // We do not read the page kind from the frame view anymore so we have
- // to set it in order to resync frame view and this view.
- mpFrameView->SetPageKind(eInitialPageKind);
- mePageKind = eInitialPageKind;
- meEditMode = EM_PAGE;
- DocumentType eDocType = GetDoc()->GetDocumentType(); // RTTI fasst hier noch nicht
- switch (mePageKind)
- {
- case PK_STANDARD:
- meShellType = ST_IMPRESS;
- break;
-
- case PK_NOTES:
- meShellType = ST_NOTES;
- break;
-
- case PK_HANDOUT:
- meShellType = ST_HANDOUT;
- break;
- }
-
- Size aPageSize( GetDoc()->GetSdPage(0, mePageKind)->GetSize() );
- Point aPageOrg( aPageSize.Width(), aPageSize.Height() / 2);
- Size aSize(aPageSize.Width() * 3, aPageSize.Height() * 2);
- InitWindows(aPageOrg, aSize, Point(-1, -1));
-
- Point aVisAreaPos;
-
- if ( pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
- {
- aVisAreaPos = pDocSh->GetVisArea(ASPECT_CONTENT).TopLeft();
- }
-
- mpDrawView->SetWorkArea(Rectangle(Point() - aVisAreaPos - aPageOrg, aSize));
-
- // Objekte koennen max. so gross wie die ViewSize werden
- GetDoc()->SetMaxObjSize(aSize);
-
- // Split-Handler fuer TabControls
- maTabControl.SetSplitHdl( LINK( this, DrawViewShell, TabSplitHdl ) );
-
- // Damit der richtige EditMode von der FrameView komplett eingestellt
- // werden kann, wird hier ein aktuell anderer gewaehlt (kleiner Trick)
- if (mpFrameView->GetViewShEditMode(mePageKind) == EM_PAGE)
- {
- meEditMode = EM_MASTERPAGE;
- }
- else
- {
- meEditMode = EM_PAGE;
- }
-
- // Einstellungen der FrameView uebernehmen
- ReadFrameViewData(mpFrameView);
-
- if( eDocType == DOCUMENT_TYPE_DRAW )
- {
- SetHelpId( SD_IF_SDGRAPHICVIEWSHELL );
- GetActiveWindow()->SetHelpId( HID_SDGRAPHICVIEWSHELL );
- GetActiveWindow()->SetUniqueId( HID_SDGRAPHICVIEWSHELL );
- }
- else
- {
- if (mePageKind == PK_NOTES)
- {
- SetHelpId( SID_NOTESMODE );
- GetActiveWindow()->SetHelpId( CMD_SID_NOTESMODE );
- GetActiveWindow()->SetUniqueId( CMD_SID_NOTESMODE );
-
- // AutoLayouts muessen erzeugt sein
- GetDoc()->StopWorkStartupDelay();
- }
- else if (mePageKind == PK_HANDOUT)
- {
- SetHelpId( SID_HANDOUTMODE );
- GetActiveWindow()->SetHelpId( CMD_SID_HANDOUTMODE );
- GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUTMODE );
-
- // AutoLayouts muessen erzeugt sein
- GetDoc()->StopWorkStartupDelay();
- }
- else
- {
- SetHelpId( SD_IF_SDDRAWVIEWSHELL );
- GetActiveWindow()->SetHelpId( HID_SDDRAWVIEWSHELL );
- GetActiveWindow()->SetUniqueId( HID_SDDRAWVIEWSHELL );
- }
- }
-
- // Selektionsfunktion starten
- SfxRequest aReq(SID_OBJECT_SELECT, 0, GetDoc()->GetItemPool());
- FuPermanent(aReq);
- mpDrawView->SetFrameDragSingles(sal_True);
-
- if (pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)
- {
- mbZoomOnPage = sal_False;
- }
- else
- {
- mbZoomOnPage = sal_True;
- }
-
- mbIsRulerDrag = sal_False;
-
- String aName( RTL_CONSTASCII_USTRINGPARAM("DrawViewShell"));
- SetName (aName);
-
- mnLockCount = 0UL;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
-
- if( xMgr.is() )
- {
- mxScannerManager = ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager >(
- xMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager" )) ),
- ::com::sun::star::uno::UNO_QUERY );
-
- if( mxScannerManager.is() )
- {
- mxScannerListener = ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >(
- static_cast< ::cppu::OWeakObject* >( new ScannerEventListener( this ) ),
- ::com::sun::star::uno::UNO_QUERY );
- }
- }
-
- mpAnnotationManager.reset( new AnnotationManager( GetViewShellBase() ) );
- mpViewOverlayManager.reset( new ViewOverlayManager( GetViewShellBase() ) );
-}
-
-
-
-
-void DrawViewShell::Init (bool bIsMainViewShell)
-{
- ViewShell::Init(bIsMainViewShell);
-
- StartListening (*GetDocSh());
-}
-
-
-
-
-void DrawViewShell::Shutdown (void)
-{
- ViewShell::Shutdown();
-
- if(SlideShow::IsRunning( GetViewShellBase() ) )
- {
- // Turn off effects.
- GetDrawView()->SetAnimationMode(SDR_ANIMATION_DISABLE);
- }
-}
-
-
-
-
-css::uno::Reference<css::drawing::XDrawSubController> DrawViewShell::CreateSubController (void)
-{
- css::uno::Reference<css::drawing::XDrawSubController> xSubController;
-
- if (IsMainViewShell())
- {
- // Create uno sub controller for the main view shell.
- xSubController = css::uno::Reference<css::drawing::XDrawSubController>(
- new SdUnoDrawView (
- GetViewShellBase().GetDrawController(),
- *this,
- *GetView()));
- }
-
- return xSubController;
-}
-
-
-
-
-bool DrawViewShell::RelocateToParentWindow (::Window* pParentWindow)
-{
- // DrawViewShells can not be relocated to a new parent window at the
- // moment, so return <FALSE/> except when the given parent window is the
- // parent window that is already in use.
- return pParentWindow==GetParentWindow();
-}
-
-
-
-
-/*************************************************************************
-|*
-|* pruefe ob linienzuege gezeichnet werden muessen
-|*
-\************************************************************************/
-
-/*
- linienzuege werden ueber makros als folge von
- MoveTo (x, y)
- LineTo (x, y) [oder BezierTo (x, y)]
- LineTo (x, y)
- :
- dargestellt. einen endbefehl fuer die linienzuege
- gibt es nicht, also muessen alle befehle in den
- requests nach LineTo (BezierTo) abgetestet und die
- punktparameter gesammelt werden.
- der erste nicht-LineTo fuehrt dann dazu, dass aus
- den gesammelten punkten der linienzug erzeugt wird
-*/
-
-void DrawViewShell::CheckLineTo(SfxRequest& rReq)
-{
- (void)rReq;
-#ifdef DBG_UTIL
- if(rReq.IsAPI())
- {
- if(SID_LINETO == rReq.GetSlot() || SID_BEZIERTO == rReq.GetSlot() || SID_MOVETO == rReq.GetSlot() )
- {
- OSL_FAIL("DrawViewShell::CheckLineTo: slots SID_LINETO, SID_BEZIERTO, SID_MOVETO no longer supported.");
- }
- }
-#endif
-
- rReq.Ignore ();
-}
-
-/*************************************************************************
-|*
-|* veraendere die seitemparameter, wenn SID_PAGESIZE oder SID_PAGEMARGIN
-|*
-\************************************************************************/
-
-void DrawViewShell::SetupPage (Size &rSize,
- long nLeft,
- long nRight,
- long nUpper,
- long nLower,
- sal_Bool bSize,
- sal_Bool bMargin,
- sal_Bool bScaleAll)
-{
- sal_uInt16 nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
- sal_uInt16 i;
-
- for (i = 0; i < nPageCnt; i++)
- {
- /**********************************************************************
- * Erst alle MasterPages bearbeiten
- **********************************************************************/
- SdPage *pPage = GetDoc()->GetMasterSdPage(i, mePageKind);
-
- if( pPage )
- {
- if( bSize )
- {
- Rectangle aBorderRect(nLeft, nUpper, nRight, nLower);
- pPage->ScaleObjects(rSize, aBorderRect, bScaleAll);
- pPage->SetSize(rSize);
-
- }
- if( bMargin )
- {
- pPage->SetLftBorder(nLeft);
- pPage->SetRgtBorder(nRight);
- pPage->SetUppBorder(nUpper);
- pPage->SetLwrBorder(nLower);
- }
-
- if ( mePageKind == PK_STANDARD )
- {
- GetDoc()->GetMasterSdPage(i, PK_NOTES)->CreateTitleAndLayout();
- }
-
- pPage->CreateTitleAndLayout();
- }
- }
-
- nPageCnt = GetDoc()->GetSdPageCount(mePageKind);
-
- for (i = 0; i < nPageCnt; i++)
- {
- /**********************************************************************
- * Danach alle Pages bearbeiten
- **********************************************************************/
- SdPage *pPage = GetDoc()->GetSdPage(i, mePageKind);
-
- if( pPage )
- {
- if( bSize )
- {
- Rectangle aBorderRect(nLeft, nUpper, nRight, nLower);
- pPage->ScaleObjects(rSize, aBorderRect, bScaleAll);
- pPage->SetSize(rSize);
- }
- if( bMargin )
- {
- pPage->SetLftBorder(nLeft);
- pPage->SetRgtBorder(nRight);
- pPage->SetUppBorder(nUpper);
- pPage->SetLwrBorder(nLower);
- }
-
- if ( mePageKind == PK_STANDARD )
- {
- SdPage* pNotesPage = GetDoc()->GetSdPage(i, PK_NOTES);
- pNotesPage->SetAutoLayout( pNotesPage->GetAutoLayout() );
- }
-
- pPage->SetAutoLayout( pPage->GetAutoLayout() );
- }
- }
-
- if ( mePageKind == PK_STANDARD )
- {
- SdPage* pHandoutPage = GetDoc()->GetSdPage(0, PK_HANDOUT);
- pHandoutPage->CreateTitleAndLayout(sal_True);
- }
-
- long nWidth = mpActualPage->GetSize().Width();
- long nHeight = mpActualPage->GetSize().Height();
-
- Point aPageOrg(nWidth, nHeight / 2);
- Size aSize( nWidth * 3, nHeight * 2);
-
- InitWindows(aPageOrg, aSize, Point(-1, -1), sal_True);
-
- Point aVisAreaPos;
-
- if ( GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
- {
- aVisAreaPos = GetDocSh()->GetVisArea(ASPECT_CONTENT).TopLeft();
- }
-
- GetView()->SetWorkArea(Rectangle(Point() - aVisAreaPos - aPageOrg, aSize));
-
- UpdateScrollBars();
-
- Point aNewOrigin(mpActualPage->GetLftBorder(), mpActualPage->GetUppBorder());
- GetView()->GetSdrPageView()->SetPageOrigin(aNewOrigin);
-
- GetViewFrame()->GetBindings().Invalidate(SID_RULER_NULL_OFFSET);
-
- // auf (neue) Seitengroesse zoomen
- GetViewFrame()->GetDispatcher()->Execute(SID_SIZE_PAGE,
- SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
-}
-
-/*************************************************************************
-|*
-|* Statuswerte der Statusbar zurueckgeben
-|*
-\************************************************************************/
-
-void DrawViewShell::GetStatusBarState(SfxItemSet& rSet)
-{
- // Zoom-Item
- // Hier sollte der entsprechende Wert (Optimal ?, Seitenbreite oder
- // Seite) mit Hilfe des ZoomItems weitergegeben werden !!!
- if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ATTR_ZOOM ) )
- {
- if (GetDocSh()->IsUIActive() || (SlideShow::IsRunning(GetViewShellBase())) )
- {
- rSet.DisableItem( SID_ATTR_ZOOM );
- }
- else
- {
- SvxZoomItem* pZoomItem;
- sal_uInt16 nZoom = (sal_uInt16) GetActiveWindow()->GetZoom();
-
- if( mbZoomOnPage )
- pZoomItem = new SvxZoomItem( SVX_ZOOM_WHOLEPAGE, nZoom );
- else
- pZoomItem = new SvxZoomItem( SVX_ZOOM_PERCENT, nZoom );
-
- // Bereich einschraenken
- sal_uInt16 nZoomValues = SVX_ZOOM_ENABLE_ALL;
- SdrPageView* pPageView = mpDrawView->GetSdrPageView();
-
- if( ( pPageView && pPageView->GetObjList()->GetObjCount() == 0 ) )
- // || ( mpDrawView->GetMarkedObjectList().GetMarkCount() == 0 ) )
- {
- nZoomValues &= ~SVX_ZOOM_ENABLE_OPTIMAL;
- }
-
- pZoomItem->SetValueSet( nZoomValues );
- rSet.Put( *pZoomItem );
- delete pZoomItem;
- }
- }
- if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ATTR_ZOOMSLIDER ) )
- {
- rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetDoc() ) );
- if (GetDocSh()->IsUIActive() || (xSlideshow.is() && xSlideshow->isRunning()) || !GetActiveWindow() )
- {
- rSet.DisableItem( SID_ATTR_ZOOMSLIDER );
- }
- else
- {
- sd::Window * pActiveWindow = GetActiveWindow();
- SvxZoomSliderItem aZoomItem( (sal_uInt16) pActiveWindow->GetZoom(), (sal_uInt16)pActiveWindow->GetMinZoom(), (sal_uInt16)pActiveWindow->GetMaxZoom() ) ;
-
- SdrPageView* pPageView = mpDrawView->GetSdrPageView();
- if( pPageView )
- {
- Point aPagePos(0, 0);
- Size aPageSize = pPageView->GetPage()->GetSize();
-
- aPagePos.X() += aPageSize.Width() / 2;
- aPageSize.Width() = (long) (aPageSize.Width() * 1.03);
-
- aPagePos.Y() += aPageSize.Height() / 2;
- aPageSize.Height() = (long) (aPageSize.Height() * 1.03);
- aPagePos.Y() -= aPageSize.Height() / 2;
-
- aPagePos.X() -= aPageSize.Width() / 2;
-
- Rectangle aFullPageZoomRect( aPagePos, aPageSize );
- aZoomItem.AddSnappingPoint( pActiveWindow->GetZoomForRect( aFullPageZoomRect ) );
- }
- aZoomItem.AddSnappingPoint(100);
- rSet.Put( aZoomItem );
- }
- }
-
- Point aPos = GetActiveWindow()->PixelToLogic(maMousePos);
- mpDrawView->GetSdrPageView()->LogicToPagePos(aPos);
- Fraction aUIScale(GetDoc()->GetUIScale());
- aPos.X() = Fraction(aPos.X()) / aUIScale;
- aPos.Y() = Fraction(aPos.Y()) / aUIScale;
-
- // Position- und Groesse-Items
- if ( mpDrawView->IsAction() )
- {
- Rectangle aRect;
- mpDrawView->TakeActionRect( aRect );
-
- if ( aRect.IsEmpty() )
- rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
- else
- {
- mpDrawView->GetSdrPageView()->LogicToPagePos(aRect);
- aPos = aRect.TopLeft();
- aPos.X() = Fraction(aPos.X()) / aUIScale;
- aPos.Y() = Fraction(aPos.Y()) / aUIScale;
- rSet.Put( SfxPointItem( SID_ATTR_POSITION, aPos) );
- Size aSize( aRect.Right() - aRect.Left(), aRect.Bottom() - aRect.Top() );
- aSize.Height() = Fraction(aSize.Height()) / aUIScale;
- aSize.Width() = Fraction(aSize.Width()) / aUIScale;
- rSet.Put( SvxSizeItem( SID_ATTR_SIZE, aSize) );
- }
- }
- else
- {
- if ( mpDrawView->AreObjectsMarked() )
- {
- Rectangle aRect = mpDrawView->GetAllMarkedRect();
- mpDrawView->GetSdrPageView()->LogicToPagePos(aRect);
-
- // Show the position of the selected shape(s)
- Point aShapePosition (aRect.TopLeft());
- aShapePosition.X() = Fraction(aShapePosition.X()) / aUIScale;
- aShapePosition.Y() = Fraction(aShapePosition.Y()) / aUIScale;
- rSet.Put (SfxPointItem(SID_ATTR_POSITION, aShapePosition));
-
- Size aSize( aRect.Right() - aRect.Left(), aRect.Bottom() - aRect.Top() );
- aSize.Height() = Fraction(aSize.Height()) / aUIScale;
- aSize.Width() = Fraction(aSize.Width()) / aUIScale;
- rSet.Put( SvxSizeItem( SID_ATTR_SIZE, aSize) );
- }
- else
- {
- rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
- rSet.Put( SvxSizeItem( SID_ATTR_SIZE, Size( 0, 0 ) ) );
- }
- }
-
- // Display of current page and layer.
- if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_STATUS_PAGE ) )
- {
- // Allways show the slide/page number.
- String aString (SdResId( STR_SD_PAGE ));
- aString += sal_Unicode(' ');
- aString += UniString::CreateFromInt32( maTabControl.GetCurPageId() );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " / " ));
- aString += UniString::CreateFromInt32( GetDoc()->GetSdPageCount( mePageKind ) );
-
- // If in layer mode additionally show the layer that contains all
- // selected shapes of the page. If the shapes are distributed on
- // more than one layer, no layer name is shown.
- if (IsLayerModeActive())
- {
- SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
- SdrLayerID nLayer = 0, nOldLayer = 0;
- SdrLayer* pLayer = NULL;
- SdrObject* pObj = NULL;
- const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
- sal_uLong nMarkCount = rMarkList.GetMarkCount();
- bool bOneLayer = true;
-
- // Use the first ten selected shapes as a (hopefully
- // representative) sample of all shapes of the current page.
- // Detect whether they belong to the same layer.
- for( sal_uLong j = 0; j < nMarkCount && bOneLayer && j < 10; j++ )
- {
- pObj = rMarkList.GetMark( j )->GetMarkedSdrObj();
- if( pObj )
- {
- nLayer = pObj->GetLayer();
-
- if( j != 0 && nLayer != nOldLayer )
- bOneLayer = sal_False;
-
- nOldLayer = nLayer;
- }
- }
-
- // Append the layer name to the current page number.
- if( bOneLayer && nMarkCount )
- {
- pLayer = rLayerAdmin.GetLayerPerID( nLayer );
- if( pLayer )
- {
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " (" ));
- aString += pLayer->GetName();
- aString += sal_Unicode(')');
- }
- }
- }
-
- rSet.Put (SfxStringItem (SID_STATUS_PAGE, aString));
- }
- // Layout
- if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_STATUS_LAYOUT ) )
- {
- String aString = mpActualPage->GetLayoutName();
- aString.Erase( aString.SearchAscii( SD_LT_SEPARATOR ) );
- rSet.Put( SfxStringItem( SID_STATUS_LAYOUT, aString ) );
- }
-}
-
-
-
-void DrawViewShell::Notify (SfxBroadcaster&, const SfxHint& rHint)
-{
- const SfxSimpleHint* pSimple = dynamic_cast< const SfxSimpleHint* >(&rHint);
- if (pSimple!=NULL && pSimple->GetId()==SFX_HINT_MODECHANGED)
- {
- // Change to selection when turning on read-only mode.
- if(GetDocSh()->IsReadOnly() && dynamic_cast< FuSelection* >( GetCurrentFunction().get() ) )
- {
- SfxRequest aReq(SID_OBJECT_SELECT, 0, GetDoc()->GetItemPool());
- FuPermanent(aReq);
- }
-
- // Turn on design mode when document is not read-only.
- if (GetDocSh()->IsReadOnly() != mbReadOnly )
- {
- mbReadOnly = GetDocSh()->IsReadOnly();
-
- SfxBoolItem aItem( SID_FM_DESIGN_MODE, !mbReadOnly );
- GetViewFrame()->GetDispatcher()->Execute( SID_FM_DESIGN_MODE,
- SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
- }
- }
-
-}
-
-void DrawViewShell::ExecuteAnnotation (SfxRequest& rRequest)
-{
- if( mpAnnotationManager.get() )
- mpAnnotationManager->ExecuteAnnotation( rRequest );
-}
-
-// --------------------------------------------------------------------
-
-void DrawViewShell::GetAnnotationState (SfxItemSet& rItemSet )
-{
- if( mpAnnotationManager.get() )
- mpAnnotationManager->GetAnnotationState( rItemSet );
-}
-
-
-} // end of namespace sd
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */