1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sw.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir #include <svx/svdpagv.hxx> 33*cdf0e10cSrcweir #include <svx/svdview.hxx> 34*cdf0e10cSrcweir #include <svx/ruler.hxx> 35*cdf0e10cSrcweir #include <idxmrk.hxx> 36*cdf0e10cSrcweir #ifndef _VIEW_HXX 37*cdf0e10cSrcweir #include <view.hxx> 38*cdf0e10cSrcweir #endif 39*cdf0e10cSrcweir #include <wrtsh.hxx> 40*cdf0e10cSrcweir #include <swmodule.hxx> 41*cdf0e10cSrcweir #include <viewopt.hxx> 42*cdf0e10cSrcweir #ifndef _DOCSH_HXX 43*cdf0e10cSrcweir #include <docsh.hxx> 44*cdf0e10cSrcweir #endif 45*cdf0e10cSrcweir #ifndef _GLOBDOC_HXX 46*cdf0e10cSrcweir #include <globdoc.hxx> 47*cdf0e10cSrcweir #endif 48*cdf0e10cSrcweir #include <navipi.hxx> 49*cdf0e10cSrcweir #include <fldwrap.hxx> 50*cdf0e10cSrcweir #ifndef _REDLNDLG_HXX 51*cdf0e10cSrcweir #include <redlndlg.hxx> 52*cdf0e10cSrcweir #endif 53*cdf0e10cSrcweir #include <dpage.hxx> 54*cdf0e10cSrcweir #include <edtwin.hxx> 55*cdf0e10cSrcweir #include "formatclipboard.hxx" 56*cdf0e10cSrcweir #ifndef _CMDID_H 57*cdf0e10cSrcweir #include <cmdid.h> 58*cdf0e10cSrcweir #endif 59*cdf0e10cSrcweir // header for class SfxRequest 60*cdf0e10cSrcweir #include <sfx2/request.hxx> 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir extern int bDocSzUpdated; 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir 67*cdf0e10cSrcweir /*-------------------------------------------------------------------- 68*cdf0e10cSrcweir Beschreibung: 69*cdf0e10cSrcweir --------------------------------------------------------------------*/ 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir void SwView::Activate(sal_Bool bMDIActivate) 73*cdf0e10cSrcweir { 74*cdf0e10cSrcweir // aktuelle View anmelden an der DocShell 75*cdf0e10cSrcweir // die View bleibt solange an der DocShell 76*cdf0e10cSrcweir // aktiv bis Sie zerstoert wird oder durch Activate eine 77*cdf0e10cSrcweir // neue gesetzt wird 78*cdf0e10cSrcweir SwDocShell* pDocSh = GetDocShell(); 79*cdf0e10cSrcweir if(pDocSh) 80*cdf0e10cSrcweir pDocSh->SetView(this); 81*cdf0e10cSrcweir SwModule* pSwMod = SW_MOD(); 82*cdf0e10cSrcweir pSwMod->SetView(this); 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir // Dokumentgroesse hat sich geaendert 85*cdf0e10cSrcweir if(!bDocSzUpdated) 86*cdf0e10cSrcweir DocSzChgd(aDocSz); 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir // #b6330459# make selection visible 89*cdf0e10cSrcweir if(bMakeSelectionVisible) 90*cdf0e10cSrcweir { 91*cdf0e10cSrcweir pWrtShell->MakeSelVisible(); 92*cdf0e10cSrcweir bMakeSelectionVisible = sal_False; 93*cdf0e10cSrcweir } 94*cdf0e10cSrcweir pHRuler->SetActive( sal_True ); 95*cdf0e10cSrcweir pVRuler->SetActive( sal_True ); 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir if ( bMDIActivate ) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir pWrtShell->ShGetFcs(sal_False); // Selektionen sichtbar 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir if( sSwViewData.Len() ) 102*cdf0e10cSrcweir { 103*cdf0e10cSrcweir ReadUserData( sSwViewData, sal_False ); 104*cdf0e10cSrcweir sSwViewData.Erase(); 105*cdf0e10cSrcweir } 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir AttrChangedNotify(pWrtShell); 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir // Flddlg ggf neu initialisieren (z.B. fuer TYP_SETVAR) 110*cdf0e10cSrcweir sal_uInt16 nId = SwFldDlgWrapper::GetChildWindowId(); 111*cdf0e10cSrcweir SfxViewFrame* pVFrame = GetViewFrame(); 112*cdf0e10cSrcweir SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->GetChildWindow(nId); 113*cdf0e10cSrcweir if (pWrp) 114*cdf0e10cSrcweir pWrp->ReInitDlg(GetDocShell()); 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir // RedlineDlg ggf neu initialisieren 117*cdf0e10cSrcweir nId = SwRedlineAcceptChild::GetChildWindowId(); 118*cdf0e10cSrcweir SwRedlineAcceptChild *pRed = (SwRedlineAcceptChild*)pVFrame->GetChildWindow(nId); 119*cdf0e10cSrcweir if (pRed) 120*cdf0e10cSrcweir pRed->ReInitDlg(GetDocShell()); 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir // reinit IdxMarkDlg 123*cdf0e10cSrcweir nId = SwInsertIdxMarkWrapper::GetChildWindowId(); 124*cdf0e10cSrcweir SwInsertIdxMarkWrapper *pIdxMrk = (SwInsertIdxMarkWrapper*)pVFrame->GetChildWindow(nId); 125*cdf0e10cSrcweir if (pIdxMrk) 126*cdf0e10cSrcweir pIdxMrk->ReInitDlg(*pWrtShell); 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir // reinit AuthMarkDlg 129*cdf0e10cSrcweir nId = SwInsertAuthMarkWrapper::GetChildWindowId(); 130*cdf0e10cSrcweir SwInsertAuthMarkWrapper *pAuthMrk = (SwInsertAuthMarkWrapper*)pVFrame-> 131*cdf0e10cSrcweir GetChildWindow(nId); 132*cdf0e10cSrcweir if (pAuthMrk) 133*cdf0e10cSrcweir pAuthMrk->ReInitDlg(*pWrtShell); 134*cdf0e10cSrcweir } 135*cdf0e10cSrcweir else 136*cdf0e10cSrcweir //Wenigstens das Notify rufen (vorsichtshalber wegen der SlotFilter 137*cdf0e10cSrcweir AttrChangedNotify(pWrtShell); 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir SfxViewShell::Activate(bMDIActivate); 140*cdf0e10cSrcweir } 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir /*-------------------------------------------------------------------- 143*cdf0e10cSrcweir Beschreibung: 144*cdf0e10cSrcweir --------------------------------------------------------------------*/ 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir void SwView::Deactivate(sal_Bool bMDIActivate) 148*cdf0e10cSrcweir { 149*cdf0e10cSrcweir extern sal_Bool bFlushCharBuffer ; 150*cdf0e10cSrcweir // Befinden sich noch Zeichen im Input Buffer? 151*cdf0e10cSrcweir if( bFlushCharBuffer ) 152*cdf0e10cSrcweir GetEditWin().FlushInBuffer(); 153*cdf0e10cSrcweir 154*cdf0e10cSrcweir if( bMDIActivate ) 155*cdf0e10cSrcweir { 156*cdf0e10cSrcweir pWrtShell->ShLooseFcs(); // Selektionen unsichtbar 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir pHRuler->SetActive( sal_False ); 159*cdf0e10cSrcweir pVRuler->SetActive( sal_False ); 160*cdf0e10cSrcweir } 161*cdf0e10cSrcweir SfxViewShell::Deactivate(bMDIActivate); 162*cdf0e10cSrcweir } 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir /*-------------------------------------------------------------------- 165*cdf0e10cSrcweir Beschreibung: 166*cdf0e10cSrcweir --------------------------------------------------------------------*/ 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir void SwView::MarginChanged() 169*cdf0e10cSrcweir { 170*cdf0e10cSrcweir GetWrtShell().SetBrowseBorder( GetMargin() ); 171*cdf0e10cSrcweir } 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir /*-------------------------------------------------------------------- 174*cdf0e10cSrcweir --------------------------------------------------------------------*/ 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir void SwView::ExecFormatPaintbrush(SfxRequest& rReq) 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir if(!pFormatClipboard) 179*cdf0e10cSrcweir return; 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir if( pFormatClipboard->HasContent() ) 182*cdf0e10cSrcweir { 183*cdf0e10cSrcweir pFormatClipboard->Erase(); 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir SwApplyTemplate aTemplate; 186*cdf0e10cSrcweir GetEditWin().SetApplyTemplate(aTemplate); 187*cdf0e10cSrcweir } 188*cdf0e10cSrcweir else 189*cdf0e10cSrcweir { 190*cdf0e10cSrcweir bool bPersistentCopy = false; 191*cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs(); 192*cdf0e10cSrcweir if( pArgs && pArgs->Count() >= 1 ) 193*cdf0e10cSrcweir { 194*cdf0e10cSrcweir bPersistentCopy = static_cast<bool>(((SfxBoolItem &)pArgs->Get( 195*cdf0e10cSrcweir SID_FORMATPAINTBRUSH)).GetValue()); 196*cdf0e10cSrcweir } 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir pFormatClipboard->Copy( GetWrtShell(), GetPool(), bPersistentCopy ); 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir SwApplyTemplate aTemplate; 201*cdf0e10cSrcweir aTemplate.pFormatClipboard = pFormatClipboard; 202*cdf0e10cSrcweir GetEditWin().SetApplyTemplate(aTemplate); 203*cdf0e10cSrcweir } 204*cdf0e10cSrcweir GetViewFrame()->GetBindings().Invalidate(SID_FORMATPAINTBRUSH); 205*cdf0e10cSrcweir } 206*cdf0e10cSrcweir 207*cdf0e10cSrcweir void SwView::StateFormatPaintbrush(SfxItemSet &rSet) 208*cdf0e10cSrcweir { 209*cdf0e10cSrcweir if(!pFormatClipboard) 210*cdf0e10cSrcweir return; 211*cdf0e10cSrcweir 212*cdf0e10cSrcweir bool bHasContent = pFormatClipboard && pFormatClipboard->HasContent(); 213*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_FORMATPAINTBRUSH, bHasContent)); 214*cdf0e10cSrcweir if(!bHasContent) 215*cdf0e10cSrcweir { 216*cdf0e10cSrcweir if( !pFormatClipboard->CanCopyThisType( GetWrtShell().GetSelectionType() ) ) 217*cdf0e10cSrcweir rSet.DisableItem( SID_FORMATPAINTBRUSH ); 218*cdf0e10cSrcweir } 219*cdf0e10cSrcweir } 220