Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include "DrawViewShell.hxx"
31 : : #include "ViewShellImplementation.hxx"
32 : : #include <vcl/waitobj.hxx>
33 : :
34 : : #include <svx/svxids.hrc>
35 : : #include <svx/dialogs.hrc>
36 : : #include <svx/imapdlg.hxx>
37 : : #include <vcl/msgbox.hxx>
38 : : #include <sfx2/request.hxx>
39 : : #include <svx/svdogrp.hxx>
40 : : #include <svx/svdoole2.hxx>
41 : : #include <svx/svdograf.hxx>
42 : : #include <svx/svxdlg.hxx>
43 : : #include <sfx2/bindings.hxx>
44 : : #include <sfx2/dispatch.hxx>
45 : : #include <svl/style.hxx>
46 : : #include <svx/svdpagv.hxx>
47 : : #include <svx/grafctrl.hxx>
48 : : #include "stlsheet.hxx"
49 : :
50 : : #include <sfx2/viewfrm.hxx>
51 : :
52 : : #include "app.hrc"
53 : : #include "strings.hrc"
54 : : #include "helpids.h"
55 : : #include "Window.hxx"
56 : : #include "imapinfo.hxx"
57 : : #include "futempl.hxx"
58 : : #include "fusel.hxx"
59 : : #include "sdresid.hxx"
60 : : #include "drawdoc.hxx"
61 : : #include "DrawDocShell.hxx"
62 : : #include "drawview.hxx"
63 : : #include "sdabstdlg.hxx"
64 : : #include "brkdlg.hrc"
65 : : namespace sd {
66 : :
67 : : #define MIN_ACTIONS_FOR_DIALOG 5000 // bei mehr als 1600 Metaobjekten
68 : : // wird beim Aufbrechen ein Dialog
69 : : // angezeigt.
70 : : /*************************************************************************
71 : : |*
72 : : |* SfxRequests fuer temporaere Funktionen
73 : : |*
74 : : \************************************************************************/
75 : :
76 : 0 : void DrawViewShell::FuTemp03(SfxRequest& rReq)
77 : : {
78 : 0 : sal_uInt16 nSId = rReq.GetSlot();
79 [ # # # # : 0 : switch( nSId )
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # #
# ]
80 : : {
81 : : case SID_GROUP: // BASIC
82 : : {
83 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected( sal_True, sal_True, sal_True ) )
84 : : {
85 : 0 : ::sd::Window* pWindow = GetActiveWindow();
86 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
87 : : }
88 : : else
89 : : {
90 : 0 : mpDrawView->GroupMarked();
91 : : }
92 : 0 : Cancel();
93 : 0 : rReq.Done ();
94 : : }
95 : 0 : break;
96 : :
97 : : case SID_UNGROUP: // BASIC
98 : : {
99 : 0 : mpDrawView->UnGroupMarked();
100 : 0 : Cancel();
101 : 0 : rReq.Done ();
102 : : }
103 : 0 : break;
104 : :
105 : : case SID_NAME_GROUP:
106 : : {
107 : : // only allow for single object selection since the name of an object needs
108 : : // to be unique
109 [ # # ]: 0 : if(1L == mpDrawView->GetMarkedObjectCount())
110 : : {
111 : : // #i68101#
112 [ # # ]: 0 : SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
113 : : OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
114 [ # # ][ # # ]: 0 : String aName(pSelected->GetName());
115 : :
116 [ # # ]: 0 : SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
117 : : OSL_ENSURE(pFact, "Dialogdiet fail!");
118 [ # # ]: 0 : AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName);
119 : : OSL_ENSURE(pDlg, "Dialogdiet fail!");
120 : :
121 [ # # ][ # # ]: 0 : pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl));
122 : :
123 [ # # ][ # # ]: 0 : if(RET_OK == pDlg->Execute())
124 : : {
125 [ # # ]: 0 : pDlg->GetName(aName);
126 [ # # ][ # # ]: 0 : pSelected->SetName(aName);
127 : : }
128 : :
129 [ # # ][ # # ]: 0 : delete pDlg;
[ # # ]
130 : : }
131 : :
132 : 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
133 : 0 : rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
134 : 0 : rBindings.Invalidate( SID_CONTEXT );
135 : :
136 : 0 : Cancel();
137 : 0 : rReq.Ignore();
138 : 0 : break;
139 : : }
140 : :
141 : : // #i68101#
142 : : case SID_OBJECT_TITLE_DESCRIPTION:
143 : : {
144 [ # # ]: 0 : if(1L == mpDrawView->GetMarkedObjectCount())
145 : : {
146 [ # # ]: 0 : SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
147 : : OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
148 [ # # ][ # # ]: 0 : String aTitle(pSelected->GetTitle());
149 [ # # ][ # # ]: 0 : String aDescription(pSelected->GetDescription());
150 : :
151 [ # # ]: 0 : SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
152 : : OSL_ENSURE(pFact, "Dialogdiet fail!");
153 [ # # ]: 0 : AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription);
154 : : OSL_ENSURE(pDlg, "Dialogdiet fail!");
155 : :
156 [ # # ][ # # ]: 0 : if(RET_OK == pDlg->Execute())
157 : : {
158 [ # # ]: 0 : pDlg->GetTitle(aTitle);
159 [ # # ]: 0 : pDlg->GetDescription(aDescription);
160 [ # # ][ # # ]: 0 : pSelected->SetTitle(aTitle);
161 [ # # ][ # # ]: 0 : pSelected->SetDescription(aDescription);
162 : : }
163 : :
164 [ # # ][ # # ]: 0 : delete pDlg;
[ # # ][ # # ]
165 : : }
166 : :
167 : 0 : SfxBindings& rBindings = GetViewFrame()->GetBindings();
168 : 0 : rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
169 : 0 : rBindings.Invalidate( SID_CONTEXT );
170 : :
171 : 0 : Cancel();
172 : 0 : rReq.Ignore();
173 : 0 : break;
174 : : }
175 : :
176 : : case SID_ENTER_GROUP: // BASIC
177 : : {
178 : 0 : mpDrawView->EnterMarkedGroup();
179 : 0 : Cancel();
180 : 0 : rReq.Done ();
181 : : }
182 : 0 : break;
183 : :
184 : : case SID_LEAVE_GROUP: // BASIC
185 : : {
186 : 0 : mpDrawView->LeaveOneGroup();
187 : 0 : Cancel();
188 : 0 : rReq.Done ();
189 : : }
190 : 0 : break;
191 : :
192 : : case SID_LEAVE_ALL_GROUPS: // BASIC
193 : : {
194 : 0 : mpDrawView->LeaveAllGroup();
195 : 0 : Cancel();
196 : 0 : rReq.Done ();
197 : : }
198 : 0 : break;
199 : :
200 : : case SID_COMBINE: // BASIC
201 : : {
202 : : // End text edit to avoid conflicts
203 [ # # ]: 0 : if(mpDrawView->IsTextEdit())
204 : 0 : mpDrawView->SdrEndTextEdit();
205 : :
206 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
207 : : {
208 : 0 : ::sd::Window* pWindow = GetActiveWindow();
209 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
210 : : }
211 : : else
212 : : {
213 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
214 [ # # ][ # # ]: 0 : mpDrawView->CombineMarkedObjects(sal_False);
215 : : }
216 : 0 : Cancel();
217 : 0 : rReq.Done ();
218 : : }
219 : 0 : break;
220 : :
221 : : case SID_DISTRIBUTE_DLG:
222 : : {
223 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
224 : : {
225 : 0 : ::sd::Window* pWindow = GetActiveWindow();
226 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
227 : : }
228 : : else
229 : : {
230 : 0 : mpDrawView->DistributeMarkedObjects();
231 : : }
232 : 0 : Cancel();
233 : 0 : rReq.Done ();
234 : : }
235 : 0 : break;
236 : :
237 : : case SID_POLY_MERGE:
238 : : {
239 : : // End text edit to avoid conflicts
240 [ # # ]: 0 : if(mpDrawView->IsTextEdit())
241 : 0 : mpDrawView->SdrEndTextEdit();
242 : :
243 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
244 : : {
245 : 0 : ::sd::Window* pWindow = GetActiveWindow();
246 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
247 : : }
248 : : else
249 : : {
250 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
251 [ # # ][ # # ]: 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_MERGE);
252 : : }
253 : 0 : Cancel();
254 : 0 : rReq.Done ();
255 : : }
256 : 0 : break;
257 : :
258 : : case SID_POLY_SUBSTRACT:
259 : : {
260 : : // End text edit to avoid conflicts
261 [ # # ]: 0 : if(mpDrawView->IsTextEdit())
262 : 0 : mpDrawView->SdrEndTextEdit();
263 : :
264 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
265 : : {
266 : 0 : ::sd::Window* pWindow = GetActiveWindow();
267 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
268 : : }
269 : : else
270 : : {
271 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
272 [ # # ][ # # ]: 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_SUBSTRACT);
273 : : }
274 : 0 : Cancel();
275 : 0 : rReq.Done ();
276 : : }
277 : 0 : break;
278 : :
279 : : case SID_POLY_INTERSECT:
280 : : {
281 : : // End text edit to avoid conflicts
282 [ # # ]: 0 : if(mpDrawView->IsTextEdit())
283 : 0 : mpDrawView->SdrEndTextEdit();
284 : :
285 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
286 : : {
287 : 0 : ::sd::Window* pWindow = GetActiveWindow();
288 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
289 : : }
290 : : else
291 : : {
292 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
293 [ # # ][ # # ]: 0 : mpDrawView->MergeMarkedObjects(SDR_MERGE_INTERSECT);
294 : : }
295 : 0 : Cancel();
296 : 0 : rReq.Done ();
297 : : }
298 : 0 : break;
299 : :
300 : : case SID_DISMANTLE: // BASIC
301 : : {
302 [ # # ]: 0 : if ( mpDrawView->IsDismantlePossible(sal_False) )
303 : : {
304 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
305 [ # # ][ # # ]: 0 : mpDrawView->DismantleMarkedObjects(sal_False);
306 : : }
307 : 0 : Cancel();
308 : 0 : rReq.Done ();
309 : : }
310 : 0 : break;
311 : :
312 : : case SID_CONNECT: // BASIC
313 : : {
314 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
315 : : {
316 : 0 : ::sd::Window* pWindow = GetActiveWindow();
317 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
318 : : }
319 : : else
320 : : {
321 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
322 [ # # ][ # # ]: 0 : mpDrawView->CombineMarkedObjects(sal_True);
323 : : }
324 : 0 : Cancel();
325 : 0 : rReq.Done ();
326 : : }
327 : 0 : break;
328 : :
329 : : case SID_BREAK: // BASIC
330 : : {
331 [ # # ]: 0 : if ( mpDrawView->IsTextEdit() )
332 : : {
333 : 0 : mpDrawView->SdrEndTextEdit();
334 : : }
335 : :
336 [ # # ]: 0 : if ( mpDrawView->IsBreak3DObjPossible() )
337 : : {
338 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
339 [ # # ][ # # ]: 0 : mpDrawView->Break3DObj();
340 : : }
341 [ # # ]: 0 : else if ( mpDrawView->IsDismantlePossible(sal_True) )
342 : : {
343 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
344 [ # # ][ # # ]: 0 : mpDrawView->DismantleMarkedObjects(sal_True);
345 : : }
346 [ # # ]: 0 : else if ( mpDrawView->IsImportMtfPossible() )
347 : : {
348 : :
349 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
350 : 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
351 : 0 : sal_uLong nAnz=rMarkList.GetMarkCount();
352 : :
353 : : // Summe der Metaobjekte aller sel. Metafiles erm.
354 : 0 : sal_uLong nCount = 0;
355 [ # # ]: 0 : for(sal_uLong nm=0; nm<nAnz; nm++)
356 : : {
357 [ # # ]: 0 : SdrMark* pM=rMarkList.GetMark(nm);
358 [ # # ]: 0 : SdrObject* pObj=pM->GetMarkedSdrObj();
359 [ # # ][ # # ]: 0 : SdrGrafObj* pGraf=PTR_CAST(SdrGrafObj,pObj);
[ # # ][ # # ]
360 [ # # ][ # # ]: 0 : SdrOle2Obj* pOle2=PTR_CAST(SdrOle2Obj,pObj);
[ # # ][ # # ]
361 [ # # ][ # # ]: 0 : if (pGraf!=NULL && pGraf->HasGDIMetaFile())
[ # # ][ # # ]
362 [ # # ][ # # ]: 0 : nCount += pGraf->GetGraphic().GetGDIMetaFile().GetActionSize();
[ # # ]
363 [ # # ][ # # ]: 0 : if(pOle2!=NULL && pOle2->GetGraphic())
[ # # ][ # # ]
364 [ # # ][ # # ]: 0 : nCount += pOle2->GetGraphic()->GetGDIMetaFile().GetActionSize();
[ # # ]
365 : : }
366 : :
367 : : // anhand der erm. Summe entscheiden ob mit
368 : : // oder ohne Dialog aufgebrochen wird.
369 [ # # ]: 0 : if(nCount < MIN_ACTIONS_FOR_DIALOG)
370 : : {
371 : : // ohne Dialog aufbrechen
372 [ # # ]: 0 : mpDrawView->DoImportMarkedMtf();
373 : : }
374 : : else
375 : : {
376 [ # # ]: 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
377 [ # # ]: 0 : if( pFact )
378 : : {
379 [ # # ][ # # ]: 0 : VclAbstractDialog* pDlg = pFact->CreateBreakDlg(GetActiveWindow(), mpDrawView, GetDocSh(), nCount, nAnz );
[ # # ]
380 [ # # ]: 0 : if( pDlg )
381 : : {
382 [ # # ]: 0 : pDlg->Execute();
383 [ # # ][ # # ]: 0 : delete pDlg;
384 : : }
385 : : }
386 [ # # ]: 0 : }
387 : : }
388 : :
389 : 0 : Cancel();
390 : 0 : rReq.Done ();
391 : : }
392 : 0 : break;
393 : :
394 : : case SID_CONVERT_TO_3D:
395 : : {
396 [ # # ]: 0 : if ( mpDrawView->IsPresObjSelected() )
397 : : {
398 : 0 : ::sd::Window* pWindow = GetActiveWindow();
399 [ # # ][ # # ]: 0 : InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
[ # # ][ # # ]
[ # # ]
400 : : }
401 : : else
402 : : {
403 [ # # ]: 0 : if (mpDrawView->IsConvertTo3DObjPossible())
404 : : {
405 [ # # ][ # # ]: 0 : if (mpDrawView->IsTextEdit())
406 : : {
407 [ # # ]: 0 : mpDrawView->SdrEndTextEdit();
408 : : }
409 : :
410 [ # # ][ # # ]: 0 : WaitObject aWait( (Window*)GetActiveWindow() );
411 [ # # ][ # # ]: 0 : mpDrawView->ConvertMarkedObjTo3D(sal_True);
412 : : }
413 : : }
414 : :
415 : 0 : Cancel();
416 : 0 : rReq.Done();
417 : : }
418 : 0 : break;
419 : :
420 : : case SID_FRAME_TO_TOP: // BASIC
421 : : {
422 : 0 : mpDrawView->PutMarkedToTop();
423 : 0 : Cancel();
424 : 0 : Invalidate( SID_POSITION );
425 : 0 : rReq.Done ();
426 : : }
427 : 0 : break;
428 : :
429 : : case SID_MOREFRONT: // BASIC
430 : : {
431 : 0 : mpDrawView->MovMarkedToTop();
432 : 0 : Cancel();
433 : 0 : Invalidate( SID_POSITION );
434 : 0 : rReq.Done ();
435 : : }
436 : 0 : break;
437 : :
438 : : case SID_MOREBACK: // BASIC
439 : : {
440 : 0 : mpDrawView->MovMarkedToBtm();
441 : 0 : Cancel();
442 : 0 : Invalidate( SID_POSITION );
443 : 0 : rReq.Done ();
444 : : }
445 : 0 : break;
446 : :
447 : : case SID_FRAME_TO_BOTTOM: // BASIC
448 : : {
449 : 0 : mpDrawView->PutMarkedToBtm();
450 : 0 : Cancel();
451 : 0 : Invalidate( SID_POSITION );
452 : 0 : rReq.Done ();
453 : : }
454 : 0 : break;
455 : :
456 : : case SID_HORIZONTAL: // BASIC
457 : : {
458 : 0 : mpDrawView->MirrorAllMarkedHorizontal();
459 : 0 : Cancel();
460 : 0 : rReq.Done ();
461 : : }
462 : 0 : break;
463 : :
464 : : case SID_VERTICAL: // BASIC
465 : : {
466 : 0 : mpDrawView->MirrorAllMarkedVertical();
467 : 0 : Cancel();
468 : 0 : rReq.Done ();
469 : : }
470 : 0 : break;
471 : :
472 : : case SID_OBJECT_ALIGN_LEFT: // BASIC
473 : : {
474 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
475 : 0 : Cancel();
476 : 0 : rReq.Done ();
477 : : }
478 : 0 : break;
479 : :
480 : : case SID_OBJECT_ALIGN_CENTER: // BASIC
481 : : {
482 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
483 : 0 : Cancel();
484 : 0 : rReq.Done ();
485 : : }
486 : 0 : break;
487 : :
488 : : case SID_OBJECT_ALIGN_RIGHT: // BASIC
489 : : {
490 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
491 : 0 : Cancel();
492 : 0 : rReq.Done ();
493 : : }
494 : 0 : break;
495 : :
496 : : case SID_OBJECT_ALIGN_UP: // BASIC
497 : : {
498 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
499 : 0 : Cancel();
500 : 0 : rReq.Done ();
501 : : }
502 : 0 : break;
503 : :
504 : : case SID_OBJECT_ALIGN_MIDDLE: // BASIC
505 : : {
506 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
507 : 0 : Cancel();
508 : 0 : rReq.Done ();
509 : : }
510 : 0 : break;
511 : :
512 : : case SID_OBJECT_ALIGN_DOWN: // BASIC
513 : : {
514 : 0 : mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
515 : 0 : Cancel();
516 : 0 : rReq.Done ();
517 : : }
518 : 0 : break;
519 : :
520 : : case SID_SELECTALL: // BASIC
521 : : {
522 [ # # ][ # # ]: 0 : if( (dynamic_cast<FuSelection*>( GetOldFunction().get() ) != 0) &&
[ # # # # ]
[ # # ][ # # ]
[ # # # # ]
523 [ # # ]: 0 : !GetView()->IsFrameDragSingles() && GetView()->HasMarkablePoints())
524 : : {
525 [ # # ]: 0 : if ( !mpDrawView->IsAction() )
526 : 0 : mpDrawView->MarkAllPoints();
527 : : }
528 : : else
529 : 0 : mpDrawView->SelectAll();
530 : :
531 : 0 : Cancel();
532 : 0 : rReq.Done ();
533 : : }
534 : 0 : break;
535 : :
536 : : case SID_STYLE_NEW: // BASIC ???
537 : : case SID_STYLE_APPLY:
538 : : case SID_STYLE_EDIT:
539 : : case SID_STYLE_DELETE:
540 : : case SID_STYLE_FAMILY:
541 : : case SID_STYLE_WATERCAN:
542 : : case SID_STYLE_UPDATE_BY_EXAMPLE:
543 : : case SID_STYLE_NEW_BY_EXAMPLE:
544 : : {
545 [ # # ][ # # ]: 0 : if( rReq.GetSlot() == SID_STYLE_EDIT && !rReq.GetArgs() )
[ # # ]
546 : : {
547 [ # # ]: 0 : SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet();
548 [ # # ][ # # ]: 0 : if( pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
[ # # ]
549 [ # # ]: 0 : pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
550 : :
551 [ # # ][ # # ]: 0 : if( (pStyleSheet == NULL) && GetView()->IsTextEdit() )
[ # # ][ # # ]
552 : : {
553 [ # # ]: 0 : GetView()->SdrEndTextEdit();
554 : :
555 [ # # ]: 0 : pStyleSheet = mpDrawView->GetStyleSheet();
556 [ # # ][ # # ]: 0 : if(pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
[ # # ]
557 [ # # ]: 0 : pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
558 : : }
559 : :
560 [ # # ]: 0 : if( pStyleSheet == NULL )
561 : : {
562 [ # # ]: 0 : rReq.Ignore();
563 : : break;
564 : : }
565 : :
566 [ # # ][ # # ]: 0 : SfxAllItemSet aSet(GetDoc()->GetPool());
567 : :
568 [ # # ][ # # ]: 0 : SfxStringItem aStyleNameItem( SID_STYLE_EDIT, pStyleSheet->GetName() );
569 [ # # ]: 0 : aSet.Put(aStyleNameItem);
570 : :
571 [ # # ]: 0 : SfxUInt16Item aStyleFamilyItem( SID_STYLE_FAMILY, (sal_uInt16)pStyleSheet->GetFamily() );
572 [ # # ]: 0 : aSet.Put(aStyleFamilyItem);
573 : :
574 [ # # ][ # # ]: 0 : rReq.SetArgs(aSet);
[ # # ][ # # ]
575 : : }
576 : :
577 [ # # ]: 0 : if( rReq.GetArgs() )
578 : : {
579 [ # # ]: 0 : SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
580 [ # # ]: 0 : if( rReq.GetSlot() == SID_STYLE_APPLY )
581 : 0 : GetViewFrame()->GetBindings().Invalidate( SID_STYLE_APPLY );
582 : 0 : Cancel();
583 : : }
584 [ # # ]: 0 : else if( rReq.GetSlot() == SID_STYLE_APPLY )
585 : 0 : GetViewFrame()->GetDispatcher()->Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON );
586 : 0 : rReq.Ignore ();
587 : : }
588 : 0 : break;
589 : :
590 : : case SID_IMAP:
591 : : {
592 : 0 : sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
593 : :
594 : 0 : GetViewFrame()->ToggleChildWindow( nId );
595 : 0 : GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
596 : :
597 [ # # ]: 0 : if ( GetViewFrame()->HasChildWindow( nId )
[ # # # # ]
598 : 0 : && ( ( ViewShell::Implementation::GetImageMapDialog() ) != NULL ) )
599 : : {
600 : 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
601 : :
602 [ # # ]: 0 : if ( rMarkList.GetMarkCount() == 1 )
603 : 0 : UpdateIMapDlg( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
604 : : }
605 : :
606 : 0 : Cancel();
607 : 0 : rReq.Ignore ();
608 : : }
609 : 0 : break;
610 : :
611 : : case SID_GRID_FRONT:
612 : : {
613 : 0 : mpDrawView->SetGridFront( !mpDrawView->IsGridFront() );
614 : 0 : Cancel();
615 : 0 : rReq.Done ();
616 : : }
617 : 0 : break;
618 : :
619 : : case SID_HELPLINES_FRONT:
620 : : {
621 : 0 : mpDrawView->SetHlplFront( !mpDrawView->IsHlplFront() );
622 : 0 : Cancel();
623 : 0 : rReq.Done ();
624 : : }
625 : 0 : break;
626 : :
627 : : default:
628 : 0 : FuTemp04(rReq);
629 : 0 : break;
630 : : };
631 : 0 : };
632 : :
633 : : /*************************************************************************
634 : : |*
635 : : |* Liefert die globale/Haupt-ID zurueck, also die ID, ueber die die
636 : : |* Toolbox ausgeloest wird
637 : : |*
638 : : \************************************************************************/
639 : :
640 : 6978 : sal_uInt16 DrawViewShell::GetIdBySubId( sal_uInt16 nSId )
641 : : {
642 : 6978 : sal_uInt16 nMappedSId = 0;
643 [ - - - + : 6978 : switch( nSId )
- - - - -
- - - + ]
644 : : {
645 : : case SID_OBJECT_ROTATE:
646 : : case SID_OBJECT_MIRROR:
647 : : case SID_OBJECT_TRANSPARENCE:
648 : : case SID_OBJECT_GRADIENT:
649 : : case SID_OBJECT_SHEAR:
650 : : case SID_OBJECT_CROOK_ROTATE:
651 : : case SID_OBJECT_CROOK_SLANT:
652 : : case SID_OBJECT_CROOK_STRETCH:
653 : : case SID_CONVERT_TO_3D_LATHE:
654 : : {
655 : 0 : nMappedSId = SID_OBJECT_CHOOSE_MODE;
656 : : }
657 : 0 : break;
658 : :
659 : : case SID_OBJECT_ALIGN_LEFT:
660 : : case SID_OBJECT_ALIGN_CENTER:
661 : : case SID_OBJECT_ALIGN_RIGHT:
662 : : case SID_OBJECT_ALIGN_UP:
663 : : case SID_OBJECT_ALIGN_MIDDLE:
664 : : case SID_OBJECT_ALIGN_DOWN:
665 : : {
666 : 0 : nMappedSId = SID_OBJECT_ALIGN;
667 : : }
668 : 0 : break;
669 : :
670 : : case SID_FRAME_TO_TOP:
671 : : case SID_MOREFRONT:
672 : : case SID_MOREBACK:
673 : : case SID_FRAME_TO_BOTTOM:
674 : : case SID_BEFORE_OBJ:
675 : : case SID_BEHIND_OBJ:
676 : : case SID_REVERSE_ORDER:
677 : : {
678 : 0 : nMappedSId = SID_POSITION;
679 : : }
680 : 0 : break;
681 : :
682 : : case SID_ZOOM_OUT:
683 : : case SID_ZOOM_IN:
684 : : case SID_SIZE_REAL:
685 : : case SID_ZOOM_PANNING:
686 : : case SID_SIZE_PAGE:
687 : : case SID_SIZE_PAGE_WIDTH:
688 : : case SID_SIZE_ALL:
689 : : case SID_SIZE_OPTIMAL:
690 : : case SID_ZOOM_NEXT:
691 : : case SID_ZOOM_PREV:
692 : : {
693 : 447 : nMappedSId = SID_ZOOM_TOOLBOX;
694 : : }
695 : 447 : break;
696 : :
697 : : case SID_ATTR_CHAR:
698 : : case SID_TEXT_FITTOSIZE:
699 : : case SID_DRAW_CAPTION:
700 : : case SID_DRAW_FONTWORK:
701 : : case SID_DRAW_FONTWORK_VERTICAL:
702 : : {
703 : 0 : nMappedSId = SID_DRAWTBX_TEXT;
704 : : }
705 : 0 : break;
706 : :
707 : : case SID_DRAW_RECT:
708 : : case SID_DRAW_SQUARE:
709 : : case SID_DRAW_RECT_ROUND:
710 : : case SID_DRAW_SQUARE_ROUND:
711 : : case SID_DRAW_RECT_NOFILL:
712 : : case SID_DRAW_SQUARE_NOFILL:
713 : : case SID_DRAW_RECT_ROUND_NOFILL:
714 : : case SID_DRAW_SQUARE_ROUND_NOFILL:
715 : : {
716 : 0 : nMappedSId = SID_DRAWTBX_RECTANGLES;
717 : : }
718 : 0 : break;
719 : :
720 : : case SID_DRAW_ELLIPSE:
721 : : case SID_DRAW_CIRCLE:
722 : : case SID_DRAW_PIE:
723 : : case SID_DRAW_CIRCLEPIE:
724 : : case SID_DRAW_ELLIPSECUT:
725 : : case SID_DRAW_CIRCLECUT:
726 : : case SID_DRAW_ARC:
727 : : case SID_DRAW_CIRCLEARC:
728 : : case SID_DRAW_ELLIPSE_NOFILL:
729 : : case SID_DRAW_CIRCLE_NOFILL:
730 : : case SID_DRAW_PIE_NOFILL:
731 : : case SID_DRAW_CIRCLEPIE_NOFILL:
732 : : case SID_DRAW_ELLIPSECUT_NOFILL:
733 : : case SID_DRAW_CIRCLECUT_NOFILL:
734 : : {
735 : 0 : nMappedSId = SID_DRAWTBX_ELLIPSES;
736 : : }
737 : 0 : break;
738 : :
739 : : case SID_DRAW_BEZIER_NOFILL:
740 : : case SID_DRAW_POLYGON_NOFILL:
741 : : case SID_DRAW_XPOLYGON_NOFILL:
742 : : case SID_DRAW_FREELINE_NOFILL:
743 : : case SID_DRAW_BEZIER_FILL:
744 : : case SID_DRAW_POLYGON:
745 : : case SID_DRAW_XPOLYGON:
746 : : case SID_DRAW_FREELINE:
747 : : {
748 : 0 : nMappedSId = SID_DRAWTBX_LINES;
749 : : }
750 : 0 : break;
751 : :
752 : : case SID_DRAW_LINE:
753 : : case SID_DRAW_XLINE:
754 : : case SID_DRAW_MEASURELINE:
755 : : case SID_LINE_ARROW_START:
756 : : case SID_LINE_ARROW_END:
757 : : case SID_LINE_ARROWS:
758 : : case SID_LINE_ARROW_CIRCLE:
759 : : case SID_LINE_CIRCLE_ARROW:
760 : : case SID_LINE_ARROW_SQUARE:
761 : : case SID_LINE_SQUARE_ARROW:
762 : : {
763 : 0 : nMappedSId = SID_DRAWTBX_ARROWS;
764 : : }
765 : 0 : break;
766 : :
767 : : case SID_3D_CUBE:
768 : : case SID_3D_TORUS:
769 : : case SID_3D_SPHERE:
770 : : case SID_3D_SHELL:
771 : : case SID_3D_HALF_SPHERE:
772 : : case SID_3D_CYLINDER:
773 : : case SID_3D_CONE:
774 : : case SID_3D_PYRAMID:
775 : : {
776 : 0 : nMappedSId = SID_DRAWTBX_3D_OBJECTS;
777 : : }
778 : 0 : break;
779 : :
780 : : case SID_INSERT_DIAGRAM:
781 : : case SID_ATTR_TABLE:
782 : : case SID_INSERTFILE:
783 : : case SID_INSERT_GRAPHIC:
784 : : case SID_INSERT_AVMEDIA:
785 : : case SID_INSERTPAGE:
786 : : case SID_INSERT_MATH:
787 : : case SID_INSERT_FLOATINGFRAME:
788 : : case SID_INSERT_OBJECT:
789 : : case SID_INSERT_PLUGIN:
790 : : case SID_INSERT_SOUND:
791 : : case SID_INSERT_VIDEO:
792 : : case SID_INSERT_TABLE:
793 : : {
794 : 0 : nMappedSId = SID_DRAWTBX_INSERT;
795 : : }
796 : 0 : break;
797 : :
798 : : case SID_TOOL_CONNECTOR:
799 : : case SID_CONNECTOR_ARROW_START:
800 : : case SID_CONNECTOR_ARROW_END:
801 : : case SID_CONNECTOR_ARROWS:
802 : : case SID_CONNECTOR_CIRCLE_START:
803 : : case SID_CONNECTOR_CIRCLE_END:
804 : : case SID_CONNECTOR_CIRCLES:
805 : : case SID_CONNECTOR_LINE:
806 : : case SID_CONNECTOR_LINE_ARROW_START:
807 : : case SID_CONNECTOR_LINE_ARROW_END:
808 : : case SID_CONNECTOR_LINE_ARROWS:
809 : : case SID_CONNECTOR_LINE_CIRCLE_START:
810 : : case SID_CONNECTOR_LINE_CIRCLE_END:
811 : : case SID_CONNECTOR_LINE_CIRCLES:
812 : : case SID_CONNECTOR_CURVE:
813 : : case SID_CONNECTOR_CURVE_ARROW_START:
814 : : case SID_CONNECTOR_CURVE_ARROW_END:
815 : : case SID_CONNECTOR_CURVE_ARROWS:
816 : : case SID_CONNECTOR_CURVE_CIRCLE_START:
817 : : case SID_CONNECTOR_CURVE_CIRCLE_END:
818 : : case SID_CONNECTOR_CURVE_CIRCLES:
819 : : case SID_CONNECTOR_LINES:
820 : : case SID_CONNECTOR_LINES_ARROW_START:
821 : : case SID_CONNECTOR_LINES_ARROW_END:
822 : : case SID_CONNECTOR_LINES_ARROWS:
823 : : case SID_CONNECTOR_LINES_CIRCLE_START:
824 : : case SID_CONNECTOR_LINES_CIRCLE_END:
825 : : case SID_CONNECTOR_LINES_CIRCLES:
826 : : {
827 : 0 : nMappedSId = SID_DRAWTBX_CONNECTORS;
828 : : }
829 : : }
830 : 6978 : return( nMappedSId );
831 : : }
832 : :
833 : : /*************************************************************************
834 : : |*
835 : : |* Fuellt das SlotArray, um das aktuelle Mapping des ToolboxSlots zu
836 : : |* bekommen
837 : : |*
838 : : \************************************************************************/
839 : :
840 : 593 : void DrawViewShell::MapSlot( sal_uInt16 nSId )
841 : : {
842 : 593 : sal_uInt16 nMappedSId = GetIdBySubId( nSId );
843 : :
844 [ + + ]: 593 : if( nMappedSId > 0 )
845 : : {
846 : 447 : sal_uInt16 nID = GetArrayId( nMappedSId ) + 1;
847 : 447 : mpSlotArray[ nID ] = nSId;
848 : : }
849 : 593 : }
850 : :
851 : : /*************************************************************************
852 : : |*
853 : : |* Ermoeglicht ueber das SlotArray ein ImageMapping
854 : : |*
855 : : \************************************************************************/
856 : :
857 : 12770 : void DrawViewShell::UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent )
858 : : {
859 [ + + ]: 12770 : if( !bPermanent )
860 : : {
861 : 6385 : sal_uInt16 nId = GetArrayId( SID_ZOOM_TOOLBOX ) + 1;
862 [ + - ]: 6385 : rSet.Put( TbxImageItem( SID_ZOOM_TOOLBOX, mpSlotArray[nId] ) );
863 : :
864 : 6385 : nId = GetArrayId( SID_DRAWTBX_INSERT ) + 1;
865 [ + - ]: 6385 : rSet.Put( TbxImageItem( SID_DRAWTBX_INSERT, mpSlotArray[nId] ) );
866 : :
867 : 6385 : nId = GetArrayId( SID_POSITION ) + 1;
868 [ + - ]: 6385 : rSet.Put( TbxImageItem( SID_POSITION, mpSlotArray[nId] ) );
869 : :
870 : 6385 : nId = GetArrayId( SID_OBJECT_ALIGN ) + 1;
871 [ + - ]: 6385 : rSet.Put( TbxImageItem( SID_OBJECT_ALIGN, mpSlotArray[nId] ) );
872 : : }
873 : : else
874 : : {
875 [ + + ]: 83005 : for( sal_uInt16 nId = 0; nId < SLOTARRAY_COUNT; nId += 2 )
876 : : {
877 [ + - ]: 76620 : rSet.Put( TbxImageItem( mpSlotArray[nId], mpSlotArray[nId+1] ) );
878 : : }
879 : : }
880 : 12770 : }
881 : :
882 : : /*************************************************************************
883 : : |*
884 : : |* Gibt den gemappten Slot zurueck
885 : : |*
886 : : \************************************************************************/
887 : :
888 : 0 : sal_uInt16 DrawViewShell::GetMappedSlot( sal_uInt16 nSId )
889 : : {
890 : 0 : sal_uInt16 nSlot = 0;
891 : 0 : sal_uInt16 nId = GetArrayId( nSId );
892 [ # # ]: 0 : if( nId != USHRT_MAX )
893 : 0 : nSlot = mpSlotArray[ nId+1 ];
894 : :
895 : : // Wenn der Slot noch auf sich selbst gemapped ist, muss 0 zurueck-
896 : : // gegeben werden, da sonst der Slot immer wieder selbst executet
897 : : // wird. Im Array ist der Slot selbst initial vorhanden, damit das
898 : : // Image richtig angezeigt wird.
899 [ # # ]: 0 : if( nSId == nSlot )
900 : 0 : return( 0 );
901 : :
902 : 0 : return( nSlot );
903 : : }
904 : :
905 : : /*************************************************************************
906 : : |*
907 : : |* Gibt die Nummer des HauptSlots im SlotArray zurueck
908 : : |*
909 : : \************************************************************************/
910 : :
911 : 25987 : sal_uInt16 DrawViewShell::GetArrayId( sal_uInt16 nSId )
912 : : {
913 [ + - ]: 154581 : for( sal_uInt16 i = 0; i < SLOTARRAY_COUNT; i += 2 )
914 : : {
915 [ + + ]: 154581 : if( mpSlotArray[ i ] == nSId )
916 : 25987 : return( i );
917 : : }
918 : : OSL_FAIL( "Slot im Array nicht gefunden!" );
919 : 25987 : return( USHRT_MAX );
920 : : }
921 : :
922 : :
923 : : /*************************************************************************
924 : : |*
925 : : |* IMap-Dlg updaten
926 : : |*
927 : : \************************************************************************/
928 : :
929 : 0 : void DrawViewShell::UpdateIMapDlg( SdrObject* pObj )
930 : : {
931 [ # # ][ # # ]: 0 : if( ( pObj->ISA( SdrGrafObj ) || pObj->ISA( SdrOle2Obj ) ) && !mpDrawView->IsTextEdit() &&
[ # # # # ]
[ # # ]
932 : 0 : GetViewFrame()->HasChildWindow( SvxIMapDlgChildWindow::GetChildWindowId() ) )
933 : : {
934 [ # # ]: 0 : Graphic aGraphic;
935 : 0 : ImageMap* pIMap = NULL;
936 : 0 : TargetList* pTargetList = NULL;
937 [ # # ][ # # ]: 0 : SdIMapInfo* pIMapInfo = GetDoc()->GetIMapInfo( pObj );
938 : :
939 : : // get graphic from shape
940 [ # # ]: 0 : SdrGrafObj* pGrafObj = dynamic_cast< SdrGrafObj* >( pObj );
941 [ # # ]: 0 : if( pGrafObj )
942 [ # # ][ # # ]: 0 : aGraphic = pGrafObj->GetGraphic();
943 : :
944 [ # # ]: 0 : if ( pIMapInfo )
945 : : {
946 : 0 : pIMap = (ImageMap*) &pIMapInfo->GetImageMap();
947 [ # # ][ # # ]: 0 : pTargetList = new TargetList;
948 [ # # ][ # # ]: 0 : GetViewFrame()->GetTargetList( *pTargetList );
949 : : }
950 : :
951 [ # # ]: 0 : SvxIMapDlgChildWindow::UpdateIMapDlg( aGraphic, pIMap, pTargetList, pObj );
952 : :
953 : : // TargetListe kann von uns wieder geloescht werden
954 [ # # ]: 0 : if ( pTargetList )
955 : : {
956 [ # # ]: 0 : for ( size_t i = 0, n = pTargetList->size(); i < n; ++i )
957 [ # # ][ # # ]: 0 : delete pTargetList->at( i );
[ # # ]
958 [ # # ]: 0 : delete pTargetList;
959 [ # # ]: 0 : }
960 : : }
961 : 0 : }
962 : :
963 : : // -----------------------------------------------------------------------------
964 : :
965 : 0 : IMPL_LINK( DrawViewShell, NameObjectHdl, AbstractSvxNameDialog*, pDialog )
966 : : {
967 [ # # ]: 0 : String aName;
968 : :
969 [ # # ]: 0 : if( pDialog )
970 [ # # ]: 0 : pDialog->GetName( aName );
971 : :
972 [ # # ][ # # ]: 0 : return( ( !aName.Len() || ( GetDoc() && !GetDoc()->GetObj( aName ) ) ) ? 1 : 0 );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
973 : : }
974 : :
975 : : } // end of namespace sd
976 : :
977 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|