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