LibreOffice Module svx (master)  1
fmview.cxx
Go to the documentation of this file.
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 <sfx2/docfile.hxx>
21 #ifdef REFERENCE
22 #undef REFERENCE
23 #endif
24 #include <com/sun/star/sdb/SQLContext.hpp>
25 #include <com/sun/star/sdbc/XConnection.hpp>
26 #include <com/sun/star/form/XLoadable.hpp>
27 #include <fmvwimp.hxx>
28 #include <sfx2/objsh.hxx>
29 #include <sfx2/viewsh.hxx>
30 #include <sfx2/viewfrm.hxx>
31 #include <sfx2/bindings.hxx>
32 #include <fmobj.hxx>
33 #include <svx/svditer.hxx>
34 #include <svx/svdpagv.hxx>
35 #include <svx/fmview.hxx>
36 #include <svx/fmmodel.hxx>
37 #include <svx/fmpage.hxx>
38 #include <svx/fmshell.hxx>
39 #include <fmshimp.hxx>
40 #include <fmservs.hxx>
41 #include <fmundo.hxx>
44 #include <com/sun/star/lang/XServiceInfo.hpp>
45 #include <tools/debug.hxx>
46 #include <svx/sdrpagewindow.hxx>
47 #include <svx/sdrpaintwindow.hxx>
48 #include <svx/svxids.hrc>
49 
50 using namespace ::com::sun::star;
51 using namespace ::com::sun::star::uno;
52 using namespace ::com::sun::star::lang;
53 using namespace ::com::sun::star::sdbc;
54 using namespace ::com::sun::star::sdb;
55 using namespace ::com::sun::star::beans;
56 using namespace ::com::sun::star::container;
57 using namespace ::com::sun::star::form;
58 using namespace ::com::sun::star::util;
59 using namespace ::svxform;
60 using namespace ::svx;
61 
63  SdrModel& rSdrModel,
64  OutputDevice* pOut)
65 : E3dView(rSdrModel, pOut)
66 {
67  Init();
68 }
69 
71 {
72  pFormShell = nullptr;
73  pImpl = new FmXFormView(this);
74 
75  // set model
76  SdrModel* pModel = GetModel();
77 
78  DBG_ASSERT( dynamic_cast<const FmFormModel*>( pModel) != nullptr, "Wrong model" );
79  if( dynamic_cast<const FmFormModel*>( pModel) == nullptr ) return;
80  FmFormModel* pFormModel = static_cast<FmFormModel*>(pModel);
81 
82 
83  // get DesignMode from model
84  bool bInitDesignMode = pFormModel->GetOpenInDesignMode();
85  if ( pFormModel->OpenInDesignModeIsDefaulted( ) )
86  { // this means that nobody ever explicitly set this on the model, and the model has never
87  // been loaded from a stream.
88  // This means this is a newly created document. This means, we want to have it in design
89  // mode by default (though a newly created model returns true for GetOpenInDesignMode).
90  // We _want_ to have this because it makes a lot of hacks following the original fix
91  DBG_ASSERT( !bInitDesignMode, "FmFormView::Init: doesn't the model default to FALSE anymore?" );
92  // if this asserts, either the on-construction default in the model has changed (then this here
93  // may not be necessary anymore), or we're not dealing with a new document...
94  bInitDesignMode = true;
95  }
96 
97  SfxObjectShell* pObjShell = pFormModel->GetObjectShell();
98  if ( pObjShell && pObjShell->GetMedium() )
99  {
100  const SfxPoolItem *pItem=nullptr;
101  if ( pObjShell->GetMedium()->GetItemSet()->GetItemState( SID_COMPONENTDATA, false, &pItem ) == SfxItemState::SET )
102  {
103  ::comphelper::NamedValueCollection aComponentData( static_cast<const SfxUnoAnyItem*>(pItem)->GetValue() );
104  bInitDesignMode = aComponentData.getOrDefault( "ApplyFormDesignMode", bInitDesignMode );
105  }
106  }
107 
108  // this will be done in the shell
109  // bDesignMode = !bInitDesignMode; // forces execution of SetDesignMode
110  SetDesignMode( bInitDesignMode );
111 }
112 
113 
115 {
116  if( pFormShell )
117  pFormShell->SetView( nullptr );
118 
119  pImpl->notifyViewDying();
120 }
121 
122 
124 {
125  SdrPageView* pPageView = GetSdrPageView();
126  FmFormPage* pCurPage = pPageView ? dynamic_cast<FmFormPage*>( pPageView->GetPage() ) : nullptr;
127  return pCurPage;
128 }
129 
130 
132 {
134 
135  if ( pFormShell && IsDesignMode() )
136  {
137  FmFormObj* pObj = getMarkedGrid();
138  if ( pImpl->m_pMarkedGrid && pImpl->m_pMarkedGrid != pObj )
139  {
140  pImpl->m_pMarkedGrid = nullptr;
141  if ( pImpl->m_xWindow.is() )
142  {
143  pImpl->m_xWindow->removeFocusListener(pImpl.get());
144  pImpl->m_xWindow = nullptr;
145  }
146  SetMoveOutside(false);
147  //OLMRefreshAllIAOManagers();
148  }
149 
150  pFormShell->GetImpl()->SetSelectionDelayed_Lock();
151  }
152 }
153 
154 namespace
155 {
156  const SdrPageWindow* findPageWindow( const SdrPaintView* _pView, OutputDevice const * _pWindow )
157  {
158  SdrPageView* pPageView = _pView->GetSdrPageView();
159  if(pPageView)
160  {
161  for ( sal_uInt32 window = 0; window < pPageView->PageWindowCount(); ++window )
162  {
163  const SdrPageWindow* pPageWindow = pPageView->GetPageWindow( window );
164  if ( !pPageWindow || &pPageWindow->GetPaintWindow().GetOutputDevice() != _pWindow )
165  continue;
166 
167  return pPageWindow;
168  }
169  }
170  return nullptr;
171  }
172 }
173 
174 
176 {
177  E3dView::AddWindowToPaintView(pNewWin, pWindow);
178 
179  if ( !pNewWin )
180  return;
181 
182  // look up the PageViewWindow for the newly inserted window, and care for it
183  // #i39269# / 2004-12-20 / frank.schoenheit@sun.com
184  const SdrPageWindow* pPageWindow = findPageWindow( this, pNewWin );
185  if ( pPageWindow )
186  pImpl->addWindow( *pPageWindow );
187 }
188 
189 
191 {
192  const SdrPageWindow* pPageWindow = findPageWindow( this, pNewWin );
193  if ( pPageWindow )
194  pImpl->removeWindow( pPageWindow->GetControlContainer() );
195 
197 }
198 
199 
201 {
202  if (bDesign == IsDesignMode())
203  return;
204 
205  FmFormModel* pModel = dynamic_cast<FmFormModel*>( GetModel() );
206  if (pModel)
207  { // For the duration of the transition the Undo-Environment is disabled. This ensures that non-transient Properties can
208  // also be changed (this should be done with care and also reversed before switching the mode back. An example is the
209  // setting of the maximal length of the text by FmXEditModel on its control.)
210  pModel->GetUndoEnv().Lock();
211  }
212 
213  // --- 1. deactivate all controls if we are switching to design mode
214  if ( bDesign )
216 
217  // --- 2. simulate a deactivation (the shell will handle some things there ...?)
218  if ( pFormShell && pFormShell->GetImpl() )
219  pFormShell->GetImpl()->viewDeactivated_Lock(*this);
220  else
221  pImpl->Deactivate();
222 
223  // --- 3. activate all controls, if we're switching to alive mode
224  if ( !bDesign )
226 
227  // --- 4. load resp. unload the forms
228  FmFormPage* pCurPage = GetCurPage();
229  if ( pCurPage )
230  {
231  if ( pFormShell && pFormShell->GetImpl() )
232  pFormShell->GetImpl()->loadForms_Lock(pCurPage, (bDesign ? LoadFormsFlags::Unload : LoadFormsFlags::Load));
233  }
234 
235  // --- 5. base class functionality
236  SetDesignMode( bDesign );
237 
238  // --- 6. simulate an activation (the shell will handle some things there ...?)
239  OSL_PRECOND( pFormShell && pFormShell->GetImpl(), "FmFormView::ChangeDesignMode: is this really allowed? No shell?" );
240  if ( pFormShell && pFormShell->GetImpl() )
241  pFormShell->GetImpl()->viewActivated_Lock(*this);
242  else
243  pImpl->Activate();
244 
245  if ( pCurPage )
246  {
247  if ( bDesign )
248  {
249  if ( GetActualOutDev() && GetActualOutDev()->GetOutDevType() == OUTDEV_WINDOW )
250  {
251  const vcl::Window* pWindow = static_cast< const vcl::Window* >( GetActualOutDev() );
252  const_cast< vcl::Window* >( pWindow )->GrabFocus();
253  }
254 
255  // redraw UNO objects
256  if ( GetSdrPageView() )
257  {
258  SdrObjListIter aIter(pCurPage);
259  while( aIter.IsMore() )
260  {
261  SdrObject* pObj = aIter.Next();
262  if (pObj && pObj->IsUnoObj())
263  {
264  // For redraw just use ActionChanged()
265  // pObj->BroadcastObjectChange();
266  pObj->ActionChanged();
267  }
268  }
269  }
270  }
271  else
272  {
273  // set the auto focus to the first control (if indicated by the model to do so)
274  bool bForceControlFocus = pModel && pModel->GetAutoControlFocus();
275  if (bForceControlFocus)
276  pImpl->AutoFocus();
277  }
278  }
279 
280  // Unlock Undo-Environment
281  if (pModel)
282  pModel->GetUndoEnv().UnLock();
283 }
284 
285 
287 {
288  if ( !IsDesignMode() )
289  pImpl->AutoFocus();
290 }
291 
292 
294 {
295  SdrPageView* pPV = E3dView::ShowSdrPage(pPage);
296 
297  if (pPage)
298  {
299  if (!IsDesignMode())
300  {
301  // creating the controllers
302  ActivateControls(pPV);
303 
304  // Deselect all
305  UnmarkAll();
306  }
307  else if ( pFormShell && pFormShell->IsDesignMode() )
308  {
309  FmXFormShell* pFormShellImpl = pFormShell->GetImpl();
310  pFormShellImpl->UpdateForms_Lock(true);
311 
312  // so that the form navigator can react to the pagechange
313  pFormShell->GetViewShell()->GetViewFrame()->GetBindings().Invalidate(SID_FM_FMEXPLORER_CONTROL, true);
314 
315  pFormShellImpl->SetSelection_Lock(GetMarkedObjectList());
316  }
317  }
318 
319  // notify our shell that we have been activated
320  if ( pFormShell && pFormShell->GetImpl() )
321  pFormShell->GetImpl()->viewActivated_Lock(*this);
322  else
323  pImpl->Activate();
324 
325  return pPV;
326 }
327 
328 
330 {
331  // --- 1. deactivate controls
332  if ( !IsDesignMode() )
334 
335  // --- 2. tell the shell the view is (going to be) deactivated
336  if ( pFormShell && pFormShell->GetImpl() )
337  pFormShell->GetImpl()->viewDeactivated_Lock(*this);
338  else
339  pImpl->Deactivate();
340 
341  // --- 3. base class behavior
343 }
344 
345 
347 {
348  if (!pPageView)
349  return;
350 
351  for (sal_uInt32 i = 0; i < pPageView->PageWindowCount(); ++i)
352  {
353  const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(i);
354  pImpl->addWindow(rPageWindow);
355  }
356 }
357 
358 
360 {
361  if( !pPageView )
362  return;
363 
364  for (sal_uInt32 i = 0; i < pPageView->PageWindowCount(); ++i)
365  {
366  const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(i);
367  pImpl->removeWindow(rPageWindow.GetControlContainer() );
368  }
369 }
370 
371 
372 SdrObjectUniquePtr FmFormView::CreateFieldControl( const ODataAccessDescriptor& _rColumnDescriptor )
373 {
374  return pImpl->implCreateFieldControl( _rColumnDescriptor );
375 }
376 
377 
378 SdrObjectUniquePtr FmFormView::CreateXFormsControl( const OXFormsDescriptor &_rDesc )
379 {
380  return pImpl->implCreateXFormsControl(_rDesc);
381 }
382 
383 
384 SdrObjectUniquePtr FmFormView::CreateFieldControl(const OUString& rFieldDesc) const
385 {
386  sal_Int32 nIdx{ 0 };
387  OUString sDataSource = rFieldDesc.getToken(0, u'\x000B', nIdx);
388  OUString sObjectName = rFieldDesc.getToken(0, u'\x000B', nIdx);
389  sal_uInt16 nObjectType = static_cast<sal_uInt16>(rFieldDesc.getToken(0, u'\x000B', nIdx).toInt32());
390  OUString sFieldName = rFieldDesc.getToken(0, u'\x000B', nIdx);
391 
392  if (sFieldName.isEmpty() || sObjectName.isEmpty() || sDataSource.isEmpty())
393  return nullptr;
394 
395  ODataAccessDescriptor aColumnDescriptor;
396  aColumnDescriptor.setDataSource(sDataSource);
397  aColumnDescriptor[ DataAccessDescriptorProperty::Command ] <<= sObjectName;
398  aColumnDescriptor[ DataAccessDescriptorProperty::CommandType ] <<= nObjectType;
399  aColumnDescriptor[ DataAccessDescriptorProperty::ColumnName ] <<= sFieldName;
400 
401  return pImpl->implCreateFieldControl( aColumnDescriptor );
402 }
403 
404 
405 void FmFormView::InsertControlContainer(const Reference< css::awt::XControlContainer > & xCC)
406 {
407  if( !IsDesignMode() )
408  {
409  SdrPageView* pPageView = GetSdrPageView();
410  if( pPageView )
411  {
412  for( sal_uInt32 i = 0; i < pPageView->PageWindowCount(); i++ )
413  {
414  const SdrPageWindow& rPageWindow = *pPageView->GetPageWindow(i);
415 
416  if( rPageWindow.GetControlContainer( false ) == xCC )
417  {
418  pImpl->addWindow(rPageWindow);
419  break;
420  }
421  }
422  }
423  }
424 }
425 
426 
427 void FmFormView::RemoveControlContainer(const Reference< css::awt::XControlContainer > & xCC)
428 {
429  if( !IsDesignMode() )
430  {
431  pImpl->removeWindow( xCC );
432  }
433 }
434 
435 
437 {
438  SdrPaintWindow* pPaintWindow = E3dView::BeginCompleteRedraw( pOut );
439  pImpl->suspendTabOrderUpdate();
440  return pPaintWindow;
441 }
442 
443 
444 void FmFormView::EndCompleteRedraw( SdrPaintWindow& rPaintWindow, bool bPaintFormLayer )
445 {
446  E3dView::EndCompleteRedraw( rPaintWindow, bPaintFormLayer );
447  pImpl->resumeTabOrderUpdate();
448 }
449 
450 
451 bool FmFormView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin)
452 {
453  bool bDone = false;
454  const vcl::KeyCode& rKeyCode = rKEvt.GetKeyCode();
455  if ( IsDesignMode()
456  && rKeyCode.GetCode() == KEY_RETURN
457  )
458  {
459  // RETURN alone enters grid controls, for keyboard accessibility
460  if ( pWin
461  && !rKeyCode.IsShift()
462  && !rKeyCode.IsMod1()
463  && !rKeyCode.IsMod2()
464  )
465  {
466  FmFormObj* pObj = getMarkedGrid();
467  if ( pObj )
468  {
469  Reference< awt::XWindow > xWindow( pObj->GetUnoControl( *this, *pWin ), UNO_QUERY );
470  if ( xWindow.is() )
471  {
472  pImpl->m_pMarkedGrid = pObj;
473  pImpl->m_xWindow = xWindow;
474  // add as listener to get notified when ESC will be pressed inside the grid
475  pImpl->m_xWindow->addFocusListener(pImpl.get());
476  SetMoveOutside(true);
477  //OLMRefreshAllIAOManagers();
478  xWindow->setFocus();
479  bDone = true;
480  }
481  }
482  }
483  // Alt-RETURN alone shows the properties of the selection
484  if ( pFormShell
485  && pFormShell->GetImpl()
486  && !rKeyCode.IsShift()
487  && !rKeyCode.IsMod1()
488  && rKeyCode.IsMod2()
489  )
490  {
491  pFormShell->GetImpl()->handleShowPropertiesRequest_Lock();
492  }
493 
494  }
495 
496  if ( !bDone )
497  bDone = E3dView::KeyInput(rKEvt,pWin);
498  return bDone;
499 }
500 
502 {
503  Reference< css::awt::XControl> xControl(pImpl->m_xWindow,UNO_QUERY);
504  bool bRet = !xControl.is() || !_xSource.is() || _xSource != xControl->getModel();
505  if ( bRet )
506  UnmarkAll();
507 
508  return bRet;
509 }
510 
511 
513 {
514  bool bReturn = E3dView::MouseButtonDown( _rMEvt, _pWin );
515 
516  if ( pFormShell && pFormShell->GetImpl() )
517  {
518  SdrViewEvent aViewEvent;
519  PickAnything( _rMEvt, SdrMouseEventKind::BUTTONDOWN, aViewEvent );
520  pFormShell->GetImpl()->handleMouseButtonDown_Lock(aViewEvent);
521  }
522 
523  return bReturn;
524 }
525 
526 
527 FmFormObj* FmFormView::getMarkedGrid() const
528 {
529  FmFormObj* pFormObject = nullptr;
530  const SdrMarkList& rMarkList = GetMarkedObjectList();
531  if ( 1 == rMarkList.GetMarkCount() )
532  {
533  SdrMark* pMark = rMarkList.GetMark(0);
534  if ( pMark )
535  {
536  pFormObject = FmFormObj::GetFormObject( pMark->GetMarkedSdrObj() );
537  if ( pFormObject )
538  {
539  Reference< XServiceInfo > xServInfo( pFormObject->GetUnoControlModel(), UNO_QUERY );
540  if ( !xServInfo.is() || !xServInfo->supportsService( FM_SUN_COMPONENT_GRIDCONTROL ) )
541  pFormObject = nullptr;
542  }
543  }
544  }
545  return pFormObject;
546 }
547 
548 
549 void FmFormView::createControlLabelPair( OutputDevice const * _pOutDev, sal_Int32 _nXOffsetMM, sal_Int32 _nYOffsetMM,
550  const Reference< XPropertySet >& _rxField, const Reference< XNumberFormats >& _rxNumberFormats,
551  sal_uInt16 _nControlObjectID, SdrInventor _nInventor, sal_uInt16 _nLabelObjectID,
552  SdrModel& _rModel,
553  std::unique_ptr<SdrUnoObj, SdrObjectFreeOp>& _rpLabel,
554  std::unique_ptr<SdrUnoObj, SdrObjectFreeOp>& _rpControl )
555 {
557  *_pOutDev, _nXOffsetMM, _nYOffsetMM,
558  _rxField, _rxNumberFormats,
559  _nControlObjectID, "", _nInventor, _nLabelObjectID,
560  _rModel,
561  _rpLabel, _rpControl
562  );
563 }
564 
565 Reference< runtime::XFormController > FmFormView::GetFormController( const Reference< XForm >& _rxForm, const OutputDevice& _rDevice ) const
566 {
567  return pImpl->getFormController( _rxForm, _rDevice );
568 }
569 
570 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SVX_DLLPRIVATE bool checkUnMarkAll(const css::uno::Reference< css::uno::XInterface > &_xSource)
Definition: fmview.cxx:501
SfxViewFrame * GetViewFrame() const
SVX_DLLPRIVATE void ActivateControls(SdrPageView const *)
Definition: fmview.cxx:346
size_t GetMarkCount() const
Definition: svdmark.hxx:180
virtual void DeleteWindowFromPaintView(OutputDevice *pOldWin) override
Definition: svdedxv.cxx:2315
void SetDesignMode(bool bOn=true)
Definition: svdmrkv.cxx:2505
virtual bool MouseButtonDown(const MouseEvent &rMEvt, OutputDevice *pWin) override
Definition: svdview.cxx:198
FmXFormShell * GetImpl() const
Definition: fmshell.hxx:118
std::string GetValue
SVX_DLLPRIVATE const OutputDevice * GetActualOutDev() const
Definition: fmview.hxx:145
FmFormShell * pFormShell
Definition: fmview.hxx:57
VALUE_TYPE getOrDefault(const char *_pAsciiValueName, const VALUE_TYPE &_rDefault) const
bool IsDesignMode() const
Definition: svdmrkv.hxx:236
void HideSdrPage() override
Definition: svdedxv.cxx:199
css::uno::Reference< css::awt::XControlContainer > const & GetControlContainer(bool _bCreateIfNecessary=true) const
SVX_DLLPRIVATE void GrabFirstControlFocus()
grab the focus to the first form control on the view
Definition: fmview.cxx:286
virtual SdrPageView * ShowSdrPage(SdrPage *pPage) override
Definition: fmview.cxx:293
sal_uInt16 GetCode() const
SdrInventor
Definition: svdobj.hxx:152
SdrMark * GetMark(size_t nNum) const
Definition: svdmark.cxx:229
virtual SdrPaintWindow * BeginCompleteRedraw(OutputDevice *pOut)
Definition: svdpntv.cxx:590
bool GetAutoControlFocus() const
Definition: fmmodel.hxx:64
SdrHitKind PickAnything(const MouseEvent &rMEvt, SdrMouseEventKind nMouseDownOrMoveOrUp, SdrViewEvent &rVEvt) const
Definition: svdview.cxx:251
void Invalidate(sal_uInt16 nId)
SVX_DLLPRIVATE void ChangeDesignMode(bool bDesign)
Definition: fmview.cxx:200
virtual void EndCompleteRedraw(SdrPaintWindow &rPaintWindow, bool bPaintFormLayer) override
Definition: fmview.cxx:444
static void createControlLabelPair(OutputDevice const *_pOutDev, sal_Int32 _nXOffsetMM, sal_Int32 _nYOffsetMM, const css::uno::Reference< css::beans::XPropertySet > &_rxField, const css::uno::Reference< css::util::XNumberFormats > &_rxNumberFormats, sal_uInt16 _nControlObjectID, SdrInventor _nInventor, sal_uInt16 _nLabelObjectID, SdrModel &_rModel, std::unique_ptr< SdrUnoObj, SdrObjectFreeOp > &_rpLabel, std::unique_ptr< SdrUnoObj, SdrObjectFreeOp > &_rpControl)
Definition: fmview.cxx:549
virtual void MarkListHasChanged() override
Definition: svdedxv.cxx:2475
virtual void DeleteWindowFromPaintView(OutputDevice *pOldWin) override
Definition: fmview.cxx:190
SdrObjectUniquePtr CreateXFormsControl(const svx::OXFormsDescriptor &_rDesc)
create a control pair (label/bound control) for the xforms description given.
Definition: fmview.cxx:378
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
Definition: svdpagv.cxx:81
void RemoveControlContainer(const css::uno::Reference< css::awt::XControlContainer > &xCC)
Definition: fmview.cxx:427
bool IsMore() const
Definition: svditer.hxx:62
OUTDEV_WINDOW
static bool createControlLabelPair(OutputDevice const &_rOutDev, sal_Int32 _nXOffsetMM, sal_Int32 _nYOffsetMM, const css::uno::Reference< css::beans::XPropertySet > &_rxField, const css::uno::Reference< css::util::XNumberFormats > &_rxNumberFormats, sal_uInt16 _nControlObjectID, const OUString &_rFieldPostfix, SdrInventor _nInventor, sal_uInt16 _nLabelObjectID, SdrModel &_rModel, std::unique_ptr< SdrUnoObj, SdrObjectFreeOp > &_rpLabel, std::unique_ptr< SdrUnoObj, SdrObjectFreeOp > &_rpControl)
FmXUndoEnvironment & GetUndoEnv()
Definition: fmmodel.cxx:203
SdrPageView * ShowSdrPage(SdrPage *pPage) override
Definition: svdedxv.cxx:131
void InsertControlContainer(const css::uno::Reference< css::awt::XControlContainer > &xCC)
Definition: fmview.cxx:405
void UnmarkAll()
Definition: svdview.cxx:1347
FmFormView(SdrModel &rSdrModel, OutputDevice *pOut)
Definition: fmview.cxx:62
void SetView(FmFormView *pView)
Definition: fmshell.cxx:1141
bool KeyInput(const KeyEvent &rKEvt, vcl::Window *pWin) override
Definition: fmview.cxx:451
SdrObject * GetMarkedSdrObj() const
Definition: svdmark.hxx:68
Everything a View needs to know about a selected object.
Definition: svdmark.hxx:44
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
#define DBG_ASSERT(sCon, aError)
int i
SfxBindings & GetBindings()
bool GetOpenInDesignMode() const
Definition: fmmodel.hxx:61
const SdrMarkList & GetMarkedObjectList() const
Definition: svdmrkv.hxx:252
void ActionChanged() const
Definition: svdobj.cxx:257
bool OpenInDesignModeIsDefaulted()
check whether the OpenInDesignMode has been set explicitly or been loaded () or if it still ha...
Definition: fmmodel.cxx:149
void SetMoveOutside(bool _bMoveOutside, ImplAccess)
Definition: fmview.hxx:138
float u
virtual ~FmFormView() override
Definition: fmview.cxx:114
rtl::Reference< FmXFormView > pImpl
Definition: fmview.hxx:56
SfxItemSet * GetItemSet() const
virtual bool MouseButtonDown(const MouseEvent &_rMEvt, OutputDevice *_pWin) override
Definition: fmview.cxx:512
Abstract DrawObject.
Definition: svdobj.hxx:312
SfxViewShell * GetViewShell() const
constexpr sal_uInt16 KEY_RETURN
FmFormPage * GetCurPage()
shortcut to "GetSdrPageView() ? PTR_CAST( FmFormPage, GetSdrPageView() ) : NULL"
Definition: fmview.cxx:123
SdrObject * Next()
Definition: svditer.hxx:63
const vcl::KeyCode & GetKeyCode() const
bool IsUnoObj() const
Definition: svdobj.hxx:797
Derived class of SdrView to edit 3D objects.
Definition: view3d.hxx:41
bool IsShift() const
virtual void MarkListHasChanged() override
Definition: fmview.cxx:131
SdrPage * GetPage() const
Definition: svdpagv.hxx:171
virtual SdrPaintWindow * BeginCompleteRedraw(OutputDevice *pOut) override
Definition: fmview.cxx:436
SdrObjectUniquePtr CreateFieldControl(const OUString &rFieldDesc) const
create a control pair (label/bound control) for the database field description given.
Definition: fmview.cxx:384
#define FM_SUN_COMPONENT_GRIDCONTROL
Definition: fmservs.hxx:63
void Init()
Definition: fmview.cxx:70
virtual bool IsDesignMode() const override
Definition: fmshell.hxx:158
bool IsMod1() const
SdrPaintWindow & GetPaintWindow() const
bool KeyInput(const KeyEvent &rKEvt, vcl::Window *pWin) override
Definition: svdview.cxx:161
virtual void AddWindowToPaintView(OutputDevice *pNewWin, vcl::Window *pWindow) override
Definition: svdedxv.cxx:2304
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
Definition: svdobj.hxx:114
virtual void AddWindowToPaintView(OutputDevice *pNewWin, vcl::Window *pWindow) override
Definition: fmview.cxx:175
SVX_DLLPRIVATE void DeactivateControls(SdrPageView const *)
Definition: fmview.cxx:359
SdrPageView * GetSdrPageView() const
Definition: svdpntv.hxx:310
virtual void HideSdrPage() override
Definition: fmview.cxx:329
class FmSearchEngine - Impl class for FmSearchDialog
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
Definition: svdpage.hxx:365
SVX_DLLPRIVATE FmFormObj * getMarkedGrid() const
Definition: fmview.cxx:527
SdrModel * GetModel() const
Definition: svdpntv.hxx:271
SVX_DLLPRIVATE css::uno::Reference< css::form::runtime::XFormController > GetFormController(const css::uno::Reference< css::form::XForm > &_rxForm, const OutputDevice &_rDevice) const
returns the form controller for a given form and a given device
Definition: fmview.cxx:565
OutputDevice & GetOutputDevice() const
virtual void EndCompleteRedraw(SdrPaintWindow &rPaintWindow, bool bPaintFormLayer)
Definition: svdpntv.cxx:622
SfxObjectShell * GetObjectShell() const
Definition: fmmodel.hxx:58
bool IsMod2() const
sal_uInt32 PageWindowCount() const
Definition: svdpagv.hxx:94
SfxMedium * GetMedium() const