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 : #include <avmedia/mediaplayer.hxx>
21 :
22 : #include <basic/sberrors.hxx>
23 : #include <basic/sbstar.hxx>
24 :
25 : #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
26 : #include <com/sun/star/drawing/XDrawPages.hpp>
27 : #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
28 : #include <com/sun/star/ui/dialogs/XSLTFilterDialog.hpp>
29 :
30 : #include <comphelper/processfactory.hxx>
31 :
32 : #include <editeng/editdata.hxx>
33 : #include <editeng/eeitem.hxx>
34 : #include <editeng/flditem.hxx>
35 :
36 : #include <sfx2/bindings.hxx>
37 : #include <sfx2/dispatch.hxx>
38 : #include <sfx2/docfile.hxx>
39 : #include <sfx2/msgpool.hxx>
40 : #include <sfx2/request.hxx>
41 : #include <sfx2/viewfrm.hxx>
42 : #include <sfx2/zoomitem.hxx>
43 :
44 : #include <svl/aeitem.hxx>
45 :
46 : #include <svx/SpellDialogChildWindow.hxx>
47 : #include <svx/compressgraphicdialog.hxx>
48 : #include <svx/dialogs.hrc>
49 : #include <svx/bmpmask.hxx>
50 : #include <svx/colrctrl.hxx>
51 : #include <svx/extedit.hxx>
52 : #include <svx/extrusionbar.hxx>
53 : #include <svx/f3dchild.hxx>
54 : #include <svx/fontwork.hxx>
55 : #include <svx/fontworkbar.hxx>
56 : #include <svx/galbrws.hxx>
57 : #include <svx/graphichelper.hxx>
58 : #include <svx/hlnkitem.hxx>
59 : #include <svx/imapdlg.hxx>
60 : #include <svx/sdtagitm.hxx>
61 : #include <svx/sdtmfitm.hxx>
62 : #include <svx/svdoattr.hxx>
63 : #include <svx/svdograf.hxx>
64 : #include <svx/svdoole2.hxx>
65 : #include <svx/svdoutl.hxx>
66 : #include <svx/svdpagv.hxx>
67 : #include <svx/svdundo.hxx>
68 : #include <svx/svxdlg.hxx>
69 : #include <svx/svxids.hrc>
70 : #include <svx/xfillit0.hxx>
71 : #include <svx/xflclit.hxx>
72 : #include <svx/xlineit0.hxx>
73 : #include <svx/xlnedwit.hxx>
74 : #include <svx/xlnstwit.hxx>
75 : #include <svx/xlnwtit.hxx>
76 :
77 : #include <tools/diagnose_ex.h>
78 :
79 : #include <unotools/useroptions.hxx>
80 :
81 : #include <vcl/graph.hxx>
82 : #include <vcl/msgbox.hxx>
83 : #include <vcl/svapp.hxx>
84 : #include <vcl/waitobj.hxx>
85 :
86 : #include <editeng/escapementitem.hxx>
87 : #include <editeng/kernitem.hxx>
88 : #include <editeng/wghtitem.hxx>
89 : #include <editeng/postitem.hxx>
90 : #include <editeng/udlnitem.hxx>
91 : #include <editeng/crossedoutitem.hxx>
92 : #include <editeng/contouritem.hxx>
93 : #include <editeng/shdditem.hxx>
94 : #include <svx/xtable.hxx>
95 : #include <svx/svdobj.hxx>
96 : #include <svx/SvxColorChildWindow.hxx>
97 : #include <editeng/outlobj.hxx>
98 : #include <editeng/flstitem.hxx>
99 : #include <editeng/scripttypeitem.hxx>
100 : #include <editeng/fontitem.hxx>
101 : #include <editeng/fhgtitem.hxx>
102 : #include <editeng/colritem.hxx>
103 : #include <editeng/brushitem.hxx>
104 :
105 : #include <svl/whiter.hxx>
106 :
107 : #include "app.hrc"
108 : #include "glob.hrc"
109 : #include "strings.hrc"
110 :
111 : #include "framework/FrameworkHelper.hxx"
112 :
113 : #include "AnimationChildWindow.hxx"
114 : #include "DrawDocShell.hxx"
115 : #include "DrawViewShell.hxx"
116 : #include "GraphicViewShell.hxx"
117 : #include "LayerDialogChildWindow.hxx"
118 : #include "LayerTabBar.hxx"
119 : #include "Outliner.hxx"
120 : #include "ViewShellHint.hxx"
121 : #include "ViewShellImplementation.hxx"
122 : #include "Window.hxx"
123 : #include "drawdoc.hxx"
124 : #include "drawview.hxx"
125 : #include "fuarea.hxx"
126 : #include "fubullet.hxx"
127 : #include "fuchar.hxx"
128 : #include "fucushow.hxx"
129 : #include "fuconnct.hxx"
130 : #include "fucopy.hxx"
131 : #include "fudspord.hxx"
132 : #include "fuexpand.hxx"
133 : #include "fuinsert.hxx"
134 : #include "fuinsfil.hxx"
135 : #include "fuline.hxx"
136 : #include "fulinend.hxx"
137 : #include "fulink.hxx"
138 : #include "fumeasur.hxx"
139 : #include "fumorph.hxx"
140 : #include "fuoaprms.hxx"
141 : #include "fuolbull.hxx"
142 : #include "fupage.hxx"
143 : #include "fuparagr.hxx"
144 : #include "fuprlout.hxx"
145 : #include "fuscale.hxx"
146 : #include "fusel.hxx"
147 : #include "fusldlg.hxx"
148 : #include "fusnapln.hxx"
149 : #include "fusumry.hxx"
150 : #include "futempl.hxx"
151 : #include "futhes.hxx"
152 : #include "futransf.hxx"
153 : #include "futxtatt.hxx"
154 : #include "fuvect.hxx"
155 : #include "futext.hxx"
156 : #include "fuzoom.hxx"
157 : #include "helpids.h"
158 : #include "optsitem.hxx"
159 : #include "sdabstdlg.hxx"
160 : #include "sdattr.hxx"
161 : #include "sdgrffilter.hxx"
162 : #include "sdpage.hxx"
163 : #include "sdresid.hxx"
164 : #include "slideshow.hxx"
165 : #include "stlpool.hxx"
166 : #include "undolayer.hxx"
167 : #include "unmodpg.hxx"
168 :
169 : using namespace ::com::sun::star;
170 : using namespace ::com::sun::star::uno;
171 :
172 : #define MIN_ACTIONS_FOR_DIALOG 5000 ///< if there are more meta objects, we show a dialog during the break up
173 :
174 : namespace sd {
175 :
176 0 : class SdExternalToolEdit : public ExternalToolEdit
177 : {
178 : FmFormView* m_pView;
179 : SdrObject* m_pObj;
180 :
181 : public:
182 0 : SdExternalToolEdit ( FmFormView* pView, SdrObject* pObj ) :
183 : m_pView (pView),
184 0 : m_pObj (pObj)
185 0 : {}
186 :
187 0 : virtual void Update( Graphic& aGraphic )
188 : {
189 0 : SdrPageView* pPageView = m_pView->GetSdrPageView();
190 0 : if( pPageView )
191 : {
192 0 : SdrGrafObj* pNewObj = (SdrGrafObj*) m_pObj->Clone();
193 0 : String aStr( m_pView->GetDescriptionOfMarkedObjects() );
194 0 : aStr.Append( sal_Unicode(' ') );
195 0 : aStr.Append( String( "External Edit" ) );
196 0 : m_pView->BegUndo( aStr );
197 0 : pNewObj->SetGraphicObject( aGraphic );
198 0 : m_pView->ReplaceObjectAtView( m_pObj, *pPageView, pNewObj );
199 0 : m_pView->EndUndo();
200 : }
201 0 : }
202 : };
203 :
204 : /**
205 : * SfxRequests for temporary actions
206 : */
207 :
208 0 : void DrawViewShell::FuTemporary(SfxRequest& rReq)
209 : {
210 : // during a native slide show nothing gets executed!
211 0 : if(SlideShow::IsRunning( GetViewShellBase() ) && (rReq.GetSlot() != SID_NAVIGATOR))
212 0 : return;
213 :
214 : DBG_ASSERT( mpDrawView, "sd::DrawViewShell::FuTemporary(), no draw view!" );
215 0 : if( !mpDrawView )
216 0 : return;
217 :
218 0 : CheckLineTo (rReq);
219 :
220 0 : DeactivateCurrentFunction();
221 :
222 0 : sal_uInt16 nSId = rReq.GetSlot();
223 :
224 : // Slot gets mapped (ToolboxImages/-Slots)
225 0 : MapSlot( nSId );
226 :
227 0 : switch ( nSId )
228 : {
229 : case SID_OUTLINE_TEXT_AUTOFIT:
230 : {
231 0 : ::svl::IUndoManager* pUndoManager = GetDocSh()->GetUndoManager();
232 0 : SdrObject* pObj = NULL;
233 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
234 0 : if( rMarkList.GetMarkCount() == 1 )
235 : {
236 0 : pUndoManager->EnterListAction( String(), String() );
237 0 : mpDrawView->BegUndo();
238 :
239 0 : pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
240 0 : bool bSet = ((const SdrTextFitToSizeTypeItem*)pObj->GetMergedItemSet().GetItem(SDRATTR_TEXT_FITTOSIZE))->GetValue() != SDRTEXTFIT_NONE;
241 :
242 0 : mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
243 :
244 0 : pObj->SetMergedItem(SdrTextFitToSizeTypeItem(bSet ? SDRTEXTFIT_NONE : SDRTEXTFIT_AUTOFIT));
245 :
246 0 : mpDrawView->EndUndo();
247 0 : pUndoManager->LeaveListAction();
248 : }
249 0 : Cancel();
250 0 : rReq.Done();
251 : }
252 0 : break;
253 :
254 : // area and line attributes: shall have
255 : // an own Execute method (like StateMethode)
256 : case SID_ATTR_FILL_STYLE:
257 : case SID_ATTR_FILL_COLOR:
258 : case SID_ATTR_FILL_GRADIENT:
259 : case SID_ATTR_FILL_HATCH:
260 : case SID_ATTR_FILL_BITMAP:
261 : case SID_ATTR_FILL_SHADOW:
262 : case SID_ATTR_FILL_TRANSPARENCE:
263 : case SID_ATTR_FILL_FLOATTRANSPARENCE:
264 :
265 : case SID_ATTR_LINE_STYLE:
266 : case SID_ATTR_LINE_DASH:
267 : case SID_ATTR_LINE_WIDTH:
268 : case SID_ATTR_LINE_COLOR:
269 : case SID_ATTR_LINEEND_STYLE:
270 : case SID_ATTR_LINE_START:
271 : case SID_ATTR_LINE_END:
272 : case SID_ATTR_LINE_TRANSPARENCE:
273 : case SID_ATTR_LINE_JOINT:
274 : case SID_ATTR_LINE_CAP:
275 :
276 : case SID_ATTR_TEXT_FITTOSIZE:
277 : {
278 0 : if( rReq.GetArgs() )
279 : {
280 0 : mpDrawView->SetAttributes(*rReq.GetArgs());
281 0 : rReq.Done();
282 : }
283 : else
284 : {
285 0 : switch( rReq.GetSlot() )
286 : {
287 : case SID_ATTR_FILL_SHADOW:
288 : case SID_ATTR_FILL_STYLE:
289 : case SID_ATTR_FILL_COLOR:
290 : case SID_ATTR_FILL_GRADIENT:
291 : case SID_ATTR_FILL_HATCH:
292 : case SID_ATTR_FILL_BITMAP:
293 : case SID_ATTR_FILL_TRANSPARENCE:
294 : case SID_ATTR_FILL_FLOATTRANSPARENCE:
295 0 : GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_AREA, SFX_CALLMODE_ASYNCHRON );
296 0 : break;
297 : case SID_ATTR_LINE_STYLE:
298 : case SID_ATTR_LINE_DASH:
299 : case SID_ATTR_LINE_WIDTH:
300 : case SID_ATTR_LINE_COLOR:
301 : case SID_ATTR_LINE_TRANSPARENCE:
302 : case SID_ATTR_LINE_JOINT:
303 : case SID_ATTR_LINE_CAP:
304 0 : GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_LINE, SFX_CALLMODE_ASYNCHRON );
305 0 : break;
306 : case SID_ATTR_TEXT_FITTOSIZE:
307 0 : GetViewFrame()->GetDispatcher()->Execute( SID_TEXTATTR_DLG, SFX_CALLMODE_ASYNCHRON );
308 0 : break;
309 : }
310 : }
311 0 : Cancel();
312 : }
313 0 : break;
314 :
315 : case SID_HYPHENATION:
316 : {
317 : // const SfxPoolItem* pItem = rReq.GetArg( SID_HYPHENATION );
318 : // ^-- should not be used (defaults are wrong) !
319 0 : SFX_REQUEST_ARG( rReq, pItem, SfxBoolItem, SID_HYPHENATION, sal_False);
320 :
321 0 : if( pItem )
322 : {
323 0 : SfxItemSet aSet( GetPool(), EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
324 0 : sal_Bool bValue = ( (const SfxBoolItem*) pItem)->GetValue();
325 0 : aSet.Put( SfxBoolItem( EE_PARA_HYPHENATE, bValue ) );
326 0 : mpDrawView->SetAttributes( aSet );
327 : }
328 : else // only for testing purpose
329 : {
330 : OSL_FAIL(" no value for hyphenation!");
331 0 : SfxItemSet aSet( GetPool(), EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
332 0 : sal_Bool bValue = sal_True;
333 0 : aSet.Put( SfxBoolItem( EE_PARA_HYPHENATE, bValue ) );
334 0 : mpDrawView->SetAttributes( aSet );
335 : }
336 0 : rReq.Done();
337 0 : Cancel();
338 : }
339 0 : break;
340 :
341 : case SID_INSERTPAGE:
342 : case SID_INSERTPAGE_QUICK:
343 : case SID_DUPLICATE_PAGE:
344 : {
345 0 : SdPage* pNewPage = CreateOrDuplicatePage (rReq, mePageKind, GetActualPage());
346 0 : Cancel();
347 0 : if(HasCurrentFunction(SID_BEZIER_EDIT) )
348 0 : GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
349 0 : if (pNewPage != NULL)
350 0 : SwitchPage((pNewPage->GetPageNum()-1)/2);
351 0 : rReq.Done ();
352 : }
353 0 : break;
354 :
355 : case SID_INSERT_MASTER_PAGE:
356 : {
357 : // Use the API to create a new page.
358 : Reference<drawing::XMasterPagesSupplier> xMasterPagesSupplier (
359 0 : GetDoc()->getUnoModel(), UNO_QUERY);
360 0 : if (xMasterPagesSupplier.is())
361 : {
362 : Reference<drawing::XDrawPages> xMasterPages (
363 0 : xMasterPagesSupplier->getMasterPages());
364 0 : if (xMasterPages.is())
365 : {
366 0 : sal_uInt16 nIndex = GetCurPageId();
367 0 : xMasterPages->insertNewByIndex (nIndex);
368 :
369 : // Create shapes for the default layout.
370 : SdPage* pMasterPage = GetDoc()->GetMasterSdPage(
371 0 : nIndex, PK_STANDARD);
372 0 : pMasterPage->CreateTitleAndLayout (sal_True,sal_True);
373 0 : }
374 : }
375 :
376 0 : Cancel();
377 0 : if(HasCurrentFunction(SID_BEZIER_EDIT))
378 : GetViewFrame()->GetDispatcher()->Execute(
379 0 : SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
380 0 : rReq.Done ();
381 : }
382 0 : break;
383 :
384 : case SID_MODIFYPAGE:
385 : {
386 0 : if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES ||
387 0 : (mePageKind==PK_HANDOUT && meEditMode==EM_MASTERPAGE) )
388 : {
389 0 : if ( mpDrawView->IsTextEdit() )
390 : {
391 0 : mpDrawView->SdrEndTextEdit();
392 : }
393 0 : sal_uInt16 nPage = maTabControl.GetCurPageId() - 1;
394 0 : mpActualPage = GetDoc()->GetSdPage(nPage, mePageKind);
395 : ::sd::ViewShell::mpImpl->ProcessModifyPageSlot (
396 : rReq,
397 : mpActualPage,
398 0 : mePageKind);
399 : }
400 :
401 0 : Cancel();
402 0 : rReq.Done ();
403 : }
404 0 : break;
405 :
406 : case SID_ASSIGN_LAYOUT:
407 : {
408 0 : if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES || (mePageKind==PK_HANDOUT && meEditMode==EM_MASTERPAGE))
409 : {
410 0 : if ( mpDrawView->IsTextEdit() )
411 0 : mpDrawView->SdrEndTextEdit();
412 :
413 0 : ::sd::ViewShell::mpImpl->AssignLayout(rReq, mePageKind);
414 : }
415 0 : Cancel();
416 0 : rReq.Done ();
417 : }
418 0 : break;
419 :
420 : case SID_RENAMEPAGE:
421 : case SID_RENAME_MASTER_PAGE:
422 : {
423 0 : if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES )
424 : {
425 0 : if ( mpDrawView->IsTextEdit() )
426 : {
427 0 : mpDrawView->SdrEndTextEdit();
428 : }
429 :
430 0 : sal_uInt16 nPageId = maTabControl.GetCurPageId();
431 0 : SdPage* pCurrentPage = ( GetEditMode() == EM_PAGE )
432 0 : ? GetDoc()->GetSdPage( nPageId - 1, GetPageKind() )
433 0 : : GetDoc()->GetMasterSdPage( nPageId - 1, GetPageKind() );
434 :
435 0 : String aTitle( SdResId( STR_TITLE_RENAMESLIDE ) );
436 0 : String aDescr( SdResId( STR_DESC_RENAMESLIDE ) );
437 0 : String aPageName = pCurrentPage->GetName();
438 :
439 0 : SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
440 : DBG_ASSERT(pFact, "Dialogdiet fail!");
441 0 : AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( GetActiveWindow(), aPageName, aDescr );
442 : DBG_ASSERT(aNameDlg, "Dialogdiet fail!");
443 0 : aNameDlg->SetText( aTitle );
444 0 : aNameDlg->SetCheckNameHdl( LINK( this, DrawViewShell, RenameSlideHdl ), true );
445 0 : aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE );
446 :
447 0 : if( aNameDlg->Execute() == RET_OK )
448 : {
449 0 : String aNewName;
450 0 : aNameDlg->GetName( aNewName );
451 0 : if( ! aNewName.Equals( aPageName ) )
452 : {
453 : #ifdef DBG_UTIL
454 : bool bResult =
455 : #endif
456 0 : RenameSlide( nPageId, aNewName );
457 : DBG_ASSERT( bResult, "Couldn't rename slide" );
458 0 : }
459 : }
460 0 : delete aNameDlg;
461 : }
462 :
463 0 : Cancel();
464 0 : rReq.Ignore ();
465 : }
466 0 : break;
467 :
468 : case SID_RENAMEPAGE_QUICK:
469 : {
470 0 : if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES )
471 : {
472 0 : if ( mpDrawView->IsTextEdit() )
473 : {
474 0 : mpDrawView->SdrEndTextEdit();
475 : }
476 :
477 0 : maTabControl.StartEditMode( maTabControl.GetCurPageId() );
478 : }
479 :
480 0 : Cancel();
481 0 : rReq.Ignore ();
482 : }
483 0 : break;
484 :
485 : case SID_PAGESIZE : // either this (no menu entries or something else!)
486 : {
487 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
488 :
489 0 : if (pArgs)
490 0 : if (pArgs->Count () == 3)
491 : {
492 0 : SFX_REQUEST_ARG (rReq, pWidth, SfxUInt32Item, ID_VAL_PAGEWIDTH, sal_False);
493 0 : SFX_REQUEST_ARG (rReq, pHeight, SfxUInt32Item, ID_VAL_PAGEHEIGHT, sal_False);
494 0 : SFX_REQUEST_ARG (rReq, pScaleAll, SfxBoolItem, ID_VAL_SCALEOBJECTS, sal_False);
495 :
496 0 : Size aSize (pWidth->GetValue (), pHeight->GetValue ());
497 :
498 0 : SetupPage (aSize, 0, 0, 0, 0, sal_True, sal_False, pScaleAll->GetValue ());
499 0 : rReq.Ignore ();
500 0 : break;
501 : }
502 : #ifndef DISABLE_SCRIPTING
503 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
504 : #endif
505 0 : rReq.Ignore ();
506 0 : break;
507 : }
508 :
509 : case SID_PAGEMARGIN : // or this (no menu entries or something else!)
510 : {
511 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
512 :
513 0 : if (pArgs)
514 0 : if (pArgs->Count () == 5)
515 : {
516 0 : SFX_REQUEST_ARG (rReq, pLeft, SfxUInt32Item, ID_VAL_PAGELEFT, sal_False);
517 0 : SFX_REQUEST_ARG (rReq, pRight, SfxUInt32Item, ID_VAL_PAGERIGHT, sal_False);
518 0 : SFX_REQUEST_ARG (rReq, pUpper, SfxUInt32Item, ID_VAL_PAGETOP, sal_False);
519 0 : SFX_REQUEST_ARG (rReq, pLower, SfxUInt32Item, ID_VAL_PAGEBOTTOM, sal_False);
520 0 : SFX_REQUEST_ARG (rReq, pScaleAll, SfxBoolItem, ID_VAL_SCALEOBJECTS, sal_False);
521 :
522 0 : Size aEmptySize (0, 0);
523 :
524 0 : SetupPage (aEmptySize, pLeft->GetValue (), pRight->GetValue (),
525 0 : pUpper->GetValue (), pLower->GetValue (),
526 0 : sal_False, sal_True, pScaleAll->GetValue ());
527 0 : rReq.Ignore ();
528 0 : break;
529 : }
530 : #ifndef DISABLE_SCRIPTING
531 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
532 : #endif
533 0 : rReq.Ignore ();
534 0 : break;
535 : }
536 :
537 : case SID_ATTR_ZOOMSLIDER:
538 : {
539 0 : const SfxItemSet* pArgs = rReq.GetArgs();
540 :
541 0 : if (pArgs && pArgs->Count () == 1 )
542 : {
543 0 : SFX_REQUEST_ARG (rReq, pScale, SfxUInt16Item, SID_ATTR_ZOOMSLIDER, sal_False);
544 0 : if (CHECK_RANGE (5, pScale->GetValue (), 3000))
545 : {
546 0 : SetZoom (pScale->GetValue ());
547 :
548 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
549 0 : rBindings.Invalidate( SID_ATTR_ZOOM );
550 0 : rBindings.Invalidate( SID_ZOOM_IN );
551 0 : rBindings.Invalidate( SID_ZOOM_OUT );
552 0 : rBindings.Invalidate( SID_ATTR_ZOOMSLIDER );
553 :
554 : }
555 : }
556 :
557 0 : Cancel();
558 0 : rReq.Done ();
559 0 : break;
560 : }
561 : case SID_ZOOMING : // no menu entry, but generated from zoom dialog
562 : {
563 0 : const SfxItemSet* pArgs = rReq.GetArgs();
564 :
565 0 : if (pArgs)
566 0 : if (pArgs->Count () == 1)
567 : {
568 0 : SFX_REQUEST_ARG (rReq, pScale, SfxUInt32Item, ID_VAL_ZOOM, sal_False);
569 0 : if (CHECK_RANGE (10, pScale->GetValue (), 1000))
570 : {
571 0 : SetZoom (pScale->GetValue ());
572 :
573 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
574 0 : rBindings.Invalidate( SID_ATTR_ZOOM );
575 0 : rBindings.Invalidate( SID_ZOOM_IN );
576 0 : rBindings.Invalidate( SID_ZOOM_OUT );
577 0 : rBindings.Invalidate( SID_ATTR_ZOOMSLIDER );
578 : }
579 : #ifndef DISABLE_SCRIPTING
580 0 : else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
581 : #endif
582 0 : rReq.Ignore ();
583 0 : break;
584 : }
585 : #ifndef DISABLE_SCRIPTING
586 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
587 : #endif
588 0 : rReq.Ignore ();
589 0 : break;
590 : }
591 :
592 : case SID_ATTR_ZOOM:
593 : {
594 0 : const SfxItemSet* pArgs = rReq.GetArgs();
595 0 : mbZoomOnPage = sal_False;
596 :
597 0 : if ( pArgs )
598 : {
599 : SvxZoomType eZT = ( ( const SvxZoomItem& ) pArgs->
600 0 : Get( SID_ATTR_ZOOM ) ).GetType();
601 0 : switch( eZT )
602 : {
603 : case SVX_ZOOM_PERCENT:
604 : SetZoom( (long) ( ( const SvxZoomItem& ) pArgs->
605 0 : Get( SID_ATTR_ZOOM ) ).GetValue() );
606 0 : break;
607 :
608 : case SVX_ZOOM_OPTIMAL:
609 : GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_ALL,
610 0 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
611 0 : break;
612 :
613 : case SVX_ZOOM_PAGEWIDTH:
614 : GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_PAGE_WIDTH,
615 0 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
616 0 : break;
617 :
618 : case SVX_ZOOM_WHOLEPAGE:
619 : GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_PAGE,
620 0 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
621 0 : break;
622 : case SVX_ZOOM_PAGEWIDTH_NOBORDER:
623 : OSL_FAIL("sd::DrawViewShell::FuTemporary(), SVX_ZOOM_PAGEWIDTH_NOBORDER not handled!" );
624 0 : break;
625 : }
626 0 : rReq.Ignore ();
627 : }
628 : else
629 : {
630 : // open zoom dialog
631 0 : SetCurrentFunction( FuScale::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
632 : }
633 0 : Cancel();
634 : }
635 0 : break;
636 :
637 : case SID_CHANGEBEZIER:
638 : case SID_CHANGEPOLYGON:
639 0 : if ( mpDrawView->IsTextEdit() )
640 : {
641 0 : mpDrawView->SdrEndTextEdit();
642 0 : GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
643 : }
644 :
645 0 : if ( mpDrawView->IsPresObjSelected() )
646 : {
647 0 : ::sd::Window* pWindow = GetActiveWindow();
648 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
649 : }
650 : else
651 : {
652 0 : if( rReq.GetSlot() == SID_CHANGEBEZIER )
653 : {
654 0 : WaitObject aWait( (Window*)GetActiveWindow() );
655 0 : mpDrawView->ConvertMarkedToPathObj(sal_False);
656 : }
657 : else
658 : {
659 0 : if( mpDrawView->IsVectorizeAllowed() )
660 : {
661 0 : SetCurrentFunction( FuVectorize::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
662 : }
663 : else
664 : {
665 0 : WaitObject aWait( (Window*)GetActiveWindow() );
666 0 : mpDrawView->ConvertMarkedToPolyObj(sal_False);
667 : }
668 : }
669 :
670 0 : Invalidate(SID_CHANGEBEZIER);
671 0 : Invalidate(SID_CHANGEPOLYGON);
672 : }
673 0 : Cancel();
674 :
675 0 : if( HasCurrentFunction(SID_BEZIER_EDIT) )
676 : { // where applicable, activate right edit action
677 : GetViewFrame()->GetDispatcher()->Execute(SID_SWITCH_POINTEDIT,
678 0 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
679 : }
680 0 : rReq.Ignore ();
681 0 : break;
682 :
683 : case SID_CONVERT_TO_CONTOUR:
684 0 : if ( mpDrawView->IsTextEdit() )
685 : {
686 0 : mpDrawView->SdrEndTextEdit();
687 0 : GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
688 : }
689 :
690 0 : if ( mpDrawView->IsPresObjSelected() )
691 : {
692 0 : ::sd::Window* pWindow = GetActiveWindow();
693 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
694 : }
695 : else
696 : {
697 0 : WaitObject aWait( (Window*)GetActiveWindow() );
698 0 : mpDrawView->ConvertMarkedToPathObj(sal_True);
699 :
700 0 : Invalidate(SID_CONVERT_TO_CONTOUR);
701 : }
702 0 : Cancel();
703 :
704 0 : rReq.Ignore ();
705 0 : break;
706 :
707 : case SID_CONVERT_TO_METAFILE:
708 : case SID_CONVERT_TO_BITMAP:
709 : {
710 : // End text edit mode when it is active because the metafile or
711 : // bitmap that will be created does not support it.
712 0 : if ( mpDrawView->IsTextEdit() )
713 : {
714 0 : mpDrawView->SdrEndTextEdit();
715 0 : GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
716 : }
717 :
718 0 : if ( mpDrawView->IsPresObjSelected(true,true,true) )
719 : {
720 0 : ::sd::Window* pWindow = GetActiveWindow();
721 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
722 : }
723 : else
724 : {
725 0 : WaitObject aWait( (Window*)GetActiveWindow() );
726 :
727 : // create SdrGrafObj from metafile/bitmap
728 0 : Graphic aGraphic;
729 0 : switch (nSId)
730 : {
731 : case SID_CONVERT_TO_METAFILE:
732 : {
733 : // switch on undo for the next operations
734 0 : mpDrawView->BegUndo( String( SdResId( STR_UNDO_CONVERT_TO_METAFILE )));
735 0 : GDIMetaFile aMetaFile(mpDrawView->GetMarkedObjMetaFile());
736 0 : aGraphic = Graphic(aMetaFile);
737 : }
738 0 : break;
739 : case SID_CONVERT_TO_BITMAP:
740 : {
741 : // switch on undo for the next operations
742 0 : mpDrawView->BegUndo( String( SdResId( STR_UNDO_CONVERT_TO_BITMAP )));
743 0 : bool bDone(false);
744 :
745 : // I have to get the image here directly since GetMarkedObjBitmapEx works
746 : // based on Bitmaps, but not on BitmapEx, thus throwing away the alpha
747 : // channel. Argh! GetMarkedObjBitmapEx itself is too widely used to safely
748 : // change that, e.g. in the exchange formats. For now I can only add this
749 : // exception to get good results for Svgs. This is how the code gets more
750 : // and more crowded, at last I made a remark for myself to change this
751 : // as one of the next tasks.
752 0 : if(1 == mpDrawView->GetMarkedObjectCount())
753 : {
754 0 : const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(mpDrawView->GetMarkedObjectByIndex(0));
755 :
756 0 : if(pSdrGrafObj && pSdrGrafObj->isEmbeddedSvg())
757 : {
758 0 : aGraphic = Graphic(pSdrGrafObj->GetGraphic().getSvgData()->getReplacement());
759 0 : bDone = true;
760 : }
761 : }
762 :
763 0 : if(!bDone)
764 : {
765 0 : aGraphic = Graphic(mpDrawView->GetMarkedObjBitmapEx());
766 : }
767 : }
768 0 : break;
769 : }
770 :
771 : // create new object
772 0 : SdrGrafObj* pGraphicObj = new SdrGrafObj (aGraphic);
773 :
774 : // get some necessary info and ensure it
775 0 : const SdrMarkList& rMarkList(mpDrawView->GetMarkedObjectList());
776 0 : const sal_uInt32 nMarkCount(rMarkList.GetMarkCount());
777 0 : SdrPageView* pPageView = mpDrawView->GetSdrPageView();
778 : OSL_ENSURE(nMarkCount, "DrawViewShell::FuTemporary: SID_CONVERT_TO_BITMAP with empty selection (!)");
779 : OSL_ENSURE(pPageView, "DrawViewShell::FuTemporary: SID_CONVERT_TO_BITMAP without SdrPageView (!)");
780 :
781 : // fit rectangle of new graphic object to selection's mark rect
782 0 : Rectangle aAllMarkedRect;
783 0 : rMarkList.TakeBoundRect(pPageView, aAllMarkedRect);
784 0 : pGraphicObj->SetLogicRect(aAllMarkedRect);
785 :
786 : // #i71540# to keep the order, it is necessary to replace the lowest object
787 : // of the selection with the new object. This also means that with multi
788 : // selection, all other objects need to be deleted first
789 0 : SdrMark* pFirstMark = rMarkList.GetMark(0L);
790 0 : SdrObject* pReplacementCandidate = pFirstMark->GetMarkedSdrObj();
791 :
792 0 : if(nMarkCount > 1L)
793 : {
794 : // take first object out of selection
795 0 : mpDrawView->MarkObj(pReplacementCandidate, pPageView, true, true);
796 :
797 : // clear remaining selection
798 0 : mpDrawView->DeleteMarkedObj();
799 : }
800 :
801 : // now replace lowest object with new one
802 0 : mpDrawView->ReplaceObjectAtView(pReplacementCandidate, *pPageView, pGraphicObj);
803 :
804 : // switch off undo
805 0 : mpDrawView->EndUndo();
806 : }
807 : }
808 :
809 0 : Cancel();
810 :
811 0 : rReq.Done ();
812 0 : break;
813 :
814 : case SID_SET_DEFAULT:
815 : {
816 0 : SfxItemSet* pSet = NULL;
817 :
818 0 : if (mpDrawView->IsTextEdit())
819 : {
820 0 : ::Outliner* pOutl = mpDrawView->GetTextEditOutliner();
821 0 : if (pOutl)
822 : {
823 0 : pOutl->RemoveFields(sal_True, (TypeId) SvxURLField::StaticType());
824 : }
825 :
826 0 : pSet = new SfxItemSet( GetPool(), EE_ITEMS_START, EE_ITEMS_END );
827 0 : mpDrawView->SetAttributes( *pSet, sal_True );
828 : }
829 : else
830 : {
831 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
832 0 : sal_uLong nCount = rMarkList.GetMarkCount();
833 :
834 : // For every presentation object a SfxItemSet of hard attributes
835 : // and the UserCall is stored in this list. This is because
836 : // at the following mpDrawView->SetAttributes( *pSet, sal_True )
837 : // they get lost and have to be restored.
838 0 : std::vector<std::pair<SfxItemSet*,SdrObjUserCall*> > aAttrList;
839 0 : SdPage* pPresPage = (SdPage*) mpDrawView->GetSdrPageView()->GetPage();
840 : sal_uLong i;
841 :
842 0 : for ( i = 0; i < nCount; i++ )
843 : {
844 0 : SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
845 :
846 0 : if( pPresPage->IsPresObj( pObj ) )
847 : {
848 0 : SfxItemSet* pNewSet = new SfxItemSet( GetDoc()->GetPool(), SDRATTR_TEXT_MINFRAMEHEIGHT, SDRATTR_TEXT_AUTOGROWHEIGHT, 0 );
849 0 : pNewSet->Put(pObj->GetMergedItemSet());
850 0 : aAttrList.push_back(std::make_pair(pNewSet, pObj->GetUserCall()));
851 : }
852 : }
853 :
854 0 : pSet = new SfxItemSet( GetPool() );
855 0 : mpDrawView->SetAttributes( *pSet, sal_True );
856 :
857 0 : sal_uLong j = 0;
858 :
859 0 : for ( i = 0; i < nCount; i++ )
860 : {
861 0 : SfxStyleSheet* pSheet = NULL;
862 0 : SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
863 :
864 0 : if (pObj->GetObjIdentifier() == OBJ_TITLETEXT)
865 : {
866 0 : pSheet = mpActualPage->GetStyleSheetForPresObj(PRESOBJ_TITLE);
867 0 : if (pSheet)
868 0 : pObj->SetStyleSheet(pSheet, sal_False);
869 : }
870 0 : else if(pObj->GetObjIdentifier() == OBJ_OUTLINETEXT)
871 : {
872 0 : for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
873 : {
874 0 : pSheet = mpActualPage->GetStyleSheetForPresObj( PRESOBJ_OUTLINE );
875 : DBG_ASSERT(pSheet, "Template for outline object not found");
876 0 : if (pSheet)
877 : {
878 0 : pObj->StartListening(*pSheet);
879 :
880 0 : if( nLevel == 1 )
881 : // text frame listens on StyleSheet of level1
882 0 : pObj->NbcSetStyleSheet(pSheet, sal_False);
883 :
884 : }
885 : }
886 : }
887 :
888 0 : if( pPresPage->IsPresObj( pObj ) )
889 : {
890 0 : std::pair<SfxItemSet*,SdrObjUserCall*> &rAttr = aAttrList[j++];
891 :
892 0 : SfxItemSet* pNewSet = rAttr.first;
893 0 : SdrObjUserCall* pUserCall = rAttr.second;
894 :
895 0 : if ( pNewSet && pNewSet->GetItemState( SDRATTR_TEXT_MINFRAMEHEIGHT ) == SFX_ITEM_ON )
896 : {
897 0 : pObj->SetMergedItem(pNewSet->Get(SDRATTR_TEXT_MINFRAMEHEIGHT));
898 : }
899 :
900 0 : if ( pNewSet && pNewSet->GetItemState( SDRATTR_TEXT_AUTOGROWHEIGHT ) == SFX_ITEM_ON )
901 : {
902 0 : pObj->SetMergedItem(pNewSet->Get(SDRATTR_TEXT_AUTOGROWHEIGHT));
903 : }
904 :
905 0 : if( pUserCall )
906 0 : pObj->SetUserCall( pUserCall );
907 :
908 0 : delete pNewSet;
909 : }
910 0 : }
911 : }
912 :
913 0 : delete pSet;
914 0 : Cancel();
915 : }
916 0 : break;
917 :
918 : case SID_DELETE_SNAPITEM:
919 : {
920 : SdrPageView* pPV;
921 0 : Point aMPos = GetActiveWindow()->PixelToLogic( maMousePos );
922 0 : sal_uInt16 nHitLog = (sal_uInt16) GetActiveWindow()->PixelToLogic( Size(
923 0 : FuPoor::HITPIX, 0 ) ).Width();
924 : sal_uInt16 nHelpLine;
925 :
926 0 : mbMousePosFreezed = sal_False;
927 :
928 0 : if( mpDrawView->PickHelpLine( aMPos, nHitLog, *GetActiveWindow(), nHelpLine, pPV) )
929 : {
930 0 : pPV->DeleteHelpLine( nHelpLine );
931 : }
932 0 : Cancel();
933 0 : rReq.Ignore ();
934 : }
935 0 : break;
936 :
937 : case SID_DELETE_PAGE:
938 : case SID_DELETE_MASTER_PAGE:
939 0 : DeleteActualPage();
940 0 : Cancel();
941 0 : rReq.Ignore ();
942 0 : break;
943 :
944 : case SID_DELETE_LAYER:
945 0 : DeleteActualLayer();
946 0 : Cancel();
947 0 : rReq.Ignore ();
948 0 : break;
949 :
950 : case SID_ORIGINAL_SIZE:
951 0 : mpDrawView->SetMarkedOriginalSize();
952 0 : Cancel();
953 0 : rReq.Done();
954 0 : break;
955 :
956 : case SID_DRAW_FONTWORK:
957 : case SID_DRAW_FONTWORK_VERTICAL:
958 : {
959 0 : svx::FontworkBar::execute( mpView, rReq, GetViewFrame()->GetBindings() ); // SJ: can be removed (I think)
960 0 : Cancel();
961 0 : rReq.Done();
962 : }
963 0 : break;
964 :
965 : case SID_SAVE_GRAPHIC:
966 : {
967 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
968 0 : if( rMarkList.GetMarkCount() == 1 )
969 : {
970 0 : SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
971 0 : if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
972 : {
973 0 : GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() );
974 : {
975 0 : GraphicHelper::ExportGraphic( aGraphicObject.GetGraphic(), String("") );
976 0 : }
977 : }
978 : }
979 0 : Cancel();
980 0 : rReq.Ignore();
981 : }
982 0 : break;
983 :
984 : case SID_EXTERNAL_EDIT:
985 : {
986 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
987 0 : if( rMarkList.GetMarkCount() == 1 )
988 : {
989 0 : SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
990 0 : if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
991 : {
992 0 : GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() );
993 0 : SdExternalToolEdit* aExternalToolEdit = new SdExternalToolEdit( mpDrawView, pObj );
994 0 : aExternalToolEdit->Edit( &aGraphicObject );
995 : }
996 : }
997 0 : Cancel();
998 0 : rReq.Ignore();
999 : }
1000 0 : break;
1001 :
1002 : case SID_COMPRESS_GRAPHIC:
1003 : {
1004 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
1005 0 : if( rMarkList.GetMarkCount() == 1 )
1006 : {
1007 0 : SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
1008 :
1009 0 : if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
1010 : {
1011 0 : SdrGrafObj* pGraphicObj = (SdrGrafObj*) pObj;
1012 0 : CompressGraphicsDialog dialog( GetParentWindow(), pGraphicObj, GetViewFrame()->GetBindings() );
1013 0 : if ( dialog.Execute() == RET_OK )
1014 : {
1015 0 : SdrGrafObj* pNewObject = dialog.GetCompressedSdrGrafObj();
1016 0 : SdrPageView* pPageView = mpDrawView->GetSdrPageView();
1017 0 : String aUndoString( mpDrawView->GetDescriptionOfMarkedObjects() );
1018 0 : aUndoString += String( " Compress" );
1019 0 : mpDrawView->BegUndo( aUndoString );
1020 0 : mpDrawView->ReplaceObjectAtView( pObj, *pPageView, pNewObject );
1021 0 : mpDrawView->EndUndo();
1022 0 : }
1023 : }
1024 : }
1025 0 : Cancel();
1026 0 : rReq.Ignore();
1027 : }
1028 0 : break;
1029 :
1030 : case SID_ATTRIBUTES_LINE: // BASIC
1031 : {
1032 0 : SetCurrentFunction( FuLine::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1033 0 : Cancel();
1034 : }
1035 0 : break;
1036 :
1037 : case SID_ATTRIBUTES_AREA: // BASIC
1038 : {
1039 0 : SetCurrentFunction( FuArea::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1040 0 : Cancel();
1041 : }
1042 0 : break;
1043 :
1044 : case SID_ATTR_TRANSFORM:
1045 : {
1046 0 : SetCurrentFunction( FuTransform::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1047 0 : Invalidate(SID_RULER_OBJECT);
1048 0 : Cancel();
1049 : }
1050 0 : break;
1051 :
1052 : case SID_CHAR_DLG_EFFECT:
1053 : case SID_CHAR_DLG: // BASIC
1054 : {
1055 0 : SetCurrentFunction( FuChar::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1056 0 : Cancel();
1057 : }
1058 0 : break;
1059 :
1060 : case SID_PARA_DLG:
1061 : {
1062 0 : SetCurrentFunction( FuParagraph::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1063 0 : Cancel();
1064 : }
1065 0 : break;
1066 :
1067 : case FN_NUM_BULLET_ON:
1068 : {
1069 : // The value (sal_uInt16)0xFFFF means set bullet on/off.
1070 0 : SfxUInt16Item aItem(FN_SVX_SET_BULLET, (sal_uInt16)0xFFFF);
1071 0 : GetViewFrame()->GetDispatcher()->Execute( FN_SVX_SET_BULLET, SFX_CALLMODE_RECORD, &aItem, 0L );
1072 : }
1073 0 : break;
1074 :
1075 : case FN_NUM_NUMBERING_ON:
1076 : {
1077 : // The value (sal_uInt16)0xFFFF means set bullet on/off.
1078 0 : SfxUInt16Item aItem(FN_SVX_SET_NUMBER, (sal_uInt16)0xFFFF);
1079 0 : GetViewFrame()->GetDispatcher()->Execute( FN_SVX_SET_NUMBER, SFX_CALLMODE_RECORD, &aItem, 0L );
1080 : }
1081 0 : break;
1082 :
1083 : case SID_OUTLINE_BULLET:
1084 : case FN_SVX_SET_BULLET:
1085 : case FN_SVX_SET_NUMBER:
1086 : {
1087 0 : SetCurrentFunction( FuOutlineBullet::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1088 0 : Cancel();
1089 : }
1090 0 : break;
1091 :
1092 : case FN_INSERT_SOFT_HYPHEN:
1093 : case FN_INSERT_HARDHYPHEN:
1094 : case FN_INSERT_HARD_SPACE:
1095 : case SID_INSERT_RLM :
1096 : case SID_INSERT_LRM :
1097 : case SID_INSERT_ZWNBSP :
1098 : case SID_INSERT_ZWSP:
1099 : case SID_CHARMAP:
1100 : {
1101 0 : SetCurrentFunction( FuBullet::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1102 0 : Cancel();
1103 : }
1104 0 : break;
1105 :
1106 : case SID_PRESENTATION_LAYOUT:
1107 : {
1108 0 : SetCurrentFunction( FuPresentationLayout::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
1109 0 : Cancel();
1110 : }
1111 0 : break;
1112 :
1113 : case SID_PASTE_SPECIAL:
1114 : {
1115 0 : SetCurrentFunction( FuInsertClipboard::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1116 0 : Cancel();
1117 0 : rReq.Ignore ();
1118 : }
1119 0 : break;
1120 :
1121 : case SID_CHANGE_PICTURE:
1122 : case SID_INSERT_GRAPHIC:
1123 : {
1124 0 : SetCurrentFunction( FuInsertGraphic::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1125 0 : Cancel();
1126 0 : rReq.Ignore ();
1127 0 : Invalidate(SID_DRAWTBX_INSERT);
1128 : }
1129 0 : break;
1130 :
1131 : case SID_INSERT_AVMEDIA:
1132 : {
1133 0 : SetCurrentFunction( FuInsertAVMedia::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1134 :
1135 0 : Cancel();
1136 0 : rReq.Ignore ();
1137 :
1138 0 : Invalidate(SID_DRAWTBX_INSERT);
1139 : }
1140 0 : break;
1141 :
1142 : case SID_INSERT_OBJECT:
1143 : case SID_INSERT_PLUGIN:
1144 : case SID_INSERT_SOUND:
1145 : case SID_INSERT_VIDEO:
1146 : case SID_INSERT_FLOATINGFRAME:
1147 : case SID_INSERT_MATH:
1148 : case SID_INSERT_DIAGRAM:
1149 : case SID_ATTR_TABLE:
1150 : {
1151 0 : SetCurrentFunction( FuInsertOLE::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1152 :
1153 0 : Cancel();
1154 0 : rReq.Ignore ();
1155 :
1156 0 : Invalidate(SID_DRAWTBX_INSERT);
1157 : }
1158 0 : break;
1159 :
1160 : case SID_COPYOBJECTS:
1161 : {
1162 0 : if ( mpDrawView->IsPresObjSelected(sal_False, sal_True) )
1163 : {
1164 0 : ::sd::Window* pWindow = GetActiveWindow();
1165 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
1166 : }
1167 : else
1168 : {
1169 0 : if ( mpDrawView->IsTextEdit() )
1170 : {
1171 0 : mpDrawView->SdrEndTextEdit();
1172 : }
1173 :
1174 0 : SetCurrentFunction( FuCopy::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1175 : }
1176 0 : Cancel();
1177 0 : rReq.Ignore ();
1178 : }
1179 0 : break;
1180 :
1181 : case SID_INSERTFILE: // BASIC
1182 : {
1183 0 : Broadcast (ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_START));
1184 0 : SetCurrentFunction( FuInsertFile::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1185 0 : Broadcast (ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_END));
1186 0 : Cancel();
1187 0 : rReq.Done ();
1188 :
1189 0 : Invalidate(SID_DRAWTBX_INSERT);
1190 : }
1191 0 : break;
1192 :
1193 : case SID_SELECT_BACKGROUND:
1194 : case SID_PAGESETUP: // BASIC ??
1195 : {
1196 0 : SetCurrentFunction( FuPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1197 0 : Cancel();
1198 0 : rReq.Ignore (); // we generate independent macros !!
1199 : }
1200 0 : break;
1201 :
1202 : case SID_ZOOM_OUT:
1203 : case SID_ZOOM_PANNING:
1204 : {
1205 0 : mbZoomOnPage = sal_False;
1206 0 : SetCurrentFunction( FuZoom::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
1207 : // finishes itself, no Cancel() needed!
1208 0 : Invalidate( SID_ZOOM_TOOLBOX );
1209 0 : rReq.Ignore ();
1210 : }
1211 0 : break;
1212 :
1213 : case SID_BEFORE_OBJ:
1214 : case SID_BEHIND_OBJ:
1215 : {
1216 0 : SetCurrentFunction( FuDisplayOrder::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
1217 0 : Invalidate( SID_POSITION );
1218 0 : rReq.Ignore ();
1219 : // finishes itself, no Cancel() needed!
1220 : }
1221 0 : break;
1222 :
1223 : case SID_REVERSE_ORDER: // BASIC
1224 : {
1225 0 : mpDrawView->ReverseOrderOfMarked();
1226 0 : Invalidate( SID_POSITION );
1227 0 : Cancel();
1228 0 : rReq.Done ();
1229 : }
1230 0 : break;
1231 :
1232 : case SID_ANIMATION_EFFECTS:
1233 : {
1234 0 : SetCurrentFunction( FuObjectAnimationParameters::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
1235 0 : Cancel();
1236 : }
1237 0 : break;
1238 :
1239 : case SID_LINEEND_POLYGON:
1240 : {
1241 0 : SetCurrentFunction( FuLineEnd::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1242 0 : Cancel();
1243 : }
1244 0 : break;
1245 :
1246 : case SID_CAPTUREPOINT:
1247 : // negative value to signal call from menu
1248 0 : maMousePos = Point(-1,-1);
1249 : case SID_SET_SNAPITEM:
1250 : {
1251 0 : SetCurrentFunction( FuSnapLine::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
1252 0 : Cancel();
1253 : }
1254 0 : break;
1255 :
1256 : case SID_MANAGE_LINKS:
1257 : {
1258 0 : SetCurrentFunction( FuLink::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1259 0 : Cancel();
1260 0 : rReq.Ignore ();
1261 : }
1262 0 : break;
1263 :
1264 : case SID_THESAURUS:
1265 : {
1266 0 : SetCurrentFunction( FuThesaurus::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1267 0 : Cancel();
1268 0 : rReq.Ignore ();
1269 : }
1270 0 : break;
1271 :
1272 : case SID_TEXTATTR_DLG:
1273 : {
1274 0 : SetCurrentFunction( FuTextAttrDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1275 0 : Cancel();
1276 0 : rReq.Ignore ();
1277 : }
1278 0 : break;
1279 :
1280 : case SID_MEASURE_DLG:
1281 : {
1282 0 : SetCurrentFunction( FuMeasureDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1283 0 : Cancel();
1284 0 : rReq.Ignore ();
1285 : }
1286 0 : break;
1287 :
1288 : case SID_CONNECTION_DLG:
1289 : {
1290 0 : SetCurrentFunction( FuConnectionDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1291 0 : Cancel();
1292 0 : rReq.Done();
1293 : }
1294 0 : break;
1295 :
1296 : case SID_CONNECTION_NEW_ROUTING:
1297 : {
1298 0 : SfxItemSet aDefAttr( GetPool(), SDRATTR_EDGELINE1DELTA, SDRATTR_EDGELINE3DELTA );
1299 0 : GetView()->SetAttributes( aDefAttr, sal_True ); // (ReplaceAll)
1300 :
1301 0 : Cancel();
1302 0 : rReq.Done();
1303 : }
1304 0 : break;
1305 :
1306 : case SID_TWAIN_SELECT:
1307 : {
1308 0 : if( mxScannerManager.is() )
1309 : {
1310 : try
1311 : {
1312 : const ::com::sun::star::uno::Sequence< ::com::sun::star::scanner::ScannerContext >
1313 0 : aContexts( mxScannerManager->getAvailableScanners() );
1314 :
1315 0 : if( aContexts.getLength() )
1316 : {
1317 0 : ::com::sun::star::scanner::ScannerContext aContext( aContexts.getConstArray()[ 0 ] );
1318 0 : mxScannerManager->configureScannerAndScan( aContext, mxScannerListener );
1319 0 : }
1320 : }
1321 0 : catch(...)
1322 : {
1323 : }
1324 : }
1325 :
1326 0 : Cancel();
1327 0 : rReq.Done();
1328 : }
1329 0 : break;
1330 :
1331 : case SID_TWAIN_TRANSFER:
1332 : {
1333 0 : sal_Bool bDone = sal_False;
1334 :
1335 0 : if( mxScannerManager.is() )
1336 : {
1337 : try
1338 : {
1339 0 : const ::com::sun::star::uno::Sequence< ::com::sun::star::scanner::ScannerContext > aContexts( mxScannerManager->getAvailableScanners() );
1340 :
1341 0 : if( aContexts.getLength() )
1342 : {
1343 0 : mxScannerManager->startScan( aContexts.getConstArray()[ 0 ], mxScannerListener );
1344 0 : bDone = sal_True;
1345 0 : }
1346 : }
1347 0 : catch( ... )
1348 : {
1349 : }
1350 : }
1351 :
1352 0 : if( !bDone )
1353 : {
1354 : #ifndef UNX
1355 : const sal_uInt16 nId = STR_TWAIN_NO_SOURCE;
1356 : #else
1357 0 : const sal_uInt16 nId = STR_TWAIN_NO_SOURCE_UNX;
1358 : #endif
1359 :
1360 0 : ::sd::Window* pWindow = GetActiveWindow();
1361 0 : InfoBox(pWindow, String( SdResId( nId ) ) ).Execute();
1362 : }
1363 : else
1364 : {
1365 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
1366 0 : rBindings.Invalidate( SID_TWAIN_SELECT );
1367 0 : rBindings.Invalidate( SID_TWAIN_TRANSFER );
1368 : }
1369 :
1370 0 : Cancel();
1371 0 : rReq.Done();
1372 : }
1373 0 : break;
1374 :
1375 : case SID_POLYGON_MORPHING:
1376 : {
1377 0 : SetCurrentFunction( FuMorph::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1378 0 : Cancel();
1379 : }
1380 0 : break;
1381 :
1382 : case SID_VECTORIZE:
1383 : {
1384 0 : SetCurrentFunction( FuVectorize::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
1385 0 : Cancel();
1386 : }
1387 0 : break;
1388 :
1389 : case SID_INSERTLAYER:
1390 : {
1391 0 : if ( mpDrawView->IsTextEdit() )
1392 : {
1393 0 : mpDrawView->SdrEndTextEdit();
1394 : }
1395 :
1396 0 : SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
1397 0 : sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount();
1398 0 : sal_uInt16 nLayer = nLayerCnt - 2 + 1;
1399 0 : String aLayerName ( SdResId(STR_LAYER) ), aLayerTitle, aLayerDesc;
1400 0 : aLayerName += OUString::number( (sal_Int32)nLayer );
1401 0 : sal_Bool bIsVisible = sal_False;
1402 0 : sal_Bool bIsLocked = sal_False;
1403 0 : sal_Bool bIsPrintable = sal_False;
1404 :
1405 0 : const SfxItemSet* pArgs = rReq.GetArgs();
1406 :
1407 0 : if (! pArgs)
1408 : {
1409 0 : SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
1410 :
1411 0 : aNewAttr.Put( SdAttrLayerName( aLayerName ) );
1412 0 : aNewAttr.Put( SdAttrLayerTitle() );
1413 0 : aNewAttr.Put( SdAttrLayerDesc() );
1414 0 : aNewAttr.Put( SdAttrLayerVisible() );
1415 0 : aNewAttr.Put( SdAttrLayerPrintable() );
1416 0 : aNewAttr.Put( SdAttrLayerLocked() );
1417 0 : aNewAttr.Put( SdAttrLayerThisPage() );
1418 :
1419 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
1420 0 : AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, true, String( SdResId( STR_INSERTLAYER ) ) ) : 0;
1421 0 : if( pDlg )
1422 : {
1423 0 : pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_INSERTLAYER )->GetCommand() );
1424 :
1425 : // test for already existing names
1426 0 : sal_Bool bLoop = sal_True;
1427 0 : while( bLoop && pDlg->Execute() == RET_OK )
1428 : {
1429 0 : pDlg->GetAttr( aNewAttr );
1430 0 : aLayerName = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
1431 :
1432 0 : if( rLayerAdmin.GetLayer( aLayerName, sal_False )
1433 0 : || aLayerName.Len()==0 )
1434 : {
1435 : // name already exists
1436 : WarningBox aWarningBox (
1437 : GetParentWindow(),
1438 : WinBits( WB_OK ),
1439 0 : String(SdResId( STR_WARN_NAME_DUPLICATE)));
1440 0 : aWarningBox.Execute();
1441 : }
1442 : else
1443 0 : bLoop = sal_False;
1444 : }
1445 0 : if( bLoop ) // was canceled
1446 : {
1447 0 : delete pDlg;
1448 :
1449 0 : Cancel();
1450 0 : rReq.Ignore ();
1451 0 : break;
1452 : }
1453 : else
1454 : {
1455 0 : aLayerTitle = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
1456 0 : aLayerDesc = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
1457 0 : bIsVisible = ((SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
1458 0 : bIsLocked = ((SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ;
1459 0 : bIsPrintable = ((SdAttrLayerPrintable &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ;
1460 :
1461 0 : delete pDlg;
1462 : }
1463 0 : }
1464 : }
1465 0 : else if (pArgs->Count () != 4)
1466 : {
1467 : #ifndef DISABLE_SCRIPTING
1468 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
1469 : #endif
1470 0 : Cancel();
1471 0 : rReq.Ignore ();
1472 0 : break;
1473 : }
1474 : else
1475 : {
1476 0 : SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
1477 0 : SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
1478 0 : SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
1479 0 : SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
1480 :
1481 0 : aLayerName = pLayerName->GetValue ();
1482 0 : bIsVisible = pIsVisible->GetValue ();
1483 0 : bIsLocked = pIsLocked->GetValue ();
1484 0 : bIsPrintable = pIsPrintable->GetValue ();
1485 : }
1486 :
1487 0 : String aPrevLayer = mpDrawView->GetActiveLayer();
1488 0 : String aName;
1489 : SdrLayer* pLayer;
1490 0 : sal_uInt16 nPrevLayer = 0;
1491 0 : nLayerCnt = rLayerAdmin.GetLayerCount();
1492 :
1493 0 : for ( nLayer = 0; nLayer < nLayerCnt; nLayer++ )
1494 : {
1495 0 : pLayer = rLayerAdmin.GetLayer(nLayer);
1496 0 : aName = pLayer->GetName();
1497 :
1498 0 : if ( aPrevLayer == aName )
1499 : {
1500 0 : nPrevLayer = std::max(nLayer, (sal_uInt16) 4);
1501 : }
1502 : }
1503 :
1504 0 : mpDrawView->InsertNewLayer(aLayerName, nPrevLayer + 1);
1505 0 : pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
1506 0 : if( pLayer )
1507 : {
1508 0 : pLayer->SetTitle( aLayerTitle );
1509 0 : pLayer->SetDescription( aLayerDesc );
1510 : }
1511 :
1512 0 : mpDrawView->SetLayerVisible( aLayerName, bIsVisible );
1513 0 : mpDrawView->SetLayerLocked( aLayerName, bIsLocked);
1514 0 : mpDrawView->SetLayerPrintable(aLayerName, bIsPrintable);
1515 :
1516 0 : mpDrawView->SetActiveLayer(aLayerName);
1517 :
1518 0 : ResetActualLayer();
1519 :
1520 0 : GetDoc()->SetChanged(sal_True);
1521 :
1522 : GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHLAYER,
1523 0 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
1524 :
1525 0 : Cancel();
1526 0 : rReq.Done ();
1527 : }
1528 0 : break;
1529 :
1530 : case SID_MODIFYLAYER:
1531 : {
1532 0 : if ( mpDrawView->IsTextEdit() )
1533 : {
1534 0 : mpDrawView->SdrEndTextEdit();
1535 : }
1536 :
1537 0 : SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
1538 0 : sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId();
1539 0 : String aLayerName( GetLayerTabControl()->GetPageText(nCurPage) );
1540 0 : SdrLayer* pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
1541 :
1542 0 : String aLayerTitle( pLayer->GetTitle() );
1543 0 : String aLayerDesc( pLayer->GetDescription() );
1544 :
1545 0 : String aOldLayerName( aLayerName );
1546 0 : String aOldLayerTitle( aLayerTitle );
1547 0 : String aOldLayerDesc( aLayerDesc );
1548 :
1549 : sal_Bool bIsVisible, bIsLocked, bIsPrintable;
1550 0 : sal_Bool bOldIsVisible = bIsVisible = mpDrawView->IsLayerVisible(aLayerName);
1551 0 : sal_Bool bOldIsLocked = bIsLocked = mpDrawView->IsLayerLocked(aLayerName);
1552 0 : sal_Bool bOldIsPrintable = bIsPrintable = mpDrawView->IsLayerPrintable(aLayerName);
1553 :
1554 :
1555 0 : const SfxItemSet* pArgs = rReq.GetArgs();
1556 : // is it allowed to delete the layer?
1557 0 : bool bDelete = true;
1558 :
1559 0 : String aLayoutLayer ( SdResId(STR_LAYER_LAYOUT) );
1560 0 : String aControlsLayer ( SdResId(STR_LAYER_CONTROLS) );
1561 0 : String aMeasureLinesLayer ( SdResId(STR_LAYER_MEASURELINES) );
1562 0 : String aBackgroundLayer( SdResId(STR_LAYER_BCKGRND) );
1563 0 : String aBackgroundObjLayer( SdResId(STR_LAYER_BCKGRNDOBJ) );
1564 :
1565 0 : if( aLayerName == aLayoutLayer || aLayerName == aControlsLayer ||
1566 0 : aLayerName == aMeasureLinesLayer ||
1567 0 : aLayerName == aBackgroundLayer || aLayerName == aBackgroundObjLayer )
1568 : {
1569 0 : bDelete = false;
1570 : }
1571 :
1572 0 : if (! pArgs)
1573 : {
1574 0 : SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
1575 :
1576 0 : aNewAttr.Put( SdAttrLayerName( aLayerName ) );
1577 0 : aNewAttr.Put( SdAttrLayerTitle( aLayerTitle ) );
1578 0 : aNewAttr.Put( SdAttrLayerDesc( aLayerDesc ) );
1579 0 : aNewAttr.Put( SdAttrLayerVisible( bIsVisible ) );
1580 0 : aNewAttr.Put( SdAttrLayerLocked( bIsLocked ) );
1581 0 : aNewAttr.Put( SdAttrLayerPrintable( bIsPrintable ) );
1582 0 : aNewAttr.Put( SdAttrLayerThisPage() );
1583 :
1584 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
1585 0 : AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, bDelete, String( SdResId( STR_MODIFYLAYER ) ) ) : 0;
1586 0 : if( pDlg )
1587 : {
1588 0 : pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_MODIFYLAYER )->GetCommand() );
1589 :
1590 : // test for already existing names
1591 0 : sal_Bool bLoop = sal_True;
1592 0 : sal_uInt16 nRet = 0;
1593 0 : while( bLoop && ( (nRet = pDlg->Execute()) == RET_OK ) )
1594 : {
1595 0 : pDlg->GetAttr( aNewAttr );
1596 0 : aLayerName = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
1597 :
1598 0 : if( (rLayerAdmin.GetLayer( aLayerName, sal_False ) &&
1599 0 : aLayerName != aOldLayerName) || aLayerName.Len()==0 )
1600 : {
1601 : // name already exists
1602 : WarningBox aWarningBox (
1603 : GetParentWindow(),
1604 : WinBits( WB_OK ),
1605 0 : String( SdResId( STR_WARN_NAME_DUPLICATE)));
1606 0 : aWarningBox.Execute();
1607 : }
1608 : else
1609 0 : bLoop = sal_False;
1610 : }
1611 0 : switch (nRet)
1612 : {
1613 : case RET_OK :
1614 0 : aLayerTitle = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
1615 0 : aLayerDesc = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
1616 0 : bIsVisible = ((const SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
1617 0 : bIsLocked = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue ();
1618 0 : bIsPrintable = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue ();
1619 :
1620 0 : delete pDlg;
1621 0 : break;
1622 :
1623 : default :
1624 0 : delete pDlg;
1625 0 : rReq.Ignore ();
1626 0 : Cancel ();
1627 0 : return;
1628 : }
1629 0 : }
1630 : }
1631 0 : else if (pArgs->Count () == 4)
1632 : {
1633 0 : SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
1634 0 : SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
1635 0 : SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
1636 0 : SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
1637 :
1638 0 : aLayerName = pLayerName->GetValue ();
1639 0 : bIsVisible = pIsVisible->GetValue ();
1640 0 : bIsLocked = pIsLocked->GetValue ();
1641 0 : bIsPrintable = pIsPrintable->GetValue ();
1642 : }
1643 : else
1644 : {
1645 : #ifndef DISABLE_SCRIPTING
1646 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
1647 : #endif
1648 0 : Cancel ();
1649 0 : rReq.Ignore ();
1650 0 : break;
1651 : }
1652 :
1653 0 : ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
1654 : SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
1655 0 : GetDoc(),
1656 : pLayer,
1657 : // old values
1658 : aOldLayerName,
1659 : aOldLayerTitle,
1660 : aOldLayerDesc,
1661 : bOldIsVisible,
1662 : bOldIsLocked,
1663 : bOldIsPrintable,
1664 : // new values
1665 : aLayerName,
1666 : aLayerTitle,
1667 : aLayerDesc,
1668 : bIsVisible,
1669 : bIsLocked,
1670 : bIsPrintable
1671 0 : );
1672 0 : pManager->AddUndoAction( pAction );
1673 :
1674 0 : ModifyLayer( pLayer, aLayerName, aLayerTitle, aLayerDesc, bIsVisible, bIsLocked, bIsPrintable );
1675 :
1676 0 : Cancel();
1677 0 : rReq.Done ();
1678 : }
1679 0 : break;
1680 :
1681 : case SID_RENAMELAYER:
1682 : {
1683 0 : if ( mpDrawView->IsTextEdit() )
1684 : {
1685 0 : mpDrawView->SdrEndTextEdit();
1686 : }
1687 :
1688 0 : GetLayerTabControl()->StartEditMode(
1689 0 : GetLayerTabControl()->GetCurPageId() );
1690 :
1691 0 : Cancel();
1692 0 : rReq.Ignore ();
1693 : }
1694 0 : break;
1695 :
1696 : case SID_EDIT_HYPERLINK :
1697 : {
1698 0 : GetViewFrame()->GetDispatcher()->Execute( SID_HYPERLINK_DIALOG );
1699 :
1700 0 : Cancel();
1701 0 : rReq.Done ();
1702 : }
1703 0 : break;
1704 :
1705 : case SID_OPEN_HYPERLINK:
1706 : {
1707 0 : OutlinerView* pOutView = mpDrawView->GetTextEditOutlinerView();
1708 0 : if ( pOutView )
1709 : {
1710 0 : const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
1711 0 : if ( pFieldItem )
1712 : {
1713 0 : const SvxFieldData* pField = pFieldItem->GetField();
1714 0 : if( pField && pField->ISA( SvxURLField ) )
1715 : {
1716 0 : const SvxURLField* pURLField = static_cast< const SvxURLField* >( pField );
1717 :
1718 0 : SfxStringItem aUrl( SID_FILE_NAME, pURLField->GetURL() );
1719 0 : SfxStringItem aTarget( SID_TARGETNAME, pURLField->GetTargetFrame() );
1720 :
1721 0 : String aReferName;
1722 0 : SfxViewFrame* pFrame = GetViewFrame();
1723 0 : SfxMedium* pMed = pFrame->GetObjectShell()->GetMedium();
1724 0 : if (pMed)
1725 0 : aReferName = pMed->GetName();
1726 :
1727 0 : SfxFrameItem aFrm( SID_DOCFRAME, pFrame );
1728 0 : SfxStringItem aReferer( SID_REFERER, aReferName );
1729 :
1730 0 : SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_False );
1731 0 : SfxBoolItem aBrowsing( SID_BROWSE, sal_True );
1732 :
1733 0 : SfxViewFrame* pViewFrm = SfxViewFrame::Current();
1734 0 : if (pViewFrm)
1735 : pViewFrm->GetDispatcher()->Execute( SID_OPENDOC,
1736 : SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
1737 : &aUrl, &aTarget,
1738 : &aFrm, &aReferer,
1739 : &aNewView, &aBrowsing,
1740 0 : 0L );
1741 : }
1742 : }
1743 : }
1744 0 : Cancel();
1745 0 : rReq.Done ();
1746 : }
1747 0 : break;
1748 :
1749 : case SID_HYPERLINK_SETLINK:
1750 : {
1751 0 : const SfxItemSet* pReqArgs = rReq.GetArgs();
1752 :
1753 0 : if (pReqArgs)
1754 : {
1755 : SvxHyperlinkItem* pHLItem =
1756 0 : (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK);
1757 :
1758 0 : if (pHLItem->GetInsertMode() == HLINK_FIELD)
1759 : {
1760 0 : InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
1761 0 : pHLItem->GetTargetFrame(), NULL);
1762 : }
1763 0 : else if (pHLItem->GetInsertMode() == HLINK_BUTTON)
1764 : {
1765 0 : InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
1766 0 : pHLItem->GetTargetFrame(), NULL);
1767 : }
1768 0 : else if (pHLItem->GetInsertMode() == HLINK_DEFAULT)
1769 : {
1770 0 : OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
1771 :
1772 0 : if (pOlView)
1773 : {
1774 0 : InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
1775 0 : pHLItem->GetTargetFrame(), NULL);
1776 : }
1777 : else
1778 : {
1779 0 : InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
1780 0 : pHLItem->GetTargetFrame(), NULL);
1781 : }
1782 : }
1783 : }
1784 :
1785 0 : Cancel();
1786 0 : rReq.Ignore ();
1787 : }
1788 0 : break;
1789 :
1790 : case SID_INSERT_FLD_DATE_FIX:
1791 : case SID_INSERT_FLD_DATE_VAR:
1792 : case SID_INSERT_FLD_TIME_FIX:
1793 : case SID_INSERT_FLD_TIME_VAR:
1794 : case SID_INSERT_FLD_AUTHOR:
1795 : case SID_INSERT_FLD_PAGE:
1796 : case SID_INSERT_FLD_PAGES:
1797 : case SID_INSERT_FLD_FILE:
1798 : {
1799 0 : sal_uInt16 nMul = 1;
1800 0 : SvxFieldItem* pFieldItem = 0;
1801 :
1802 0 : switch( nSId )
1803 : {
1804 : case SID_INSERT_FLD_DATE_FIX:
1805 : pFieldItem = new SvxFieldItem(
1806 0 : SvxDateField( Date( Date::SYSTEM ), SVXDATETYPE_FIX ), EE_FEATURE_FIELD );
1807 0 : break;
1808 :
1809 : case SID_INSERT_FLD_DATE_VAR:
1810 0 : pFieldItem = new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD );
1811 0 : break;
1812 :
1813 : case SID_INSERT_FLD_TIME_FIX:
1814 : pFieldItem = new SvxFieldItem(
1815 0 : SvxExtTimeField( Time( Time::SYSTEM ), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD );
1816 0 : break;
1817 :
1818 : case SID_INSERT_FLD_TIME_VAR:
1819 0 : pFieldItem = new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD );
1820 0 : break;
1821 :
1822 : case SID_INSERT_FLD_AUTHOR:
1823 : {
1824 0 : SvtUserOptions aUserOptions;
1825 : pFieldItem = new SvxFieldItem(
1826 : SvxAuthorField(
1827 0 : aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() ), EE_FEATURE_FIELD );
1828 : }
1829 0 : break;
1830 :
1831 : case SID_INSERT_FLD_PAGE:
1832 : {
1833 0 : pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD );
1834 0 : nMul = 3;
1835 : }
1836 0 : break;
1837 :
1838 : case SID_INSERT_FLD_PAGES:
1839 : {
1840 0 : pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD );
1841 0 : nMul = 3;
1842 : }
1843 0 : break;
1844 :
1845 : case SID_INSERT_FLD_FILE:
1846 : {
1847 0 : String aName;
1848 0 : if( GetDocSh()->HasName() )
1849 0 : aName = GetDocSh()->GetMedium()->GetName();
1850 0 : pFieldItem = new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD );
1851 : }
1852 0 : break;
1853 : }
1854 :
1855 0 : OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
1856 :
1857 0 : if( pOLV )
1858 : {
1859 0 : const SvxFieldItem* pOldFldItem = pOLV->GetFieldAtSelection();
1860 :
1861 0 : if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) ||
1862 0 : pOldFldItem->GetField()->ISA( SvxDateField ) ||
1863 0 : pOldFldItem->GetField()->ISA( SvxTimeField ) ||
1864 0 : pOldFldItem->GetField()->ISA( SvxExtTimeField ) ||
1865 0 : pOldFldItem->GetField()->ISA( SvxExtFileField ) ||
1866 0 : pOldFldItem->GetField()->ISA( SvxAuthorField ) ||
1867 0 : pOldFldItem->GetField()->ISA( SvxPageField ) ) )
1868 : {
1869 : // select field, then it will be deleted when inserting
1870 0 : ESelection aSel = pOLV->GetSelection();
1871 0 : if( aSel.nStartPos == aSel.nEndPos )
1872 0 : aSel.nEndPos++;
1873 0 : pOLV->SetSelection( aSel );
1874 : }
1875 :
1876 0 : if( pFieldItem )
1877 0 : pOLV->InsertField( *pFieldItem );
1878 : }
1879 : else
1880 : {
1881 0 : Outliner* pOutl = GetDoc()->GetInternalOutliner();
1882 0 : pOutl->Init( OUTLINERMODE_TEXTOBJECT );
1883 0 : sal_uInt16 nOutlMode = pOutl->GetMode();
1884 0 : pOutl->SetStyleSheet( 0, NULL );
1885 0 : pOutl->QuickInsertField( *pFieldItem, ESelection() );
1886 0 : OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
1887 :
1888 0 : SdrRectObj* pRectObj = new SdrRectObj( OBJ_TEXT );
1889 0 : pRectObj->SetMergedItem(SdrTextAutoGrowWidthItem(sal_True));
1890 :
1891 0 : pOutl->UpdateFields();
1892 0 : pOutl->SetUpdateMode( sal_True );
1893 0 : Size aSize( pOutl->CalcTextSize() );
1894 0 : aSize.Width() *= nMul;
1895 0 : pOutl->SetUpdateMode( sal_False );
1896 :
1897 0 : Point aPos;
1898 0 : Rectangle aRect( aPos, GetActiveWindow()->GetOutputSizePixel() );
1899 0 : aPos = aRect.Center();
1900 0 : aPos = GetActiveWindow()->PixelToLogic(aPos);
1901 0 : aPos.X() -= aSize.Width() / 2;
1902 0 : aPos.Y() -= aSize.Height() / 2;
1903 :
1904 0 : Rectangle aLogicRect(aPos, aSize);
1905 0 : pRectObj->SetLogicRect(aLogicRect);
1906 0 : pRectObj->SetOutlinerParaObject( pOutlParaObject );
1907 0 : mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
1908 0 : pOutl->Init( nOutlMode );
1909 : }
1910 :
1911 0 : delete pFieldItem;
1912 :
1913 0 : Cancel();
1914 0 : rReq.Ignore ();
1915 : }
1916 0 : break;
1917 :
1918 : case SID_MODIFY_FIELD:
1919 : {
1920 0 : OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
1921 :
1922 0 : if( pOLV )
1923 : {
1924 0 : const SvxFieldItem* pFldItem = pOLV->GetFieldAtSelection();
1925 :
1926 0 : if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
1927 0 : pFldItem->GetField()->ISA( SvxAuthorField ) ||
1928 0 : pFldItem->GetField()->ISA( SvxExtFileField ) ||
1929 0 : pFldItem->GetField()->ISA( SvxExtTimeField ) ) )
1930 : {
1931 : // Dialog...
1932 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
1933 0 : AbstractSdModifyFieldDlg* pDlg = pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOLV->GetAttribs() ) : 0;
1934 0 : if( pDlg && pDlg->Execute() == RET_OK )
1935 : {
1936 : // To make a correct SetAttribs() call at the utlinerView
1937 : // it is necessary to split the actions here
1938 0 : SvxFieldData* pField = pDlg->GetField();
1939 0 : ESelection aSel = pOLV->GetSelection();
1940 0 : sal_Bool bSelectionWasModified(sal_False);
1941 :
1942 0 : if( pField )
1943 : {
1944 0 : SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD );
1945 :
1946 0 : if( aSel.nStartPos == aSel.nEndPos )
1947 : {
1948 0 : bSelectionWasModified = sal_True;
1949 0 : aSel.nEndPos++;
1950 0 : pOLV->SetSelection( aSel );
1951 : }
1952 :
1953 0 : pOLV->InsertField( aFieldItem );
1954 :
1955 : // select again for eventual SetAttribs call
1956 0 : pOLV->SetSelection( aSel );
1957 : }
1958 :
1959 0 : SfxItemSet aSet( pDlg->GetItemSet() );
1960 :
1961 0 : if( aSet.Count() )
1962 : {
1963 0 : pOLV->SetAttribs( aSet );
1964 :
1965 0 : ::Outliner* pOutliner = pOLV->GetOutliner();
1966 0 : if( pOutliner )
1967 0 : pOutliner->UpdateFields();
1968 : }
1969 :
1970 0 : if(pField)
1971 : {
1972 : // restore selection to original
1973 0 : if(bSelectionWasModified)
1974 : {
1975 0 : aSel.nEndPos--;
1976 0 : pOLV->SetSelection( aSel );
1977 : }
1978 :
1979 0 : delete pField;
1980 0 : }
1981 : }
1982 0 : delete pDlg;
1983 : }
1984 : }
1985 :
1986 0 : Cancel();
1987 0 : rReq.Ignore ();
1988 : }
1989 0 : break;
1990 :
1991 : case SID_OPEN_XML_FILTERSETTINGS:
1992 : {
1993 : try
1994 : {
1995 0 : css::uno::Reference < css::ui::dialogs::XExecutableDialog > xDialog = css::ui::dialogs::XSLTFilterDialog::create( ::comphelper::getProcessComponentContext() );
1996 0 : xDialog->execute();
1997 : }
1998 0 : catch( ::com::sun::star::uno::RuntimeException& )
1999 : {
2000 : DBG_UNHANDLED_EXCEPTION();
2001 : }
2002 :
2003 0 : Cancel();
2004 0 : rReq.Ignore ();
2005 : }
2006 0 : break;
2007 :
2008 : case SID_GROUP: // BASIC
2009 : {
2010 0 : if ( mpDrawView->IsPresObjSelected( sal_True, sal_True, sal_True ) )
2011 : {
2012 0 : ::sd::Window* pWindow = GetActiveWindow();
2013 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2014 : }
2015 : else
2016 : {
2017 0 : mpDrawView->GroupMarked();
2018 : }
2019 0 : Cancel();
2020 0 : rReq.Done ();
2021 : }
2022 0 : break;
2023 :
2024 : case SID_UNGROUP: // BASIC
2025 : {
2026 0 : mpDrawView->UnGroupMarked();
2027 0 : Cancel();
2028 0 : rReq.Done ();
2029 : }
2030 0 : break;
2031 :
2032 : case SID_NAME_GROUP:
2033 : {
2034 : // only allow for single object selection since the name of an object needs
2035 : // to be unique
2036 0 : if(1L == mpDrawView->GetMarkedObjectCount())
2037 : {
2038 : // #i68101#
2039 0 : SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
2040 : OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
2041 0 : String aName(pSelected->GetName());
2042 :
2043 0 : SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
2044 : OSL_ENSURE(pFact, "Dialogdiet fail!");
2045 0 : AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName);
2046 : OSL_ENSURE(pDlg, "Dialogdiet fail!");
2047 :
2048 0 : pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl));
2049 :
2050 0 : if(RET_OK == pDlg->Execute())
2051 : {
2052 0 : pDlg->GetName(aName);
2053 0 : pSelected->SetName(aName);
2054 : }
2055 :
2056 0 : delete pDlg;
2057 : }
2058 :
2059 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
2060 0 : rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
2061 0 : rBindings.Invalidate( SID_CONTEXT );
2062 :
2063 0 : Cancel();
2064 0 : rReq.Ignore();
2065 0 : break;
2066 : }
2067 :
2068 : // #i68101#
2069 : case SID_OBJECT_TITLE_DESCRIPTION:
2070 : {
2071 0 : if(1L == mpDrawView->GetMarkedObjectCount())
2072 : {
2073 0 : SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
2074 : OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
2075 0 : String aTitle(pSelected->GetTitle());
2076 0 : String aDescription(pSelected->GetDescription());
2077 :
2078 0 : SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
2079 : OSL_ENSURE(pFact, "Dialogdiet fail!");
2080 0 : AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription);
2081 : OSL_ENSURE(pDlg, "Dialogdiet fail!");
2082 :
2083 0 : if(RET_OK == pDlg->Execute())
2084 : {
2085 0 : pDlg->GetTitle(aTitle);
2086 0 : pDlg->GetDescription(aDescription);
2087 0 : pSelected->SetTitle(aTitle);
2088 0 : pSelected->SetDescription(aDescription);
2089 : }
2090 :
2091 0 : delete pDlg;
2092 : }
2093 :
2094 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
2095 0 : rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
2096 0 : rBindings.Invalidate( SID_CONTEXT );
2097 :
2098 0 : Cancel();
2099 0 : rReq.Ignore();
2100 0 : break;
2101 : }
2102 :
2103 : case SID_ENTER_GROUP: // BASIC
2104 : {
2105 0 : mpDrawView->EnterMarkedGroup();
2106 0 : Cancel();
2107 0 : rReq.Done ();
2108 : }
2109 0 : break;
2110 :
2111 : case SID_LEAVE_GROUP: // BASIC
2112 : {
2113 0 : mpDrawView->LeaveOneGroup();
2114 0 : Cancel();
2115 0 : rReq.Done ();
2116 : }
2117 0 : break;
2118 :
2119 : case SID_LEAVE_ALL_GROUPS: // BASIC
2120 : {
2121 0 : mpDrawView->LeaveAllGroup();
2122 0 : Cancel();
2123 0 : rReq.Done ();
2124 : }
2125 0 : break;
2126 :
2127 : case SID_COMBINE: // BASIC
2128 : {
2129 : // End text edit to avoid conflicts
2130 0 : if(mpDrawView->IsTextEdit())
2131 0 : mpDrawView->SdrEndTextEdit();
2132 :
2133 0 : if ( mpDrawView->IsPresObjSelected() )
2134 : {
2135 0 : ::sd::Window* pWindow = GetActiveWindow();
2136 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2137 : }
2138 : else
2139 : {
2140 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2141 0 : mpDrawView->CombineMarkedObjects(sal_False);
2142 : }
2143 0 : Cancel();
2144 0 : rReq.Done ();
2145 : }
2146 0 : break;
2147 :
2148 : case SID_DISTRIBUTE_DLG:
2149 : {
2150 0 : if ( mpDrawView->IsPresObjSelected() )
2151 : {
2152 0 : ::sd::Window* pWindow = GetActiveWindow();
2153 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2154 : }
2155 : else
2156 : {
2157 0 : mpDrawView->DistributeMarkedObjects();
2158 : }
2159 0 : Cancel();
2160 0 : rReq.Done ();
2161 : }
2162 0 : break;
2163 :
2164 : case SID_POLY_MERGE:
2165 : {
2166 : // End text edit to avoid conflicts
2167 0 : if(mpDrawView->IsTextEdit())
2168 0 : mpDrawView->SdrEndTextEdit();
2169 :
2170 0 : if ( mpDrawView->IsPresObjSelected() )
2171 : {
2172 0 : ::sd::Window* pWindow = GetActiveWindow();
2173 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2174 : }
2175 : else
2176 : {
2177 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2178 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_MERGE);
2179 : }
2180 0 : Cancel();
2181 0 : rReq.Done ();
2182 : }
2183 0 : break;
2184 :
2185 : case SID_POLY_SUBSTRACT:
2186 : {
2187 : // End text edit to avoid conflicts
2188 0 : if(mpDrawView->IsTextEdit())
2189 0 : mpDrawView->SdrEndTextEdit();
2190 :
2191 0 : if ( mpDrawView->IsPresObjSelected() )
2192 : {
2193 0 : ::sd::Window* pWindow = GetActiveWindow();
2194 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2195 : }
2196 : else
2197 : {
2198 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2199 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_SUBSTRACT);
2200 : }
2201 0 : Cancel();
2202 0 : rReq.Done ();
2203 : }
2204 0 : break;
2205 :
2206 : case SID_POLY_INTERSECT:
2207 : {
2208 : // End text edit to avoid conflicts
2209 0 : if(mpDrawView->IsTextEdit())
2210 0 : mpDrawView->SdrEndTextEdit();
2211 :
2212 0 : if ( mpDrawView->IsPresObjSelected() )
2213 : {
2214 0 : ::sd::Window* pWindow = GetActiveWindow();
2215 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2216 : }
2217 : else
2218 : {
2219 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2220 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_INTERSECT);
2221 : }
2222 0 : Cancel();
2223 0 : rReq.Done ();
2224 : }
2225 0 : break;
2226 :
2227 : case SID_DISMANTLE: // BASIC
2228 : {
2229 0 : if ( mpDrawView->IsDismantlePossible(sal_False) )
2230 : {
2231 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2232 0 : mpDrawView->DismantleMarkedObjects(sal_False);
2233 : }
2234 0 : Cancel();
2235 0 : rReq.Done ();
2236 : }
2237 0 : break;
2238 :
2239 : case SID_CONNECT: // BASIC
2240 : {
2241 0 : if ( mpDrawView->IsPresObjSelected() )
2242 : {
2243 0 : ::sd::Window* pWindow = GetActiveWindow();
2244 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2245 : }
2246 : else
2247 : {
2248 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2249 0 : mpDrawView->CombineMarkedObjects(sal_True);
2250 : }
2251 0 : Cancel();
2252 0 : rReq.Done ();
2253 : }
2254 0 : break;
2255 :
2256 : case SID_BREAK: // BASIC
2257 : {
2258 0 : if ( mpDrawView->IsTextEdit() )
2259 : {
2260 0 : mpDrawView->SdrEndTextEdit();
2261 : }
2262 :
2263 0 : if ( mpDrawView->IsBreak3DObjPossible() )
2264 : {
2265 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2266 0 : mpDrawView->Break3DObj();
2267 : }
2268 0 : else if ( mpDrawView->IsDismantlePossible(sal_True) )
2269 : {
2270 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2271 0 : mpDrawView->DismantleMarkedObjects(sal_True);
2272 : }
2273 0 : else if ( mpDrawView->IsImportMtfPossible() )
2274 : {
2275 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2276 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
2277 0 : sal_uLong nAnz=rMarkList.GetMarkCount();
2278 :
2279 : // determine the sum of meta objects of all selected meta files
2280 0 : sal_uLong nCount = 0;
2281 0 : for(sal_uLong nm=0; nm<nAnz; nm++)
2282 : {
2283 0 : SdrMark* pM=rMarkList.GetMark(nm);
2284 0 : SdrObject* pObj=pM->GetMarkedSdrObj();
2285 0 : SdrGrafObj* pGraf=PTR_CAST(SdrGrafObj,pObj);
2286 0 : SdrOle2Obj* pOle2=PTR_CAST(SdrOle2Obj,pObj);
2287 :
2288 0 : if(pGraf)
2289 : {
2290 0 : if(pGraf->HasGDIMetaFile())
2291 : {
2292 0 : nCount += pGraf->GetGraphic().GetGDIMetaFile().GetActionSize();
2293 : }
2294 0 : else if(pGraf->isEmbeddedSvg())
2295 : {
2296 0 : nCount += pGraf->getMetafileFromEmbeddedSvg().GetActionSize();
2297 : }
2298 : }
2299 :
2300 0 : if(pOle2 && pOle2->GetGraphic())
2301 : {
2302 0 : nCount += pOle2->GetGraphic()->GetGDIMetaFile().GetActionSize();
2303 : }
2304 : }
2305 :
2306 : // decide with the sum of all meta objects if we should show a dialog
2307 0 : if(nCount < MIN_ACTIONS_FOR_DIALOG)
2308 : {
2309 : // nope, no dialog
2310 0 : mpDrawView->DoImportMarkedMtf();
2311 : }
2312 : else
2313 : {
2314 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
2315 0 : if( pFact )
2316 : {
2317 0 : VclAbstractDialog* pDlg = pFact->CreateBreakDlg(GetActiveWindow(), mpDrawView, GetDocSh(), nCount, nAnz );
2318 0 : if( pDlg )
2319 : {
2320 0 : pDlg->Execute();
2321 0 : delete pDlg;
2322 : }
2323 : }
2324 0 : }
2325 : }
2326 :
2327 0 : Cancel();
2328 0 : rReq.Done ();
2329 : }
2330 0 : break;
2331 :
2332 : case SID_CONVERT_TO_3D:
2333 : {
2334 0 : if ( mpDrawView->IsPresObjSelected() )
2335 : {
2336 0 : ::sd::Window* pWindow = GetActiveWindow();
2337 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
2338 : }
2339 : else
2340 : {
2341 0 : if (mpDrawView->IsConvertTo3DObjPossible())
2342 : {
2343 0 : if (mpDrawView->IsTextEdit())
2344 : {
2345 0 : mpDrawView->SdrEndTextEdit();
2346 : }
2347 :
2348 0 : WaitObject aWait( (Window*)GetActiveWindow() );
2349 0 : mpDrawView->ConvertMarkedObjTo3D(true);
2350 : }
2351 : }
2352 :
2353 0 : Cancel();
2354 0 : rReq.Done();
2355 : }
2356 0 : break;
2357 :
2358 : case SID_FRAME_TO_TOP: // BASIC
2359 : {
2360 0 : mpDrawView->PutMarkedToTop();
2361 0 : Cancel();
2362 0 : Invalidate( SID_POSITION );
2363 0 : rReq.Done ();
2364 : }
2365 0 : break;
2366 :
2367 : case SID_MOREFRONT: // BASIC
2368 : {
2369 0 : mpDrawView->MovMarkedToTop();
2370 0 : Cancel();
2371 0 : Invalidate( SID_POSITION );
2372 0 : rReq.Done ();
2373 : }
2374 0 : break;
2375 :
2376 : case SID_MOREBACK: // BASIC
2377 : {
2378 0 : mpDrawView->MovMarkedToBtm();
2379 0 : Cancel();
2380 0 : Invalidate( SID_POSITION );
2381 0 : rReq.Done ();
2382 : }
2383 0 : break;
2384 :
2385 : case SID_FRAME_TO_BOTTOM: // BASIC
2386 : {
2387 0 : mpDrawView->PutMarkedToBtm();
2388 0 : Cancel();
2389 0 : Invalidate( SID_POSITION );
2390 0 : rReq.Done ();
2391 : }
2392 0 : break;
2393 :
2394 : case SID_HORIZONTAL: // BASIC
2395 : case SID_FLIP_HORIZONTAL:
2396 : {
2397 0 : mpDrawView->MirrorAllMarkedHorizontal();
2398 0 : Cancel();
2399 0 : rReq.Done ();
2400 : }
2401 0 : break;
2402 :
2403 : case SID_VERTICAL: // BASIC
2404 : case SID_FLIP_VERTICAL:
2405 : {
2406 0 : mpDrawView->MirrorAllMarkedVertical();
2407 0 : Cancel();
2408 0 : rReq.Done ();
2409 : }
2410 0 : break;
2411 :
2412 : case SID_OBJECT_ALIGN_LEFT: // BASIC
2413 : {
2414 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
2415 0 : Cancel();
2416 0 : rReq.Done ();
2417 : }
2418 0 : break;
2419 :
2420 : case SID_OBJECT_ALIGN_CENTER: // BASIC
2421 : {
2422 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
2423 0 : Cancel();
2424 0 : rReq.Done ();
2425 : }
2426 0 : break;
2427 :
2428 : case SID_OBJECT_ALIGN_RIGHT: // BASIC
2429 : {
2430 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
2431 0 : Cancel();
2432 0 : rReq.Done ();
2433 : }
2434 0 : break;
2435 :
2436 : case SID_OBJECT_ALIGN_UP: // BASIC
2437 : {
2438 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
2439 0 : Cancel();
2440 0 : rReq.Done ();
2441 : }
2442 0 : break;
2443 :
2444 : case SID_OBJECT_ALIGN_MIDDLE: // BASIC
2445 : {
2446 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
2447 0 : Cancel();
2448 0 : rReq.Done ();
2449 : }
2450 0 : break;
2451 :
2452 : case SID_OBJECT_ALIGN_DOWN: // BASIC
2453 : {
2454 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
2455 0 : Cancel();
2456 0 : rReq.Done ();
2457 : }
2458 0 : break;
2459 :
2460 : case SID_SELECTALL: // BASIC
2461 : {
2462 0 : if( (dynamic_cast<FuSelection*>( GetOldFunction().get() ) != 0) &&
2463 0 : !GetView()->IsFrameDragSingles() && GetView()->HasMarkablePoints())
2464 : {
2465 0 : if ( !mpDrawView->IsAction() )
2466 0 : mpDrawView->MarkAllPoints();
2467 : }
2468 : else
2469 0 : mpDrawView->SelectAll();
2470 :
2471 0 : Cancel();
2472 0 : rReq.Done ();
2473 : }
2474 0 : break;
2475 :
2476 : case SID_STYLE_NEW: // BASIC ???
2477 : case SID_STYLE_APPLY:
2478 : case SID_STYLE_EDIT:
2479 : case SID_STYLE_DELETE:
2480 : case SID_STYLE_HIDE:
2481 : case SID_STYLE_SHOW:
2482 : case SID_STYLE_FAMILY:
2483 : case SID_STYLE_WATERCAN:
2484 : case SID_STYLE_UPDATE_BY_EXAMPLE:
2485 : case SID_STYLE_NEW_BY_EXAMPLE:
2486 : {
2487 0 : if( rReq.GetSlot() == SID_STYLE_EDIT && !rReq.GetArgs() )
2488 : {
2489 0 : SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet();
2490 0 : if( pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
2491 0 : pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
2492 :
2493 0 : if( (pStyleSheet == NULL) && GetView()->IsTextEdit() )
2494 : {
2495 0 : GetView()->SdrEndTextEdit();
2496 :
2497 0 : pStyleSheet = mpDrawView->GetStyleSheet();
2498 0 : if(pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
2499 0 : pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
2500 : }
2501 :
2502 0 : if( pStyleSheet == NULL )
2503 : {
2504 0 : rReq.Ignore();
2505 0 : break;
2506 : }
2507 :
2508 0 : SfxAllItemSet aSet(GetDoc()->GetPool());
2509 :
2510 0 : SfxStringItem aStyleNameItem( SID_STYLE_EDIT, pStyleSheet->GetName() );
2511 0 : aSet.Put(aStyleNameItem);
2512 :
2513 0 : SfxUInt16Item aStyleFamilyItem( SID_STYLE_FAMILY, (sal_uInt16)pStyleSheet->GetFamily() );
2514 0 : aSet.Put(aStyleFamilyItem);
2515 :
2516 0 : rReq.SetArgs(aSet);
2517 : }
2518 :
2519 0 : if( rReq.GetArgs() )
2520 : {
2521 0 : SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
2522 0 : if( rReq.GetSlot() == SID_STYLE_APPLY )
2523 0 : GetViewFrame()->GetBindings().Invalidate( SID_STYLE_APPLY );
2524 0 : Cancel();
2525 : }
2526 0 : else if( rReq.GetSlot() == SID_STYLE_APPLY )
2527 0 : GetViewFrame()->GetDispatcher()->Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON );
2528 0 : rReq.Ignore ();
2529 : }
2530 0 : break;
2531 :
2532 : case SID_IMAP:
2533 : {
2534 0 : sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
2535 :
2536 0 : GetViewFrame()->ToggleChildWindow( nId );
2537 0 : GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
2538 :
2539 0 : if ( GetViewFrame()->HasChildWindow( nId )
2540 0 : && ( ( ViewShell::Implementation::GetImageMapDialog() ) != NULL ) )
2541 : {
2542 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
2543 :
2544 0 : if ( rMarkList.GetMarkCount() == 1 )
2545 0 : UpdateIMapDlg( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
2546 : }
2547 :
2548 0 : Cancel();
2549 0 : rReq.Ignore ();
2550 : }
2551 0 : break;
2552 :
2553 : case SID_GRID_FRONT:
2554 : {
2555 0 : mpDrawView->SetGridFront( !mpDrawView->IsGridFront() );
2556 0 : Cancel();
2557 0 : rReq.Done ();
2558 : }
2559 0 : break;
2560 :
2561 : case SID_HELPLINES_FRONT:
2562 : {
2563 0 : mpDrawView->SetHlplFront( !mpDrawView->IsHlplFront() );
2564 0 : Cancel();
2565 0 : rReq.Done ();
2566 : }
2567 0 : break;
2568 :
2569 : case SID_FONTWORK:
2570 : {
2571 0 : if ( rReq.GetArgs() )
2572 : {
2573 0 : GetViewFrame()->SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
2574 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2575 0 : Get(SID_FONTWORK))).GetValue());
2576 : }
2577 : else
2578 : {
2579 0 : GetViewFrame()->ToggleChildWindow( SvxFontWorkChildWindow::GetChildWindowId() );
2580 : }
2581 :
2582 0 : GetViewFrame()->GetBindings().Invalidate(SID_FONTWORK);
2583 0 : Cancel();
2584 0 : rReq.Ignore ();
2585 : }
2586 0 : break;
2587 :
2588 : case SID_COLOR_CONTROL:
2589 : {
2590 0 : if ( rReq.GetArgs() )
2591 0 : GetViewFrame()->SetChildWindow(SvxColorChildWindow::GetChildWindowId(),
2592 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2593 0 : Get(SID_COLOR_CONTROL))).GetValue());
2594 : else
2595 0 : GetViewFrame()->ToggleChildWindow(SvxColorChildWindow::GetChildWindowId() );
2596 :
2597 0 : GetViewFrame()->GetBindings().Invalidate(SID_COLOR_CONTROL);
2598 0 : Cancel();
2599 0 : rReq.Ignore ();
2600 : }
2601 0 : break;
2602 :
2603 : case SID_EXTRUSION_TOOGLE:
2604 : case SID_EXTRUSION_TILT_DOWN:
2605 : case SID_EXTRUSION_TILT_UP:
2606 : case SID_EXTRUSION_TILT_LEFT:
2607 : case SID_EXTRUSION_TILT_RIGHT:
2608 : case SID_EXTRUSION_3D_COLOR:
2609 : case SID_EXTRUSION_DEPTH:
2610 : case SID_EXTRUSION_DIRECTION:
2611 : case SID_EXTRUSION_PROJECTION:
2612 : case SID_EXTRUSION_LIGHTING_DIRECTION:
2613 : case SID_EXTRUSION_LIGHTING_INTENSITY:
2614 : case SID_EXTRUSION_SURFACE:
2615 : case SID_EXTRUSION_DEPTH_FLOATER:
2616 : case SID_EXTRUSION_DIRECTION_FLOATER:
2617 : case SID_EXTRUSION_LIGHTING_FLOATER:
2618 : case SID_EXTRUSION_SURFACE_FLOATER:
2619 : case SID_EXTRUSION_DEPTH_DIALOG:
2620 0 : svx::ExtrusionBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
2621 0 : Cancel();
2622 0 : rReq.Ignore ();
2623 0 : break;
2624 :
2625 : case SID_FONTWORK_SHAPE:
2626 : case SID_FONTWORK_SHAPE_TYPE:
2627 : case SID_FONTWORK_ALIGNMENT:
2628 : case SID_FONTWORK_SAME_LETTER_HEIGHTS:
2629 : case SID_FONTWORK_CHARACTER_SPACING:
2630 : case SID_FONTWORK_KERN_CHARACTER_PAIRS:
2631 : case SID_FONTWORK_GALLERY_FLOATER:
2632 : case SID_FONTWORK_CHARACTER_SPACING_FLOATER:
2633 : case SID_FONTWORK_ALIGNMENT_FLOATER:
2634 : case SID_FONTWORK_CHARACTER_SPACING_DIALOG:
2635 0 : svx::FontworkBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
2636 0 : Cancel();
2637 0 : rReq.Ignore ();
2638 0 : break;
2639 :
2640 : case SID_BMPMASK:
2641 : {
2642 0 : GetViewFrame()->ToggleChildWindow( SvxBmpMaskChildWindow::GetChildWindowId() );
2643 0 : GetViewFrame()->GetBindings().Invalidate( SID_BMPMASK );
2644 :
2645 0 : Cancel();
2646 0 : rReq.Ignore ();
2647 : }
2648 0 : break;
2649 :
2650 : case SID_GALLERY:
2651 : {
2652 0 : GetViewFrame()->ToggleChildWindow( GalleryChildWindow::GetChildWindowId() );
2653 0 : GetViewFrame()->GetBindings().Invalidate( SID_GALLERY );
2654 :
2655 0 : Cancel();
2656 0 : rReq.Ignore ();
2657 : }
2658 0 : break;
2659 :
2660 : case SID_NAVIGATOR:
2661 : {
2662 0 : if ( rReq.GetArgs() )
2663 : GetViewFrame()->SetChildWindow(SID_NAVIGATOR,
2664 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2665 0 : Get(SID_NAVIGATOR))).GetValue());
2666 : else
2667 0 : GetViewFrame()->ToggleChildWindow( SID_NAVIGATOR );
2668 :
2669 0 : GetViewFrame()->GetBindings().Invalidate(SID_NAVIGATOR);
2670 0 : Cancel();
2671 0 : rReq.Ignore ();
2672 : }
2673 0 : break;
2674 :
2675 : case SID_ANIMATION_OBJECTS:
2676 : {
2677 0 : if ( rReq.GetArgs() )
2678 : GetViewFrame()->SetChildWindow(
2679 0 : AnimationChildWindow::GetChildWindowId(),
2680 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2681 0 : Get(SID_ANIMATION_OBJECTS))).GetValue());
2682 : else
2683 : GetViewFrame()->ToggleChildWindow(
2684 0 : AnimationChildWindow::GetChildWindowId() );
2685 :
2686 0 : GetViewFrame()->GetBindings().Invalidate(SID_ANIMATION_OBJECTS);
2687 0 : Cancel();
2688 0 : rReq.Ignore ();
2689 : }
2690 0 : break;
2691 :
2692 : case SID_CUSTOM_ANIMATION_PANEL:
2693 : {
2694 : // Make the slide transition panel visible (expand it) in the
2695 : // tool pane.
2696 0 : framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
2697 0 : framework::FrameworkHelper::msCustomAnimationTaskPanelURL);
2698 :
2699 0 : Cancel();
2700 0 : rReq.Done ();
2701 : }
2702 0 : break;
2703 :
2704 : case SID_SLIDE_TRANSITIONS_PANEL:
2705 : {
2706 : // Make the slide transition panel visible (expand it) in the
2707 : // tool pane.
2708 0 : framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
2709 0 : framework::FrameworkHelper::msSlideTransitionTaskPanelURL);
2710 :
2711 0 : Cancel();
2712 0 : rReq.Done ();
2713 : }
2714 0 : break;
2715 :
2716 : case SID_3D_WIN:
2717 : {
2718 0 : if ( rReq.GetArgs() )
2719 0 : GetViewFrame()->SetChildWindow( Svx3DChildWindow::GetChildWindowId(),
2720 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2721 0 : Get( SID_3D_WIN ))).GetValue());
2722 : else
2723 0 : GetViewFrame()->ToggleChildWindow( Svx3DChildWindow::GetChildWindowId() );
2724 :
2725 0 : GetViewFrame()->GetBindings().Invalidate( SID_3D_WIN );
2726 0 : Cancel();
2727 0 : rReq.Ignore ();
2728 : }
2729 0 : break;
2730 :
2731 : case SID_CONVERT_TO_3D_LATHE_FAST:
2732 : {
2733 : /* The call is enough. The initialization via Start3DCreation and
2734 : CreateMirrorPolygons is no longer needed if the parameter
2735 : sal_True is provided. Then a tilted rotary body with an axis left
2736 : besides the bounding rectangle of the selected objects is drawn
2737 : immediately and without user interaction. */
2738 0 : mpDrawView->SdrEndTextEdit();
2739 0 : if(GetActiveWindow())
2740 0 : GetActiveWindow()->EnterWait();
2741 0 : mpDrawView->End3DCreation(true);
2742 0 : Cancel();
2743 0 : rReq.Ignore();
2744 0 : if(GetActiveWindow())
2745 0 : GetActiveWindow()->LeaveWait();
2746 : }
2747 0 : break;
2748 :
2749 : case SID_PRESENTATION_DLG:
2750 : {
2751 0 : SetCurrentFunction( FuSlideShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
2752 0 : Cancel();
2753 : }
2754 0 : break;
2755 :
2756 : case SID_REMOTE_DLG:
2757 : {
2758 : #ifdef ENABLE_SDREMOTE
2759 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
2760 0 : VclAbstractDialog* pDlg = pFact ? pFact->CreateRemoteDialog(GetActiveWindow()) : 0;
2761 0 : if (pDlg)
2762 0 : pDlg->Execute();
2763 : #endif
2764 : }
2765 0 : break;
2766 :
2767 : case SID_CUSTOMSHOW_DLG:
2768 : {
2769 0 : SetCurrentFunction( FuCustomShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
2770 0 : Cancel();
2771 : }
2772 0 : break;
2773 :
2774 : case SID_EXPAND_PAGE:
2775 : {
2776 0 : SetCurrentFunction( FuExpandPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
2777 0 : Cancel();
2778 : }
2779 0 : break;
2780 :
2781 : case SID_SUMMARY_PAGE:
2782 : {
2783 0 : mpDrawView->SdrEndTextEdit();
2784 0 : SetCurrentFunction( FuSummaryPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
2785 0 : Cancel();
2786 : }
2787 0 : break;
2788 :
2789 : case SID_AVMEDIA_PLAYER:
2790 : {
2791 0 : GetViewFrame()->ToggleChildWindow( ::avmedia::MediaPlayer::GetChildWindowId() );
2792 0 : GetViewFrame()->GetBindings().Invalidate( SID_AVMEDIA_PLAYER );
2793 0 : Cancel();
2794 0 : rReq.Ignore ();
2795 : }
2796 0 : break;
2797 :
2798 : case SID_LAYER_DIALOG_WIN:
2799 : {
2800 0 : if ( rReq.GetArgs() )
2801 : {
2802 : GetViewFrame()->SetChildWindow(
2803 0 : LayerDialogChildWindow::GetChildWindowId(),
2804 0 : ((const SfxBoolItem&) (rReq.GetArgs()->
2805 0 : Get(SID_LAYER_DIALOG_WIN))).GetValue());
2806 : }
2807 : else
2808 : {
2809 : GetViewFrame()->ToggleChildWindow(
2810 0 : LayerDialogChildWindow::GetChildWindowId());
2811 : }
2812 :
2813 0 : GetViewFrame()->GetBindings().Invalidate(SID_LAYER_DIALOG_WIN);
2814 0 : Cancel();
2815 0 : rReq.Ignore ();
2816 : }
2817 0 : break;
2818 :
2819 : case SID_DISPLAY_MASTER_BACKGROUND:
2820 : case SID_DISPLAY_MASTER_OBJECTS:
2821 : {
2822 : // Determine current page and toggle visibility of layers
2823 : // associated with master page background or master page shapes.
2824 0 : SdPage* pPage = GetActualPage();
2825 0 : if (pPage != NULL
2826 0 : && GetDoc() != NULL)
2827 : {
2828 0 : SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
2829 0 : SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
2830 : sal_uInt8 aLayerId;
2831 0 : if (nSId == SID_DISPLAY_MASTER_BACKGROUND)
2832 0 : aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False);
2833 : else
2834 0 : aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False);
2835 0 : aVisibleLayers.Set(aLayerId, !aVisibleLayers.IsSet(aLayerId));
2836 0 : pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
2837 : }
2838 0 : Cancel();
2839 0 : rReq.Ignore ();
2840 : }
2841 0 : break;
2842 :
2843 : case SID_PHOTOALBUM:
2844 : {
2845 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
2846 : VclAbstractDialog* pDlg = pFact ? pFact->CreateSdPhotoAlbumDialog(
2847 0 : GetActiveWindow(),
2848 0 : GetDoc()) : 0;
2849 :
2850 0 : if (pDlg)
2851 : {
2852 0 : pDlg->Execute();
2853 0 : delete pDlg;
2854 : }
2855 0 : Cancel();
2856 0 : rReq.Ignore ();
2857 : }
2858 0 : break;
2859 :
2860 : default:
2861 : {
2862 : DBG_ASSERT( 0, "Slot without function" );
2863 0 : Cancel();
2864 0 : rReq.Ignore ();
2865 : }
2866 0 : break;
2867 : }
2868 :
2869 0 : if(HasCurrentFunction())
2870 : {
2871 0 : GetCurrentFunction()->Activate();
2872 : }
2873 : }
2874 :
2875 0 : void DrawViewShell::ExecChar( SfxRequest &rReq )
2876 : {
2877 0 : SdDrawDocument* pDoc = GetDoc();
2878 0 : if (!pDoc || !mpDrawView)
2879 0 : return;
2880 :
2881 0 : SfxItemSet aEditAttr( pDoc->GetPool() );
2882 0 : mpDrawView->GetAttributes( aEditAttr );
2883 :
2884 : //modified by wj for sym2_1580, if put old itemset into new set,
2885 : //when mpDrawView->SetAttributes(aNewAttr) it will invalidate all the item
2886 : // and use old attr to update all the attributes
2887 : // SfxItemSet aNewAttr( GetPool(),
2888 : // EE_ITEMS_START, EE_ITEMS_END );
2889 : // aNewAttr.Put( aEditAttr, sal_False );
2890 0 : SfxItemSet aNewAttr( pDoc->GetPool() );
2891 : //modified end
2892 :
2893 0 : sal_uInt16 nSId = rReq.GetSlot();
2894 :
2895 0 : MapSlot( nSId );
2896 :
2897 0 : switch ( nSId )
2898 : {
2899 : case SID_ATTR_CHAR_FONT:
2900 0 : if( rReq.GetArgs() )
2901 : {
2902 0 : SFX_REQUEST_ARG( rReq, pItem, SvxFontItem, SID_ATTR_CHAR_FONT , sal_False );
2903 0 : if (pItem)
2904 : {
2905 0 : aNewAttr.Put(*pItem);
2906 : }
2907 : }
2908 0 : break;
2909 : case SID_ATTR_CHAR_FONTHEIGHT:
2910 0 : if( rReq.GetArgs() )
2911 : {
2912 0 : SFX_REQUEST_ARG( rReq, pItem, SvxFontHeightItem, SID_ATTR_CHAR_FONTHEIGHT , sal_False );
2913 0 : if (pItem)
2914 : {
2915 0 : aNewAttr.Put(*pItem);
2916 : }
2917 : }
2918 0 : break;
2919 : case SID_ATTR_CHAR_WEIGHT:
2920 0 : if( rReq.GetArgs() )
2921 : {
2922 : //const SvxWeightItem *pItem = (const SvxWeightItem*) rReq.GetArg( SID_ATTR_CHAR_WEIGHT, sal_False, TYPE(SvxWeightItem) );
2923 0 : SFX_REQUEST_ARG( rReq, pItem, SvxWeightItem, SID_ATTR_CHAR_WEIGHT , sal_False );
2924 0 : if (pItem)
2925 : {
2926 0 : aNewAttr.Put(*pItem);
2927 : }
2928 : }
2929 0 : break;
2930 : case SID_ATTR_CHAR_POSTURE:
2931 0 : if( rReq.GetArgs() )
2932 : {
2933 : //const SvxPostureItem *pItem = (const SvxPostureItem*) rReq.GetArg( SID_ATTR_CHAR_POSTURE, sal_False, TYPE(SvxPostureItem) );
2934 0 : SFX_REQUEST_ARG( rReq, pItem, SvxPostureItem, SID_ATTR_CHAR_POSTURE , sal_False );
2935 0 : if (pItem)
2936 : {
2937 0 : aNewAttr.Put(*pItem);
2938 : }
2939 : }
2940 0 : break;
2941 : case SID_ATTR_CHAR_UNDERLINE:
2942 0 : if( rReq.GetArgs() )
2943 : {
2944 : //<<modify by wj for sym2_1873
2945 : //SFX_REQUEST_ARG( rReq, pItem, SvxTextLineItem, SID_ATTR_CHAR_UNDERLINE , sal_False );
2946 0 : SFX_REQUEST_ARG( rReq, pItem, SvxUnderlineItem, SID_ATTR_CHAR_UNDERLINE , sal_False );
2947 : //end>>
2948 0 : if (pItem)
2949 : {
2950 0 : aNewAttr.Put(*pItem);
2951 : }
2952 : else
2953 : {
2954 0 : FontUnderline eFU = ( (const SvxUnderlineItem&) aEditAttr.Get( EE_CHAR_UNDERLINE ) ).GetLineStyle();
2955 0 : aNewAttr.Put( SvxUnderlineItem( eFU != UNDERLINE_NONE ?UNDERLINE_NONE : UNDERLINE_SINGLE, EE_CHAR_UNDERLINE ) );
2956 : }//aNewAttr.Put( (const SvxUnderlineItem&)aEditAttr.Get( EE_CHAR_UNDERLINE ) );
2957 : }
2958 0 : break;
2959 : case SID_ATTR_CHAR_SHADOWED:
2960 0 : if( rReq.GetArgs() )
2961 : {
2962 0 : SFX_REQUEST_ARG( rReq, pItem, SvxShadowedItem, SID_ATTR_CHAR_SHADOWED , sal_False );
2963 0 : if (pItem)
2964 : {
2965 0 : aNewAttr.Put(*pItem);
2966 : }
2967 : }
2968 0 : break;
2969 : case SID_ATTR_CHAR_STRIKEOUT:
2970 0 : if( rReq.GetArgs() )
2971 : {
2972 0 : SFX_REQUEST_ARG( rReq, pItem, SvxCrossedOutItem, SID_ATTR_CHAR_STRIKEOUT , sal_False );
2973 0 : if (pItem)
2974 : {
2975 0 : aNewAttr.Put(*pItem);
2976 : }
2977 : }
2978 0 : break;
2979 : case SID_ATTR_CHAR_COLOR:
2980 0 : if( rReq.GetArgs() )
2981 : {
2982 0 : SFX_REQUEST_ARG( rReq, pItem, SvxColorItem, SID_ATTR_CHAR_COLOR , sal_False );
2983 0 : if (pItem)
2984 : {
2985 0 : aNewAttr.Put(*pItem);
2986 : }
2987 : }
2988 0 : break;
2989 : case SID_ATTR_CHAR_KERNING:
2990 0 : if( rReq.GetArgs() )
2991 : {
2992 0 : SFX_REQUEST_ARG( rReq, pItem, SvxKerningItem, SID_ATTR_CHAR_KERNING , sal_False );
2993 0 : if (pItem)
2994 : {
2995 0 : aNewAttr.Put(*pItem);
2996 : }
2997 : }
2998 0 : break;
2999 : case SID_SET_SUB_SCRIPT:
3000 0 : if( rReq.GetArgs() )
3001 : {
3002 0 : SvxEscapementItem aItem( EE_CHAR_ESCAPEMENT );
3003 : SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
3004 0 : aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
3005 0 : if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
3006 0 : aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
3007 : else
3008 0 : aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
3009 0 : aNewAttr.Put( aItem );
3010 : }
3011 0 : break;
3012 : case SID_SET_SUPER_SCRIPT:
3013 0 : if( rReq.GetArgs() )
3014 : {
3015 0 : SvxEscapementItem aItem( EE_CHAR_ESCAPEMENT );
3016 : SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
3017 0 : aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
3018 0 : if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
3019 0 : aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
3020 : else
3021 0 : aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
3022 0 : aNewAttr.Put( aItem );
3023 : }
3024 0 : break;
3025 : case SID_SHRINK_FONT_SIZE:
3026 : case SID_GROW_FONT_SIZE:
3027 : //if (rReq.GetArgs())
3028 : {
3029 0 : const SvxFontListItem* pFonts = dynamic_cast<const SvxFontListItem*>(GetDocSh()->GetItem( SID_ATTR_CHAR_FONTLIST ) );
3030 0 : const FontList* pFontList = pFonts->GetFontList();
3031 0 : if( pFontList )
3032 : {
3033 0 : FuText::ChangeFontSize( nSId == SID_GROW_FONT_SIZE, NULL, pFontList, mpView );
3034 0 : GetViewFrame()->GetBindings().Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
3035 : }
3036 : }
3037 : default:
3038 : ;
3039 : }
3040 :
3041 0 : mpDrawView->SetAttributes(aNewAttr);
3042 0 : rReq.Done();
3043 0 : Cancel();
3044 : }
3045 :
3046 : /** This method consists basically of three parts:
3047 : 1. Process the arguments of the SFX request.
3048 : 2. Use the model to create a new page or duplicate an existing one.
3049 : 3. Update the tab control and switch to the new page.
3050 : */
3051 0 : SdPage* DrawViewShell::CreateOrDuplicatePage (
3052 : SfxRequest& rRequest,
3053 : PageKind ePageKind,
3054 : SdPage* pPage,
3055 : const sal_Int32 nInsertPosition)
3056 : {
3057 0 : SdPage* pNewPage = NULL;
3058 0 : if (ePageKind == PK_STANDARD && meEditMode != EM_MASTERPAGE)
3059 : {
3060 0 : if ( mpDrawView->IsTextEdit() )
3061 : {
3062 0 : mpDrawView->SdrEndTextEdit();
3063 : }
3064 0 : pNewPage = ViewShell::CreateOrDuplicatePage (rRequest, ePageKind, pPage, nInsertPosition);
3065 : }
3066 0 : return pNewPage;
3067 : }
3068 :
3069 0 : void DrawViewShell::ExecutePropPanelAttr (SfxRequest& rReq)
3070 : {
3071 0 : if(SlideShow::IsRunning( GetViewShellBase() ))
3072 0 : return;
3073 :
3074 0 : SdDrawDocument* pDoc = GetDoc();
3075 0 : if (!pDoc || !mpDrawView)
3076 0 : return;
3077 :
3078 0 : sal_uInt16 nSId = rReq.GetSlot();
3079 0 : SfxItemSet aAttrs( pDoc->GetPool() );
3080 :
3081 0 : switch ( nSId )
3082 : {
3083 : case SID_TABLE_VERT_NONE:
3084 : case SID_TABLE_VERT_CENTER:
3085 : case SID_TABLE_VERT_BOTTOM:
3086 0 : SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_TOP;
3087 0 : if (nSId == SID_TABLE_VERT_CENTER)
3088 0 : eTVA = SDRTEXTVERTADJUST_CENTER;
3089 0 : else if (nSId == SID_TABLE_VERT_BOTTOM)
3090 0 : eTVA = SDRTEXTVERTADJUST_BOTTOM;
3091 :
3092 0 : aAttrs.Put( SdrTextVertAdjustItem(eTVA) );
3093 0 : mpDrawView->SetAttributes(aAttrs);
3094 :
3095 0 : break;
3096 0 : }
3097 : }
3098 :
3099 0 : void DrawViewShell::GetStatePropPanelAttr(SfxItemSet& rSet)
3100 : {
3101 0 : SfxWhichIter aIter( rSet );
3102 0 : sal_uInt16 nWhich = aIter.FirstWhich();
3103 :
3104 0 : SdDrawDocument* pDoc = GetDoc();
3105 0 : if (!pDoc || !mpDrawView)
3106 0 : return;
3107 :
3108 0 : SfxItemSet aAttrs( pDoc->GetPool() );
3109 0 : mpDrawView->GetAttributes( aAttrs );
3110 :
3111 0 : while ( nWhich )
3112 : {
3113 0 : sal_uInt16 nSlotId = SfxItemPool::IsWhich(nWhich)
3114 0 : ? GetPool().GetSlotId(nWhich)
3115 0 : : nWhich;
3116 0 : switch ( nSlotId )
3117 : {
3118 : case SID_TABLE_VERT_NONE:
3119 : case SID_TABLE_VERT_CENTER:
3120 : case SID_TABLE_VERT_BOTTOM:
3121 0 : sal_Bool bContour = sal_False;
3122 0 : SfxItemState eConState = aAttrs.GetItemState( SDRATTR_TEXT_CONTOURFRAME );
3123 0 : if( eConState != SFX_ITEM_DONTCARE )
3124 : {
3125 0 : bContour = ( ( const SdrTextContourFrameItem& )aAttrs.Get( SDRATTR_TEXT_CONTOURFRAME ) ).GetValue();
3126 : }
3127 0 : if (bContour) break;
3128 :
3129 0 : SfxItemState eVState = aAttrs.GetItemState( SDRATTR_TEXT_VERTADJUST );
3130 : //SfxItemState eHState = aAttrs.GetItemState( SDRATTR_TEXT_HORZADJUST );
3131 :
3132 : //if(SFX_ITEM_DONTCARE != eVState && SFX_ITEM_DONTCARE != eHState)
3133 0 : if(SFX_ITEM_DONTCARE != eVState)
3134 : {
3135 0 : SdrTextVertAdjust eTVA = (SdrTextVertAdjust)((const SdrTextVertAdjustItem&)aAttrs.Get(SDRATTR_TEXT_VERTADJUST)).GetValue();
3136 0 : sal_Bool bSet = (nSlotId == SID_TABLE_VERT_NONE && eTVA == SDRTEXTVERTADJUST_TOP) ||
3137 0 : (nSlotId == SID_TABLE_VERT_CENTER && eTVA == SDRTEXTVERTADJUST_CENTER) ||
3138 0 : (nSlotId == SID_TABLE_VERT_BOTTOM && eTVA == SDRTEXTVERTADJUST_BOTTOM);
3139 0 : rSet.Put(SfxBoolItem(nSlotId, bSet));
3140 : }
3141 : else
3142 : {
3143 0 : rSet.Put(SfxBoolItem(nSlotId, sal_False));
3144 : }
3145 0 : break;
3146 : }
3147 0 : nWhich = aIter.NextWhich();
3148 0 : }
3149 : }
3150 :
3151 33 : } // end of namespace sd
3152 :
3153 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|