15b190011SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 35b190011SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 45b190011SAndrew Rist * or more contributor license agreements. See the NOTICE file 55b190011SAndrew Rist * distributed with this work for additional information 65b190011SAndrew Rist * regarding copyright ownership. The ASF licenses this file 75b190011SAndrew Rist * to you under the Apache License, Version 2.0 (the 85b190011SAndrew Rist * "License"); you may not use this file except in compliance 95b190011SAndrew Rist * with the License. You may obtain a copy of the License at 105b190011SAndrew Rist * 115b190011SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 125b190011SAndrew Rist * 135b190011SAndrew Rist * Unless required by applicable law or agreed to in writing, 145b190011SAndrew Rist * software distributed under the License is distributed on an 155b190011SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 165b190011SAndrew Rist * KIND, either express or implied. See the License for the 175b190011SAndrew Rist * specific language governing permissions and limitations 185b190011SAndrew Rist * under the License. 195b190011SAndrew Rist * 205b190011SAndrew Rist *************************************************************/ 215b190011SAndrew Rist 225b190011SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sd.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "DrawViewShell.hxx" 28cdf0e10cSrcweir 29cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 30cdf0e10cSrcweir #include <editeng/eeitem.hxx> 31cdf0e10cSrcweir #include <editeng/tstpitem.hxx> 32cdf0e10cSrcweir #include <editeng/lrspitem.hxx> 33cdf0e10cSrcweir #include <editeng/protitem.hxx> 34cdf0e10cSrcweir #include <editeng/frmdiritem.hxx> 35cdf0e10cSrcweir #include <svx/ruler.hxx> 36cdf0e10cSrcweir #ifndef _SVX_RULERITEM_HXX 37cdf0e10cSrcweir #include <svx/rulritem.hxx> 38cdf0e10cSrcweir #endif 39cdf0e10cSrcweir #include <svx/zoomitem.hxx> 40cdf0e10cSrcweir #ifndef _SVXIDS_HRC 41cdf0e10cSrcweir #include <svx/svxids.hrc> 42cdf0e10cSrcweir #endif 43cdf0e10cSrcweir #include <svx/svdpagv.hxx> 44cdf0e10cSrcweir #include <sfx2/request.hxx> 45cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 46cdf0e10cSrcweir #include <tools/urlobj.hxx> 47cdf0e10cSrcweir #include <svl/aeitem.hxx> 48cdf0e10cSrcweir #include <svl/eitem.hxx> 49cdf0e10cSrcweir #include <svl/rectitem.hxx> 50cdf0e10cSrcweir #include <svl/stritem.hxx> 51cdf0e10cSrcweir #include <svx/svdoole2.hxx> 52cdf0e10cSrcweir #include <svl/itempool.hxx> 53cdf0e10cSrcweir #include <svl/ptitem.hxx> 54cdf0e10cSrcweir #include <basic/sbstar.hxx> 55cdf0e10cSrcweir #include <basic/sberrors.hxx> 56cdf0e10cSrcweir #include <svx/fmshell.hxx> 57cdf0e10cSrcweir #include <svx/f3dchild.hxx> 58cdf0e10cSrcweir #include <svx/float3d.hxx> 59cdf0e10cSrcweir #include "optsitem.hxx" 60cdf0e10cSrcweir 61cdf0e10cSrcweir #include "app.hrc" 62cdf0e10cSrcweir #include "glob.hrc" 63cdf0e10cSrcweir #include "strings.hrc" 64cdf0e10cSrcweir #include "res_bmp.hrc" 65cdf0e10cSrcweir 66cdf0e10cSrcweir #include "sdundogr.hxx" 67cdf0e10cSrcweir #include "undopage.hxx" 68cdf0e10cSrcweir #include "glob.hxx" 69cdf0e10cSrcweir #include "app.hxx" 70cdf0e10cSrcweir #include "fupoor.hxx" 71cdf0e10cSrcweir #include "slideshow.hxx" 72cdf0e10cSrcweir #ifndef SD_FRAME_VIEW 73cdf0e10cSrcweir #include "FrameView.hxx" 74cdf0e10cSrcweir #endif 75cdf0e10cSrcweir #include "sdpage.hxx" 76cdf0e10cSrcweir #include "Window.hxx" 77cdf0e10cSrcweir #include "sdresid.hxx" 78cdf0e10cSrcweir #include "drawview.hxx" 79cdf0e10cSrcweir #include "drawdoc.hxx" 80cdf0e10cSrcweir #include "DrawViewShell.hxx" 81cdf0e10cSrcweir #include "Ruler.hxx" 82cdf0e10cSrcweir #include "DrawDocShell.hxx" 83cdf0e10cSrcweir #include "headerfooterdlg.hxx" 84cdf0e10cSrcweir #include "masterlayoutdlg.hxx" 85cdf0e10cSrcweir #include "Ruler.hxx" 86cdf0e10cSrcweir #include "DrawDocShell.hxx" 87cdf0e10cSrcweir #include "sdabstdlg.hxx" 88cdf0e10cSrcweir #include <sfx2/ipclient.hxx> 89cdf0e10cSrcweir #include <tools/diagnose_ex.h> 90cdf0e10cSrcweir #include "ViewShellBase.hxx" 91cdf0e10cSrcweir #include "FormShellManager.hxx" 92cdf0e10cSrcweir #include "LayerTabBar.hxx" 93cdf0e10cSrcweir #include "sdabstdlg.hxx" 94cdf0e10cSrcweir #include "sdpage.hxx" 95cdf0e10cSrcweir #include <com/sun/star/drawing/framework/XControllerManager.hpp> 96cdf0e10cSrcweir #include <com/sun/star/drawing/framework/XConfigurationController.hpp> 97cdf0e10cSrcweir #include <com/sun/star/drawing/framework/XConfiguration.hpp> 98cdf0e10cSrcweir #include <com/sun/star/frame/XFrame.hpp> 99*766ce4d0SZheng Fan #include <editeng/lspcitem.hxx> 100*766ce4d0SZheng Fan #include <editeng/ulspitem.hxx> 101cdf0e10cSrcweir using namespace ::com::sun::star::uno; 102cdf0e10cSrcweir using namespace ::com::sun::star::drawing::framework; 103cdf0e10cSrcweir using ::com::sun::star::frame::XFrame; 104cdf0e10cSrcweir using ::com::sun::star::frame::XController; 105cdf0e10cSrcweir 106cdf0e10cSrcweir namespace sd { 107cdf0e10cSrcweir 108cdf0e10cSrcweir #ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED 109cdf0e10cSrcweir #define SO2_DECL_SVINPLACEOBJECT_DEFINED 110cdf0e10cSrcweir SO2_DECL_REF(SvInPlaceObject) 111cdf0e10cSrcweir #endif 112cdf0e10cSrcweir 113cdf0e10cSrcweir 114cdf0e10cSrcweir 115cdf0e10cSrcweir /************************************************************************* 116cdf0e10cSrcweir |* 117cdf0e10cSrcweir |* SfxRequests fuer Controller bearbeiten 118cdf0e10cSrcweir |* 119cdf0e10cSrcweir \************************************************************************/ 120cdf0e10cSrcweir 121cdf0e10cSrcweir void DrawViewShell::ExecCtrl(SfxRequest& rReq) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir // waehrend einer Diashow wird nichts ausser dem Seitenwechsel und dem 124cdf0e10cSrcweir // Sprung zur Bookmark ausgefuehrt! 125cdf0e10cSrcweir if( HasCurrentFunction(SID_PRESENTATION) && 126cdf0e10cSrcweir rReq.GetSlot() != SID_SWITCHPAGE && 127cdf0e10cSrcweir rReq.GetSlot() != SID_JUMPTOMARK) 128cdf0e10cSrcweir return; 129cdf0e10cSrcweir 130cdf0e10cSrcweir CheckLineTo (rReq); 131cdf0e10cSrcweir 132cdf0e10cSrcweir // End text edit mode for some requests. 133cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot(); 134cdf0e10cSrcweir switch (nSlot) 135cdf0e10cSrcweir { 136cdf0e10cSrcweir case SID_OUTPUT_QUALITY_COLOR: 137cdf0e10cSrcweir case SID_OUTPUT_QUALITY_GRAYSCALE: 138cdf0e10cSrcweir case SID_OUTPUT_QUALITY_BLACKWHITE: 139cdf0e10cSrcweir case SID_OUTPUT_QUALITY_CONTRAST: 140cdf0e10cSrcweir // Do nothing. 141cdf0e10cSrcweir break; 142cdf0e10cSrcweir default: 143cdf0e10cSrcweir if ( mpDrawView->IsTextEdit() ) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir mpDrawView->SdrEndTextEdit(); 146cdf0e10cSrcweir } 147cdf0e10cSrcweir } 148cdf0e10cSrcweir 149cdf0e10cSrcweir // sal_uInt16 nSlot = rReq.GetSlot(); 150cdf0e10cSrcweir switch (nSlot) 151cdf0e10cSrcweir { 152cdf0e10cSrcweir case SID_SWITCHPAGE: // BASIC 153cdf0e10cSrcweir { 154cdf0e10cSrcweir sal_Bool bWasBasic = sal_False; 155cdf0e10cSrcweir 156cdf0e10cSrcweir // switch page in running slide show 157cdf0e10cSrcweir if(SlideShow::IsRunning(GetViewShellBase()) && rReq.GetArgs()) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir SFX_REQUEST_ARG(rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, sal_False); 160cdf0e10cSrcweir SlideShow::GetSlideShow(GetViewShellBase())->jumpToPageNumber((sal_Int32)((pWhatPage->GetValue()-1)>>1)); 161cdf0e10cSrcweir } 162cdf0e10cSrcweir else 163cdf0e10cSrcweir { 164cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs (); 165cdf0e10cSrcweir sal_uInt16 nSelectedPage = 0; 166cdf0e10cSrcweir 167cdf0e10cSrcweir if (! pArgs) 168cdf0e10cSrcweir { 169cdf0e10cSrcweir nSelectedPage = maTabControl.GetCurPageId() - 1; 170cdf0e10cSrcweir } 171cdf0e10cSrcweir else if (pArgs->Count () == 2) 172cdf0e10cSrcweir { 173cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, sal_False); 174cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, sal_False); 175cdf0e10cSrcweir 176cdf0e10cSrcweir sal_Int32 nWhatPage = (sal_Int32)pWhatPage->GetValue (); 177cdf0e10cSrcweir sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue (); 178cdf0e10cSrcweir if (! CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT)) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir StarBASIC::FatalError (SbERR_BAD_PROP_VALUE); 181cdf0e10cSrcweir rReq.Ignore (); 182cdf0e10cSrcweir break; 183cdf0e10cSrcweir } 184cdf0e10cSrcweir else if (meEditMode != EM_MASTERPAGE) 185cdf0e10cSrcweir { 186cdf0e10cSrcweir if (! CHECK_RANGE (0, nWhatPage, GetDoc()->GetSdPageCount((PageKind)nWhatKind))) 187cdf0e10cSrcweir { 188cdf0e10cSrcweir StarBASIC::FatalError (SbERR_BAD_PROP_VALUE); 189cdf0e10cSrcweir rReq.Ignore (); 190cdf0e10cSrcweir break; 191cdf0e10cSrcweir } 192cdf0e10cSrcweir 193cdf0e10cSrcweir nSelectedPage = (short) nWhatPage; 194cdf0e10cSrcweir mePageKind = (PageKind) nWhatKind; 195cdf0e10cSrcweir bWasBasic = sal_True; 196cdf0e10cSrcweir } 197cdf0e10cSrcweir } 198cdf0e10cSrcweir else 199cdf0e10cSrcweir { 200cdf0e10cSrcweir StarBASIC::FatalError (SbERR_WRONG_ARGS); 201cdf0e10cSrcweir rReq.Ignore (); 202cdf0e10cSrcweir break; 203cdf0e10cSrcweir } 204cdf0e10cSrcweir 205cdf0e10cSrcweir 206cdf0e10cSrcweir if( GetDocSh() && (GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)) 207cdf0e10cSrcweir GetDocSh()->SetModified(); 208cdf0e10cSrcweir 209cdf0e10cSrcweir SwitchPage(nSelectedPage); 210cdf0e10cSrcweir 211cdf0e10cSrcweir if(HasCurrentFunction(SID_BEZIER_EDIT)) 212cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON); 213cdf0e10cSrcweir 214cdf0e10cSrcweir Invalidate(); 215cdf0e10cSrcweir InvalidateWindows(); 216cdf0e10cSrcweir rReq.Done (); 217cdf0e10cSrcweir } 218cdf0e10cSrcweir break; 219cdf0e10cSrcweir } 220cdf0e10cSrcweir 221cdf0e10cSrcweir case SID_SWITCHLAYER: // BASIC 222cdf0e10cSrcweir { 223cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs (); 224cdf0e10cSrcweir sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId (); 225cdf0e10cSrcweir 226cdf0e10cSrcweir if( pArgs && pArgs->Count () == 1) 227cdf0e10cSrcweir { 228cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); 229cdf0e10cSrcweir if( pWhatLayer ) 230cdf0e10cSrcweir nCurPage = (short) pWhatLayer->GetValue (); 231cdf0e10cSrcweir } 232cdf0e10cSrcweir 233cdf0e10cSrcweir mpDrawView->SetActiveLayer( GetLayerTabControl()->GetPageText(nCurPage) ); 234cdf0e10cSrcweir Invalidate(); 235cdf0e10cSrcweir rReq.Done (); 236cdf0e10cSrcweir 237cdf0e10cSrcweir break; 238cdf0e10cSrcweir } 239cdf0e10cSrcweir 240cdf0e10cSrcweir case SID_PAGEMODE: // BASIC 241cdf0e10cSrcweir { 242cdf0e10cSrcweir 243cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs (); 244cdf0e10cSrcweir 245cdf0e10cSrcweir if ( pArgs && pArgs->Count () == 2) 246cdf0e10cSrcweir { 247cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pIsActive, SfxBoolItem, ID_VAL_ISACTIVE, sal_False); 248cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, sal_False); 249cdf0e10cSrcweir 250cdf0e10cSrcweir sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue (); 251cdf0e10cSrcweir if (CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT)) 252cdf0e10cSrcweir { 253cdf0e10cSrcweir mbIsLayerModeActive = pIsActive->GetValue (); 254cdf0e10cSrcweir mePageKind = (PageKind) nWhatKind; 255cdf0e10cSrcweir } 256cdf0e10cSrcweir } 257cdf0e10cSrcweir 258cdf0e10cSrcweir // Default-Layer der Page einschalten 259cdf0e10cSrcweir mpDrawView->SetActiveLayer( String( SdResId(STR_LAYER_LAYOUT) ) ); 260cdf0e10cSrcweir 261cdf0e10cSrcweir ChangeEditMode(EM_PAGE, mbIsLayerModeActive); 262cdf0e10cSrcweir 263cdf0e10cSrcweir Invalidate(); 264cdf0e10cSrcweir rReq.Done (); 265cdf0e10cSrcweir 266cdf0e10cSrcweir break; 267cdf0e10cSrcweir } 268cdf0e10cSrcweir 269cdf0e10cSrcweir case SID_LAYERMODE: // BASIC 270cdf0e10cSrcweir { 271cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs (); 272cdf0e10cSrcweir 273cdf0e10cSrcweir if ( pArgs && pArgs->Count () == 2) 274cdf0e10cSrcweir { 275cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatLayerMode, SfxBoolItem, ID_VAL_ISACTIVE, sal_False); 276cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); 277cdf0e10cSrcweir 278cdf0e10cSrcweir sal_Int32 nWhatLayer = (sal_Int32)pWhatLayer->GetValue (); 279cdf0e10cSrcweir if (CHECK_RANGE (EM_PAGE, nWhatLayer, EM_MASTERPAGE)) 280cdf0e10cSrcweir { 281cdf0e10cSrcweir mbIsLayerModeActive = pWhatLayerMode->GetValue (); 282cdf0e10cSrcweir meEditMode = (EditMode) nWhatLayer; 283cdf0e10cSrcweir } 284cdf0e10cSrcweir } 285cdf0e10cSrcweir 286cdf0e10cSrcweir ChangeEditMode(meEditMode, !mbIsLayerModeActive); 287cdf0e10cSrcweir 288cdf0e10cSrcweir Invalidate(); 289cdf0e10cSrcweir rReq.Done (); 290cdf0e10cSrcweir 291cdf0e10cSrcweir break; 292cdf0e10cSrcweir } 293cdf0e10cSrcweir 294cdf0e10cSrcweir case SID_HEADER_AND_FOOTER: 295cdf0e10cSrcweir case SID_INSERT_PAGE_NUMBER: 296cdf0e10cSrcweir case SID_INSERT_DATE_TIME: 297cdf0e10cSrcweir { 298cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); 299cdf0e10cSrcweir AbstractHeaderFooterDialog* pDlg = pFact ? pFact->CreateHeaderFooterDialog( (::ViewShell*)this, GetActiveWindow(), GetDoc(), mpActualPage ) : 0; 300cdf0e10cSrcweir if( pDlg ) 301cdf0e10cSrcweir { 302cdf0e10cSrcweir pDlg->Execute(); 303cdf0e10cSrcweir delete pDlg; 304cdf0e10cSrcweir 305cdf0e10cSrcweir GetActiveWindow()->Invalidate(); 306cdf0e10cSrcweir UpdatePreview( mpActualPage ); 307cdf0e10cSrcweir } 308cdf0e10cSrcweir 309cdf0e10cSrcweir Invalidate(); 310cdf0e10cSrcweir rReq.Done (); 311cdf0e10cSrcweir 312cdf0e10cSrcweir break; 313cdf0e10cSrcweir } 314cdf0e10cSrcweir 315cdf0e10cSrcweir case SID_MASTER_LAYOUTS: 316cdf0e10cSrcweir { 317cdf0e10cSrcweir SdPage* pPage = GetActualPage(); 318cdf0e10cSrcweir if (meEditMode == EM_MASTERPAGE) 319cdf0e10cSrcweir // Use the master page of the current page. 320cdf0e10cSrcweir pPage = static_cast<SdPage*>(&pPage->TRG_GetMasterPage()); 321cdf0e10cSrcweir 322cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); 323cdf0e10cSrcweir VclAbstractDialog* pDlg = pFact ? pFact->CreateMasterLayoutDialog( GetActiveWindow(), GetDoc(), pPage ) : 0; 324cdf0e10cSrcweir if( pDlg ) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir pDlg->Execute(); 327cdf0e10cSrcweir delete pDlg; 328cdf0e10cSrcweir Invalidate(); 329cdf0e10cSrcweir } 330cdf0e10cSrcweir rReq.Done (); 331cdf0e10cSrcweir break; 332cdf0e10cSrcweir } 333cdf0e10cSrcweir case SID_OBJECTRESIZE: 334cdf0e10cSrcweir { 335cdf0e10cSrcweir /****************************************************************** 336cdf0e10cSrcweir * Der Server moechte die Clientgrosse verandern 337cdf0e10cSrcweir ******************************************************************/ 338cdf0e10cSrcweir OSL_ASSERT (GetViewShell()!=NULL); 339cdf0e10cSrcweir SfxInPlaceClient* pIPClient = GetViewShell()->GetIPClient(); 340cdf0e10cSrcweir 341cdf0e10cSrcweir if ( pIPClient && pIPClient->IsObjectInPlaceActive() ) 342cdf0e10cSrcweir { 343cdf0e10cSrcweir const SfxRectangleItem& rRect = 344cdf0e10cSrcweir (SfxRectangleItem&)rReq.GetArgs()->Get(SID_OBJECTRESIZE); 345cdf0e10cSrcweir Rectangle aRect( GetActiveWindow()->PixelToLogic( rRect.GetValue() ) ); 346cdf0e10cSrcweir 347cdf0e10cSrcweir if ( mpDrawView->AreObjectsMarked() ) 348cdf0e10cSrcweir { 349cdf0e10cSrcweir const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList(); 350cdf0e10cSrcweir 351cdf0e10cSrcweir if (rMarkList.GetMarkCount() == 1) 352cdf0e10cSrcweir { 353cdf0e10cSrcweir SdrMark* pMark = rMarkList.GetMark(0); 354cdf0e10cSrcweir SdrObject* pObj = pMark->GetMarkedSdrObj(); 355cdf0e10cSrcweir 356cdf0e10cSrcweir SdrOle2Obj* pOle2Obj = dynamic_cast< SdrOle2Obj* >( pObj ); 357cdf0e10cSrcweir if(pOle2Obj) 358cdf0e10cSrcweir { 359cdf0e10cSrcweir if( pOle2Obj->GetObjRef().is() ) 360cdf0e10cSrcweir { 361cdf0e10cSrcweir pOle2Obj->SetLogicRect(aRect); 362cdf0e10cSrcweir } 363cdf0e10cSrcweir } 364cdf0e10cSrcweir } 365cdf0e10cSrcweir } 366cdf0e10cSrcweir } 367cdf0e10cSrcweir rReq.Ignore (); 368cdf0e10cSrcweir break; 369cdf0e10cSrcweir } 370cdf0e10cSrcweir 371cdf0e10cSrcweir case SID_RELOAD: 372cdf0e10cSrcweir { 373cdf0e10cSrcweir // #83951# 374cdf0e10cSrcweir sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId(); 375cdf0e10cSrcweir SfxViewFrame* pFrame = GetViewFrame(); 376cdf0e10cSrcweir 377cdf0e10cSrcweir try 378cdf0e10cSrcweir { 379cdf0e10cSrcweir Reference< XFrame > xFrame( pFrame->GetFrame().GetFrameInterface(), UNO_SET_THROW ); 380cdf0e10cSrcweir 381cdf0e10cSrcweir // Save the current configuration of panes and views. 382cdf0e10cSrcweir Reference<XControllerManager> xControllerManager ( 383cdf0e10cSrcweir GetViewShellBase().GetController(), UNO_QUERY_THROW); 384cdf0e10cSrcweir Reference<XConfigurationController> xConfigurationController ( 385cdf0e10cSrcweir xControllerManager->getConfigurationController(), UNO_QUERY_THROW ); 386cdf0e10cSrcweir Reference<XConfiguration> xConfiguration ( 387cdf0e10cSrcweir xConfigurationController->getRequestedConfiguration(), UNO_SET_THROW ); 388cdf0e10cSrcweir 389cdf0e10cSrcweir SfxChildWindow* pWindow = pFrame->GetChildWindow(nId); 390cdf0e10cSrcweir if(pWindow) 391cdf0e10cSrcweir { 392cdf0e10cSrcweir Svx3DWin* p3DWin = (Svx3DWin*)(pWindow->GetWindow()); 393cdf0e10cSrcweir if(p3DWin) 394cdf0e10cSrcweir p3DWin->DocumentReload(); 395cdf0e10cSrcweir } 396cdf0e10cSrcweir 397cdf0e10cSrcweir // Normale Weiterleitung an ViewFrame zur Ausfuehrung 398cdf0e10cSrcweir GetViewFrame()->ExecuteSlot(rReq); 399cdf0e10cSrcweir 400cdf0e10cSrcweir // From here on we must cope with this object and the frame already being 401cdf0e10cSrcweir // deleted. Do not call any methods or use data members. 402cdf0e10cSrcweir Reference<XController> xController( xFrame->getController(), UNO_SET_THROW ); 403cdf0e10cSrcweir 404cdf0e10cSrcweir // Restore the configuration. 405cdf0e10cSrcweir xControllerManager = Reference<XControllerManager>( xController, UNO_QUERY_THROW); 406cdf0e10cSrcweir xConfigurationController = Reference<XConfigurationController>( 407cdf0e10cSrcweir xControllerManager->getConfigurationController()); 408cdf0e10cSrcweir if ( ! xConfigurationController.is()) 409cdf0e10cSrcweir throw RuntimeException(); 410cdf0e10cSrcweir xConfigurationController->restoreConfiguration(xConfiguration); 411cdf0e10cSrcweir } 412cdf0e10cSrcweir catch (RuntimeException&) 413cdf0e10cSrcweir { 414cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION(); 415cdf0e10cSrcweir } 416cdf0e10cSrcweir 417cdf0e10cSrcweir // We have to return immediately to avoid accessing this object. 418cdf0e10cSrcweir return; 419cdf0e10cSrcweir } 420cdf0e10cSrcweir 421cdf0e10cSrcweir case SID_JUMPTOMARK: 422cdf0e10cSrcweir { 423cdf0e10cSrcweir if( rReq.GetArgs() ) 424cdf0e10cSrcweir { 425cdf0e10cSrcweir SFX_REQUEST_ARG(rReq, pBookmark, SfxStringItem, SID_JUMPTOMARK, sal_False); 426cdf0e10cSrcweir 427cdf0e10cSrcweir if (pBookmark) 428cdf0e10cSrcweir { 429cdf0e10cSrcweir UniString sBookmark( INetURLObject::decode( pBookmark->GetValue(), '%', INetURLObject::DECODE_WITH_CHARSET ) ); 430cdf0e10cSrcweir 431cdf0e10cSrcweir rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetViewShellBase() ) ); 432cdf0e10cSrcweir if(xSlideshow.is() && xSlideshow->isRunning()) 433cdf0e10cSrcweir { 434cdf0e10cSrcweir xSlideshow->jumpToBookmark(sBookmark); 435cdf0e10cSrcweir } 436cdf0e10cSrcweir else 437cdf0e10cSrcweir { 438cdf0e10cSrcweir GotoBookmark( sBookmark ); 439cdf0e10cSrcweir } 440cdf0e10cSrcweir } 441cdf0e10cSrcweir } 442cdf0e10cSrcweir rReq.Done(); 443cdf0e10cSrcweir break; 444cdf0e10cSrcweir } 445cdf0e10cSrcweir 446cdf0e10cSrcweir case SID_OUTPUT_QUALITY_COLOR: 447cdf0e10cSrcweir case SID_OUTPUT_QUALITY_GRAYSCALE: 448cdf0e10cSrcweir case SID_OUTPUT_QUALITY_BLACKWHITE: 449cdf0e10cSrcweir case SID_OUTPUT_QUALITY_CONTRAST: 450cdf0e10cSrcweir { 451cdf0e10cSrcweir ExecReq( rReq ); 452cdf0e10cSrcweir break; 453cdf0e10cSrcweir } 454cdf0e10cSrcweir 455cdf0e10cSrcweir case SID_MAIL_SCROLLBODY_PAGEDOWN: 456cdf0e10cSrcweir { 457cdf0e10cSrcweir ExecReq( rReq ); 458cdf0e10cSrcweir break; 459cdf0e10cSrcweir } 460cdf0e10cSrcweir 461cdf0e10cSrcweir case SID_ATTR_YEAR2000: 462cdf0e10cSrcweir { 463cdf0e10cSrcweir FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell(); 464cdf0e10cSrcweir if (pFormShell != NULL) 465cdf0e10cSrcweir { 466cdf0e10cSrcweir const SfxPoolItem* pItem; 467cdf0e10cSrcweir if (rReq.GetArgs()->GetItemState( 468cdf0e10cSrcweir SID_ATTR_YEAR2000, sal_True, &pItem) == SFX_ITEM_SET) 469cdf0e10cSrcweir pFormShell->SetY2KState ( 470cdf0e10cSrcweir static_cast<const SfxUInt16Item*>(pItem)->GetValue()); 471cdf0e10cSrcweir } 472cdf0e10cSrcweir 473cdf0e10cSrcweir rReq.Done(); 474cdf0e10cSrcweir } 475cdf0e10cSrcweir break; 476cdf0e10cSrcweir 477cdf0e10cSrcweir case SID_OPT_LOCALE_CHANGED: 478cdf0e10cSrcweir { 479cdf0e10cSrcweir GetActiveWindow()->Invalidate(); 480cdf0e10cSrcweir UpdatePreview( mpActualPage ); 481cdf0e10cSrcweir rReq.Done(); 482cdf0e10cSrcweir } 483cdf0e10cSrcweir 484cdf0e10cSrcweir default: 485cdf0e10cSrcweir break; 486cdf0e10cSrcweir } 487cdf0e10cSrcweir } 488cdf0e10cSrcweir 489cdf0e10cSrcweir /************************************************************************* 490cdf0e10cSrcweir |* 491cdf0e10cSrcweir |* SfxRequests fuer Lineale bearbeiten 492cdf0e10cSrcweir |* 493cdf0e10cSrcweir \************************************************************************/ 494cdf0e10cSrcweir 495cdf0e10cSrcweir void DrawViewShell::ExecRuler(SfxRequest& rReq) 496cdf0e10cSrcweir { 497cdf0e10cSrcweir // waehrend einer Diashow wird nichts ausgefuehrt! 498cdf0e10cSrcweir if(HasCurrentFunction(SID_PRESENTATION)) 499cdf0e10cSrcweir return; 500cdf0e10cSrcweir 501cdf0e10cSrcweir CheckLineTo (rReq); 502cdf0e10cSrcweir 503cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 504cdf0e10cSrcweir const Point aPagePos( GetActiveWindow()->GetViewOrigin() ); 505cdf0e10cSrcweir Size aPageSize = mpActualPage->GetSize(); 506cdf0e10cSrcweir Size aViewSize = GetActiveWindow()->GetViewSize(); 507cdf0e10cSrcweir SdUndoGroup* pUndoGroup = NULL; 508cdf0e10cSrcweir 509cdf0e10cSrcweir if ( rReq.GetSlot() == SID_ATTR_LONG_LRSPACE || 510cdf0e10cSrcweir rReq.GetSlot() == SID_ATTR_LONG_ULSPACE ) 511cdf0e10cSrcweir { 512cdf0e10cSrcweir pUndoGroup = new SdUndoGroup(GetDoc()); 513cdf0e10cSrcweir String aString(SdResId(STR_UNDO_CHANGE_PAGEBORDER)); 514cdf0e10cSrcweir pUndoGroup->SetComment(aString); 515cdf0e10cSrcweir } 516cdf0e10cSrcweir 517cdf0e10cSrcweir switch ( rReq.GetSlot() ) 518cdf0e10cSrcweir { 519cdf0e10cSrcweir case SID_ATTR_LONG_LRSPACE: 520cdf0e10cSrcweir { 521cdf0e10cSrcweir const SvxLongLRSpaceItem& rLRSpace = (const SvxLongLRSpaceItem&) 522cdf0e10cSrcweir pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_LRSPACE)); 523cdf0e10cSrcweir 524cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 525cdf0e10cSrcweir { 526cdf0e10cSrcweir Rectangle aRect = maMarkRect; 527cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() + aPagePos); 528cdf0e10cSrcweir aRect.Left() = rLRSpace.GetLeft(); 529cdf0e10cSrcweir aRect.Right() = aViewSize.Width() - rLRSpace.GetRight(); 530cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() - aPagePos); 531cdf0e10cSrcweir if ( aRect != maMarkRect) 532cdf0e10cSrcweir { 533cdf0e10cSrcweir mpDrawView->SetAllMarkedRect(aRect); 534cdf0e10cSrcweir maMarkRect = mpDrawView->GetAllMarkedRect(); 535cdf0e10cSrcweir Invalidate( SID_RULER_OBJECT ); 536cdf0e10cSrcweir } 537cdf0e10cSrcweir } 538cdf0e10cSrcweir else 539cdf0e10cSrcweir { 540cdf0e10cSrcweir long nLeft = Max(0L, rLRSpace.GetLeft() - aPagePos.X()); 541cdf0e10cSrcweir long nRight = Max(0L, rLRSpace.GetRight() + aPagePos.X() + 542cdf0e10cSrcweir aPageSize.Width() - aViewSize.Width()); 543cdf0e10cSrcweir 544cdf0e10cSrcweir sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind); 545cdf0e10cSrcweir sal_uInt16 i; 546cdf0e10cSrcweir for ( i = 0; i < nPageCnt; i++) 547cdf0e10cSrcweir { 548cdf0e10cSrcweir SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind); 549cdf0e10cSrcweir SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(), 550cdf0e10cSrcweir pPage, 551cdf0e10cSrcweir pPage->GetLftBorder(), 552cdf0e10cSrcweir pPage->GetRgtBorder(), 553cdf0e10cSrcweir nLeft, nRight); 554cdf0e10cSrcweir pUndoGroup->AddAction(pUndo); 555cdf0e10cSrcweir pPage->SetLftBorder(nLeft); 556cdf0e10cSrcweir pPage->SetRgtBorder(nRight); 557cdf0e10cSrcweir } 558cdf0e10cSrcweir nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind); 559cdf0e10cSrcweir 560cdf0e10cSrcweir for (i = 0; i < nPageCnt; i++) 561cdf0e10cSrcweir { 562cdf0e10cSrcweir SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind); 563cdf0e10cSrcweir SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(), 564cdf0e10cSrcweir pPage, 565cdf0e10cSrcweir pPage->GetLftBorder(), 566cdf0e10cSrcweir pPage->GetRgtBorder(), 567cdf0e10cSrcweir nLeft, nRight); 568cdf0e10cSrcweir pUndoGroup->AddAction(pUndo); 569cdf0e10cSrcweir pPage->SetLftBorder(nLeft); 570cdf0e10cSrcweir pPage->SetRgtBorder(nRight); 571cdf0e10cSrcweir } 572cdf0e10cSrcweir InvalidateWindows(); 573cdf0e10cSrcweir } 574cdf0e10cSrcweir break; 575cdf0e10cSrcweir } 576cdf0e10cSrcweir case SID_ATTR_LONG_ULSPACE: 577cdf0e10cSrcweir { 578cdf0e10cSrcweir const SvxLongULSpaceItem& rULSpace = (const SvxLongULSpaceItem&) 579cdf0e10cSrcweir pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_ULSPACE)); 580cdf0e10cSrcweir 581cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 582cdf0e10cSrcweir { 583cdf0e10cSrcweir Rectangle aRect = maMarkRect; 584cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() + aPagePos); 585cdf0e10cSrcweir aRect.Top() = rULSpace.GetUpper(); 586cdf0e10cSrcweir aRect.Bottom() = aViewSize.Height() - rULSpace.GetLower(); 587cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() - aPagePos); 588cdf0e10cSrcweir 589cdf0e10cSrcweir if ( aRect != maMarkRect) 590cdf0e10cSrcweir { 591cdf0e10cSrcweir mpDrawView->SetAllMarkedRect(aRect); 592cdf0e10cSrcweir maMarkRect = mpDrawView->GetAllMarkedRect(); 593cdf0e10cSrcweir Invalidate( SID_RULER_OBJECT ); 594cdf0e10cSrcweir } 595cdf0e10cSrcweir } 596cdf0e10cSrcweir else 597cdf0e10cSrcweir { 598cdf0e10cSrcweir long nUpper = Max(0L, rULSpace.GetUpper() - aPagePos.Y()); 599cdf0e10cSrcweir long nLower = Max(0L, rULSpace.GetLower() + aPagePos.Y() + 600cdf0e10cSrcweir aPageSize.Height() - aViewSize.Height()); 601cdf0e10cSrcweir 602cdf0e10cSrcweir sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind); 603cdf0e10cSrcweir sal_uInt16 i; 604cdf0e10cSrcweir for ( i = 0; i < nPageCnt; i++) 605cdf0e10cSrcweir { 606cdf0e10cSrcweir SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind); 607cdf0e10cSrcweir SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(), 608cdf0e10cSrcweir pPage, 609cdf0e10cSrcweir pPage->GetUppBorder(), 610cdf0e10cSrcweir pPage->GetLwrBorder(), 611cdf0e10cSrcweir nUpper, nLower); 612cdf0e10cSrcweir pUndoGroup->AddAction(pUndo); 613cdf0e10cSrcweir pPage->SetUppBorder(nUpper); 614cdf0e10cSrcweir pPage->SetLwrBorder(nLower); 615cdf0e10cSrcweir } 616cdf0e10cSrcweir nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind); 617cdf0e10cSrcweir 618cdf0e10cSrcweir for (i = 0; i < nPageCnt; i++) 619cdf0e10cSrcweir { 620cdf0e10cSrcweir SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind); 621cdf0e10cSrcweir SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(), 622cdf0e10cSrcweir pPage, 623cdf0e10cSrcweir pPage->GetUppBorder(), 624cdf0e10cSrcweir pPage->GetLwrBorder(), 625cdf0e10cSrcweir nUpper, nLower); 626cdf0e10cSrcweir pUndoGroup->AddAction(pUndo); 627cdf0e10cSrcweir pPage->SetUppBorder(nUpper); 628cdf0e10cSrcweir pPage->SetLwrBorder(nLower); 629cdf0e10cSrcweir } 630cdf0e10cSrcweir InvalidateWindows(); 631cdf0e10cSrcweir } 632cdf0e10cSrcweir break; 633cdf0e10cSrcweir } 634cdf0e10cSrcweir 635cdf0e10cSrcweir case SID_RULER_OBJECT: 636cdf0e10cSrcweir { 637cdf0e10cSrcweir Rectangle aRect = maMarkRect; 638cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() + aPagePos); 639cdf0e10cSrcweir 640cdf0e10cSrcweir const SvxObjectItem& rOI = (const SvxObjectItem&) 641cdf0e10cSrcweir pArgs->Get(GetPool().GetWhich(SID_RULER_OBJECT)); 642cdf0e10cSrcweir 643cdf0e10cSrcweir if ( rOI.GetStartX() != rOI.GetEndX() ) 644cdf0e10cSrcweir { 645cdf0e10cSrcweir aRect.Left() = rOI.GetStartX(); 646cdf0e10cSrcweir aRect.Right() = rOI.GetEndX(); 647cdf0e10cSrcweir } 648cdf0e10cSrcweir if ( rOI.GetStartY() != rOI.GetEndY() ) 649cdf0e10cSrcweir { 650cdf0e10cSrcweir aRect.Top() = rOI.GetStartY(); 651cdf0e10cSrcweir aRect.Bottom() = rOI.GetEndY(); 652cdf0e10cSrcweir } 653cdf0e10cSrcweir aRect.SetPos(aRect.TopLeft() - aPagePos); 654cdf0e10cSrcweir if ( aRect != maMarkRect) 655cdf0e10cSrcweir { 656cdf0e10cSrcweir mpDrawView->SetAllMarkedRect(aRect); 657cdf0e10cSrcweir maMarkRect = mpDrawView->GetAllMarkedRect(); 658cdf0e10cSrcweir Invalidate( SID_RULER_OBJECT ); 659cdf0e10cSrcweir } 660cdf0e10cSrcweir break; 661cdf0e10cSrcweir } 662cdf0e10cSrcweir 663cdf0e10cSrcweir case SID_ATTR_TABSTOP: 664cdf0e10cSrcweir { 665cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 666cdf0e10cSrcweir { 667cdf0e10cSrcweir const SvxTabStopItem& rItem = (const SvxTabStopItem&) 668cdf0e10cSrcweir pArgs->Get( EE_PARA_TABS ); 669cdf0e10cSrcweir 670cdf0e10cSrcweir SfxItemSet aEditAttr( GetPool(), EE_PARA_TABS, EE_PARA_TABS ); 671cdf0e10cSrcweir 672cdf0e10cSrcweir aEditAttr.Put( rItem ); 673cdf0e10cSrcweir mpDrawView->SetAttributes( aEditAttr ); 674cdf0e10cSrcweir 675cdf0e10cSrcweir // #91081# Invalidate is missing here 676cdf0e10cSrcweir Invalidate(SID_ATTR_TABSTOP); 677cdf0e10cSrcweir } 678cdf0e10cSrcweir break; 679cdf0e10cSrcweir } 680cdf0e10cSrcweir 681*766ce4d0SZheng Fan case SID_ATTR_PARA_LINESPACE: 682*766ce4d0SZheng Fan { 683*766ce4d0SZheng Fan sal_uInt16 nSlot = SID_ATTR_PARA_LINESPACE; 684*766ce4d0SZheng Fan SvxLineSpacingItem aParaLineSP = (const SvxLineSpacingItem&)pArgs->Get( 685*766ce4d0SZheng Fan GetPool().GetWhich(nSlot)); 686*766ce4d0SZheng Fan 687*766ce4d0SZheng Fan SfxItemSet aEditAttr( GetPool(), EE_PARA_SBL, EE_PARA_SBL ); 688*766ce4d0SZheng Fan aParaLineSP.SetWhich( EE_PARA_SBL ); 689*766ce4d0SZheng Fan 690*766ce4d0SZheng Fan aEditAttr.Put( aParaLineSP ); 691*766ce4d0SZheng Fan mpDrawView->SetAttributes( aEditAttr ); 692*766ce4d0SZheng Fan 693*766ce4d0SZheng Fan Invalidate(SID_ATTR_PARA_LINESPACE); 694*766ce4d0SZheng Fan } 695*766ce4d0SZheng Fan break; 696*766ce4d0SZheng Fan //xuxu for UL 697*766ce4d0SZheng Fan case SID_ATTR_PARA_ULSPACE: 698*766ce4d0SZheng Fan { 699*766ce4d0SZheng Fan sal_uInt16 nSlot = SID_ATTR_PARA_ULSPACE; 700*766ce4d0SZheng Fan SvxULSpaceItem aULSP = (const SvxULSpaceItem&)pArgs->Get( 701*766ce4d0SZheng Fan GetPool().GetWhich(nSlot)); 702*766ce4d0SZheng Fan SfxItemSet aEditAttr( GetPool(), EE_PARA_ULSPACE, EE_PARA_ULSPACE ); 703*766ce4d0SZheng Fan aULSP.SetWhich( EE_PARA_ULSPACE ); 704*766ce4d0SZheng Fan 705*766ce4d0SZheng Fan aEditAttr.Put( aULSP ); 706*766ce4d0SZheng Fan mpDrawView->SetAttributes( aEditAttr ); 707*766ce4d0SZheng Fan 708*766ce4d0SZheng Fan Invalidate(SID_ATTR_PARA_ULSPACE); 709*766ce4d0SZheng Fan } 710*766ce4d0SZheng Fan break; 711*766ce4d0SZheng Fan 712cdf0e10cSrcweir case SID_ATTR_PARA_LRSPACE: 713cdf0e10cSrcweir { 714cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 715cdf0e10cSrcweir { 716cdf0e10cSrcweir sal_uInt16 nId = SID_ATTR_PARA_LRSPACE; 717cdf0e10cSrcweir const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&) 718cdf0e10cSrcweir pArgs->Get( nId ); 719cdf0e10cSrcweir 720cdf0e10cSrcweir SfxItemSet aEditAttr( GetPool(), EE_PARA_LRSPACE, EE_PARA_LRSPACE ); 721cdf0e10cSrcweir 722cdf0e10cSrcweir nId = EE_PARA_LRSPACE; 723cdf0e10cSrcweir SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(), 724cdf0e10cSrcweir rItem.GetRight(), rItem.GetTxtLeft(), 725cdf0e10cSrcweir rItem.GetTxtFirstLineOfst(), nId ); 726cdf0e10cSrcweir aEditAttr.Put( aLRSpaceItem ); 727cdf0e10cSrcweir mpDrawView->SetAttributes( aEditAttr ); 728cdf0e10cSrcweir 729cdf0e10cSrcweir // #92557# Invalidate is missing here 730cdf0e10cSrcweir Invalidate(SID_ATTR_PARA_LRSPACE); 731cdf0e10cSrcweir } 732cdf0e10cSrcweir break; 733cdf0e10cSrcweir } 734*766ce4d0SZheng Fan case SID_ATTR_LRSPACE: 735*766ce4d0SZheng Fan { 736*766ce4d0SZheng Fan if( mpDrawView->IsTextEdit() ) 737*766ce4d0SZheng Fan { 738*766ce4d0SZheng Fan sal_uInt16 nId = SID_ATTR_PARA_LRSPACE; 739*766ce4d0SZheng Fan const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&) 740*766ce4d0SZheng Fan pArgs->Get( nId ); 741*766ce4d0SZheng Fan 742*766ce4d0SZheng Fan SfxItemSet aEditAttr( GetPool(), EE_PARA_LRSPACE, EE_PARA_LRSPACE ); 743*766ce4d0SZheng Fan 744*766ce4d0SZheng Fan nId = EE_PARA_LRSPACE; 745*766ce4d0SZheng Fan SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(), 746*766ce4d0SZheng Fan rItem.GetRight(), rItem.GetTxtLeft(), 747*766ce4d0SZheng Fan rItem.GetTxtFirstLineOfst(), nId ); 748*766ce4d0SZheng Fan aEditAttr.Put( aLRSpaceItem ); 749*766ce4d0SZheng Fan mpDrawView->SetAttributes( aEditAttr ); 750*766ce4d0SZheng Fan 751*766ce4d0SZheng Fan // #92557# Invalidate is missing here 752*766ce4d0SZheng Fan Invalidate(SID_ATTR_PARA_LRSPACE); 753*766ce4d0SZheng Fan } 754*766ce4d0SZheng Fan break; 755*766ce4d0SZheng Fan } 756cdf0e10cSrcweir } 757cdf0e10cSrcweir if ( pUndoGroup ) 758cdf0e10cSrcweir // Undo Gruppe dem Undo Manager uebergeben 759cdf0e10cSrcweir GetViewFrame()->GetObjectShell()->GetUndoManager()-> 760cdf0e10cSrcweir AddUndoAction(pUndoGroup); 761cdf0e10cSrcweir } 762cdf0e10cSrcweir 763cdf0e10cSrcweir /************************************************************************* 764cdf0e10cSrcweir |* 765cdf0e10cSrcweir |* Statuswerte der Lineale bestimmen 766cdf0e10cSrcweir |* 767cdf0e10cSrcweir \************************************************************************/ 768cdf0e10cSrcweir void DrawViewShell::GetRulerState(SfxItemSet& rSet) 769cdf0e10cSrcweir { 770cdf0e10cSrcweir Point aOrigin; 771cdf0e10cSrcweir 772cdf0e10cSrcweir if (mpDrawView->GetSdrPageView()) 773cdf0e10cSrcweir { 774cdf0e10cSrcweir aOrigin = mpDrawView->GetSdrPageView()->GetPageOrigin(); 775cdf0e10cSrcweir } 776cdf0e10cSrcweir 777cdf0e10cSrcweir Size aViewSize = GetActiveWindow()->GetViewSize(); 778cdf0e10cSrcweir 779cdf0e10cSrcweir const Point aPagePos( GetActiveWindow()->GetViewOrigin() ); 780cdf0e10cSrcweir Size aPageSize = mpActualPage->GetSize(); 781cdf0e10cSrcweir 782cdf0e10cSrcweir Rectangle aRect(aPagePos, Point( aViewSize.Width() - (aPagePos.X() + aPageSize.Width()), 783cdf0e10cSrcweir aViewSize.Height() - (aPagePos.Y() + aPageSize.Height()))); 784cdf0e10cSrcweir 785cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 786cdf0e10cSrcweir { 787cdf0e10cSrcweir Point aPnt1 = GetActiveWindow()->GetWinViewPos(); 788cdf0e10cSrcweir Point aPnt2 = GetActiveWindow()->GetViewOrigin(); 789cdf0e10cSrcweir Rectangle aMinMaxRect = Rectangle( aPnt1, Size(ULONG_MAX, ULONG_MAX) ); 790cdf0e10cSrcweir rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aMinMaxRect) ); 791cdf0e10cSrcweir } 792cdf0e10cSrcweir else 793cdf0e10cSrcweir { 794cdf0e10cSrcweir rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aRect) ); 795cdf0e10cSrcweir } 796cdf0e10cSrcweir 797cdf0e10cSrcweir SvxLongLRSpaceItem aLRSpace(aPagePos.X() + mpActualPage->GetLftBorder(), 798cdf0e10cSrcweir aRect.Right() + mpActualPage->GetRgtBorder(), 799cdf0e10cSrcweir GetPool().GetWhich(SID_ATTR_LONG_LRSPACE)); 800cdf0e10cSrcweir SvxLongULSpaceItem aULSpace(aPagePos.Y() + mpActualPage->GetUppBorder(), 801cdf0e10cSrcweir aRect.Bottom() + mpActualPage->GetLwrBorder(), 802cdf0e10cSrcweir GetPool().GetWhich(SID_ATTR_LONG_ULSPACE)); 803cdf0e10cSrcweir rSet.Put(SvxPagePosSizeItem(Point(0,0) - aPagePos, aViewSize.Width(), 804cdf0e10cSrcweir aViewSize.Height())); 805cdf0e10cSrcweir SfxPointItem aPointItem( SID_RULER_NULL_OFFSET, aPagePos + aOrigin ); 806cdf0e10cSrcweir 807cdf0e10cSrcweir SvxProtectItem aProtect( SID_RULER_PROTECT ); 808cdf0e10cSrcweir 809cdf0e10cSrcweir maMarkRect = mpDrawView->GetAllMarkedRect(); 810cdf0e10cSrcweir 811cdf0e10cSrcweir const sal_Bool bRTL = GetDoc() && GetDoc()->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB; 812cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, bRTL)); 813cdf0e10cSrcweir 814cdf0e10cSrcweir if( mpDrawView->AreObjectsMarked() ) 815cdf0e10cSrcweir { 816cdf0e10cSrcweir if( mpDrawView->IsTextEdit() ) 817cdf0e10cSrcweir { 818cdf0e10cSrcweir SdrObject* pObj = mpDrawView->GetMarkedObjectList().GetMark( 0 )->GetMarkedSdrObj(); 819cdf0e10cSrcweir if( pObj->GetObjInventor() == SdrInventor) 820cdf0e10cSrcweir { 821cdf0e10cSrcweir SfxItemSet aEditAttr( GetDoc()->GetPool() ); 822cdf0e10cSrcweir mpDrawView->GetAttributes( aEditAttr ); 823cdf0e10cSrcweir if( aEditAttr.GetItemState( EE_PARA_TABS ) >= SFX_ITEM_AVAILABLE ) 824cdf0e10cSrcweir { 825cdf0e10cSrcweir const SvxTabStopItem& rItem = (const SvxTabStopItem&) aEditAttr.Get( EE_PARA_TABS ); 826cdf0e10cSrcweir rSet.Put( rItem ); 827cdf0e10cSrcweir 828cdf0e10cSrcweir //Rectangle aRect = maMarkRect; 829cdf0e10cSrcweir 830cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE ); 831cdf0e10cSrcweir sal_uInt16 nId = SID_ATTR_PARA_LRSPACE; 832cdf0e10cSrcweir SvxLRSpaceItem aLRSpaceItem( rLRSpaceItem.GetLeft(), 833cdf0e10cSrcweir rLRSpaceItem.GetRight(), rLRSpaceItem.GetTxtLeft(), 834cdf0e10cSrcweir rLRSpaceItem.GetTxtFirstLineOfst(), nId ); 835cdf0e10cSrcweir rSet.Put( aLRSpaceItem ); 836cdf0e10cSrcweir 837cdf0e10cSrcweir Point aPos( aPagePos + maMarkRect.TopLeft() ); 838cdf0e10cSrcweir 839cdf0e10cSrcweir if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON ) 840cdf0e10cSrcweir { 841cdf0e10cSrcweir const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&) 842cdf0e10cSrcweir aEditAttr.Get( SDRATTR_TEXT_LEFTDIST ); 843cdf0e10cSrcweir long nLD = rTLDItem.GetValue(); 844cdf0e10cSrcweir aPos.X() += nLD; 845cdf0e10cSrcweir } 846cdf0e10cSrcweir 847cdf0e10cSrcweir aPointItem.SetValue( aPos ); 848cdf0e10cSrcweir 849cdf0e10cSrcweir aLRSpace.SetLeft( aPagePos.X() + maMarkRect.Left() ); 850cdf0e10cSrcweir 851cdf0e10cSrcweir if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON ) 852cdf0e10cSrcweir { 853cdf0e10cSrcweir const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&) 854cdf0e10cSrcweir aEditAttr.Get( SDRATTR_TEXT_LEFTDIST ); 855cdf0e10cSrcweir long nLD = rTLDItem.GetValue(); 856cdf0e10cSrcweir aLRSpace.SetLeft( aLRSpace.GetLeft() + nLD ); 857cdf0e10cSrcweir } 858cdf0e10cSrcweir 859cdf0e10cSrcweir aLRSpace.SetRight( aRect.Right() + aPageSize.Width() - maMarkRect.Right() ); 860cdf0e10cSrcweir aULSpace.SetUpper( aPagePos.Y() + maMarkRect.Top() ); 861cdf0e10cSrcweir aULSpace.SetLower( aRect.Bottom() + aPageSize.Height() - maMarkRect.Bottom() ); 862cdf0e10cSrcweir 863cdf0e10cSrcweir rSet.DisableItem( SID_RULER_OBJECT ); 864cdf0e10cSrcweir 865cdf0e10cSrcweir // Seitenraender werden gelocked 866cdf0e10cSrcweir aProtect.SetSizeProtect( sal_True ); 867cdf0e10cSrcweir aProtect.SetPosProtect( sal_True ); 868cdf0e10cSrcweir } 869cdf0e10cSrcweir 870cdf0e10cSrcweir if( aEditAttr.GetItemState( EE_PARA_WRITINGDIR ) >= SFX_ITEM_AVAILABLE ) 871cdf0e10cSrcweir { 872cdf0e10cSrcweir const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&) aEditAttr.Get( EE_PARA_WRITINGDIR ); 873cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, rItem.GetValue() == ::com::sun::star::text::WritingMode_RL_TB)); 874cdf0e10cSrcweir } 875cdf0e10cSrcweir } 876cdf0e10cSrcweir } 877cdf0e10cSrcweir else 878cdf0e10cSrcweir { 879cdf0e10cSrcweir rSet.DisableItem( EE_PARA_TABS ); 880cdf0e10cSrcweir rSet.DisableItem( SID_RULER_TEXT_RIGHT_TO_LEFT ); 881cdf0e10cSrcweir 882cdf0e10cSrcweir if( mpDrawView->IsResizeAllowed(sal_True) ) 883cdf0e10cSrcweir { 884cdf0e10cSrcweir Rectangle aResizeRect( maMarkRect ); 885cdf0e10cSrcweir 886cdf0e10cSrcweir aResizeRect.SetPos(aResizeRect.TopLeft() + aPagePos); 887cdf0e10cSrcweir SvxObjectItem aObjItem(aResizeRect.Left(), aResizeRect.Right(), 888cdf0e10cSrcweir aResizeRect.Top(), aResizeRect.Bottom()); 889cdf0e10cSrcweir rSet.Put(aObjItem); 890cdf0e10cSrcweir rSet.DisableItem( EE_PARA_TABS ); 891cdf0e10cSrcweir } 892cdf0e10cSrcweir else 893cdf0e10cSrcweir { 894cdf0e10cSrcweir rSet.DisableItem( SID_RULER_OBJECT ); 895cdf0e10cSrcweir } 896cdf0e10cSrcweir } 897cdf0e10cSrcweir } 898cdf0e10cSrcweir else 899cdf0e10cSrcweir { 900cdf0e10cSrcweir rSet.DisableItem( SID_RULER_OBJECT ); 901cdf0e10cSrcweir rSet.DisableItem( EE_PARA_TABS ); 902cdf0e10cSrcweir // rSet.DisableItem( SID_RULER_TEXT_RIGHT_TO_LEFT ); 903cdf0e10cSrcweir } 904cdf0e10cSrcweir 905cdf0e10cSrcweir rSet.Put( aLRSpace ); 906cdf0e10cSrcweir rSet.Put( aULSpace ); 907cdf0e10cSrcweir 908cdf0e10cSrcweir rSet.Put( aPointItem ); 909cdf0e10cSrcweir rSet.Put( aProtect ); 910cdf0e10cSrcweir } 911cdf0e10cSrcweir 912cdf0e10cSrcweir /************************************************************************* 913cdf0e10cSrcweir |* 914cdf0e10cSrcweir |* SfxRequests fuer StatusBar bearbeiten 915cdf0e10cSrcweir |* 916cdf0e10cSrcweir \************************************************************************/ 917cdf0e10cSrcweir 918cdf0e10cSrcweir void DrawViewShell::ExecStatusBar(SfxRequest& rReq) 919cdf0e10cSrcweir { 920cdf0e10cSrcweir // waehrend einer Diashow wird nichts ausgefuehrt! 921cdf0e10cSrcweir if(HasCurrentFunction(SID_PRESENTATION)) 922cdf0e10cSrcweir return; 923cdf0e10cSrcweir 924cdf0e10cSrcweir CheckLineTo (rReq); 925cdf0e10cSrcweir 926cdf0e10cSrcweir switch ( rReq.GetSlot() ) 927cdf0e10cSrcweir { 928cdf0e10cSrcweir case SID_ATTR_SIZE: 929cdf0e10cSrcweir { 930cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute( SID_ATTR_TRANSFORM, SFX_CALLMODE_ASYNCHRON ); 931cdf0e10cSrcweir } 932cdf0e10cSrcweir break; 933cdf0e10cSrcweir 934cdf0e10cSrcweir case SID_STATUS_LAYOUT: 935cdf0e10cSrcweir { 936cdf0e10cSrcweir GetViewFrame()->GetDispatcher()->Execute( SID_PRESENTATION_LAYOUT, SFX_CALLMODE_ASYNCHRON ); 937cdf0e10cSrcweir } 938cdf0e10cSrcweir break; 939cdf0e10cSrcweir } 940cdf0e10cSrcweir } 941cdf0e10cSrcweir 942cdf0e10cSrcweir /************************************************************************* 943cdf0e10cSrcweir |* 944cdf0e10cSrcweir |* Status der Snap-Objekt-Eintraege im Popup setzen 945cdf0e10cSrcweir |* 946cdf0e10cSrcweir \************************************************************************/ 947cdf0e10cSrcweir 948cdf0e10cSrcweir void DrawViewShell::GetSnapItemState( SfxItemSet &rSet ) 949cdf0e10cSrcweir { 950cdf0e10cSrcweir SdrPageView* pPV; 951cdf0e10cSrcweir Point aMPos = GetActiveWindow()->PixelToLogic(maMousePos); 952cdf0e10cSrcweir sal_uInt16 nHitLog = (sal_uInt16) GetActiveWindow()->PixelToLogic( 953cdf0e10cSrcweir Size(FuPoor::HITPIX,0)).Width(); 954cdf0e10cSrcweir sal_uInt16 nHelpLine; 955cdf0e10cSrcweir 956cdf0e10cSrcweir if ( mpDrawView->PickHelpLine(aMPos, nHitLog, *GetActiveWindow(), nHelpLine, pPV) ) 957cdf0e10cSrcweir { 958cdf0e10cSrcweir const SdrHelpLine& rHelpLine = (pPV->GetHelpLines())[nHelpLine]; 959cdf0e10cSrcweir 960cdf0e10cSrcweir if ( rHelpLine.GetKind() == SDRHELPLINE_POINT ) 961cdf0e10cSrcweir { 962cdf0e10cSrcweir rSet.Put( SfxStringItem( SID_SET_SNAPITEM, 963cdf0e10cSrcweir String( SdResId( STR_POPUP_EDIT_SNAPPOINT))) ); 964cdf0e10cSrcweir rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM, 965cdf0e10cSrcweir String( SdResId( STR_POPUP_DELETE_SNAPPOINT))) ); 966cdf0e10cSrcweir } 967cdf0e10cSrcweir else 968cdf0e10cSrcweir { 969cdf0e10cSrcweir rSet.Put( SfxStringItem( SID_SET_SNAPITEM, 970cdf0e10cSrcweir String( SdResId( STR_POPUP_EDIT_SNAPLINE))) ); 971cdf0e10cSrcweir rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM, 972cdf0e10cSrcweir String( SdResId( STR_POPUP_DELETE_SNAPLINE))) ); 973cdf0e10cSrcweir } 974cdf0e10cSrcweir } 975cdf0e10cSrcweir } 976cdf0e10cSrcweir 977cdf0e10cSrcweir 978cdf0e10cSrcweir /************************************************************************* 979cdf0e10cSrcweir |* 980cdf0e10cSrcweir |* 981cdf0e10cSrcweir |* 982cdf0e10cSrcweir \************************************************************************/ 983cdf0e10cSrcweir 984cdf0e10cSrcweir void DrawViewShell::AddWindow (::sd::Window* pWin) 985cdf0e10cSrcweir { 986cdf0e10cSrcweir mpDrawView->AddWindowToPaintView(pWin); 987cdf0e10cSrcweir } 988cdf0e10cSrcweir 989cdf0e10cSrcweir /************************************************************************* 990cdf0e10cSrcweir |* 991cdf0e10cSrcweir |* 992cdf0e10cSrcweir |* 993cdf0e10cSrcweir \************************************************************************/ 994cdf0e10cSrcweir 995cdf0e10cSrcweir void DrawViewShell::RemoveWindow(::sd::Window* pWin) 996cdf0e10cSrcweir { 997cdf0e10cSrcweir mpDrawView->DeleteWindowFromPaintView(pWin); 998cdf0e10cSrcweir } 999cdf0e10cSrcweir 1000cdf0e10cSrcweir } // end of namespace sd 1001