1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sd.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XPresentation2.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/form/FormButtonType.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/TransliterationModules.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski #include "undo/undomanager.hxx"
37*b1cdbd2cSJim Jagielski #include <vcl/waitobj.hxx>
38*b1cdbd2cSJim Jagielski #include <svl/aeitem.hxx>
39*b1cdbd2cSJim Jagielski #include <editeng/editstat.hxx>
40*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
41*b1cdbd2cSJim Jagielski #include <svl/urlbmk.hxx>
42*b1cdbd2cSJim Jagielski #include <svx/svdpagv.hxx>
43*b1cdbd2cSJim Jagielski #include <svx/fmshell.hxx>
44*b1cdbd2cSJim Jagielski #include <vcl/scrbar.hxx>
45*b1cdbd2cSJim Jagielski #include <svx/svdopath.hxx>
46*b1cdbd2cSJim Jagielski #include <svx/svdundo.hxx>
47*b1cdbd2cSJim Jagielski #include <svx/svdorect.hxx>
48*b1cdbd2cSJim Jagielski #include <svx/svdograf.hxx>
49*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
50*b1cdbd2cSJim Jagielski #include <editeng/eeitem.hxx>
51*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
52*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
53*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
54*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc>
55*b1cdbd2cSJim Jagielski #include <editeng/flditem.hxx>
56*b1cdbd2cSJim Jagielski #include <svx/ruler.hxx>
57*b1cdbd2cSJim Jagielski #include <svx/obj3d.hxx>
58*b1cdbd2cSJim Jagielski #include <svx/fmglob.hxx>
59*b1cdbd2cSJim Jagielski #include <svx/svdouno.hxx>
60*b1cdbd2cSJim Jagielski #include <svx/dataaccessdescriptor.hxx>
61*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
62*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx>
63*b1cdbd2cSJim Jagielski #include <sfx2/ipclient.hxx>
64*b1cdbd2cSJim Jagielski #include <toolkit/helper/vclunohelper.hxx>
65*b1cdbd2cSJim Jagielski #include <avmedia/mediawindow.hxx>
66*b1cdbd2cSJim Jagielski #include <svl/urihelper.hxx>
67*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski #include "DrawViewShell.hxx"
70*b1cdbd2cSJim Jagielski #include "slideshow.hxx"
71*b1cdbd2cSJim Jagielski #include "ViewShellImplementation.hxx"
72*b1cdbd2cSJim Jagielski #include "ViewShellHint.hxx"
73*b1cdbd2cSJim Jagielski #include "framework/FrameworkHelper.hxx"
74*b1cdbd2cSJim Jagielski #include "app.hrc"
75*b1cdbd2cSJim Jagielski #include "glob.hrc"
76*b1cdbd2cSJim Jagielski #include "strings.hrc"
77*b1cdbd2cSJim Jagielski #include "res_bmp.hrc"
78*b1cdbd2cSJim Jagielski #include "drawdoc.hxx"
79*b1cdbd2cSJim Jagielski #include "fusel.hxx"
80*b1cdbd2cSJim Jagielski #include "futext.hxx"
81*b1cdbd2cSJim Jagielski #include "fuconrec.hxx"
82*b1cdbd2cSJim Jagielski #include "fuconcs.hxx"
83*b1cdbd2cSJim Jagielski #include "fuconuno.hxx"
84*b1cdbd2cSJim Jagielski #include "fuconbez.hxx"
85*b1cdbd2cSJim Jagielski #include "fuediglu.hxx"
86*b1cdbd2cSJim Jagielski #include "fuconarc.hxx"
87*b1cdbd2cSJim Jagielski #include "fucon3d.hxx"
88*b1cdbd2cSJim Jagielski #include "sdresid.hxx"
89*b1cdbd2cSJim Jagielski #include "slideshow.hxx"
90*b1cdbd2cSJim Jagielski #include "Outliner.hxx"
91*b1cdbd2cSJim Jagielski #include "PresentationViewShell.hxx"
92*b1cdbd2cSJim Jagielski #include "sdpage.hxx"
93*b1cdbd2cSJim Jagielski #include "FrameView.hxx"
94*b1cdbd2cSJim Jagielski #include "zoomlist.hxx"
95*b1cdbd2cSJim Jagielski #include "drawview.hxx"
96*b1cdbd2cSJim Jagielski #include "DrawDocShell.hxx"
97*b1cdbd2cSJim Jagielski #include "sdattr.hxx"
98*b1cdbd2cSJim Jagielski #include "ViewShellBase.hxx"
99*b1cdbd2cSJim Jagielski #include "ToolBarManager.hxx"
100*b1cdbd2cSJim Jagielski #include "anminfo.hxx"
101*b1cdbd2cSJim Jagielski #include "optsitem.hxx"
102*b1cdbd2cSJim Jagielski #include "Window.hxx"
103*b1cdbd2cSJim Jagielski #include "fuformatpaintbrush.hxx"
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski using ::rtl::OUString;
106*b1cdbd2cSJim Jagielski using com::sun::star::ui::dialogs::XExecutableDialog;
107*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
108*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
109*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::presentation;
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski namespace sd {
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski #ifdef _MSC_VER
114*b1cdbd2cSJim Jagielski #pragma optimize ( "", off )
115*b1cdbd2cSJim Jagielski #endif
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski /*************************************************************************
118*b1cdbd2cSJim Jagielski |*
119*b1cdbd2cSJim Jagielski |* Permanente Funktionen
120*b1cdbd2cSJim Jagielski |*
121*b1cdbd2cSJim Jagielski \************************************************************************/
122*b1cdbd2cSJim Jagielski
ImpAddPrintableCharactersToTextEdit(SfxRequest & rReq,::sd::View * pView)123*b1cdbd2cSJim Jagielski void ImpAddPrintableCharactersToTextEdit(SfxRequest& rReq, ::sd::View* pView)
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski // #98198# evtl. feed characters to activated textedit
126*b1cdbd2cSJim Jagielski const SfxItemSet* pSet = rReq.GetArgs();
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski if(pSet)
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski String aInputString;
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski if(SFX_ITEM_SET == pSet->GetItemState(SID_ATTR_CHAR))
133*b1cdbd2cSJim Jagielski aInputString = ((SfxStringItem&)pSet->Get(SID_ATTR_CHAR)).GetValue();
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski if(aInputString.Len())
136*b1cdbd2cSJim Jagielski {
137*b1cdbd2cSJim Jagielski OutlinerView* pOLV = pView->GetTextEditOutlinerView();
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski if(pOLV)
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski for(sal_uInt16 a(0); a < aInputString.Len(); a++)
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski sal_Char aChar = (sal_Char)aInputString.GetChar(a);
144*b1cdbd2cSJim Jagielski KeyCode aKeyCode;
145*b1cdbd2cSJim Jagielski KeyEvent aKeyEvent(aChar, aKeyCode);
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski // add actual character
148*b1cdbd2cSJim Jagielski pOLV->PostKeyEvent(aKeyEvent);
149*b1cdbd2cSJim Jagielski }
150*b1cdbd2cSJim Jagielski }
151*b1cdbd2cSJim Jagielski }
152*b1cdbd2cSJim Jagielski }
153*b1cdbd2cSJim Jagielski }
154*b1cdbd2cSJim Jagielski
FuPermanent(SfxRequest & rReq)155*b1cdbd2cSJim Jagielski void DrawViewShell::FuPermanent(SfxRequest& rReq)
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski // Waehrend einer Native-Diashow wird nichts ausgefuehrt!
158*b1cdbd2cSJim Jagielski
159*b1cdbd2cSJim Jagielski if (SlideShow::IsRunning(GetViewShellBase()))
160*b1cdbd2cSJim Jagielski return;
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski sal_uInt16 nSId = rReq.GetSlot();
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski if( HasCurrentFunction() &&
165*b1cdbd2cSJim Jagielski ( nSId == SID_TEXTEDIT || nSId == SID_ATTR_CHAR || nSId == SID_TEXT_FITTOSIZE ||
166*b1cdbd2cSJim Jagielski nSId == SID_ATTR_CHAR_VERTICAL || nSId == SID_TEXT_FITTOSIZE_VERTICAL ) )
167*b1cdbd2cSJim Jagielski {
168*b1cdbd2cSJim Jagielski FunctionReference xFunc( GetCurrentFunction() );
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski FuText* pFuText = dynamic_cast< FuText* >( xFunc.get() );
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim Jagielski if( pFuText )
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski pFuText->SetPermanent(sal_True);
175*b1cdbd2cSJim Jagielski xFunc->ReceiveRequest( rReq );
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski MapSlot( nSId );
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski Invalidate();
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski Invalidate();
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski // #98198# evtl. feed characters to activated textedit
184*b1cdbd2cSJim Jagielski if(SID_ATTR_CHAR == nSId && GetView() && GetView()->IsTextEdit())
185*b1cdbd2cSJim Jagielski ImpAddPrintableCharactersToTextEdit(rReq, GetView());
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski rReq.Done();
188*b1cdbd2cSJim Jagielski return;
189*b1cdbd2cSJim Jagielski }
190*b1cdbd2cSJim Jagielski }
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski CheckLineTo (rReq);
193*b1cdbd2cSJim Jagielski sal_uInt16 nOldSId = 0;
194*b1cdbd2cSJim Jagielski sal_Bool bPermanent = sal_False;
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski if( !mpDrawView )
197*b1cdbd2cSJim Jagielski return;
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski if(HasCurrentFunction())
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski if( (nSId == SID_FORMATPAINTBRUSH) && (GetCurrentFunction()->GetSlotID() == SID_TEXTEDIT) )
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski // save text edit mode for format paintbrush!
204*b1cdbd2cSJim Jagielski SetOldFunction( GetCurrentFunction() );
205*b1cdbd2cSJim Jagielski }
206*b1cdbd2cSJim Jagielski else
207*b1cdbd2cSJim Jagielski {
208*b1cdbd2cSJim Jagielski if(GetOldFunction() == GetCurrentFunction())
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski SetOldFunction(0);
211*b1cdbd2cSJim Jagielski }
212*b1cdbd2cSJim Jagielski }
213*b1cdbd2cSJim Jagielski
214*b1cdbd2cSJim Jagielski if ( nSId != SID_TEXTEDIT && nSId != SID_ATTR_CHAR && nSId != SID_TEXT_FITTOSIZE &&
215*b1cdbd2cSJim Jagielski nSId != SID_ATTR_CHAR_VERTICAL && nSId != SID_TEXT_FITTOSIZE_VERTICAL &&
216*b1cdbd2cSJim Jagielski nSId != SID_FORMATPAINTBRUSH &&
217*b1cdbd2cSJim Jagielski mpDrawView->IsTextEdit() )
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski mpDrawView->SdrEndTextEdit();
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski if( HasCurrentFunction() )
223*b1cdbd2cSJim Jagielski {
224*b1cdbd2cSJim Jagielski nOldSId = GetCurrentFunction()->GetSlotID();
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski if (nOldSId == nSId ||
227*b1cdbd2cSJim Jagielski ((nOldSId == SID_TEXTEDIT || nOldSId == SID_ATTR_CHAR || nOldSId == SID_TEXT_FITTOSIZE ||
228*b1cdbd2cSJim Jagielski nOldSId == SID_ATTR_CHAR_VERTICAL || nOldSId == SID_TEXT_FITTOSIZE_VERTICAL) &&
229*b1cdbd2cSJim Jagielski (nSId == SID_TEXTEDIT || nSId == SID_ATTR_CHAR || nSId == SID_TEXT_FITTOSIZE ||
230*b1cdbd2cSJim Jagielski nSId == SID_ATTR_CHAR_VERTICAL || nSId == SID_TEXT_FITTOSIZE_VERTICAL )))
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski bPermanent = sal_True;
233*b1cdbd2cSJim Jagielski }
234*b1cdbd2cSJim Jagielski
235*b1cdbd2cSJim Jagielski GetCurrentFunction()->Deactivate();
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski
238*b1cdbd2cSJim Jagielski SetCurrentFunction(0);
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski SfxBindings& rBind = GetViewFrame()->GetBindings();
241*b1cdbd2cSJim Jagielski rBind.Invalidate(nOldSId);
242*b1cdbd2cSJim Jagielski rBind.Update(nOldSId);
243*b1cdbd2cSJim Jagielski }
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski // Slot wird gemapped (ToolboxImages/-Slots)
246*b1cdbd2cSJim Jagielski MapSlot( nSId );
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski switch ( nSId )
249*b1cdbd2cSJim Jagielski {
250*b1cdbd2cSJim Jagielski case SID_TEXTEDIT: // BASIC ???
251*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR:
252*b1cdbd2cSJim Jagielski case SID_ATTR_CHAR_VERTICAL:
253*b1cdbd2cSJim Jagielski case SID_TEXT_FITTOSIZE:
254*b1cdbd2cSJim Jagielski case SID_TEXT_FITTOSIZE_VERTICAL:
255*b1cdbd2cSJim Jagielski {
256*b1cdbd2cSJim Jagielski SetCurrentFunction( FuText::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
257*b1cdbd2cSJim Jagielski GetCurrentFunction()->DoExecute(rReq);
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski SfxBindings& rBindings = GetViewFrame()->GetBindings();
260*b1cdbd2cSJim Jagielski rBindings.Invalidate( SID_ATTR_CHAR );
261*b1cdbd2cSJim Jagielski rBindings.Invalidate( SID_ATTR_CHAR_VERTICAL );
262*b1cdbd2cSJim Jagielski rBindings.Invalidate( SID_TEXT_FITTOSIZE );
263*b1cdbd2cSJim Jagielski rBindings.Invalidate( SID_TEXT_FITTOSIZE_VERTICAL );
264*b1cdbd2cSJim Jagielski
265*b1cdbd2cSJim Jagielski // #98198# evtl. feed characters to activated textedit
266*b1cdbd2cSJim Jagielski if(SID_ATTR_CHAR == nSId && GetView() && GetView()->IsTextEdit())
267*b1cdbd2cSJim Jagielski ImpAddPrintableCharactersToTextEdit(rReq, GetView());
268*b1cdbd2cSJim Jagielski
269*b1cdbd2cSJim Jagielski rReq.Done();
270*b1cdbd2cSJim Jagielski }
271*b1cdbd2cSJim Jagielski break;
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski case SID_FM_CREATE_CONTROL:
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstructUnoControl::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent ) );
276*b1cdbd2cSJim Jagielski rReq.Done();
277*b1cdbd2cSJim Jagielski }
278*b1cdbd2cSJim Jagielski break;
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski // #98721#
281*b1cdbd2cSJim Jagielski case SID_FM_CREATE_FIELDCONTROL:
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pDescriptorItem, SfxUnoAnyItem, SID_FM_DATACCESS_DESCRIPTOR, sal_False );
284*b1cdbd2cSJim Jagielski DBG_ASSERT( pDescriptorItem, "DrawViewShell::FuPermanent(SID_FM_CREATE_FIELDCONTROL): invalid request args!" );
285*b1cdbd2cSJim Jagielski
286*b1cdbd2cSJim Jagielski if(pDescriptorItem)
287*b1cdbd2cSJim Jagielski {
288*b1cdbd2cSJim Jagielski // get the form view
289*b1cdbd2cSJim Jagielski FmFormView* pFormView = PTR_CAST(FmFormView, mpDrawView);
290*b1cdbd2cSJim Jagielski SdrPageView* pPageView = pFormView ? pFormView->GetSdrPageView() : NULL;
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski if(pPageView)
293*b1cdbd2cSJim Jagielski {
294*b1cdbd2cSJim Jagielski ::svx::ODataAccessDescriptor aDescriptor(pDescriptorItem->GetValue());
295*b1cdbd2cSJim Jagielski SdrObject* pNewDBField = pFormView->CreateFieldControl(aDescriptor);
296*b1cdbd2cSJim Jagielski
297*b1cdbd2cSJim Jagielski if(pNewDBField)
298*b1cdbd2cSJim Jagielski {
299*b1cdbd2cSJim Jagielski Rectangle aVisArea = GetActiveWindow()->PixelToLogic(Rectangle(Point(0,0), GetActiveWindow()->GetOutputSizePixel()));
300*b1cdbd2cSJim Jagielski Point aObjPos(aVisArea.Center());
301*b1cdbd2cSJim Jagielski Size aObjSize(pNewDBField->GetLogicRect().GetSize());
302*b1cdbd2cSJim Jagielski aObjPos.X() -= aObjSize.Width() / 2;
303*b1cdbd2cSJim Jagielski aObjPos.Y() -= aObjSize.Height() / 2;
304*b1cdbd2cSJim Jagielski Rectangle aNewObjectRectangle(aObjPos, aObjSize);
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski pNewDBField->SetLogicRect(aNewObjectRectangle);
307*b1cdbd2cSJim Jagielski
308*b1cdbd2cSJim Jagielski GetView()->InsertObjectAtView(pNewDBField, *pPageView);
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski }
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski rReq.Done();
313*b1cdbd2cSJim Jagielski }
314*b1cdbd2cSJim Jagielski break;
315*b1cdbd2cSJim Jagielski
316*b1cdbd2cSJim Jagielski case SID_OBJECT_SELECT:
317*b1cdbd2cSJim Jagielski case SID_OBJECT_ROTATE:
318*b1cdbd2cSJim Jagielski case SID_OBJECT_MIRROR:
319*b1cdbd2cSJim Jagielski case SID_OBJECT_CROP:
320*b1cdbd2cSJim Jagielski case SID_OBJECT_TRANSPARENCE:
321*b1cdbd2cSJim Jagielski case SID_OBJECT_GRADIENT:
322*b1cdbd2cSJim Jagielski case SID_OBJECT_SHEAR:
323*b1cdbd2cSJim Jagielski case SID_OBJECT_CROOK_ROTATE:
324*b1cdbd2cSJim Jagielski case SID_OBJECT_CROOK_SLANT:
325*b1cdbd2cSJim Jagielski case SID_OBJECT_CROOK_STRETCH:
326*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_3D_LATHE:
327*b1cdbd2cSJim Jagielski {
328*b1cdbd2cSJim Jagielski short nSlotId = rReq.GetSlot();
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski if( nSlotId == SID_OBJECT_ROTATE )
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski // togle rotation
333*b1cdbd2cSJim Jagielski if( nOldSId == nSlotId )
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski nSlotId = SID_OBJECT_SELECT;
336*b1cdbd2cSJim Jagielski rReq.SetSlot( nSlotId );
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski }
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski if (nSlotId == SID_OBJECT_CROOK_ROTATE ||
341*b1cdbd2cSJim Jagielski nSlotId == SID_OBJECT_CROOK_SLANT ||
342*b1cdbd2cSJim Jagielski nSlotId == SID_OBJECT_CROOK_STRETCH)
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski if ( mpDrawView->GetMarkedObjectList().GetMarkCount() > 0 &&
345*b1cdbd2cSJim Jagielski !mpDrawView->IsCrookAllowed( mpDrawView->IsCrookNoContortion() ) )
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski if ( mpDrawView->IsPresObjSelected() )
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski ::sd::Window* pWindow = GetActiveWindow();
350*b1cdbd2cSJim Jagielski InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
351*b1cdbd2cSJim Jagielski }
352*b1cdbd2cSJim Jagielski else if ( QueryBox(GetActiveWindow(), WB_YES_NO,
353*b1cdbd2cSJim Jagielski String(SdResId(STR_ASK_FOR_CONVERT_TO_BEZIER) )
354*b1cdbd2cSJim Jagielski ).Execute() == RET_YES )
355*b1cdbd2cSJim Jagielski {
356*b1cdbd2cSJim Jagielski // Implizite Wandlung in Bezier
357*b1cdbd2cSJim Jagielski WaitObject aWait( (Window*)GetActiveWindow() );
358*b1cdbd2cSJim Jagielski mpDrawView->ConvertMarkedToPathObj(sal_False);
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski }
362*b1cdbd2cSJim Jagielski else if (nSlotId == SID_OBJECT_SHEAR)
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski sal_uLong i = 0;
365*b1cdbd2cSJim Jagielski const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
366*b1cdbd2cSJim Jagielski sal_uLong nMarkCnt = rMarkList.GetMarkCount();
367*b1cdbd2cSJim Jagielski sal_Bool b3DObjMarked = sal_False;
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski while (i < nMarkCnt && !b3DObjMarked)
370*b1cdbd2cSJim Jagielski {
371*b1cdbd2cSJim Jagielski if (rMarkList.GetMark(i)->GetMarkedSdrObj()->ISA(E3dObject))
372*b1cdbd2cSJim Jagielski {
373*b1cdbd2cSJim Jagielski b3DObjMarked = sal_True;
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski else
376*b1cdbd2cSJim Jagielski {
377*b1cdbd2cSJim Jagielski i++;
378*b1cdbd2cSJim Jagielski }
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim Jagielski if ( nMarkCnt > 0 && !b3DObjMarked &&
382*b1cdbd2cSJim Jagielski (!mpDrawView->IsShearAllowed() || !mpDrawView->IsDistortAllowed()) )
383*b1cdbd2cSJim Jagielski {
384*b1cdbd2cSJim Jagielski if ( mpDrawView->IsPresObjSelected() )
385*b1cdbd2cSJim Jagielski {
386*b1cdbd2cSJim Jagielski ::sd::Window* pWindow = GetActiveWindow();
387*b1cdbd2cSJim Jagielski InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski else if ( QueryBox(GetActiveWindow(), WB_YES_NO,
390*b1cdbd2cSJim Jagielski String(SdResId(STR_ASK_FOR_CONVERT_TO_BEZIER) )
391*b1cdbd2cSJim Jagielski ).Execute() == RET_YES )
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski // Implizite Wandlung in Bezier
394*b1cdbd2cSJim Jagielski WaitObject aWait( (Window*)GetActiveWindow() );
395*b1cdbd2cSJim Jagielski mpDrawView->ConvertMarkedToPathObj(sal_False);
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski }
398*b1cdbd2cSJim Jagielski }
399*b1cdbd2cSJim Jagielski
400*b1cdbd2cSJim Jagielski SetCurrentFunction( FuSelection::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
401*b1cdbd2cSJim Jagielski rReq.Done();
402*b1cdbd2cSJim Jagielski Invalidate( SID_OBJECT_SELECT );
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski break;
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski case SID_DRAW_LINE:
407*b1cdbd2cSJim Jagielski case SID_DRAW_XLINE:
408*b1cdbd2cSJim Jagielski case SID_DRAW_MEASURELINE:
409*b1cdbd2cSJim Jagielski case SID_LINE_ARROW_START:
410*b1cdbd2cSJim Jagielski case SID_LINE_ARROW_END:
411*b1cdbd2cSJim Jagielski case SID_LINE_ARROWS:
412*b1cdbd2cSJim Jagielski case SID_LINE_ARROW_CIRCLE:
413*b1cdbd2cSJim Jagielski case SID_LINE_CIRCLE_ARROW:
414*b1cdbd2cSJim Jagielski case SID_LINE_ARROW_SQUARE:
415*b1cdbd2cSJim Jagielski case SID_LINE_SQUARE_ARROW:
416*b1cdbd2cSJim Jagielski
417*b1cdbd2cSJim Jagielski case SID_DRAW_RECT:
418*b1cdbd2cSJim Jagielski case SID_DRAW_RECT_NOFILL:
419*b1cdbd2cSJim Jagielski case SID_DRAW_RECT_ROUND:
420*b1cdbd2cSJim Jagielski case SID_DRAW_RECT_ROUND_NOFILL:
421*b1cdbd2cSJim Jagielski case SID_DRAW_SQUARE:
422*b1cdbd2cSJim Jagielski case SID_DRAW_SQUARE_NOFILL:
423*b1cdbd2cSJim Jagielski case SID_DRAW_SQUARE_ROUND:
424*b1cdbd2cSJim Jagielski case SID_DRAW_SQUARE_ROUND_NOFILL:
425*b1cdbd2cSJim Jagielski case SID_DRAW_ELLIPSE:
426*b1cdbd2cSJim Jagielski case SID_DRAW_ELLIPSE_NOFILL:
427*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLE:
428*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLE_NOFILL:
429*b1cdbd2cSJim Jagielski case SID_DRAW_CAPTION:
430*b1cdbd2cSJim Jagielski case SID_DRAW_CAPTION_VERTICAL:
431*b1cdbd2cSJim Jagielski case SID_TOOL_CONNECTOR:
432*b1cdbd2cSJim Jagielski case SID_CONNECTOR_ARROW_START:
433*b1cdbd2cSJim Jagielski case SID_CONNECTOR_ARROW_END:
434*b1cdbd2cSJim Jagielski case SID_CONNECTOR_ARROWS:
435*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CIRCLE_START:
436*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CIRCLE_END:
437*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CIRCLES:
438*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE:
439*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_ARROW_START:
440*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_ARROW_END:
441*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_ARROWS:
442*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_CIRCLE_START:
443*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_CIRCLE_END:
444*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINE_CIRCLES:
445*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE:
446*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_ARROW_START:
447*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_ARROW_END:
448*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_ARROWS:
449*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_CIRCLE_START:
450*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_CIRCLE_END:
451*b1cdbd2cSJim Jagielski case SID_CONNECTOR_CURVE_CIRCLES:
452*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES:
453*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_ARROW_START:
454*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_ARROW_END:
455*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_ARROWS:
456*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_CIRCLE_START:
457*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_CIRCLE_END:
458*b1cdbd2cSJim Jagielski case SID_CONNECTOR_LINES_CIRCLES:
459*b1cdbd2cSJim Jagielski {
460*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstructRectangle::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent ) );
461*b1cdbd2cSJim Jagielski rReq.Done();
462*b1cdbd2cSJim Jagielski }
463*b1cdbd2cSJim Jagielski break;
464*b1cdbd2cSJim Jagielski case SID_DRAW_POLYGON:
465*b1cdbd2cSJim Jagielski case SID_DRAW_POLYGON_NOFILL:
466*b1cdbd2cSJim Jagielski case SID_DRAW_XPOLYGON:
467*b1cdbd2cSJim Jagielski case SID_DRAW_XPOLYGON_NOFILL:
468*b1cdbd2cSJim Jagielski case SID_DRAW_FREELINE:
469*b1cdbd2cSJim Jagielski case SID_DRAW_FREELINE_NOFILL:
470*b1cdbd2cSJim Jagielski case SID_DRAW_BEZIER_FILL: // BASIC
471*b1cdbd2cSJim Jagielski case SID_DRAW_BEZIER_NOFILL: // BASIC
472*b1cdbd2cSJim Jagielski {
473*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstructBezierPolygon::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent) );
474*b1cdbd2cSJim Jagielski rReq.Done();
475*b1cdbd2cSJim Jagielski }
476*b1cdbd2cSJim Jagielski break;
477*b1cdbd2cSJim Jagielski
478*b1cdbd2cSJim Jagielski case SID_GLUE_EDITMODE:
479*b1cdbd2cSJim Jagielski {
480*b1cdbd2cSJim Jagielski if (nOldSId != SID_GLUE_EDITMODE)
481*b1cdbd2cSJim Jagielski {
482*b1cdbd2cSJim Jagielski SetCurrentFunction( FuEditGluePoints::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent ) );
483*b1cdbd2cSJim Jagielski }
484*b1cdbd2cSJim Jagielski else
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
487*b1cdbd2cSJim Jagielski }
488*b1cdbd2cSJim Jagielski
489*b1cdbd2cSJim Jagielski rReq.Done();
490*b1cdbd2cSJim Jagielski }
491*b1cdbd2cSJim Jagielski break;
492*b1cdbd2cSJim Jagielski
493*b1cdbd2cSJim Jagielski case SID_DRAW_ARC:
494*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLEARC:
495*b1cdbd2cSJim Jagielski case SID_DRAW_PIE:
496*b1cdbd2cSJim Jagielski case SID_DRAW_PIE_NOFILL:
497*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLEPIE:
498*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLEPIE_NOFILL:
499*b1cdbd2cSJim Jagielski case SID_DRAW_ELLIPSECUT:
500*b1cdbd2cSJim Jagielski case SID_DRAW_ELLIPSECUT_NOFILL:
501*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLECUT:
502*b1cdbd2cSJim Jagielski case SID_DRAW_CIRCLECUT_NOFILL:
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstructArc::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent) );
505*b1cdbd2cSJim Jagielski rReq.Done();
506*b1cdbd2cSJim Jagielski }
507*b1cdbd2cSJim Jagielski break;
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski case SID_3D_CUBE:
510*b1cdbd2cSJim Jagielski case SID_3D_SHELL:
511*b1cdbd2cSJim Jagielski case SID_3D_SPHERE:
512*b1cdbd2cSJim Jagielski case SID_3D_TORUS:
513*b1cdbd2cSJim Jagielski case SID_3D_HALF_SPHERE:
514*b1cdbd2cSJim Jagielski case SID_3D_CYLINDER:
515*b1cdbd2cSJim Jagielski case SID_3D_CONE:
516*b1cdbd2cSJim Jagielski case SID_3D_PYRAMID:
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstruct3dObject::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent ) );
519*b1cdbd2cSJim Jagielski rReq.Done();
520*b1cdbd2cSJim Jagielski }
521*b1cdbd2cSJim Jagielski break;
522*b1cdbd2cSJim Jagielski
523*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_BASIC :
524*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_SYMBOL :
525*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_ARROW :
526*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_FLOWCHART :
527*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_CALLOUT :
528*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CS_STAR :
529*b1cdbd2cSJim Jagielski case SID_DRAW_CS_ID :
530*b1cdbd2cSJim Jagielski {
531*b1cdbd2cSJim Jagielski SetCurrentFunction( FuConstructCustomShape::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq, bPermanent ) );
532*b1cdbd2cSJim Jagielski rReq.Done();
533*b1cdbd2cSJim Jagielski
534*b1cdbd2cSJim Jagielski if ( nSId != SID_DRAW_CS_ID )
535*b1cdbd2cSJim Jagielski {
536*b1cdbd2cSJim Jagielski SfxBindings& rBind = GetViewFrame()->GetBindings();
537*b1cdbd2cSJim Jagielski rBind.Invalidate( nSId );
538*b1cdbd2cSJim Jagielski rBind.Update( nSId );
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski }
541*b1cdbd2cSJim Jagielski break;
542*b1cdbd2cSJim Jagielski
543*b1cdbd2cSJim Jagielski case SID_FORMATPAINTBRUSH:
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski SetCurrentFunction( FuFormatPaintBrush::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
546*b1cdbd2cSJim Jagielski rReq.Done();
547*b1cdbd2cSJim Jagielski SfxBindings& rBind = GetViewFrame()->GetBindings();
548*b1cdbd2cSJim Jagielski rBind.Invalidate( nSId );
549*b1cdbd2cSJim Jagielski rBind.Update( nSId );
550*b1cdbd2cSJim Jagielski break;
551*b1cdbd2cSJim Jagielski }
552*b1cdbd2cSJim Jagielski
553*b1cdbd2cSJim Jagielski default:
554*b1cdbd2cSJim Jagielski break;
555*b1cdbd2cSJim Jagielski }
556*b1cdbd2cSJim Jagielski
557*b1cdbd2cSJim Jagielski if(HasOldFunction())
558*b1cdbd2cSJim Jagielski {
559*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId = GetOldFunction()->GetSlotID();
560*b1cdbd2cSJim Jagielski
561*b1cdbd2cSJim Jagielski GetOldFunction()->Deactivate();
562*b1cdbd2cSJim Jagielski SetOldFunction(0);
563*b1cdbd2cSJim Jagielski
564*b1cdbd2cSJim Jagielski SfxBindings& rBind = GetViewFrame()->GetBindings();
565*b1cdbd2cSJim Jagielski rBind.Invalidate( nSlotId );
566*b1cdbd2cSJim Jagielski rBind.Update( nSlotId );
567*b1cdbd2cSJim Jagielski }
568*b1cdbd2cSJim Jagielski
569*b1cdbd2cSJim Jagielski if(HasCurrentFunction())
570*b1cdbd2cSJim Jagielski {
571*b1cdbd2cSJim Jagielski GetCurrentFunction()->Activate();
572*b1cdbd2cSJim Jagielski SetOldFunction( GetCurrentFunction() );
573*b1cdbd2cSJim Jagielski
574*b1cdbd2cSJim Jagielski SetHelpId( GetCurrentFunction()->GetSlotID() );
575*b1cdbd2cSJim Jagielski }
576*b1cdbd2cSJim Jagielski
577*b1cdbd2cSJim Jagielski // Shell wird invalidiert, schneller als einzeln (laut MI)
578*b1cdbd2cSJim Jagielski // Jetzt explizit der letzte Slot incl. Update()
579*b1cdbd2cSJim Jagielski Invalidate();
580*b1cdbd2cSJim Jagielski
581*b1cdbd2cSJim Jagielski // #97016# III CTRL-SID_OBJECT_SELECT -> select first draw object if none is selected yet
582*b1cdbd2cSJim Jagielski if(SID_OBJECT_SELECT == nSId && HasCurrentFunction() && (rReq.GetModifier() & KEY_MOD1))
583*b1cdbd2cSJim Jagielski {
584*b1cdbd2cSJim Jagielski if(!GetView()->AreObjectsMarked())
585*b1cdbd2cSJim Jagielski {
586*b1cdbd2cSJim Jagielski // select first object
587*b1cdbd2cSJim Jagielski GetView()->UnmarkAllObj();
588*b1cdbd2cSJim Jagielski GetView()->MarkNextObj(sal_True);
589*b1cdbd2cSJim Jagielski
590*b1cdbd2cSJim Jagielski // ...and make it visible
591*b1cdbd2cSJim Jagielski if(GetView()->AreObjectsMarked())
592*b1cdbd2cSJim Jagielski GetView()->MakeVisible(GetView()->GetAllMarkedRect(), *GetActiveWindow());
593*b1cdbd2cSJim Jagielski }
594*b1cdbd2cSJim Jagielski }
595*b1cdbd2cSJim Jagielski
596*b1cdbd2cSJim Jagielski // #97016# with qualifier construct directly
597*b1cdbd2cSJim Jagielski if(HasCurrentFunction() && (rReq.GetModifier() & KEY_MOD1))
598*b1cdbd2cSJim Jagielski {
599*b1cdbd2cSJim Jagielski // get SdOptions
600*b1cdbd2cSJim Jagielski SdOptions* pOptions = SD_MOD()->GetSdOptions(GetDoc()->GetDocumentType());
601*b1cdbd2cSJim Jagielski sal_uInt32 nDefaultObjectSizeWidth(pOptions->GetDefaultObjectSizeWidth());
602*b1cdbd2cSJim Jagielski sal_uInt32 nDefaultObjectSizeHeight(pOptions->GetDefaultObjectSizeHeight());
603*b1cdbd2cSJim Jagielski
604*b1cdbd2cSJim Jagielski // calc position and size
605*b1cdbd2cSJim Jagielski Rectangle aVisArea = GetActiveWindow()->PixelToLogic(Rectangle(Point(0,0), GetActiveWindow()->GetOutputSizePixel()));
606*b1cdbd2cSJim Jagielski Point aPagePos = aVisArea.Center();
607*b1cdbd2cSJim Jagielski aPagePos.X() -= nDefaultObjectSizeWidth / 2;
608*b1cdbd2cSJim Jagielski aPagePos.Y() -= nDefaultObjectSizeHeight / 2;
609*b1cdbd2cSJim Jagielski Rectangle aNewObjectRectangle(aPagePos, Size(nDefaultObjectSizeWidth, nDefaultObjectSizeHeight));
610*b1cdbd2cSJim Jagielski SdrPageView* pPageView = mpDrawView->GetSdrPageView();
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski if(pPageView)
613*b1cdbd2cSJim Jagielski {
614*b1cdbd2cSJim Jagielski // create the default object
615*b1cdbd2cSJim Jagielski SdrObject* pObj = GetCurrentFunction()->CreateDefaultObject(nSId, aNewObjectRectangle);
616*b1cdbd2cSJim Jagielski
617*b1cdbd2cSJim Jagielski if(pObj)
618*b1cdbd2cSJim Jagielski {
619*b1cdbd2cSJim Jagielski // insert into page
620*b1cdbd2cSJim Jagielski GetView()->InsertObjectAtView(pObj, *pPageView);
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski // Now that pFuActual has done what it was created for we
623*b1cdbd2cSJim Jagielski // can switch on the edit mode for callout objects.
624*b1cdbd2cSJim Jagielski switch (nSId)
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski case SID_DRAW_CAPTION:
627*b1cdbd2cSJim Jagielski case SID_DRAW_CAPTION_VERTICAL:
628*b1cdbd2cSJim Jagielski {
629*b1cdbd2cSJim Jagielski // Make FuText the current function.
630*b1cdbd2cSJim Jagielski SfxUInt16Item aItem (SID_TEXTEDIT, 1);
631*b1cdbd2cSJim Jagielski GetViewFrame()->GetDispatcher()->
632*b1cdbd2cSJim Jagielski Execute(SID_TEXTEDIT, SFX_CALLMODE_SYNCHRON |
633*b1cdbd2cSJim Jagielski SFX_CALLMODE_RECORD, &aItem, 0L);
634*b1cdbd2cSJim Jagielski // Put text object into edit mode.
635*b1cdbd2cSJim Jagielski GetView()->SdrBeginTextEdit(static_cast<SdrTextObj*>(pObj), pPageView);
636*b1cdbd2cSJim Jagielski break;
637*b1cdbd2cSJim Jagielski }
638*b1cdbd2cSJim Jagielski }
639*b1cdbd2cSJim Jagielski }
640*b1cdbd2cSJim Jagielski }
641*b1cdbd2cSJim Jagielski }
642*b1cdbd2cSJim Jagielski }
643*b1cdbd2cSJim Jagielski
644*b1cdbd2cSJim Jagielski /*************************************************************************
645*b1cdbd2cSJim Jagielski |*
646*b1cdbd2cSJim Jagielski |* SfxRequests fuer Support-Funktionen
647*b1cdbd2cSJim Jagielski |*
648*b1cdbd2cSJim Jagielski \************************************************************************/
649*b1cdbd2cSJim Jagielski
FuSupport(SfxRequest & rReq)650*b1cdbd2cSJim Jagielski void DrawViewShell::FuSupport(SfxRequest& rReq)
651*b1cdbd2cSJim Jagielski {
652*b1cdbd2cSJim Jagielski if( rReq.GetSlot() == SID_STYLE_FAMILY && rReq.GetArgs())
653*b1cdbd2cSJim Jagielski GetDocSh()->SetStyleFamily(((SfxUInt16Item&)rReq.GetArgs()->Get( SID_STYLE_FAMILY )).GetValue());
654*b1cdbd2cSJim Jagielski
655*b1cdbd2cSJim Jagielski // Waehrend einer Native-Diashow wird nichts ausgefuehrt!
656*b1cdbd2cSJim Jagielski if(SlideShow::IsRunning(GetViewShellBase()) &&
657*b1cdbd2cSJim Jagielski (rReq.GetSlot() != SID_PRESENTATION_END &&
658*b1cdbd2cSJim Jagielski rReq.GetSlot() != SID_SIZE_PAGE))
659*b1cdbd2cSJim Jagielski return;
660*b1cdbd2cSJim Jagielski
661*b1cdbd2cSJim Jagielski CheckLineTo (rReq);
662*b1cdbd2cSJim Jagielski
663*b1cdbd2cSJim Jagielski if( !mpDrawView )
664*b1cdbd2cSJim Jagielski return;
665*b1cdbd2cSJim Jagielski
666*b1cdbd2cSJim Jagielski sal_uInt16 nSId = rReq.GetSlot();
667*b1cdbd2cSJim Jagielski
668*b1cdbd2cSJim Jagielski // Slot wird evtl. gemapped (ToolboxImages/-Slots)
669*b1cdbd2cSJim Jagielski MapSlot( nSId );
670*b1cdbd2cSJim Jagielski
671*b1cdbd2cSJim Jagielski switch ( nSId )
672*b1cdbd2cSJim Jagielski {
673*b1cdbd2cSJim Jagielski case SID_CLEAR_UNDO_STACK:
674*b1cdbd2cSJim Jagielski {
675*b1cdbd2cSJim Jagielski GetDocSh()->ClearUndoBuffer();
676*b1cdbd2cSJim Jagielski rReq.Ignore ();
677*b1cdbd2cSJim Jagielski }
678*b1cdbd2cSJim Jagielski break;
679*b1cdbd2cSJim Jagielski
680*b1cdbd2cSJim Jagielski // Slots der ToolboxController gemapped ausfuehren
681*b1cdbd2cSJim Jagielski case SID_OBJECT_CHOOSE_MODE:
682*b1cdbd2cSJim Jagielski case SID_POSITION:
683*b1cdbd2cSJim Jagielski case SID_OBJECT_ALIGN:
684*b1cdbd2cSJim Jagielski case SID_ZOOM_TOOLBOX:
685*b1cdbd2cSJim Jagielski case SID_DRAWTBX_TEXT:
686*b1cdbd2cSJim Jagielski case SID_DRAWTBX_RECTANGLES:
687*b1cdbd2cSJim Jagielski case SID_DRAWTBX_ELLIPSES:
688*b1cdbd2cSJim Jagielski case SID_DRAWTBX_LINES:
689*b1cdbd2cSJim Jagielski case SID_DRAWTBX_ARROWS:
690*b1cdbd2cSJim Jagielski case SID_DRAWTBX_3D_OBJECTS:
691*b1cdbd2cSJim Jagielski case SID_DRAWTBX_CONNECTORS:
692*b1cdbd2cSJim Jagielski case SID_DRAWTBX_INSERT:
693*b1cdbd2cSJim Jagielski {
694*b1cdbd2cSJim Jagielski sal_uInt16 nMappedSlot = GetMappedSlot( nSId );
695*b1cdbd2cSJim Jagielski if( nMappedSlot > 0 )
696*b1cdbd2cSJim Jagielski {
697*b1cdbd2cSJim Jagielski SfxRequest aReq( nMappedSlot, 0, GetDoc()->GetItemPool() );
698*b1cdbd2cSJim Jagielski ExecuteSlot( aReq );
699*b1cdbd2cSJim Jagielski }
700*b1cdbd2cSJim Jagielski }
701*b1cdbd2cSJim Jagielski break;
702*b1cdbd2cSJim Jagielski
703*b1cdbd2cSJim Jagielski case SID_PRESENTATION:
704*b1cdbd2cSJim Jagielski case SID_REHEARSE_TIMINGS:
705*b1cdbd2cSJim Jagielski {
706*b1cdbd2cSJim Jagielski Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() );
707*b1cdbd2cSJim Jagielski if( xPresentation.is() )
708*b1cdbd2cSJim Jagielski {
709*b1cdbd2cSJim Jagielski if( ( SID_REHEARSE_TIMINGS != rReq.GetSlot() ) )
710*b1cdbd2cSJim Jagielski xPresentation->start();
711*b1cdbd2cSJim Jagielski else
712*b1cdbd2cSJim Jagielski xPresentation->rehearseTimings();
713*b1cdbd2cSJim Jagielski }
714*b1cdbd2cSJim Jagielski rReq.Ignore ();
715*b1cdbd2cSJim Jagielski }
716*b1cdbd2cSJim Jagielski break;
717*b1cdbd2cSJim Jagielski
718*b1cdbd2cSJim Jagielski case SID_PRESENTATION_END:
719*b1cdbd2cSJim Jagielski {
720*b1cdbd2cSJim Jagielski StopSlideShow(true);
721*b1cdbd2cSJim Jagielski
722*b1cdbd2cSJim Jagielski rReq.Ignore ();
723*b1cdbd2cSJim Jagielski }
724*b1cdbd2cSJim Jagielski break;
725*b1cdbd2cSJim Jagielski
726*b1cdbd2cSJim Jagielski case SID_BEZIER_EDIT:
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski mpDrawView->SetFrameDragSingles(!mpDrawView->IsFrameDragSingles());
729*b1cdbd2cSJim Jagielski
730*b1cdbd2cSJim Jagielski /******************************************************************
731*b1cdbd2cSJim Jagielski * ObjectBar einschalten
732*b1cdbd2cSJim Jagielski ******************************************************************/
733*b1cdbd2cSJim Jagielski if( dynamic_cast< FuSelection* >( GetCurrentFunction().get() ) || dynamic_cast< FuConstructBezierPolygon* >( GetCurrentFunction().get() ) )
734*b1cdbd2cSJim Jagielski {
735*b1cdbd2cSJim Jagielski // Tell the tool bar manager about the context change.
736*b1cdbd2cSJim Jagielski GetViewShellBase().GetToolBarManager()->SelectionHasChanged(*this,*mpDrawView);
737*b1cdbd2cSJim Jagielski }
738*b1cdbd2cSJim Jagielski
739*b1cdbd2cSJim Jagielski Invalidate(SID_BEZIER_EDIT);
740*b1cdbd2cSJim Jagielski rReq.Ignore();
741*b1cdbd2cSJim Jagielski }
742*b1cdbd2cSJim Jagielski break;
743*b1cdbd2cSJim Jagielski
744*b1cdbd2cSJim Jagielski case SID_OBJECT_CLOSE:
745*b1cdbd2cSJim Jagielski {
746*b1cdbd2cSJim Jagielski const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
747*b1cdbd2cSJim Jagielski if ( rMarkList.GetMark(0) && !mpDrawView->IsAction() )
748*b1cdbd2cSJim Jagielski {
749*b1cdbd2cSJim Jagielski SdrPathObj* pPathObj = (SdrPathObj*) rMarkList.GetMark(0)->GetMarkedSdrObj();
750*b1cdbd2cSJim Jagielski const bool bUndo = mpDrawView->IsUndoEnabled();
751*b1cdbd2cSJim Jagielski if( bUndo )
752*b1cdbd2cSJim Jagielski mpDrawView->BegUndo(String(SdResId(STR_UNDO_BEZCLOSE)));
753*b1cdbd2cSJim Jagielski
754*b1cdbd2cSJim Jagielski mpDrawView->UnmarkAllPoints();
755*b1cdbd2cSJim Jagielski
756*b1cdbd2cSJim Jagielski if( bUndo )
757*b1cdbd2cSJim Jagielski mpDrawView->AddUndo(new SdrUndoGeoObj(*pPathObj));
758*b1cdbd2cSJim Jagielski
759*b1cdbd2cSJim Jagielski pPathObj->ToggleClosed();
760*b1cdbd2cSJim Jagielski
761*b1cdbd2cSJim Jagielski if( bUndo )
762*b1cdbd2cSJim Jagielski mpDrawView->EndUndo();
763*b1cdbd2cSJim Jagielski }
764*b1cdbd2cSJim Jagielski rReq.Done();
765*b1cdbd2cSJim Jagielski }
766*b1cdbd2cSJim Jagielski break;
767*b1cdbd2cSJim Jagielski
768*b1cdbd2cSJim Jagielski case SID_CUT:
769*b1cdbd2cSJim Jagielski {
770*b1cdbd2cSJim Jagielski if ( mpDrawView->IsPresObjSelected(sal_False, sal_True, sal_False, sal_True) )
771*b1cdbd2cSJim Jagielski {
772*b1cdbd2cSJim Jagielski ::sd::Window* pWindow = GetActiveWindow();
773*b1cdbd2cSJim Jagielski InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski else
776*b1cdbd2cSJim Jagielski {
777*b1cdbd2cSJim Jagielski if(HasCurrentFunction())
778*b1cdbd2cSJim Jagielski {
779*b1cdbd2cSJim Jagielski GetCurrentFunction()->DoCut();
780*b1cdbd2cSJim Jagielski }
781*b1cdbd2cSJim Jagielski else if(mpDrawView)
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski mpDrawView->DoCut();
784*b1cdbd2cSJim Jagielski }
785*b1cdbd2cSJim Jagielski }
786*b1cdbd2cSJim Jagielski rReq.Ignore ();
787*b1cdbd2cSJim Jagielski }
788*b1cdbd2cSJim Jagielski break;
789*b1cdbd2cSJim Jagielski
790*b1cdbd2cSJim Jagielski case SID_COPY:
791*b1cdbd2cSJim Jagielski {
792*b1cdbd2cSJim Jagielski if ( mpDrawView->IsPresObjSelected(sal_False, sal_True, sal_False, sal_True) )
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski ::sd::Window* pWindow = GetActiveWindow();
795*b1cdbd2cSJim Jagielski InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
796*b1cdbd2cSJim Jagielski }
797*b1cdbd2cSJim Jagielski else
798*b1cdbd2cSJim Jagielski {
799*b1cdbd2cSJim Jagielski if(HasCurrentFunction())
800*b1cdbd2cSJim Jagielski {
801*b1cdbd2cSJim Jagielski GetCurrentFunction()->DoCopy();
802*b1cdbd2cSJim Jagielski }
803*b1cdbd2cSJim Jagielski else if( mpDrawView )
804*b1cdbd2cSJim Jagielski {
805*b1cdbd2cSJim Jagielski mpDrawView->DoCopy();
806*b1cdbd2cSJim Jagielski }
807*b1cdbd2cSJim Jagielski }
808*b1cdbd2cSJim Jagielski rReq.Ignore ();
809*b1cdbd2cSJim Jagielski }
810*b1cdbd2cSJim Jagielski break;
811*b1cdbd2cSJim Jagielski
812*b1cdbd2cSJim Jagielski case SID_PASTE:
813*b1cdbd2cSJim Jagielski {
814*b1cdbd2cSJim Jagielski WaitObject aWait( (Window*)GetActiveWindow() );
815*b1cdbd2cSJim Jagielski
816*b1cdbd2cSJim Jagielski if(HasCurrentFunction())
817*b1cdbd2cSJim Jagielski {
818*b1cdbd2cSJim Jagielski GetCurrentFunction()->DoPaste();
819*b1cdbd2cSJim Jagielski }
820*b1cdbd2cSJim Jagielski else if(mpDrawView)
821*b1cdbd2cSJim Jagielski {
822*b1cdbd2cSJim Jagielski mpDrawView->DoPaste();
823*b1cdbd2cSJim Jagielski }
824*b1cdbd2cSJim Jagielski
825*b1cdbd2cSJim Jagielski rReq.Ignore ();
826*b1cdbd2cSJim Jagielski }
827*b1cdbd2cSJim Jagielski break;
828*b1cdbd2cSJim Jagielski
829*b1cdbd2cSJim Jagielski case SID_CLIPBOARD_FORMAT_ITEMS:
830*b1cdbd2cSJim Jagielski {
831*b1cdbd2cSJim Jagielski WaitObject aWait( (Window*)GetActiveWindow() );
832*b1cdbd2cSJim Jagielski TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( GetActiveWindow() ) );
833*b1cdbd2cSJim Jagielski const SfxItemSet* pReqArgs = rReq.GetArgs();
834*b1cdbd2cSJim Jagielski sal_uInt32 nFormat = 0;
835*b1cdbd2cSJim Jagielski
836*b1cdbd2cSJim Jagielski if( pReqArgs )
837*b1cdbd2cSJim Jagielski {
838*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pIsActive, SfxUInt32Item, SID_CLIPBOARD_FORMAT_ITEMS, sal_False );
839*b1cdbd2cSJim Jagielski nFormat = pIsActive->GetValue();
840*b1cdbd2cSJim Jagielski }
841*b1cdbd2cSJim Jagielski
842*b1cdbd2cSJim Jagielski
843*b1cdbd2cSJim Jagielski if( nFormat && aDataHelper.GetTransferable().is() )
844*b1cdbd2cSJim Jagielski {
845*b1cdbd2cSJim Jagielski sal_Int8 nAction = DND_ACTION_COPY;
846*b1cdbd2cSJim Jagielski
847*b1cdbd2cSJim Jagielski if( !mpDrawView->InsertData( aDataHelper,
848*b1cdbd2cSJim Jagielski GetActiveWindow()->PixelToLogic( Rectangle( Point(), GetActiveWindow()->GetOutputSizePixel() ).Center() ),
849*b1cdbd2cSJim Jagielski nAction, sal_False, nFormat ) )
850*b1cdbd2cSJim Jagielski {
851*b1cdbd2cSJim Jagielski INetBookmark aINetBookmark( aEmptyStr, aEmptyStr );
852*b1cdbd2cSJim Jagielski
853*b1cdbd2cSJim Jagielski if( ( aDataHelper.HasFormat( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK ) &&
854*b1cdbd2cSJim Jagielski aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK, aINetBookmark ) ) ||
855*b1cdbd2cSJim Jagielski ( aDataHelper.HasFormat( SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR ) &&
856*b1cdbd2cSJim Jagielski aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR, aINetBookmark ) ) ||
857*b1cdbd2cSJim Jagielski ( aDataHelper.HasFormat( SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR ) &&
858*b1cdbd2cSJim Jagielski aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR, aINetBookmark ) ) )
859*b1cdbd2cSJim Jagielski {
860*b1cdbd2cSJim Jagielski InsertURLField( aINetBookmark.GetURL(), aINetBookmark.GetDescription(), aEmptyStr, NULL );
861*b1cdbd2cSJim Jagielski }
862*b1cdbd2cSJim Jagielski }
863*b1cdbd2cSJim Jagielski }
864*b1cdbd2cSJim Jagielski }
865*b1cdbd2cSJim Jagielski break;
866*b1cdbd2cSJim Jagielski
867*b1cdbd2cSJim Jagielski case SID_DELETE:
868*b1cdbd2cSJim Jagielski {
869*b1cdbd2cSJim Jagielski if ( mpDrawView->IsTextEdit() )
870*b1cdbd2cSJim Jagielski {
871*b1cdbd2cSJim Jagielski OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
872*b1cdbd2cSJim Jagielski
873*b1cdbd2cSJim Jagielski if (pOLV)
874*b1cdbd2cSJim Jagielski {
875*b1cdbd2cSJim Jagielski KeyCode aKCode(KEY_DELETE);
876*b1cdbd2cSJim Jagielski KeyEvent aKEvt( 0, aKCode);
877*b1cdbd2cSJim Jagielski pOLV->PostKeyEvent(aKEvt);
878*b1cdbd2cSJim Jagielski }
879*b1cdbd2cSJim Jagielski }
880*b1cdbd2cSJim Jagielski else if ( mpDrawView->IsPresObjSelected(sal_False, sal_True, sal_False, sal_True) )
881*b1cdbd2cSJim Jagielski {
882*b1cdbd2cSJim Jagielski ::sd::Window* pWindow = GetActiveWindow();
883*b1cdbd2cSJim Jagielski InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
884*b1cdbd2cSJim Jagielski }
885*b1cdbd2cSJim Jagielski else
886*b1cdbd2cSJim Jagielski {
887*b1cdbd2cSJim Jagielski KeyCode aKCode(KEY_DELETE);
888*b1cdbd2cSJim Jagielski KeyEvent aKEvt( 0, aKCode);
889*b1cdbd2cSJim Jagielski
890*b1cdbd2cSJim Jagielski bool bConsumed = mpDrawView && mpDrawView->getSmartTags().KeyInput( aKEvt );
891*b1cdbd2cSJim Jagielski
892*b1cdbd2cSJim Jagielski if( !bConsumed && HasCurrentFunction() )
893*b1cdbd2cSJim Jagielski bConsumed = GetCurrentFunction()->KeyInput(aKEvt);
894*b1cdbd2cSJim Jagielski
895*b1cdbd2cSJim Jagielski if( !bConsumed && mpDrawView )
896*b1cdbd2cSJim Jagielski mpDrawView->DeleteMarked();
897*b1cdbd2cSJim Jagielski }
898*b1cdbd2cSJim Jagielski rReq.Ignore ();
899*b1cdbd2cSJim Jagielski }
900*b1cdbd2cSJim Jagielski break;
901*b1cdbd2cSJim Jagielski
902*b1cdbd2cSJim Jagielski case SID_NOTESMODE:
903*b1cdbd2cSJim Jagielski case SID_HANDOUTMODE:
904*b1cdbd2cSJim Jagielski // AutoLayouts have to be ready.
905*b1cdbd2cSJim Jagielski GetDoc()->StopWorkStartupDelay();
906*b1cdbd2cSJim Jagielski // Fall through to following case statements.
907*b1cdbd2cSJim Jagielski
908*b1cdbd2cSJim Jagielski case SID_DRAWINGMODE:
909*b1cdbd2cSJim Jagielski case SID_DIAMODE:
910*b1cdbd2cSJim Jagielski case SID_OUTLINEMODE:
911*b1cdbd2cSJim Jagielski // Let the sub-shell manager handle the slot handling.
912*b1cdbd2cSJim Jagielski framework::FrameworkHelper::Instance(GetViewShellBase())->HandleModeChangeSlot(
913*b1cdbd2cSJim Jagielski nSId,
914*b1cdbd2cSJim Jagielski rReq);
915*b1cdbd2cSJim Jagielski rReq.Ignore ();
916*b1cdbd2cSJim Jagielski break;
917*b1cdbd2cSJim Jagielski
918*b1cdbd2cSJim Jagielski case SID_MASTERPAGE: // BASIC
919*b1cdbd2cSJim Jagielski case SID_SLIDE_MASTERPAGE: // BASIC
920*b1cdbd2cSJim Jagielski case SID_TITLE_MASTERPAGE: // BASIC
921*b1cdbd2cSJim Jagielski case SID_NOTES_MASTERPAGE: // BASIC
922*b1cdbd2cSJim Jagielski case SID_HANDOUT_MASTERPAGE: // BASIC
923*b1cdbd2cSJim Jagielski {
924*b1cdbd2cSJim Jagielski // AutoLayouts muessen fertig sein
925*b1cdbd2cSJim Jagielski GetDoc()->StopWorkStartupDelay();
926*b1cdbd2cSJim Jagielski
927*b1cdbd2cSJim Jagielski const SfxItemSet* pReqArgs = rReq.GetArgs();
928*b1cdbd2cSJim Jagielski
929*b1cdbd2cSJim Jagielski if ( pReqArgs )
930*b1cdbd2cSJim Jagielski {
931*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG (rReq, pIsActive, SfxBoolItem, SID_MASTERPAGE, sal_False);
932*b1cdbd2cSJim Jagielski mbIsLayerModeActive = pIsActive->GetValue ();
933*b1cdbd2cSJim Jagielski }
934*b1cdbd2cSJim Jagielski
935*b1cdbd2cSJim Jagielski Broadcast (
936*b1cdbd2cSJim Jagielski ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START));
937*b1cdbd2cSJim Jagielski
938*b1cdbd2cSJim Jagielski if (nSId == SID_MASTERPAGE ||
939*b1cdbd2cSJim Jagielski (nSId == SID_SLIDE_MASTERPAGE && mePageKind == PK_STANDARD) ||
940*b1cdbd2cSJim Jagielski (nSId == SID_TITLE_MASTERPAGE && mePageKind == PK_STANDARD) ||
941*b1cdbd2cSJim Jagielski (nSId == SID_NOTES_MASTERPAGE && mePageKind == PK_NOTES) ||
942*b1cdbd2cSJim Jagielski (nSId == SID_HANDOUT_MASTERPAGE && mePageKind == PK_HANDOUT))
943*b1cdbd2cSJim Jagielski {
944*b1cdbd2cSJim Jagielski if (nSId == SID_TITLE_MASTERPAGE ||
945*b1cdbd2cSJim Jagielski nSId == SID_SLIDE_MASTERPAGE)
946*b1cdbd2cSJim Jagielski {
947*b1cdbd2cSJim Jagielski // Gibt es eine Seite mit dem AutoLayout "Titel"?
948*b1cdbd2cSJim Jagielski sal_Bool bFound = sal_False;
949*b1cdbd2cSJim Jagielski sal_uInt16 i = 0;
950*b1cdbd2cSJim Jagielski sal_uInt16 nCount = GetDoc()->GetSdPageCount(PK_STANDARD);
951*b1cdbd2cSJim Jagielski
952*b1cdbd2cSJim Jagielski while (i < nCount && !bFound)
953*b1cdbd2cSJim Jagielski {
954*b1cdbd2cSJim Jagielski SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
955*b1cdbd2cSJim Jagielski
956*b1cdbd2cSJim Jagielski if (nSId == SID_TITLE_MASTERPAGE && pPage->GetAutoLayout() == AUTOLAYOUT_TITLE)
957*b1cdbd2cSJim Jagielski {
958*b1cdbd2cSJim Jagielski bFound = sal_True;
959*b1cdbd2cSJim Jagielski SwitchPage((pPage->GetPageNum() - 1) / 2);
960*b1cdbd2cSJim Jagielski }
961*b1cdbd2cSJim Jagielski else if (nSId == SID_SLIDE_MASTERPAGE && pPage->GetAutoLayout() != AUTOLAYOUT_TITLE)
962*b1cdbd2cSJim Jagielski {
963*b1cdbd2cSJim Jagielski bFound = sal_True;
964*b1cdbd2cSJim Jagielski SwitchPage((pPage->GetPageNum() - 1) / 2);
965*b1cdbd2cSJim Jagielski }
966*b1cdbd2cSJim Jagielski
967*b1cdbd2cSJim Jagielski i++;
968*b1cdbd2cSJim Jagielski }
969*b1cdbd2cSJim Jagielski }
970*b1cdbd2cSJim Jagielski
971*b1cdbd2cSJim Jagielski // Default-Layer der MasterPage einschalten
972*b1cdbd2cSJim Jagielski mpDrawView->SetActiveLayer( String( SdResId(STR_LAYER_BCKGRNDOBJ) ) );
973*b1cdbd2cSJim Jagielski
974*b1cdbd2cSJim Jagielski ChangeEditMode(EM_MASTERPAGE, mbIsLayerModeActive);
975*b1cdbd2cSJim Jagielski
976*b1cdbd2cSJim Jagielski if(HasCurrentFunction(SID_BEZIER_EDIT))
977*b1cdbd2cSJim Jagielski GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
978*b1cdbd2cSJim Jagielski }
979*b1cdbd2cSJim Jagielski else
980*b1cdbd2cSJim Jagielski {
981*b1cdbd2cSJim Jagielski // Switch to requested ViewShell.
982*b1cdbd2cSJim Jagielski ::OUString sRequestedView;
983*b1cdbd2cSJim Jagielski PageKind ePageKind;
984*b1cdbd2cSJim Jagielski switch (nSId)
985*b1cdbd2cSJim Jagielski {
986*b1cdbd2cSJim Jagielski case SID_SLIDE_MASTERPAGE:
987*b1cdbd2cSJim Jagielski case SID_TITLE_MASTERPAGE:
988*b1cdbd2cSJim Jagielski default:
989*b1cdbd2cSJim Jagielski sRequestedView = framework::FrameworkHelper::msImpressViewURL;
990*b1cdbd2cSJim Jagielski ePageKind = PK_STANDARD;
991*b1cdbd2cSJim Jagielski break;
992*b1cdbd2cSJim Jagielski
993*b1cdbd2cSJim Jagielski case SID_NOTES_MASTERPAGE:
994*b1cdbd2cSJim Jagielski sRequestedView = framework::FrameworkHelper::msNotesViewURL;
995*b1cdbd2cSJim Jagielski ePageKind = PK_NOTES;
996*b1cdbd2cSJim Jagielski break;
997*b1cdbd2cSJim Jagielski
998*b1cdbd2cSJim Jagielski case SID_HANDOUT_MASTERPAGE:
999*b1cdbd2cSJim Jagielski sRequestedView = framework::FrameworkHelper::msHandoutViewURL;
1000*b1cdbd2cSJim Jagielski ePageKind = PK_HANDOUT;
1001*b1cdbd2cSJim Jagielski break;
1002*b1cdbd2cSJim Jagielski }
1003*b1cdbd2cSJim Jagielski
1004*b1cdbd2cSJim Jagielski mpFrameView->SetViewShEditMode(EM_MASTERPAGE, ePageKind);
1005*b1cdbd2cSJim Jagielski mpFrameView->SetLayerMode(mbIsLayerModeActive);
1006*b1cdbd2cSJim Jagielski framework::FrameworkHelper::Instance(GetViewShellBase())->RequestView(
1007*b1cdbd2cSJim Jagielski sRequestedView,
1008*b1cdbd2cSJim Jagielski framework::FrameworkHelper::msCenterPaneURL);
1009*b1cdbd2cSJim Jagielski }
1010*b1cdbd2cSJim Jagielski Broadcast (
1011*b1cdbd2cSJim Jagielski ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_END));
1012*b1cdbd2cSJim Jagielski
1013*b1cdbd2cSJim Jagielski InvalidateWindows();
1014*b1cdbd2cSJim Jagielski Invalidate();
1015*b1cdbd2cSJim Jagielski
1016*b1cdbd2cSJim Jagielski rReq.Done();
1017*b1cdbd2cSJim Jagielski }
1018*b1cdbd2cSJim Jagielski break;
1019*b1cdbd2cSJim Jagielski
1020*b1cdbd2cSJim Jagielski
1021*b1cdbd2cSJim Jagielski case SID_CLOSE_MASTER_VIEW:
1022*b1cdbd2cSJim Jagielski {
1023*b1cdbd2cSJim Jagielski Broadcast (
1024*b1cdbd2cSJim Jagielski ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START));
1025*b1cdbd2cSJim Jagielski
1026*b1cdbd2cSJim Jagielski // Switch page back to the first one. Not doing so leads to a
1027*b1cdbd2cSJim Jagielski // crash. This seems to be some bug in the edit mode switching
1028*b1cdbd2cSJim Jagielski // and page switching methods.
1029*b1cdbd2cSJim Jagielski SwitchPage (0);
1030*b1cdbd2cSJim Jagielski ChangeEditMode(EM_PAGE, IsLayerModeActive());
1031*b1cdbd2cSJim Jagielski Broadcast (
1032*b1cdbd2cSJim Jagielski ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_END));
1033*b1cdbd2cSJim Jagielski
1034*b1cdbd2cSJim Jagielski if(HasCurrentFunction(SID_BEZIER_EDIT))
1035*b1cdbd2cSJim Jagielski {
1036*b1cdbd2cSJim Jagielski GetViewFrame()->GetDispatcher()->Execute(
1037*b1cdbd2cSJim Jagielski SID_OBJECT_SELECT,
1038*b1cdbd2cSJim Jagielski SFX_CALLMODE_ASYNCHRON);
1039*b1cdbd2cSJim Jagielski }
1040*b1cdbd2cSJim Jagielski
1041*b1cdbd2cSJim Jagielski
1042*b1cdbd2cSJim Jagielski rReq.Done();
1043*b1cdbd2cSJim Jagielski }
1044*b1cdbd2cSJim Jagielski break;
1045*b1cdbd2cSJim Jagielski
1046*b1cdbd2cSJim Jagielski
1047*b1cdbd2cSJim Jagielski case SID_RULER:
1048*b1cdbd2cSJim Jagielski {
1049*b1cdbd2cSJim Jagielski const SfxItemSet* pReqArgs = rReq.GetArgs();
1050*b1cdbd2cSJim Jagielski
1051*b1cdbd2cSJim Jagielski // #97516# Remember old ruler state
1052*b1cdbd2cSJim Jagielski sal_Bool bOldHasRuler(HasRuler());
1053*b1cdbd2cSJim Jagielski
1054*b1cdbd2cSJim Jagielski if ( pReqArgs )
1055*b1cdbd2cSJim Jagielski {
1056*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG (rReq, pIsActive, SfxBoolItem, SID_RULER, sal_False);
1057*b1cdbd2cSJim Jagielski SetRuler (pIsActive->GetValue ());
1058*b1cdbd2cSJim Jagielski }
1059*b1cdbd2cSJim Jagielski else SetRuler (!HasRuler());
1060*b1cdbd2cSJim Jagielski
1061*b1cdbd2cSJim Jagielski // #97516# Did ruler state change? Tell that to SdOptions, too.
1062*b1cdbd2cSJim Jagielski sal_Bool bHasRuler(HasRuler());
1063*b1cdbd2cSJim Jagielski
1064*b1cdbd2cSJim Jagielski if(bOldHasRuler != bHasRuler)
1065*b1cdbd2cSJim Jagielski {
1066*b1cdbd2cSJim Jagielski SdOptions* pOptions = SD_MOD()->GetSdOptions(GetDoc()->GetDocumentType());
1067*b1cdbd2cSJim Jagielski
1068*b1cdbd2cSJim Jagielski if(pOptions && pOptions->IsRulerVisible() != bHasRuler)
1069*b1cdbd2cSJim Jagielski {
1070*b1cdbd2cSJim Jagielski pOptions->SetRulerVisible(bHasRuler);
1071*b1cdbd2cSJim Jagielski }
1072*b1cdbd2cSJim Jagielski }
1073*b1cdbd2cSJim Jagielski
1074*b1cdbd2cSJim Jagielski Invalidate (SID_RULER);
1075*b1cdbd2cSJim Jagielski Resize();
1076*b1cdbd2cSJim Jagielski rReq.Done ();
1077*b1cdbd2cSJim Jagielski }
1078*b1cdbd2cSJim Jagielski break;
1079*b1cdbd2cSJim Jagielski
1080*b1cdbd2cSJim Jagielski case SID_SIZE_PAGE:
1081*b1cdbd2cSJim Jagielski case SID_SIZE_PAGE_WIDTH: // BASIC
1082*b1cdbd2cSJim Jagielski {
1083*b1cdbd2cSJim Jagielski mbZoomOnPage = ( rReq.GetSlot() == SID_SIZE_PAGE );
1084*b1cdbd2cSJim Jagielski
1085*b1cdbd2cSJim Jagielski SdrPageView* pPageView = mpDrawView->GetSdrPageView();
1086*b1cdbd2cSJim Jagielski
1087*b1cdbd2cSJim Jagielski if ( pPageView )
1088*b1cdbd2cSJim Jagielski {
1089*b1cdbd2cSJim Jagielski Point aPagePos(0, 0); // = pPageView->GetOffset();
1090*b1cdbd2cSJim Jagielski Size aPageSize = pPageView->GetPage()->GetSize();
1091*b1cdbd2cSJim Jagielski
1092*b1cdbd2cSJim Jagielski aPagePos.X() += aPageSize.Width() / 2;
1093*b1cdbd2cSJim Jagielski aPageSize.Width() = (long) (aPageSize.Width() * 1.03);
1094*b1cdbd2cSJim Jagielski
1095*b1cdbd2cSJim Jagielski if( rReq.GetSlot() == SID_SIZE_PAGE )
1096*b1cdbd2cSJim Jagielski {
1097*b1cdbd2cSJim Jagielski aPagePos.Y() += aPageSize.Height() / 2;
1098*b1cdbd2cSJim Jagielski aPageSize.Height() = (long) (aPageSize.Height() * 1.03);
1099*b1cdbd2cSJim Jagielski aPagePos.Y() -= aPageSize.Height() / 2;
1100*b1cdbd2cSJim Jagielski }
1101*b1cdbd2cSJim Jagielski else
1102*b1cdbd2cSJim Jagielski {
1103*b1cdbd2cSJim Jagielski Point aPt = GetActiveWindow()->PixelToLogic( Point( 0, GetActiveWindow()->GetSizePixel().Height() / 2 ) );
1104*b1cdbd2cSJim Jagielski aPagePos.Y() += aPt.Y();
1105*b1cdbd2cSJim Jagielski aPageSize.Height() = 2;
1106*b1cdbd2cSJim Jagielski }
1107*b1cdbd2cSJim Jagielski
1108*b1cdbd2cSJim Jagielski aPagePos.X() -= aPageSize.Width() / 2;
1109*b1cdbd2cSJim Jagielski
1110*b1cdbd2cSJim Jagielski SetZoomRect( Rectangle( aPagePos, aPageSize ) );
1111*b1cdbd2cSJim Jagielski
1112*b1cdbd2cSJim Jagielski Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
1113*b1cdbd2cSJim Jagielski GetActiveWindow()->GetOutputSizePixel()) );
1114*b1cdbd2cSJim Jagielski mpZoomList->InsertZoomRect(aVisAreaWin);
1115*b1cdbd2cSJim Jagielski }
1116*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1117*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1118*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1119*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1120*b1cdbd2cSJim Jagielski rReq.Done ();
1121*b1cdbd2cSJim Jagielski }
1122*b1cdbd2cSJim Jagielski break;
1123*b1cdbd2cSJim Jagielski
1124*b1cdbd2cSJim Jagielski case SID_SIZE_REAL: // BASIC
1125*b1cdbd2cSJim Jagielski {
1126*b1cdbd2cSJim Jagielski mbZoomOnPage = sal_False;
1127*b1cdbd2cSJim Jagielski SetZoom( 100 );
1128*b1cdbd2cSJim Jagielski Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
1129*b1cdbd2cSJim Jagielski GetActiveWindow()->GetOutputSizePixel()) );
1130*b1cdbd2cSJim Jagielski mpZoomList->InsertZoomRect(aVisAreaWin);
1131*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1132*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1133*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1134*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1135*b1cdbd2cSJim Jagielski rReq.Done ();
1136*b1cdbd2cSJim Jagielski }
1137*b1cdbd2cSJim Jagielski break;
1138*b1cdbd2cSJim Jagielski
1139*b1cdbd2cSJim Jagielski case SID_ZOOM_IN: // BASIC
1140*b1cdbd2cSJim Jagielski {
1141*b1cdbd2cSJim Jagielski mbZoomOnPage = sal_False;
1142*b1cdbd2cSJim Jagielski SetZoom( Max( (long) ( GetActiveWindow()->GetZoom() / 2 ), (long) GetActiveWindow()->GetMinZoom() ) );
1143*b1cdbd2cSJim Jagielski Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
1144*b1cdbd2cSJim Jagielski GetActiveWindow()->GetOutputSizePixel()) );
1145*b1cdbd2cSJim Jagielski mpZoomList->InsertZoomRect(aVisAreaWin);
1146*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1147*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1148*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1149*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1150*b1cdbd2cSJim Jagielski rReq.Done ();
1151*b1cdbd2cSJim Jagielski }
1152*b1cdbd2cSJim Jagielski break;
1153*b1cdbd2cSJim Jagielski
1154*b1cdbd2cSJim Jagielski case SID_SIZE_VISAREA:
1155*b1cdbd2cSJim Jagielski {
1156*b1cdbd2cSJim Jagielski Rectangle aVisArea = mpFrameView->GetVisArea();
1157*b1cdbd2cSJim Jagielski Size aVisAreaSize = aVisArea.GetSize();
1158*b1cdbd2cSJim Jagielski
1159*b1cdbd2cSJim Jagielski if (aVisAreaSize.Height()!=0 && aVisAreaSize.Width()!=0)
1160*b1cdbd2cSJim Jagielski {
1161*b1cdbd2cSJim Jagielski mbZoomOnPage = sal_False;
1162*b1cdbd2cSJim Jagielski SetZoomRect(aVisArea);
1163*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1164*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1165*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1166*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1167*b1cdbd2cSJim Jagielski }
1168*b1cdbd2cSJim Jagielski rReq.Done ();
1169*b1cdbd2cSJim Jagielski }
1170*b1cdbd2cSJim Jagielski break;
1171*b1cdbd2cSJim Jagielski
1172*b1cdbd2cSJim Jagielski // Namensverwirrung: SID_SIZE_OPTIMAL -> Zoom auf selektierte Objekte
1173*b1cdbd2cSJim Jagielski // --> Wird als Objektzoom im Programm angeboten
1174*b1cdbd2cSJim Jagielski case SID_SIZE_OPTIMAL: // BASIC
1175*b1cdbd2cSJim Jagielski {
1176*b1cdbd2cSJim Jagielski mbZoomOnPage = sal_False;
1177*b1cdbd2cSJim Jagielski if ( mpDrawView->AreObjectsMarked() )
1178*b1cdbd2cSJim Jagielski {
1179*b1cdbd2cSJim Jagielski maMarkRect = mpDrawView->GetAllMarkedRect();
1180*b1cdbd2cSJim Jagielski long nW = (long) (maMarkRect.GetWidth() * 1.03);
1181*b1cdbd2cSJim Jagielski long nH = (long) (maMarkRect.GetHeight() * 1.03);
1182*b1cdbd2cSJim Jagielski Point aPos = maMarkRect.Center();
1183*b1cdbd2cSJim Jagielski aPos.X() -= nW / 2;
1184*b1cdbd2cSJim Jagielski aPos.Y() -= nH / 2;
1185*b1cdbd2cSJim Jagielski if ( nW && nH )
1186*b1cdbd2cSJim Jagielski {
1187*b1cdbd2cSJim Jagielski SetZoomRect(Rectangle(aPos, Size(nW, nH)));
1188*b1cdbd2cSJim Jagielski
1189*b1cdbd2cSJim Jagielski Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
1190*b1cdbd2cSJim Jagielski GetActiveWindow()->GetOutputSizePixel()) );
1191*b1cdbd2cSJim Jagielski mpZoomList->InsertZoomRect(aVisAreaWin);
1192*b1cdbd2cSJim Jagielski }
1193*b1cdbd2cSJim Jagielski }
1194*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1195*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1196*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1197*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1198*b1cdbd2cSJim Jagielski rReq.Done ();
1199*b1cdbd2cSJim Jagielski }
1200*b1cdbd2cSJim Jagielski break;
1201*b1cdbd2cSJim Jagielski
1202*b1cdbd2cSJim Jagielski // Namensverwirrung: SID_SIZE_ALL -> Zoom auf alle Objekte
1203*b1cdbd2cSJim Jagielski // --> Wird als Optimal im Programm angeboten
1204*b1cdbd2cSJim Jagielski case SID_SIZE_ALL: // BASIC
1205*b1cdbd2cSJim Jagielski {
1206*b1cdbd2cSJim Jagielski mbZoomOnPage = sal_False;
1207*b1cdbd2cSJim Jagielski SdrPageView* pPageView = mpDrawView->GetSdrPageView();
1208*b1cdbd2cSJim Jagielski
1209*b1cdbd2cSJim Jagielski if( pPageView )
1210*b1cdbd2cSJim Jagielski {
1211*b1cdbd2cSJim Jagielski Rectangle aBoundRect( pPageView->GetObjList()->GetAllObjBoundRect() );
1212*b1cdbd2cSJim Jagielski
1213*b1cdbd2cSJim Jagielski long nW = (long) (aBoundRect.GetWidth() * 1.03);
1214*b1cdbd2cSJim Jagielski long nH = (long) (aBoundRect.GetHeight() * 1.03);
1215*b1cdbd2cSJim Jagielski Point aPos = aBoundRect.Center();
1216*b1cdbd2cSJim Jagielski aPos.X() -= nW / 2;
1217*b1cdbd2cSJim Jagielski aPos.Y() -= nH / 2;
1218*b1cdbd2cSJim Jagielski if ( nW && nH )
1219*b1cdbd2cSJim Jagielski {
1220*b1cdbd2cSJim Jagielski SetZoomRect( Rectangle( aPos, Size( nW, nH ) ) );
1221*b1cdbd2cSJim Jagielski
1222*b1cdbd2cSJim Jagielski Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
1223*b1cdbd2cSJim Jagielski GetActiveWindow()->GetOutputSizePixel()) );
1224*b1cdbd2cSJim Jagielski mpZoomList->InsertZoomRect(aVisAreaWin);
1225*b1cdbd2cSJim Jagielski }
1226*b1cdbd2cSJim Jagielski
1227*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_IN );
1228*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_OUT );
1229*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_PANNING );
1230*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1231*b1cdbd2cSJim Jagielski }
1232*b1cdbd2cSJim Jagielski rReq.Done ();
1233*b1cdbd2cSJim Jagielski }
1234*b1cdbd2cSJim Jagielski break;
1235*b1cdbd2cSJim Jagielski
1236*b1cdbd2cSJim Jagielski case SID_ZOOM_PREV:
1237*b1cdbd2cSJim Jagielski {
1238*b1cdbd2cSJim Jagielski if (mpDrawView->IsTextEdit())
1239*b1cdbd2cSJim Jagielski {
1240*b1cdbd2cSJim Jagielski mpDrawView->SdrEndTextEdit();
1241*b1cdbd2cSJim Jagielski }
1242*b1cdbd2cSJim Jagielski
1243*b1cdbd2cSJim Jagielski if (mpZoomList->IsPreviousPossible())
1244*b1cdbd2cSJim Jagielski {
1245*b1cdbd2cSJim Jagielski // Vorheriges ZoomRect einstellen
1246*b1cdbd2cSJim Jagielski SetZoomRect(mpZoomList->GetPreviousZoomRect());
1247*b1cdbd2cSJim Jagielski }
1248*b1cdbd2cSJim Jagielski rReq.Done ();
1249*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1250*b1cdbd2cSJim Jagielski }
1251*b1cdbd2cSJim Jagielski break;
1252*b1cdbd2cSJim Jagielski
1253*b1cdbd2cSJim Jagielski case SID_ZOOM_NEXT:
1254*b1cdbd2cSJim Jagielski {
1255*b1cdbd2cSJim Jagielski if (mpDrawView->IsTextEdit())
1256*b1cdbd2cSJim Jagielski {
1257*b1cdbd2cSJim Jagielski mpDrawView->SdrEndTextEdit();
1258*b1cdbd2cSJim Jagielski }
1259*b1cdbd2cSJim Jagielski
1260*b1cdbd2cSJim Jagielski if (mpZoomList->IsNextPossible())
1261*b1cdbd2cSJim Jagielski {
1262*b1cdbd2cSJim Jagielski // Naechstes ZoomRect einstellen
1263*b1cdbd2cSJim Jagielski SetZoomRect(mpZoomList->GetNextZoomRect());
1264*b1cdbd2cSJim Jagielski }
1265*b1cdbd2cSJim Jagielski rReq.Done ();
1266*b1cdbd2cSJim Jagielski Invalidate( SID_ZOOM_TOOLBOX );
1267*b1cdbd2cSJim Jagielski }
1268*b1cdbd2cSJim Jagielski break;
1269*b1cdbd2cSJim Jagielski
1270*b1cdbd2cSJim Jagielski case SID_GLUE_INSERT_POINT:
1271*b1cdbd2cSJim Jagielski case SID_GLUE_PERCENT:
1272*b1cdbd2cSJim Jagielski case SID_GLUE_ESCDIR:
1273*b1cdbd2cSJim Jagielski case SID_GLUE_ESCDIR_LEFT:
1274*b1cdbd2cSJim Jagielski case SID_GLUE_ESCDIR_RIGHT:
1275*b1cdbd2cSJim Jagielski case SID_GLUE_ESCDIR_TOP:
1276*b1cdbd2cSJim Jagielski case SID_GLUE_ESCDIR_BOTTOM:
1277*b1cdbd2cSJim Jagielski case SID_GLUE_HORZALIGN_CENTER:
1278*b1cdbd2cSJim Jagielski case SID_GLUE_HORZALIGN_LEFT:
1279*b1cdbd2cSJim Jagielski case SID_GLUE_HORZALIGN_RIGHT:
1280*b1cdbd2cSJim Jagielski case SID_GLUE_VERTALIGN_CENTER:
1281*b1cdbd2cSJim Jagielski case SID_GLUE_VERTALIGN_TOP:
1282*b1cdbd2cSJim Jagielski case SID_GLUE_VERTALIGN_BOTTOM:
1283*b1cdbd2cSJim Jagielski {
1284*b1cdbd2cSJim Jagielski FunctionReference xFunc( GetCurrentFunction() );
1285*b1cdbd2cSJim Jagielski FuEditGluePoints* pFunc = dynamic_cast< FuEditGluePoints* >( xFunc.get() );
1286*b1cdbd2cSJim Jagielski
1287*b1cdbd2cSJim Jagielski if(pFunc)
1288*b1cdbd2cSJim Jagielski pFunc->ReceiveRequest(rReq);
1289*b1cdbd2cSJim Jagielski
1290*b1cdbd2cSJim Jagielski rReq.Done();
1291*b1cdbd2cSJim Jagielski }
1292*b1cdbd2cSJim Jagielski break;
1293*b1cdbd2cSJim Jagielski
1294*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
1295*b1cdbd2cSJim Jagielski case SID_SHOW_ITEMBROWSER:
1296*b1cdbd2cSJim Jagielski {
1297*b1cdbd2cSJim Jagielski mpDrawView->ShowItemBrowser( !mpDrawView->IsItemBrowserVisible() );
1298*b1cdbd2cSJim Jagielski rReq.Done ();
1299*b1cdbd2cSJim Jagielski }
1300*b1cdbd2cSJim Jagielski break;
1301*b1cdbd2cSJim Jagielski #endif
1302*b1cdbd2cSJim Jagielski
1303*b1cdbd2cSJim Jagielski case SID_AUTOSPELL_CHECK:
1304*b1cdbd2cSJim Jagielski {
1305*b1cdbd2cSJim Jagielski sal_Bool bOnlineSpell = !GetDoc()->GetOnlineSpell();
1306*b1cdbd2cSJim Jagielski GetDoc()->SetOnlineSpell(bOnlineSpell);
1307*b1cdbd2cSJim Jagielski
1308*b1cdbd2cSJim Jagielski ::Outliner* pOL = mpDrawView->GetTextEditOutliner();
1309*b1cdbd2cSJim Jagielski
1310*b1cdbd2cSJim Jagielski if (pOL)
1311*b1cdbd2cSJim Jagielski {
1312*b1cdbd2cSJim Jagielski sal_uLong nCntrl = pOL->GetControlWord();
1313*b1cdbd2cSJim Jagielski
1314*b1cdbd2cSJim Jagielski if (bOnlineSpell)
1315*b1cdbd2cSJim Jagielski nCntrl |= EE_CNTRL_ONLINESPELLING;
1316*b1cdbd2cSJim Jagielski else
1317*b1cdbd2cSJim Jagielski nCntrl &= ~EE_CNTRL_ONLINESPELLING;
1318*b1cdbd2cSJim Jagielski
1319*b1cdbd2cSJim Jagielski pOL->SetControlWord(nCntrl);
1320*b1cdbd2cSJim Jagielski }
1321*b1cdbd2cSJim Jagielski
1322*b1cdbd2cSJim Jagielski GetActiveWindow()->Invalidate();
1323*b1cdbd2cSJim Jagielski rReq.Done ();
1324*b1cdbd2cSJim Jagielski }
1325*b1cdbd2cSJim Jagielski break;
1326*b1cdbd2cSJim Jagielski
1327*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_1BIT_THRESHOLD:
1328*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_1BIT_MATRIX:
1329*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_4BIT_GRAYS:
1330*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_4BIT_COLORS:
1331*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_8BIT_GRAYS:
1332*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_8BIT_COLORS:
1333*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_24BIT:
1334*b1cdbd2cSJim Jagielski {
1335*b1cdbd2cSJim Jagielski BmpConversion eBmpConvert = BMP_CONVERSION_NONE;
1336*b1cdbd2cSJim Jagielski
1337*b1cdbd2cSJim Jagielski switch( nSId )
1338*b1cdbd2cSJim Jagielski {
1339*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_1BIT_THRESHOLD:
1340*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_1BIT_THRESHOLD;
1341*b1cdbd2cSJim Jagielski break;
1342*b1cdbd2cSJim Jagielski
1343*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_1BIT_MATRIX:
1344*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_1BIT_MATRIX;
1345*b1cdbd2cSJim Jagielski break;
1346*b1cdbd2cSJim Jagielski
1347*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_4BIT_GRAYS:
1348*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_4BIT_GREYS;
1349*b1cdbd2cSJim Jagielski break;
1350*b1cdbd2cSJim Jagielski
1351*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_4BIT_COLORS:
1352*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_4BIT_COLORS;
1353*b1cdbd2cSJim Jagielski break;
1354*b1cdbd2cSJim Jagielski
1355*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_8BIT_GRAYS:
1356*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_8BIT_GREYS;
1357*b1cdbd2cSJim Jagielski break;
1358*b1cdbd2cSJim Jagielski
1359*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_8BIT_COLORS:
1360*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_8BIT_COLORS;
1361*b1cdbd2cSJim Jagielski break;
1362*b1cdbd2cSJim Jagielski
1363*b1cdbd2cSJim Jagielski case SID_CONVERT_TO_24BIT:
1364*b1cdbd2cSJim Jagielski eBmpConvert = BMP_CONVERSION_24BIT;
1365*b1cdbd2cSJim Jagielski break;
1366*b1cdbd2cSJim Jagielski }
1367*b1cdbd2cSJim Jagielski
1368*b1cdbd2cSJim Jagielski mpDrawView->BegUndo(String(SdResId(STR_UNDO_COLORRESOLUTION)));
1369*b1cdbd2cSJim Jagielski const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
1370*b1cdbd2cSJim Jagielski
1371*b1cdbd2cSJim Jagielski for (sal_uLong i=0; i<rMarkList.GetMarkCount(); i++)
1372*b1cdbd2cSJim Jagielski {
1373*b1cdbd2cSJim Jagielski SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
1374*b1cdbd2cSJim Jagielski
1375*b1cdbd2cSJim Jagielski if (pObj->GetObjInventor() == SdrInventor)
1376*b1cdbd2cSJim Jagielski {
1377*b1cdbd2cSJim Jagielski if (pObj->GetObjIdentifier() == OBJ_GRAF && !((SdrGrafObj*) pObj)->IsLinkedGraphic())
1378*b1cdbd2cSJim Jagielski {
1379*b1cdbd2cSJim Jagielski const Graphic& rGraphic = ((SdrGrafObj*) pObj)->GetGraphic();
1380*b1cdbd2cSJim Jagielski
1381*b1cdbd2cSJim Jagielski if( rGraphic.GetType() == GRAPHIC_BITMAP )
1382*b1cdbd2cSJim Jagielski {
1383*b1cdbd2cSJim Jagielski SdrGrafObj* pNewObj = (SdrGrafObj*) pObj->Clone();
1384*b1cdbd2cSJim Jagielski
1385*b1cdbd2cSJim Jagielski if( rGraphic.IsAnimated() )
1386*b1cdbd2cSJim Jagielski {
1387*b1cdbd2cSJim Jagielski Animation aAnim( rGraphic.GetAnimation() );
1388*b1cdbd2cSJim Jagielski aAnim.Convert( eBmpConvert );
1389*b1cdbd2cSJim Jagielski pNewObj->SetGraphic( aAnim );
1390*b1cdbd2cSJim Jagielski }
1391*b1cdbd2cSJim Jagielski else
1392*b1cdbd2cSJim Jagielski {
1393*b1cdbd2cSJim Jagielski BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
1394*b1cdbd2cSJim Jagielski aBmpEx.Convert( eBmpConvert );
1395*b1cdbd2cSJim Jagielski pNewObj->SetGraphic( aBmpEx );
1396*b1cdbd2cSJim Jagielski }
1397*b1cdbd2cSJim Jagielski
1398*b1cdbd2cSJim Jagielski mpDrawView->ReplaceObjectAtView( pObj, *mpDrawView->GetSdrPageView(), pNewObj );
1399*b1cdbd2cSJim Jagielski }
1400*b1cdbd2cSJim Jagielski }
1401*b1cdbd2cSJim Jagielski }
1402*b1cdbd2cSJim Jagielski }
1403*b1cdbd2cSJim Jagielski
1404*b1cdbd2cSJim Jagielski mpDrawView->EndUndo();
1405*b1cdbd2cSJim Jagielski rReq.Done ();
1406*b1cdbd2cSJim Jagielski }
1407*b1cdbd2cSJim Jagielski break;
1408*b1cdbd2cSJim Jagielski
1409*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_SENTENCE_CASE:
1410*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_TITLE_CASE:
1411*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_TOGGLE_CASE:
1412*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_UPPER:
1413*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_LOWER:
1414*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HALFWIDTH:
1415*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_FULLWIDTH:
1416*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HIRAGANA:
1417*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_KATAGANA:
1418*b1cdbd2cSJim Jagielski {
1419*b1cdbd2cSJim Jagielski OutlinerView* pOLV = GetView()->GetTextEditOutlinerView();
1420*b1cdbd2cSJim Jagielski if( pOLV )
1421*b1cdbd2cSJim Jagielski {
1422*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::i18n;
1423*b1cdbd2cSJim Jagielski sal_Int32 nType = 0;
1424*b1cdbd2cSJim Jagielski
1425*b1cdbd2cSJim Jagielski switch( nSId )
1426*b1cdbd2cSJim Jagielski {
1427*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_SENTENCE_CASE:
1428*b1cdbd2cSJim Jagielski nType = TransliterationModulesExtra::SENTENCE_CASE;
1429*b1cdbd2cSJim Jagielski break;
1430*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_TITLE_CASE:
1431*b1cdbd2cSJim Jagielski nType = TransliterationModulesExtra::TITLE_CASE;
1432*b1cdbd2cSJim Jagielski break;
1433*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_TOGGLE_CASE:
1434*b1cdbd2cSJim Jagielski nType = TransliterationModulesExtra::TOGGLE_CASE;
1435*b1cdbd2cSJim Jagielski break;
1436*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_UPPER:
1437*b1cdbd2cSJim Jagielski nType = TransliterationModules_LOWERCASE_UPPERCASE;
1438*b1cdbd2cSJim Jagielski break;
1439*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_LOWER:
1440*b1cdbd2cSJim Jagielski nType = TransliterationModules_UPPERCASE_LOWERCASE;
1441*b1cdbd2cSJim Jagielski break;
1442*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HALFWIDTH:
1443*b1cdbd2cSJim Jagielski nType = TransliterationModules_FULLWIDTH_HALFWIDTH;
1444*b1cdbd2cSJim Jagielski break;
1445*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_FULLWIDTH:
1446*b1cdbd2cSJim Jagielski nType = TransliterationModules_HALFWIDTH_FULLWIDTH;
1447*b1cdbd2cSJim Jagielski break;
1448*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_HIRAGANA:
1449*b1cdbd2cSJim Jagielski nType = TransliterationModules_KATAKANA_HIRAGANA;
1450*b1cdbd2cSJim Jagielski break;
1451*b1cdbd2cSJim Jagielski case SID_TRANSLITERATE_KATAGANA:
1452*b1cdbd2cSJim Jagielski nType = TransliterationModules_HIRAGANA_KATAKANA;
1453*b1cdbd2cSJim Jagielski break;
1454*b1cdbd2cSJim Jagielski }
1455*b1cdbd2cSJim Jagielski
1456*b1cdbd2cSJim Jagielski pOLV->TransliterateText( nType );
1457*b1cdbd2cSJim Jagielski }
1458*b1cdbd2cSJim Jagielski
1459*b1cdbd2cSJim Jagielski rReq.Done();
1460*b1cdbd2cSJim Jagielski }
1461*b1cdbd2cSJim Jagielski break;
1462*b1cdbd2cSJim Jagielski
1463*b1cdbd2cSJim Jagielski // #UndoRedo#
1464*b1cdbd2cSJim Jagielski case SID_UNDO :
1465*b1cdbd2cSJim Jagielski {
1466*b1cdbd2cSJim Jagielski // #96090# moved implementation to BaseClass
1467*b1cdbd2cSJim Jagielski ImpSidUndo(sal_True, rReq);
1468*b1cdbd2cSJim Jagielski }
1469*b1cdbd2cSJim Jagielski break;
1470*b1cdbd2cSJim Jagielski case SID_REDO :
1471*b1cdbd2cSJim Jagielski {
1472*b1cdbd2cSJim Jagielski // #96090# moved implementation to BaseClass
1473*b1cdbd2cSJim Jagielski ImpSidRedo(sal_True, rReq);
1474*b1cdbd2cSJim Jagielski }
1475*b1cdbd2cSJim Jagielski break;
1476*b1cdbd2cSJim Jagielski
1477*b1cdbd2cSJim Jagielski case SID_PRESENTATION_MINIMIZER:
1478*b1cdbd2cSJim Jagielski {
1479*b1cdbd2cSJim Jagielski if ( GetDoc()->GetDocumentType() == DOCUMENT_TYPE_IMPRESS &&
1480*b1cdbd2cSJim Jagielski GetViewShellBase().GetController() != NULL )
1481*b1cdbd2cSJim Jagielski {
1482*b1cdbd2cSJim Jagielski try
1483*b1cdbd2cSJim Jagielski {
1484*b1cdbd2cSJim Jagielski uno::Reference< uno::XComponentContext > xContext(
1485*b1cdbd2cSJim Jagielski ::comphelper::getProcessComponentContext() );
1486*b1cdbd2cSJim Jagielski uno::Sequence< uno::Any > aArgs(1);
1487*b1cdbd2cSJim Jagielski aArgs[0] <<= GetViewShellBase().GetController();
1488*b1cdbd2cSJim Jagielski
1489*b1cdbd2cSJim Jagielski uno::Reference< XExecutableDialog > xDialog(
1490*b1cdbd2cSJim Jagielski xContext->getServiceManager()->
1491*b1cdbd2cSJim Jagielski createInstanceWithArgumentsAndContext(
1492*b1cdbd2cSJim Jagielski rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
1493*b1cdbd2cSJim Jagielski "com.sun.star.ui.dialogs.PresentationMinimizerDialog")),
1494*b1cdbd2cSJim Jagielski aArgs, xContext), uno::UNO_QUERY_THROW );
1495*b1cdbd2cSJim Jagielski xDialog->execute();
1496*b1cdbd2cSJim Jagielski }
1497*b1cdbd2cSJim Jagielski catch (...)
1498*b1cdbd2cSJim Jagielski {}
1499*b1cdbd2cSJim Jagielski }
1500*b1cdbd2cSJim Jagielski
1501*b1cdbd2cSJim Jagielski rReq.Done();
1502*b1cdbd2cSJim Jagielski }
1503*b1cdbd2cSJim Jagielski break;
1504*b1cdbd2cSJim Jagielski
1505*b1cdbd2cSJim Jagielski default:
1506*b1cdbd2cSJim Jagielski break;
1507*b1cdbd2cSJim Jagielski }
1508*b1cdbd2cSJim Jagielski }
1509*b1cdbd2cSJim Jagielski
1510*b1cdbd2cSJim Jagielski /*************************************************************************
1511*b1cdbd2cSJim Jagielski |*
1512*b1cdbd2cSJim Jagielski |* URL-Feld einfuegen
1513*b1cdbd2cSJim Jagielski |*
1514*b1cdbd2cSJim Jagielski \************************************************************************/
1515*b1cdbd2cSJim Jagielski
InsertURLField(const String & rURL,const String & rText,const String & rTarget,const Point * pPos)1516*b1cdbd2cSJim Jagielski void DrawViewShell::InsertURLField(const String& rURL, const String& rText,
1517*b1cdbd2cSJim Jagielski const String& rTarget, const Point* pPos)
1518*b1cdbd2cSJim Jagielski {
1519*b1cdbd2cSJim Jagielski OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
1520*b1cdbd2cSJim Jagielski
1521*b1cdbd2cSJim Jagielski if (pOLV)
1522*b1cdbd2cSJim Jagielski {
1523*b1cdbd2cSJim Jagielski ESelection aSel( pOLV->GetSelection() );
1524*b1cdbd2cSJim Jagielski SvxFieldItem aURLItem( SvxURLField( rURL, rText, SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
1525*b1cdbd2cSJim Jagielski pOLV->InsertField( aURLItem );
1526*b1cdbd2cSJim Jagielski if ( aSel.nStartPos <= aSel.nEndPos )
1527*b1cdbd2cSJim Jagielski aSel.nEndPos = aSel.nStartPos + 1;
1528*b1cdbd2cSJim Jagielski else
1529*b1cdbd2cSJim Jagielski aSel.nStartPos = aSel.nEndPos + 1;
1530*b1cdbd2cSJim Jagielski pOLV->SetSelection( aSel );
1531*b1cdbd2cSJim Jagielski }
1532*b1cdbd2cSJim Jagielski else
1533*b1cdbd2cSJim Jagielski {
1534*b1cdbd2cSJim Jagielski Outliner* pOutl = GetDoc()->GetInternalOutliner();
1535*b1cdbd2cSJim Jagielski pOutl->Init( OUTLINERMODE_TEXTOBJECT );
1536*b1cdbd2cSJim Jagielski sal_uInt16 nOutlMode = pOutl->GetMode();
1537*b1cdbd2cSJim Jagielski
1538*b1cdbd2cSJim Jagielski SvxURLField aURLField(rURL, rText, SVXURLFORMAT_REPR);
1539*b1cdbd2cSJim Jagielski aURLField.SetTargetFrame(rTarget);
1540*b1cdbd2cSJim Jagielski SvxFieldItem aURLItem(aURLField, EE_FEATURE_FIELD);
1541*b1cdbd2cSJim Jagielski pOutl->QuickInsertField( aURLItem, ESelection() );
1542*b1cdbd2cSJim Jagielski OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
1543*b1cdbd2cSJim Jagielski
1544*b1cdbd2cSJim Jagielski SdrRectObj* pRectObj = new SdrRectObj(OBJ_TEXT);
1545*b1cdbd2cSJim Jagielski
1546*b1cdbd2cSJim Jagielski pOutl->UpdateFields();
1547*b1cdbd2cSJim Jagielski pOutl->SetUpdateMode( sal_True );
1548*b1cdbd2cSJim Jagielski Size aSize(pOutl->CalcTextSize());
1549*b1cdbd2cSJim Jagielski pOutl->SetUpdateMode( sal_False );
1550*b1cdbd2cSJim Jagielski
1551*b1cdbd2cSJim Jagielski Point aPos;
1552*b1cdbd2cSJim Jagielski
1553*b1cdbd2cSJim Jagielski if (pPos)
1554*b1cdbd2cSJim Jagielski {
1555*b1cdbd2cSJim Jagielski aPos = *pPos;
1556*b1cdbd2cSJim Jagielski }
1557*b1cdbd2cSJim Jagielski else
1558*b1cdbd2cSJim Jagielski {
1559*b1cdbd2cSJim Jagielski Rectangle aRect(aPos, GetActiveWindow()->GetOutputSizePixel() );
1560*b1cdbd2cSJim Jagielski aPos = aRect.Center();
1561*b1cdbd2cSJim Jagielski aPos = GetActiveWindow()->PixelToLogic(aPos);
1562*b1cdbd2cSJim Jagielski aPos.X() -= aSize.Width() / 2;
1563*b1cdbd2cSJim Jagielski aPos.Y() -= aSize.Height() / 2;
1564*b1cdbd2cSJim Jagielski }
1565*b1cdbd2cSJim Jagielski
1566*b1cdbd2cSJim Jagielski Rectangle aLogicRect(aPos, aSize);
1567*b1cdbd2cSJim Jagielski pRectObj->SetLogicRect(aLogicRect);
1568*b1cdbd2cSJim Jagielski pRectObj->SetOutlinerParaObject( pOutlParaObject );
1569*b1cdbd2cSJim Jagielski mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
1570*b1cdbd2cSJim Jagielski pOutl->Init( nOutlMode );
1571*b1cdbd2cSJim Jagielski }
1572*b1cdbd2cSJim Jagielski }
1573*b1cdbd2cSJim Jagielski
1574*b1cdbd2cSJim Jagielski /*************************************************************************
1575*b1cdbd2cSJim Jagielski |*
1576*b1cdbd2cSJim Jagielski |* URL-Button einfuegen
1577*b1cdbd2cSJim Jagielski |*
1578*b1cdbd2cSJim Jagielski \************************************************************************/
1579*b1cdbd2cSJim Jagielski
InsertURLButton(const String & rURL,const String & rText,const String & rTarget,const Point * pPos)1580*b1cdbd2cSJim Jagielski void DrawViewShell::InsertURLButton(const String& rURL, const String& rText,
1581*b1cdbd2cSJim Jagielski const String& rTarget, const Point* pPos)
1582*b1cdbd2cSJim Jagielski {
1583*b1cdbd2cSJim Jagielski sal_Bool bNewObj = sal_True;
1584*b1cdbd2cSJim Jagielski
1585*b1cdbd2cSJim Jagielski const OUString sTargetURL( ::URIHelper::SmartRel2Abs( INetURLObject( GetDocSh()->GetMedium()->GetBaseURL() ), rURL, URIHelper::GetMaybeFileHdl(), true, false,
1586*b1cdbd2cSJim Jagielski INetURLObject::WAS_ENCODED,
1587*b1cdbd2cSJim Jagielski INetURLObject::DECODE_UNAMBIGUOUS ) );
1588*b1cdbd2cSJim Jagielski if (mpDrawView->GetMarkedObjectList().GetMarkCount() > 0)
1589*b1cdbd2cSJim Jagielski {
1590*b1cdbd2cSJim Jagielski SdrObject* pMarkedObj = mpDrawView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj();
1591*b1cdbd2cSJim Jagielski if( pMarkedObj ) try
1592*b1cdbd2cSJim Jagielski {
1593*b1cdbd2cSJim Jagielski // change first marked object
1594*b1cdbd2cSJim Jagielski if( (FmFormInventor == pMarkedObj->GetObjInventor() && pMarkedObj->GetObjIdentifier() == OBJ_FM_BUTTON) )
1595*b1cdbd2cSJim Jagielski {
1596*b1cdbd2cSJim Jagielski bNewObj = sal_False;
1597*b1cdbd2cSJim Jagielski
1598*b1cdbd2cSJim Jagielski SdrUnoObj* pUnoCtrl = static_cast< SdrUnoObj* >( pMarkedObj );
1599*b1cdbd2cSJim Jagielski
1600*b1cdbd2cSJim Jagielski Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), UNO_QUERY_THROW );
1601*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropSet( xControlModel, UNO_QUERY_THROW );
1602*b1cdbd2cSJim Jagielski
1603*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" )), Any( OUString( rText ) ) );
1604*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )), Any( sTargetURL ) );
1605*b1cdbd2cSJim Jagielski
1606*b1cdbd2cSJim Jagielski if( rTarget.Len() )
1607*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )), Any( OUString( rTarget ) ) );
1608*b1cdbd2cSJim Jagielski
1609*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )), Any( form::FormButtonType_URL ) );
1610*b1cdbd2cSJim Jagielski if ( ::avmedia::MediaWindow::isMediaURL( rURL ) )
1611*b1cdbd2cSJim Jagielski {
1612*b1cdbd2cSJim Jagielski // #105638# OJ
1613*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), Any( sal_True ) );
1614*b1cdbd2cSJim Jagielski }
1615*b1cdbd2cSJim Jagielski }
1616*b1cdbd2cSJim Jagielski else
1617*b1cdbd2cSJim Jagielski {
1618*b1cdbd2cSJim Jagielski // add url as interaction for first selected shape
1619*b1cdbd2cSJim Jagielski bNewObj = sal_False;
1620*b1cdbd2cSJim Jagielski
1621*b1cdbd2cSJim Jagielski SdAnimationInfo* pInfo = SdDrawDocument::GetShapeUserData(*pMarkedObj, true);
1622*b1cdbd2cSJim Jagielski pInfo->meClickAction = presentation::ClickAction_DOCUMENT;
1623*b1cdbd2cSJim Jagielski pInfo->SetBookmark( sTargetURL );
1624*b1cdbd2cSJim Jagielski }
1625*b1cdbd2cSJim Jagielski }
1626*b1cdbd2cSJim Jagielski catch( uno::Exception& )
1627*b1cdbd2cSJim Jagielski {
1628*b1cdbd2cSJim Jagielski }
1629*b1cdbd2cSJim Jagielski }
1630*b1cdbd2cSJim Jagielski
1631*b1cdbd2cSJim Jagielski if (bNewObj) try
1632*b1cdbd2cSJim Jagielski {
1633*b1cdbd2cSJim Jagielski SdrUnoObj* pUnoCtrl = static_cast< SdrUnoObj* >( SdrObjFactory::MakeNewObject(FmFormInventor, OBJ_FM_BUTTON,
1634*b1cdbd2cSJim Jagielski mpDrawView->GetSdrPageView()->GetPage(), GetDoc()) );
1635*b1cdbd2cSJim Jagielski
1636*b1cdbd2cSJim Jagielski Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), uno::UNO_QUERY_THROW );
1637*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW );
1638*b1cdbd2cSJim Jagielski
1639*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" )), Any( OUString( rText ) ) );
1640*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )), Any( sTargetURL ) );
1641*b1cdbd2cSJim Jagielski
1642*b1cdbd2cSJim Jagielski if( rTarget.Len() )
1643*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )), Any( OUString( rTarget ) ) );
1644*b1cdbd2cSJim Jagielski
1645*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )), Any( form::FormButtonType_URL ) );
1646*b1cdbd2cSJim Jagielski // #105638# OJ
1647*b1cdbd2cSJim Jagielski if ( ::avmedia::MediaWindow::isMediaURL( rURL ) )
1648*b1cdbd2cSJim Jagielski xPropSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), Any( sal_True ) );
1649*b1cdbd2cSJim Jagielski
1650*b1cdbd2cSJim Jagielski Point aPos;
1651*b1cdbd2cSJim Jagielski
1652*b1cdbd2cSJim Jagielski if (pPos)
1653*b1cdbd2cSJim Jagielski {
1654*b1cdbd2cSJim Jagielski aPos = *pPos;
1655*b1cdbd2cSJim Jagielski }
1656*b1cdbd2cSJim Jagielski else
1657*b1cdbd2cSJim Jagielski {
1658*b1cdbd2cSJim Jagielski aPos = Rectangle(aPos, GetActiveWindow()->GetOutputSizePixel()).Center();
1659*b1cdbd2cSJim Jagielski aPos = GetActiveWindow()->PixelToLogic(aPos);
1660*b1cdbd2cSJim Jagielski }
1661*b1cdbd2cSJim Jagielski
1662*b1cdbd2cSJim Jagielski Size aSize(4000, 1000);
1663*b1cdbd2cSJim Jagielski aPos.X() -= aSize.Width() / 2;
1664*b1cdbd2cSJim Jagielski aPos.Y() -= aSize.Height() / 2;
1665*b1cdbd2cSJim Jagielski pUnoCtrl->SetLogicRect(Rectangle(aPos, aSize));
1666*b1cdbd2cSJim Jagielski
1667*b1cdbd2cSJim Jagielski sal_uLong nOptions = SDRINSERT_SETDEFLAYER;
1668*b1cdbd2cSJim Jagielski
1669*b1cdbd2cSJim Jagielski OSL_ASSERT (GetViewShell()!=NULL);
1670*b1cdbd2cSJim Jagielski SfxInPlaceClient* pIpClient = GetViewShell()->GetIPClient();
1671*b1cdbd2cSJim Jagielski if (pIpClient!=NULL && pIpClient->IsObjectInPlaceActive())
1672*b1cdbd2cSJim Jagielski {
1673*b1cdbd2cSJim Jagielski nOptions |= SDRINSERT_DONTMARK;
1674*b1cdbd2cSJim Jagielski }
1675*b1cdbd2cSJim Jagielski
1676*b1cdbd2cSJim Jagielski mpDrawView->InsertObjectAtView(pUnoCtrl, *mpDrawView->GetSdrPageView(), nOptions);
1677*b1cdbd2cSJim Jagielski }
1678*b1cdbd2cSJim Jagielski catch( Exception& )
1679*b1cdbd2cSJim Jagielski {
1680*b1cdbd2cSJim Jagielski }
1681*b1cdbd2cSJim Jagielski }
1682*b1cdbd2cSJim Jagielski
1683*b1cdbd2cSJim Jagielski /*************************************************************************
1684*b1cdbd2cSJim Jagielski |*
1685*b1cdbd2cSJim Jagielski |*
1686*b1cdbd2cSJim Jagielski |*
1687*b1cdbd2cSJim Jagielski \************************************************************************/
1688*b1cdbd2cSJim Jagielski
ShowUIControls(bool bVisible)1689*b1cdbd2cSJim Jagielski void DrawViewShell::ShowUIControls (bool bVisible)
1690*b1cdbd2cSJim Jagielski {
1691*b1cdbd2cSJim Jagielski ViewShell::ShowUIControls (bVisible);
1692*b1cdbd2cSJim Jagielski
1693*b1cdbd2cSJim Jagielski //AF: The LayerDialogChildWindow is not used anymore (I hope).
1694*b1cdbd2cSJim Jagielski // GetViewFrame()->SetChildWindow(
1695*b1cdbd2cSJim Jagielski // LayerDialogChildWindow::GetChildWindowId(),
1696*b1cdbd2cSJim Jagielski // IsLayerModeActive() && bVisible);
1697*b1cdbd2cSJim Jagielski maTabControl.Show (bVisible);
1698*b1cdbd2cSJim Jagielski }
1699*b1cdbd2cSJim Jagielski
StopSlideShow(bool)1700*b1cdbd2cSJim Jagielski void DrawViewShell::StopSlideShow (bool /*bCloseFrame*/)
1701*b1cdbd2cSJim Jagielski {
1702*b1cdbd2cSJim Jagielski Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() );
1703*b1cdbd2cSJim Jagielski if(xPresentation.is() && xPresentation->isRunning())
1704*b1cdbd2cSJim Jagielski {
1705*b1cdbd2cSJim Jagielski if( mpDrawView->IsTextEdit() )
1706*b1cdbd2cSJim Jagielski mpDrawView->SdrEndTextEdit();
1707*b1cdbd2cSJim Jagielski
1708*b1cdbd2cSJim Jagielski xPresentation->end();
1709*b1cdbd2cSJim Jagielski }
1710*b1cdbd2cSJim Jagielski }
1711*b1cdbd2cSJim Jagielski
1712*b1cdbd2cSJim Jagielski #ifdef _MSC_VER
1713*b1cdbd2cSJim Jagielski #pragma optimize ( "", on )
1714*b1cdbd2cSJim Jagielski #endif
1715*b1cdbd2cSJim Jagielski
1716*b1cdbd2cSJim Jagielski } // end of namespace sd
1717