Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 :
21 : #include "DrawViewShell.hxx"
22 :
23 : #include <sfx2/viewfrm.hxx>
24 : #include <editeng/eeitem.hxx>
25 : #include <editeng/tstpitem.hxx>
26 : #include <editeng/lrspitem.hxx>
27 : #include <editeng/protitem.hxx>
28 : #include <editeng/frmdiritem.hxx>
29 : #include <editeng/adjustitem.hxx>
30 : #include <svx/ruler.hxx>
31 : #include <editeng/numitem.hxx>
32 : #include <svx/rulritem.hxx>
33 : #include <sfx2/zoomitem.hxx>
34 : #include <svx/svxids.hrc>
35 : #include <svx/svdpagv.hxx>
36 : #include <sfx2/request.hxx>
37 : #include <sfx2/dispatch.hxx>
38 : #include <tools/urlobj.hxx>
39 : #include <svl/aeitem.hxx>
40 : #include <svl/eitem.hxx>
41 : #include <svl/rectitem.hxx>
42 : #include <svl/stritem.hxx>
43 : #include <svx/svdoole2.hxx>
44 : #include <svl/itempool.hxx>
45 : #include <svl/ptitem.hxx>
46 : #include <basic/sbstar.hxx>
47 : #include <basic/sberrors.hxx>
48 : #include <svx/fmshell.hxx>
49 : #include <svx/f3dchild.hxx>
50 : #include <svx/float3d.hxx>
51 : #include "optsitem.hxx"
52 :
53 : #include "app.hrc"
54 : #include "glob.hrc"
55 : #include "strings.hrc"
56 : #include "res_bmp.hrc"
57 :
58 : #include "sdundogr.hxx"
59 : #include "undopage.hxx"
60 : #include "glob.hxx"
61 : #include "sdmod.hxx"
62 : #include "fupoor.hxx"
63 : #include "slideshow.hxx"
64 : #include "FrameView.hxx"
65 : #include "sdpage.hxx"
66 : #include "Window.hxx"
67 : #include "sdresid.hxx"
68 : #include "drawview.hxx"
69 : #include "drawdoc.hxx"
70 : #include "Ruler.hxx"
71 : #include "DrawDocShell.hxx"
72 : #include "headerfooterdlg.hxx"
73 : #include "masterlayoutdlg.hxx"
74 : #include "sdabstdlg.hxx"
75 : #include <sfx2/ipclient.hxx>
76 : #include <tools/diagnose_ex.h>
77 : #include "ViewShellBase.hxx"
78 : #include "FormShellManager.hxx"
79 : #include "LayerTabBar.hxx"
80 : #include <com/sun/star/drawing/framework/XControllerManager.hpp>
81 : #include <com/sun/star/drawing/framework/XConfigurationController.hpp>
82 : #include <com/sun/star/drawing/framework/XConfiguration.hpp>
83 : #include <com/sun/star/frame/XFrame.hpp>
84 : #include <editeng/lspcitem.hxx>
85 : #include <editeng/ulspitem.hxx>
86 : using namespace ::com::sun::star::uno;
87 : using namespace ::com::sun::star::drawing::framework;
88 : using ::com::sun::star::frame::XFrame;
89 : using ::com::sun::star::frame::XController;
90 :
91 : namespace sd {
92 :
93 : /**
94 : * handle SfxRequests for controller
95 : */
96 0 : void DrawViewShell::ExecCtrl(SfxRequest& rReq)
97 : {
98 : // except a page switch and jumps to bookmarks, nothing is executed during
99 : // a slide show
100 0 : if( HasCurrentFunction(SID_PRESENTATION) &&
101 0 : rReq.GetSlot() != SID_SWITCHPAGE &&
102 0 : rReq.GetSlot() != SID_JUMPTOMARK)
103 0 : return;
104 :
105 0 : CheckLineTo (rReq);
106 :
107 : // End text edit mode for some requests.
108 0 : sal_uInt16 nSlot = rReq.GetSlot();
109 0 : switch (nSlot)
110 : {
111 : case SID_OUTPUT_QUALITY_COLOR:
112 : case SID_OUTPUT_QUALITY_GRAYSCALE:
113 : case SID_OUTPUT_QUALITY_BLACKWHITE:
114 : case SID_OUTPUT_QUALITY_CONTRAST:
115 : // Do nothing.
116 0 : break;
117 : default:
118 0 : if ( mpDrawView->IsTextEdit() )
119 : {
120 0 : mpDrawView->SdrEndTextEdit();
121 : }
122 : }
123 :
124 : // sal_uInt16 nSlot = rReq.GetSlot();
125 0 : switch (nSlot)
126 : {
127 : case SID_SWITCHPAGE: // BASIC
128 : {
129 : // switch page in running slide show
130 0 : if(SlideShow::IsRunning(GetViewShellBase()) && rReq.GetArgs())
131 : {
132 0 : SFX_REQUEST_ARG(rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, false);
133 0 : SlideShow::GetSlideShow(GetViewShellBase())->jumpToPageNumber((sal_Int32)((pWhatPage->GetValue()-1)>>1));
134 : }
135 : else
136 : {
137 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
138 0 : sal_uInt16 nSelectedPage = 0;
139 :
140 0 : if (! pArgs)
141 : {
142 0 : nSelectedPage = maTabControl.GetCurPageId() - 1;
143 : }
144 0 : else if (pArgs->Count () == 2)
145 : {
146 0 : SFX_REQUEST_ARG (rReq, pWhatPage, SfxUInt32Item, ID_VAL_WHATPAGE, false);
147 0 : SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, false);
148 :
149 0 : sal_Int32 nWhatPage = (sal_Int32)pWhatPage->GetValue ();
150 0 : sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue ();
151 0 : if (! CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT))
152 : {
153 : #ifndef DISABLE_SCRIPTING
154 0 : StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
155 : #endif
156 0 : rReq.Ignore ();
157 0 : break;
158 : }
159 0 : else if (meEditMode != EM_MASTERPAGE)
160 : {
161 0 : if (! CHECK_RANGE (0, nWhatPage, GetDoc()->GetSdPageCount((PageKind)nWhatKind)))
162 : {
163 : #ifndef DISABLE_SCRIPTING
164 0 : StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
165 : #endif
166 0 : rReq.Ignore ();
167 0 : break;
168 : }
169 :
170 0 : nSelectedPage = (short) nWhatPage;
171 0 : mePageKind = (PageKind) nWhatKind;
172 : }
173 : }
174 : else
175 : {
176 : #ifndef DISABLE_SCRIPTING
177 0 : StarBASIC::FatalError (SbERR_WRONG_ARGS);
178 : #endif
179 0 : rReq.Ignore ();
180 0 : break;
181 : }
182 :
183 :
184 0 : if( GetDocSh() && (GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED))
185 0 : GetDocSh()->SetModified();
186 :
187 0 : SwitchPage(nSelectedPage);
188 :
189 0 : if(HasCurrentFunction(SID_BEZIER_EDIT))
190 0 : GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
191 :
192 0 : Invalidate();
193 0 : InvalidateWindows();
194 0 : rReq.Done ();
195 : }
196 0 : break;
197 : }
198 :
199 : case SID_SWITCHLAYER: // BASIC
200 : {
201 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
202 :
203 : // #i87182#
204 0 : bool bCurPageValid(false);
205 0 : sal_uInt16 nCurPage(0);
206 :
207 0 : if(GetLayerTabControl())
208 : {
209 0 : nCurPage = GetLayerTabControl()->GetCurPageId();
210 0 : bCurPageValid = true;
211 : }
212 :
213 0 : if(pArgs && 1 == pArgs->Count())
214 : {
215 0 : SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, false);
216 :
217 0 : if(pWhatLayer)
218 : {
219 0 : nCurPage = (short)pWhatLayer->GetValue();
220 0 : bCurPageValid = true;
221 : }
222 : }
223 :
224 0 : if(bCurPageValid)
225 : {
226 0 : mpDrawView->SetActiveLayer( GetLayerTabControl()->GetPageText(nCurPage) );
227 0 : Invalidate();
228 : }
229 :
230 0 : rReq.Done ();
231 :
232 0 : break;
233 : }
234 :
235 : case SID_PAGEMODE: // BASIC
236 : {
237 :
238 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
239 :
240 0 : if ( pArgs && pArgs->Count () == 2)
241 : {
242 0 : SFX_REQUEST_ARG (rReq, pIsActive, SfxBoolItem, ID_VAL_ISACTIVE, false);
243 0 : SFX_REQUEST_ARG (rReq, pWhatKind, SfxUInt32Item, ID_VAL_WHATKIND, false);
244 :
245 0 : sal_Int32 nWhatKind = (sal_Int32)pWhatKind->GetValue ();
246 0 : if (CHECK_RANGE (PK_STANDARD, nWhatKind, PK_HANDOUT))
247 : {
248 0 : mbIsLayerModeActive = pIsActive->GetValue ();
249 0 : mePageKind = (PageKind) nWhatKind;
250 : }
251 : }
252 :
253 : // turn on default layer of page
254 0 : mpDrawView->SetActiveLayer(SD_RESSTR(STR_LAYER_LAYOUT));
255 :
256 0 : ChangeEditMode(EM_PAGE, mbIsLayerModeActive);
257 :
258 0 : Invalidate();
259 0 : rReq.Done ();
260 :
261 0 : break;
262 : }
263 :
264 : case SID_LAYERMODE: // BASIC
265 : {
266 0 : const SfxItemSet *pArgs = rReq.GetArgs ();
267 :
268 0 : if ( pArgs && pArgs->Count () == 2)
269 : {
270 0 : SFX_REQUEST_ARG (rReq, pWhatLayerMode, SfxBoolItem, ID_VAL_ISACTIVE, false);
271 0 : SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, false);
272 :
273 0 : sal_Int32 nWhatLayer = (sal_Int32)pWhatLayer->GetValue ();
274 0 : if (CHECK_RANGE (EM_PAGE, nWhatLayer, EM_MASTERPAGE))
275 : {
276 0 : mbIsLayerModeActive = pWhatLayerMode->GetValue ();
277 0 : meEditMode = (EditMode) nWhatLayer;
278 : }
279 : }
280 :
281 0 : ChangeEditMode(meEditMode, !mbIsLayerModeActive);
282 :
283 0 : Invalidate();
284 0 : rReq.Done ();
285 :
286 0 : break;
287 : }
288 :
289 : case SID_HEADER_AND_FOOTER:
290 : case SID_INSERT_PAGE_NUMBER:
291 : case SID_INSERT_DATE_TIME:
292 : {
293 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
294 0 : AbstractHeaderFooterDialog* pDlg = pFact ? pFact->CreateHeaderFooterDialog( (::ViewShell*)this, GetActiveWindow(), GetDoc(), mpActualPage ) : 0;
295 0 : if( pDlg )
296 : {
297 0 : pDlg->Execute();
298 0 : delete pDlg;
299 :
300 0 : GetActiveWindow()->Invalidate();
301 0 : UpdatePreview( mpActualPage );
302 : }
303 :
304 0 : Invalidate();
305 0 : rReq.Done ();
306 :
307 0 : break;
308 : }
309 :
310 : case SID_MASTER_LAYOUTS:
311 : {
312 0 : SdPage* pPage = GetActualPage();
313 0 : if (meEditMode == EM_MASTERPAGE)
314 : // Use the master page of the current page.
315 0 : pPage = static_cast<SdPage*>(&pPage->TRG_GetMasterPage());
316 :
317 0 : SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
318 0 : VclAbstractDialog* pDlg = pFact ? pFact->CreateMasterLayoutDialog( GetActiveWindow(), GetDoc(), pPage ) : 0;
319 0 : if( pDlg )
320 : {
321 0 : pDlg->Execute();
322 0 : delete pDlg;
323 0 : Invalidate();
324 : }
325 0 : rReq.Done ();
326 0 : break;
327 : }
328 : case SID_OBJECTRESIZE:
329 : {
330 : // The server likes to change the client size
331 : OSL_ASSERT (GetViewShell()!=NULL);
332 0 : SfxInPlaceClient* pIPClient = GetViewShell()->GetIPClient();
333 :
334 0 : if ( pIPClient && pIPClient->IsObjectInPlaceActive() )
335 : {
336 : const SfxRectangleItem& rRect =
337 0 : (SfxRectangleItem&)rReq.GetArgs()->Get(SID_OBJECTRESIZE);
338 0 : Rectangle aRect( GetActiveWindow()->PixelToLogic( rRect.GetValue() ) );
339 :
340 0 : if ( mpDrawView->AreObjectsMarked() )
341 : {
342 0 : const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
343 :
344 0 : if (rMarkList.GetMarkCount() == 1)
345 : {
346 0 : SdrMark* pMark = rMarkList.GetMark(0);
347 0 : SdrObject* pObj = pMark->GetMarkedSdrObj();
348 :
349 0 : SdrOle2Obj* pOle2Obj = dynamic_cast< SdrOle2Obj* >( pObj );
350 0 : if(pOle2Obj)
351 : {
352 0 : if( pOle2Obj->GetObjRef().is() )
353 : {
354 0 : pOle2Obj->SetLogicRect(aRect);
355 : }
356 : }
357 : }
358 : }
359 : }
360 0 : rReq.Ignore ();
361 0 : break;
362 : }
363 :
364 : case SID_RELOAD:
365 : {
366 0 : sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId();
367 0 : SfxViewFrame* pFrame = GetViewFrame();
368 :
369 : try
370 : {
371 0 : Reference< XFrame > xFrame( pFrame->GetFrame().GetFrameInterface(), UNO_SET_THROW );
372 :
373 : // Save the current configuration of panes and views.
374 : Reference<XControllerManager> xControllerManager (
375 0 : GetViewShellBase().GetController(), UNO_QUERY_THROW);
376 : Reference<XConfigurationController> xConfigurationController (
377 0 : xControllerManager->getConfigurationController(), UNO_QUERY_THROW );
378 : Reference<XConfiguration> xConfiguration (
379 0 : xConfigurationController->getRequestedConfiguration(), UNO_SET_THROW );
380 :
381 0 : SfxChildWindow* pWindow = pFrame->GetChildWindow(nId);
382 0 : if(pWindow)
383 : {
384 0 : Svx3DWin* p3DWin = (Svx3DWin*)(pWindow->GetWindow());
385 0 : if(p3DWin)
386 0 : p3DWin->DocumentReload();
387 : }
388 :
389 : // normal forwarding to ViewFrame for execution
390 0 : GetViewFrame()->ExecuteSlot(rReq);
391 :
392 : // From here on we must cope with this object and the frame already being
393 : // deleted. Do not call any methods or use data members.
394 0 : Reference<XController> xController( xFrame->getController(), UNO_SET_THROW );
395 :
396 : // Restore the configuration.
397 0 : xControllerManager = Reference<XControllerManager>( xController, UNO_QUERY_THROW);
398 0 : xConfigurationController = Reference<XConfigurationController>(
399 0 : xControllerManager->getConfigurationController());
400 0 : if ( ! xConfigurationController.is())
401 0 : throw RuntimeException();
402 0 : xConfigurationController->restoreConfiguration(xConfiguration);
403 : }
404 0 : catch (RuntimeException&)
405 : {
406 : DBG_UNHANDLED_EXCEPTION();
407 : }
408 :
409 : // We have to return immediately to avoid accessing this object.
410 0 : return;
411 : }
412 :
413 : case SID_JUMPTOMARK:
414 : {
415 0 : if( rReq.GetArgs() )
416 : {
417 0 : SFX_REQUEST_ARG(rReq, pBookmark, SfxStringItem, SID_JUMPTOMARK, false);
418 :
419 0 : if (pBookmark)
420 : {
421 0 : OUString sBookmark(INetURLObject::decode(pBookmark->GetValue(), '%', INetURLObject::DECODE_WITH_CHARSET));
422 :
423 0 : rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetViewShellBase() ) );
424 0 : if(xSlideshow.is() && xSlideshow->isRunning())
425 : {
426 0 : xSlideshow->jumpToBookmark(sBookmark);
427 : }
428 : else
429 : {
430 0 : GotoBookmark(sBookmark);
431 0 : }
432 : }
433 : }
434 0 : rReq.Done();
435 0 : break;
436 : }
437 :
438 : case SID_OUTPUT_QUALITY_COLOR:
439 : case SID_OUTPUT_QUALITY_GRAYSCALE:
440 : case SID_OUTPUT_QUALITY_BLACKWHITE:
441 : case SID_OUTPUT_QUALITY_CONTRAST:
442 : {
443 0 : ExecReq( rReq );
444 0 : break;
445 : }
446 :
447 : case SID_MAIL_SCROLLBODY_PAGEDOWN:
448 : {
449 0 : ExecReq( rReq );
450 0 : break;
451 : }
452 :
453 : case SID_ATTR_YEAR2000:
454 : {
455 0 : FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell();
456 0 : if (pFormShell != NULL)
457 : {
458 : const SfxPoolItem* pItem;
459 0 : if (rReq.GetArgs()->GetItemState(
460 0 : SID_ATTR_YEAR2000, true, &pItem) == SFX_ITEM_SET)
461 : pFormShell->SetY2KState (
462 0 : static_cast<const SfxUInt16Item*>(pItem)->GetValue());
463 : }
464 :
465 0 : rReq.Done();
466 : }
467 0 : break;
468 :
469 : case SID_OPT_LOCALE_CHANGED:
470 : {
471 0 : GetActiveWindow()->Invalidate();
472 0 : UpdatePreview( mpActualPage );
473 0 : rReq.Done();
474 : }
475 :
476 : default:
477 0 : break;
478 : }
479 : }
480 :
481 :
482 0 : void DrawViewShell::ExecRuler(SfxRequest& rReq)
483 : {
484 : // nothing is executed during a slide show!
485 0 : if(HasCurrentFunction(SID_PRESENTATION))
486 0 : return;
487 :
488 0 : CheckLineTo (rReq);
489 :
490 0 : const SfxItemSet* pArgs = rReq.GetArgs();
491 0 : const Point aPagePos( GetActiveWindow()->GetViewOrigin() );
492 0 : Size aPageSize = mpActualPage->GetSize();
493 0 : Size aViewSize = GetActiveWindow()->GetViewSize();
494 0 : SdUndoGroup* pUndoGroup = NULL;
495 :
496 0 : if ( rReq.GetSlot() == SID_ATTR_LONG_LRSPACE ||
497 0 : rReq.GetSlot() == SID_ATTR_LONG_ULSPACE )
498 : {
499 0 : pUndoGroup = new SdUndoGroup(GetDoc());
500 0 : OUString aString(SdResId(STR_UNDO_CHANGE_PAGEBORDER));
501 0 : pUndoGroup->SetComment(aString);
502 : }
503 :
504 0 : switch ( rReq.GetSlot() )
505 : {
506 : case SID_ATTR_LONG_LRSPACE:
507 : {
508 : const SvxLongLRSpaceItem& rLRSpace = (const SvxLongLRSpaceItem&)
509 0 : pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_LRSPACE));
510 :
511 0 : if( mpDrawView->IsTextEdit() )
512 : {
513 0 : Rectangle aRect = maMarkRect;
514 0 : aRect.SetPos(aRect.TopLeft() + aPagePos);
515 0 : aRect.Left() = rLRSpace.GetLeft();
516 0 : aRect.Right() = aViewSize.Width() - rLRSpace.GetRight();
517 0 : aRect.SetPos(aRect.TopLeft() - aPagePos);
518 0 : if ( aRect != maMarkRect)
519 : {
520 0 : mpDrawView->SetAllMarkedRect(aRect);
521 0 : maMarkRect = mpDrawView->GetAllMarkedRect();
522 0 : Invalidate( SID_RULER_OBJECT );
523 : }
524 : }
525 : else
526 : {
527 0 : long nLeft = std::max(0L, rLRSpace.GetLeft() - aPagePos.X());
528 0 : long nRight = std::max(0L, rLRSpace.GetRight() + aPagePos.X() +
529 0 : aPageSize.Width() - aViewSize.Width());
530 :
531 0 : sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind);
532 : sal_uInt16 i;
533 0 : for ( i = 0; i < nPageCnt; i++)
534 : {
535 0 : SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind);
536 0 : SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(),
537 : pPage,
538 0 : pPage->GetLftBorder(),
539 0 : pPage->GetRgtBorder(),
540 0 : nLeft, nRight);
541 0 : pUndoGroup->AddAction(pUndo);
542 0 : pPage->SetLftBorder(nLeft);
543 0 : pPage->SetRgtBorder(nRight);
544 : }
545 0 : nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
546 :
547 0 : for (i = 0; i < nPageCnt; i++)
548 : {
549 0 : SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind);
550 0 : SdUndoAction* pUndo = new SdPageLRUndoAction(GetDoc(),
551 : pPage,
552 0 : pPage->GetLftBorder(),
553 0 : pPage->GetRgtBorder(),
554 0 : nLeft, nRight);
555 0 : pUndoGroup->AddAction(pUndo);
556 0 : pPage->SetLftBorder(nLeft);
557 0 : pPage->SetRgtBorder(nRight);
558 : }
559 0 : InvalidateWindows();
560 : }
561 0 : break;
562 : }
563 : case SID_ATTR_LONG_ULSPACE:
564 : {
565 : const SvxLongULSpaceItem& rULSpace = (const SvxLongULSpaceItem&)
566 0 : pArgs->Get(GetPool().GetWhich(SID_ATTR_LONG_ULSPACE));
567 :
568 0 : if( mpDrawView->IsTextEdit() )
569 : {
570 0 : Rectangle aRect = maMarkRect;
571 0 : aRect.SetPos(aRect.TopLeft() + aPagePos);
572 0 : aRect.Top() = rULSpace.GetUpper();
573 0 : aRect.Bottom() = aViewSize.Height() - rULSpace.GetLower();
574 0 : aRect.SetPos(aRect.TopLeft() - aPagePos);
575 :
576 0 : if ( aRect != maMarkRect)
577 : {
578 0 : mpDrawView->SetAllMarkedRect(aRect);
579 0 : maMarkRect = mpDrawView->GetAllMarkedRect();
580 0 : Invalidate( SID_RULER_OBJECT );
581 : }
582 : }
583 : else
584 : {
585 0 : long nUpper = std::max(0L, rULSpace.GetUpper() - aPagePos.Y());
586 0 : long nLower = std::max(0L, rULSpace.GetLower() + aPagePos.Y() +
587 0 : aPageSize.Height() - aViewSize.Height());
588 :
589 0 : sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind);
590 : sal_uInt16 i;
591 0 : for ( i = 0; i < nPageCnt; i++)
592 : {
593 0 : SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind);
594 0 : SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(),
595 : pPage,
596 0 : pPage->GetUppBorder(),
597 0 : pPage->GetLwrBorder(),
598 0 : nUpper, nLower);
599 0 : pUndoGroup->AddAction(pUndo);
600 0 : pPage->SetUppBorder(nUpper);
601 0 : pPage->SetLwrBorder(nLower);
602 : }
603 0 : nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
604 :
605 0 : for (i = 0; i < nPageCnt; i++)
606 : {
607 0 : SdPage* pPage = GetDoc()->GetMasterSdPage(i, mePageKind);
608 0 : SdUndoAction* pUndo = new SdPageULUndoAction(GetDoc(),
609 : pPage,
610 0 : pPage->GetUppBorder(),
611 0 : pPage->GetLwrBorder(),
612 0 : nUpper, nLower);
613 0 : pUndoGroup->AddAction(pUndo);
614 0 : pPage->SetUppBorder(nUpper);
615 0 : pPage->SetLwrBorder(nLower);
616 : }
617 0 : InvalidateWindows();
618 : }
619 0 : break;
620 : }
621 :
622 : case SID_RULER_OBJECT:
623 : {
624 0 : Rectangle aRect = maMarkRect;
625 0 : aRect.SetPos(aRect.TopLeft() + aPagePos);
626 :
627 : const SvxObjectItem& rOI = (const SvxObjectItem&)
628 0 : pArgs->Get(GetPool().GetWhich(SID_RULER_OBJECT));
629 :
630 0 : if ( rOI.GetStartX() != rOI.GetEndX() )
631 : {
632 0 : aRect.Left() = rOI.GetStartX();
633 0 : aRect.Right() = rOI.GetEndX();
634 : }
635 0 : if ( rOI.GetStartY() != rOI.GetEndY() )
636 : {
637 0 : aRect.Top() = rOI.GetStartY();
638 0 : aRect.Bottom() = rOI.GetEndY();
639 : }
640 0 : aRect.SetPos(aRect.TopLeft() - aPagePos);
641 0 : if ( aRect != maMarkRect)
642 : {
643 0 : mpDrawView->SetAllMarkedRect(aRect);
644 0 : maMarkRect = mpDrawView->GetAllMarkedRect();
645 0 : Invalidate( SID_RULER_OBJECT );
646 : }
647 0 : break;
648 : }
649 :
650 : case SID_ATTR_TABSTOP:
651 : {
652 0 : if( mpDrawView->IsTextEdit() )
653 : {
654 : const SvxTabStopItem& rItem = (const SvxTabStopItem&)
655 0 : pArgs->Get( EE_PARA_TABS );
656 :
657 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_TABS, EE_PARA_TABS );
658 :
659 0 : aEditAttr.Put( rItem );
660 0 : mpDrawView->SetAttributes( aEditAttr );
661 :
662 0 : Invalidate(SID_ATTR_TABSTOP);
663 : }
664 0 : break;
665 : }
666 :
667 : case SID_ATTR_PARA_LINESPACE:
668 : {
669 0 : sal_uInt16 nSlot = SID_ATTR_PARA_LINESPACE;
670 : SvxLineSpacingItem aParaLineSP = (const SvxLineSpacingItem&)pArgs->Get(
671 0 : GetPool().GetWhich(nSlot));
672 :
673 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_SBL, EE_PARA_SBL );
674 0 : aParaLineSP.SetWhich( EE_PARA_SBL );
675 :
676 0 : aEditAttr.Put( aParaLineSP );
677 0 : mpDrawView->SetAttributes( aEditAttr );
678 :
679 0 : Invalidate(SID_ATTR_PARA_LINESPACE);
680 : }
681 0 : break;
682 : case SID_ATTR_PARA_ADJUST_LEFT:
683 : {
684 0 : SvxAdjustItem aItem( SVX_ADJUST_LEFT, EE_PARA_JUST );
685 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_JUST, EE_PARA_JUST );
686 :
687 0 : aEditAttr.Put( aItem );
688 0 : mpDrawView->SetAttributes( aEditAttr );
689 :
690 0 : Invalidate(SID_ATTR_PARA_ADJUST_LEFT);
691 : }
692 0 : break;
693 : case SID_ATTR_PARA_ADJUST_CENTER:
694 : {
695 0 : SvxAdjustItem aItem( SVX_ADJUST_CENTER, EE_PARA_JUST );
696 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_JUST, EE_PARA_JUST );
697 :
698 0 : aEditAttr.Put( aItem );
699 0 : mpDrawView->SetAttributes( aEditAttr );
700 :
701 0 : Invalidate(SID_ATTR_PARA_ADJUST_CENTER);
702 : }
703 0 : break;
704 : case SID_ATTR_PARA_ADJUST_RIGHT:
705 : {
706 0 : SvxAdjustItem aItem( SVX_ADJUST_RIGHT, EE_PARA_JUST );
707 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_JUST, EE_PARA_JUST );
708 :
709 0 : aEditAttr.Put( aItem );
710 0 : mpDrawView->SetAttributes( aEditAttr );
711 :
712 0 : Invalidate(SID_ATTR_PARA_ADJUST_RIGHT);
713 : }
714 0 : break;
715 : case SID_ATTR_PARA_ADJUST_BLOCK:
716 : {
717 0 : SvxAdjustItem aItem( SVX_ADJUST_BLOCK, EE_PARA_JUST );
718 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_JUST, EE_PARA_JUST );
719 :
720 0 : aEditAttr.Put( aItem );
721 0 : mpDrawView->SetAttributes( aEditAttr );
722 :
723 0 : Invalidate(SID_ATTR_PARA_ADJUST_BLOCK);
724 : }
725 0 : break;
726 : case SID_ATTR_PARA_ULSPACE:
727 : {
728 0 : sal_uInt16 nSlot = SID_ATTR_PARA_ULSPACE;
729 : SvxULSpaceItem aULSP = (const SvxULSpaceItem&)pArgs->Get(
730 0 : GetPool().GetWhich(nSlot));
731 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_ULSPACE, EE_PARA_ULSPACE );
732 0 : aULSP.SetWhich( EE_PARA_ULSPACE );
733 :
734 0 : aEditAttr.Put( aULSP );
735 0 : mpDrawView->SetAttributes( aEditAttr );
736 :
737 0 : Invalidate(SID_ATTR_PARA_ULSPACE);
738 : }
739 0 : break;
740 :
741 : case SID_ATTR_PARA_LRSPACE:
742 : {
743 0 : sal_uInt16 nSlot = SID_ATTR_PARA_LRSPACE;
744 : SvxLRSpaceItem aLRSpace = (const SvxLRSpaceItem&)pArgs->Get(
745 0 : GetPool().GetWhich(nSlot));
746 :
747 0 : SfxItemSet aEditAttr( GetPool(), EE_PARA_LRSPACE, EE_PARA_LRSPACE );
748 0 : aLRSpace.SetWhich( EE_PARA_LRSPACE );
749 :
750 0 : aEditAttr.Put( aLRSpace );
751 0 : mpDrawView->SetAttributes( aEditAttr );
752 :
753 0 : Invalidate(SID_ATTR_PARA_LRSPACE);
754 0 : break;
755 : }
756 : case SID_ATTR_LRSPACE:
757 : {
758 0 : if( mpDrawView->IsTextEdit() )
759 : {
760 0 : sal_uInt16 nId = SID_ATTR_PARA_LRSPACE;
761 : const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&)
762 0 : pArgs->Get( nId );
763 :
764 : static const sal_uInt16 aWhichTable[]=
765 : {
766 : EE_PARA_OUTLLEVEL, EE_PARA_OUTLLEVEL,
767 : EE_PARA_LRSPACE, EE_PARA_LRSPACE,
768 : EE_PARA_NUMBULLET, EE_PARA_NUMBULLET,
769 : 0, 0
770 : };
771 :
772 0 : SfxItemSet aEditAttr( GetDoc()->GetPool(),
773 0 : aWhichTable );
774 0 : mpDrawView->GetAttributes( aEditAttr );
775 :
776 0 : nId = EE_PARA_LRSPACE;
777 : SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(),
778 : rItem.GetRight(), rItem.GetTxtLeft(),
779 0 : rItem.GetTxtFirstLineOfst(), nId );
780 :
781 0 : const sal_Int16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue();
782 0 : const SvxLRSpaceItem& rOrigLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE );
783 0 : const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET );
784 0 : if( nOutlineLevel != -1 &&
785 0 : rNumBulletItem.GetNumRule() &&
786 0 : rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel )
787 : {
788 0 : const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel);
789 0 : SvxNumberFormat aFormat(rFormat);
790 :
791 : // left margin gets distributed onto LRSpace item
792 : // and number format AbsLSpace - this fixes
793 : // n#707779 (previously, LRSpace left indent could
794 : // become negative - EditEngine really does not
795 : // like that.
796 0 : const short nAbsLSpace=aFormat.GetAbsLSpace();
797 0 : const long nTxtLeft=rItem.GetTxtLeft();
798 0 : const long nLeftIndent=std::max(0L,nTxtLeft - nAbsLSpace);
799 0 : aLRSpaceItem.SetTxtLeft(nLeftIndent);
800 : // control for clipped left indent - remainder
801 : // reduces number format first line indent
802 0 : aFormat.SetAbsLSpace(nTxtLeft - nLeftIndent);
803 :
804 : // negative first line indent goes to the number
805 : // format, positive to the lrSpace item
806 0 : if( rItem.GetTxtFirstLineOfst() < 0 )
807 : {
808 : aFormat.SetFirstLineOffset(
809 0 : rItem.GetTxtFirstLineOfst()
810 0 : - rOrigLRSpaceItem.GetTxtFirstLineOfst()
811 0 : + aFormat.GetCharTextDistance());
812 0 : aLRSpaceItem.SetTxtFirstLineOfst(0);
813 : }
814 : else
815 : {
816 0 : aFormat.SetFirstLineOffset(0);
817 : aLRSpaceItem.SetTxtFirstLineOfst(
818 0 : rItem.GetTxtFirstLineOfst()
819 0 : - aFormat.GetFirstLineOffset()
820 0 : + aFormat.GetCharTextDistance());
821 : }
822 :
823 0 : if( rFormat != aFormat )
824 : {
825 : // put all items
826 0 : SvxNumBulletItem aNumBulletItem(rNumBulletItem);
827 0 : aNumBulletItem.GetNumRule()->SetLevel(nOutlineLevel,aFormat);
828 0 : aEditAttr.Put( aNumBulletItem );
829 0 : aEditAttr.Put( aLRSpaceItem );
830 0 : mpDrawView->SetAttributes( aEditAttr );
831 :
832 0 : Invalidate(SID_ATTR_PARA_LRSPACE);
833 0 : break;
834 0 : }
835 : }
836 :
837 : // only put lrSpace item
838 0 : SfxItemSet aEditAttrReduced( GetDoc()->GetPool(),
839 0 : EE_PARA_LRSPACE, EE_PARA_LRSPACE );
840 0 : aEditAttrReduced.Put( aLRSpaceItem );
841 0 : mpDrawView->SetAttributes( aEditAttrReduced );
842 :
843 0 : Invalidate(SID_ATTR_PARA_LRSPACE);
844 : }
845 0 : break;
846 : }
847 : }
848 0 : if ( pUndoGroup )
849 : // give the undo group to the undo manager
850 0 : GetViewFrame()->GetObjectShell()->GetUndoManager()->
851 0 : AddUndoAction(pUndoGroup);
852 : }
853 :
854 :
855 0 : void DrawViewShell::GetRulerState(SfxItemSet& rSet)
856 : {
857 0 : Point aOrigin;
858 :
859 0 : if (mpDrawView->GetSdrPageView())
860 : {
861 0 : aOrigin = mpDrawView->GetSdrPageView()->GetPageOrigin();
862 : }
863 :
864 0 : Size aViewSize = GetActiveWindow()->GetViewSize();
865 :
866 0 : const Point aPagePos( GetActiveWindow()->GetViewOrigin() );
867 0 : Size aPageSize = mpActualPage->GetSize();
868 :
869 0 : Rectangle aRect(aPagePos, Point( aViewSize.Width() - (aPagePos.X() + aPageSize.Width()),
870 0 : aViewSize.Height() - (aPagePos.Y() + aPageSize.Height())));
871 :
872 0 : if( mpDrawView->IsTextEdit() )
873 : {
874 0 : Point aPnt1 = GetActiveWindow()->GetWinViewPos();
875 0 : Rectangle aMinMaxRect = Rectangle( aPnt1, Size(ULONG_MAX, ULONG_MAX) );
876 0 : rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aMinMaxRect) );
877 : }
878 : else
879 : {
880 0 : rSet.Put( SfxRectangleItem(SID_RULER_LR_MIN_MAX, aRect) );
881 : }
882 :
883 0 : SvxLongLRSpaceItem aLRSpace(aPagePos.X() + mpActualPage->GetLftBorder(),
884 0 : aRect.Right() + mpActualPage->GetRgtBorder(),
885 0 : GetPool().GetWhich(SID_ATTR_LONG_LRSPACE));
886 0 : SvxLongULSpaceItem aULSpace(aPagePos.Y() + mpActualPage->GetUppBorder(),
887 0 : aRect.Bottom() + mpActualPage->GetLwrBorder(),
888 0 : GetPool().GetWhich(SID_ATTR_LONG_ULSPACE));
889 0 : rSet.Put(SvxPagePosSizeItem(Point(0,0) - aPagePos, aViewSize.Width(),
890 0 : aViewSize.Height()));
891 0 : SfxPointItem aPointItem( SID_RULER_NULL_OFFSET, aPagePos + aOrigin );
892 :
893 0 : SvxProtectItem aProtect( SID_RULER_PROTECT );
894 :
895 0 : maMarkRect = mpDrawView->GetAllMarkedRect();
896 :
897 0 : const sal_Bool bRTL = GetDoc() && GetDoc()->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB;
898 0 : rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, bRTL));
899 :
900 0 : if( mpDrawView->AreObjectsMarked() )
901 : {
902 0 : if( mpDrawView->IsTextEdit() )
903 : {
904 0 : SdrObject* pObj = mpDrawView->GetMarkedObjectList().GetMark( 0 )->GetMarkedSdrObj();
905 0 : if( pObj->GetObjInventor() == SdrInventor)
906 : {
907 0 : SfxItemSet aEditAttr( GetDoc()->GetPool() );
908 0 : mpDrawView->GetAttributes( aEditAttr );
909 0 : if( aEditAttr.GetItemState( EE_PARA_TABS ) >= SFX_ITEM_AVAILABLE )
910 : {
911 0 : const SvxTabStopItem& rItem = (const SvxTabStopItem&) aEditAttr.Get( EE_PARA_TABS );
912 0 : rSet.Put( rItem );
913 :
914 0 : const SvxLRSpaceItem& rLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE );
915 0 : sal_uInt16 nId = SID_ATTR_PARA_LRSPACE;
916 : SvxLRSpaceItem aLRSpaceItem( rLRSpaceItem.GetLeft(),
917 : rLRSpaceItem.GetRight(), rLRSpaceItem.GetTxtLeft(),
918 0 : rLRSpaceItem.GetTxtFirstLineOfst(), nId );
919 :
920 0 : const sal_Int16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue();
921 0 : const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET );
922 0 : if( nOutlineLevel != -1 &&
923 0 : rNumBulletItem.GetNumRule() &&
924 0 : rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel )
925 : {
926 0 : const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel);
927 0 : aLRSpaceItem.SetTxtLeft(rFormat.GetAbsLSpace() + rLRSpaceItem.GetTxtLeft());
928 : aLRSpaceItem.SetTxtFirstLineOfst(
929 0 : rLRSpaceItem.GetTxtFirstLineOfst() + rFormat.GetFirstLineOffset()
930 0 : - rFormat.GetCharTextDistance());
931 : }
932 :
933 0 : rSet.Put( aLRSpaceItem );
934 :
935 0 : Point aPos( aPagePos + maMarkRect.TopLeft() );
936 :
937 0 : if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON )
938 : {
939 : const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&)
940 0 : aEditAttr.Get( SDRATTR_TEXT_LEFTDIST );
941 0 : long nLD = rTLDItem.GetValue();
942 0 : aPos.X() += nLD;
943 : }
944 :
945 0 : aPointItem.SetValue( aPos );
946 :
947 0 : aLRSpace.SetLeft( aPagePos.X() + maMarkRect.Left() );
948 :
949 0 : if ( aEditAttr.GetItemState( SDRATTR_TEXT_LEFTDIST ) == SFX_ITEM_ON )
950 : {
951 : const SdrTextLeftDistItem& rTLDItem = (const SdrTextLeftDistItem&)
952 0 : aEditAttr.Get( SDRATTR_TEXT_LEFTDIST );
953 0 : long nLD = rTLDItem.GetValue();
954 0 : aLRSpace.SetLeft( aLRSpace.GetLeft() + nLD );
955 : }
956 :
957 0 : aLRSpace.SetRight( aRect.Right() + aPageSize.Width() - maMarkRect.Right() );
958 0 : aULSpace.SetUpper( aPagePos.Y() + maMarkRect.Top() );
959 0 : aULSpace.SetLower( aRect.Bottom() + aPageSize.Height() - maMarkRect.Bottom() );
960 :
961 0 : rSet.DisableItem( SID_RULER_OBJECT );
962 :
963 : // lock page margins
964 0 : aProtect.SetSizeProtect( true );
965 0 : aProtect.SetPosProtect( true );
966 : }
967 :
968 0 : if( aEditAttr.GetItemState( EE_PARA_WRITINGDIR ) >= SFX_ITEM_AVAILABLE )
969 : {
970 0 : const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&) aEditAttr.Get( EE_PARA_WRITINGDIR );
971 0 : rSet.Put(SfxBoolItem(SID_RULER_TEXT_RIGHT_TO_LEFT, rItem.GetValue() == ::com::sun::star::text::WritingMode_RL_TB));
972 0 : }
973 : }
974 : }
975 : else
976 : {
977 0 : rSet.DisableItem( EE_PARA_TABS );
978 0 : rSet.DisableItem( SID_RULER_TEXT_RIGHT_TO_LEFT );
979 :
980 0 : if( mpDrawView->IsResizeAllowed(true) )
981 : {
982 0 : Rectangle aResizeRect( maMarkRect );
983 :
984 0 : aResizeRect.SetPos(aResizeRect.TopLeft() + aPagePos);
985 0 : SvxObjectItem aObjItem(aResizeRect.Left(), aResizeRect.Right(),
986 0 : aResizeRect.Top(), aResizeRect.Bottom());
987 0 : rSet.Put(aObjItem);
988 0 : rSet.DisableItem( EE_PARA_TABS );
989 : }
990 : else
991 : {
992 0 : rSet.DisableItem( SID_RULER_OBJECT );
993 : }
994 : }
995 : }
996 : else
997 : {
998 0 : rSet.DisableItem( SID_RULER_OBJECT );
999 0 : rSet.DisableItem( EE_PARA_TABS );
1000 : }
1001 :
1002 0 : rSet.Put( aLRSpace );
1003 0 : rSet.Put( aULSpace );
1004 :
1005 0 : rSet.Put( aPointItem );
1006 0 : rSet.Put( aProtect );
1007 0 : }
1008 :
1009 :
1010 0 : void DrawViewShell::ExecStatusBar(SfxRequest& rReq)
1011 : {
1012 : // nothing is executed during a slide show!
1013 0 : if(HasCurrentFunction(SID_PRESENTATION))
1014 0 : return;
1015 :
1016 0 : CheckLineTo (rReq);
1017 :
1018 0 : switch ( rReq.GetSlot() )
1019 : {
1020 : case SID_ATTR_SIZE:
1021 : {
1022 0 : GetViewFrame()->GetDispatcher()->Execute( SID_ATTR_TRANSFORM, SFX_CALLMODE_ASYNCHRON );
1023 : }
1024 0 : break;
1025 :
1026 : case SID_STATUS_LAYOUT:
1027 : {
1028 0 : GetViewFrame()->GetDispatcher()->Execute( SID_PRESENTATION_LAYOUT, SFX_CALLMODE_ASYNCHRON );
1029 : }
1030 0 : break;
1031 : }
1032 : }
1033 :
1034 : /**
1035 : * set state of snap object entries in popup
1036 : */
1037 0 : void DrawViewShell::GetSnapItemState( SfxItemSet &rSet )
1038 : {
1039 : SdrPageView* pPV;
1040 0 : Point aMPos = GetActiveWindow()->PixelToLogic(maMousePos);
1041 0 : sal_uInt16 nHitLog = (sal_uInt16) GetActiveWindow()->PixelToLogic(
1042 0 : Size(FuPoor::HITPIX,0)).Width();
1043 : sal_uInt16 nHelpLine;
1044 :
1045 0 : if ( mpDrawView->PickHelpLine(aMPos, nHitLog, *GetActiveWindow(), nHelpLine, pPV) )
1046 : {
1047 0 : const SdrHelpLine& rHelpLine = (pPV->GetHelpLines())[nHelpLine];
1048 :
1049 0 : if ( rHelpLine.GetKind() == SDRHELPLINE_POINT )
1050 : {
1051 : rSet.Put( SfxStringItem( SID_SET_SNAPITEM,
1052 0 : SD_RESSTR( STR_POPUP_EDIT_SNAPPOINT)) );
1053 : rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM,
1054 0 : SD_RESSTR( STR_POPUP_DELETE_SNAPPOINT)) );
1055 : }
1056 : else
1057 : {
1058 : rSet.Put( SfxStringItem( SID_SET_SNAPITEM,
1059 0 : SD_RESSTR( STR_POPUP_EDIT_SNAPLINE)) );
1060 : rSet.Put( SfxStringItem( SID_DELETE_SNAPITEM,
1061 0 : SD_RESSTR( STR_POPUP_DELETE_SNAPLINE)) );
1062 : }
1063 : }
1064 0 : }
1065 :
1066 0 : void DrawViewShell::AddWindow (::sd::Window* pWin)
1067 : {
1068 0 : mpDrawView->AddWindowToPaintView(pWin);
1069 0 : }
1070 :
1071 0 : void DrawViewShell::RemoveWindow(::sd::Window* pWin)
1072 : {
1073 0 : mpDrawView->DeleteWindowFromPaintView(pWin);
1074 0 : }
1075 :
1076 0 : } // end of namespace sd
1077 :
1078 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|