xref: /aoo41x/main/sw/source/ui/uiview/view1.cxx (revision cdf0e10c)
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