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