LibreOffice Module svx (master)  1
fmPropBrw.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 
21 #include <sal/macros.h>
22 
23 #include <fmprop.hxx>
24 #include <fmPropBrw.hxx>
25 #include <svx/strings.hrc>
26 #include <fmservs.hxx>
27 #include <fmshimp.hxx>
28 #include <fmpgeimp.hxx>
29 
30 #include <svx/dialmgr.hxx>
31 #include <svx/fmpage.hxx>
32 #include <svx/fmshell.hxx>
33 #include <svx/fmview.hxx>
34 #include <svx/sdrpagewindow.hxx>
35 #include <svx/svdpagv.hxx>
36 #include <svx/svxids.hrc>
37 
38 #include <com/sun/star/awt/XControlContainer.hpp>
39 #include <com/sun/star/awt/PosSize.hpp>
40 #include <com/sun/star/beans/PropertyValue.hpp>
41 #include <com/sun/star/beans/XPropertySet.hpp>
42 #include <com/sun/star/container/XChild.hpp>
43 #include <com/sun/star/form/XForm.hpp>
44 #include <com/sun/star/form/FormComponentType.hpp>
45 #include <com/sun/star/form/inspection/DefaultFormComponentInspectorModel.hpp>
46 #include <com/sun/star/frame/Frame.hpp>
47 #include <com/sun/star/inspection/ObjectInspector.hpp>
48 #include <com/sun/star/inspection/XObjectInspectorUI.hpp>
49 #include <com/sun/star/inspection/DefaultHelpProvider.hpp>
50 #include <com/sun/star/lang/XServiceInfo.hpp>
51 #include <com/sun/star/util/VetoException.hpp>
52 
54 #include <comphelper/property.hxx>
55 #include <comphelper/sequence.hxx>
56 #include <comphelper/types.hxx>
58 #include <o3tl/deleter.hxx>
59 #include <sfx2/bindings.hxx>
60 #include <sfx2/childwin.hxx>
61 #include <sfx2/dispatch.hxx>
62 #include <sfx2/objitem.hxx>
63 #include <sfx2/objsh.hxx>
64 #include <sfx2/viewfrm.hxx>
66 #include <tools/debug.hxx>
67 #include <tools/diagnose_ex.h>
68 #include <unotools/confignode.hxx>
69 #include <vcl/stdtext.hxx>
70 #include <vcl/svapp.hxx>
71 #include <vcl/weld.hxx>
72 #include <vcl/weldutils.hxx>
73 
74 #include <algorithm>
75 
76 using namespace ::com::sun::star;
77 using namespace ::com::sun::star::beans;
78 using namespace ::com::sun::star::container;
79 using namespace ::com::sun::star::form;
80 using namespace ::com::sun::star::form::inspection;
81 using namespace ::com::sun::star::frame;
82 using namespace ::com::sun::star::inspection;
83 using namespace ::com::sun::star::lang;
84 using namespace ::com::sun::star::uno;
85 using namespace ::com::sun::star::util;
86 using namespace ::svxform;
87 using ::com::sun::star::awt::XWindow;
88 
89 //= FmPropBrwMgr
90 SFX_IMPL_MODELESSDIALOGCONTOLLER(FmPropBrwMgr, SID_FM_SHOW_PROPERTIES)
91 
92 FmPropBrwMgr::FmPropBrwMgr( vcl::Window* _pParent, sal_uInt16 _nId,
93  SfxBindings* _pBindings, SfxChildWinInfo* _pInfo)
94  :SfxChildWindow(_pParent, _nId)
95 {
96  std::shared_ptr<FmPropBrw> xControl(new FmPropBrw(::comphelper::getProcessComponentContext(), _pBindings,
97  this, _pParent->GetFrameWeld(), _pInfo), o3tl::default_delete<FmPropBrw>());
98  SetController(std::move(xControl));
99  static_cast<FmPropBrw*>(GetController().get())->Initialize( _pInfo );
100 }
101 
102 static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any& aUnoObj)
103 {
104  const char* pClassNameResourceId = nullptr;
105 
106  switch ( nClassId )
107  {
108  case FormComponentType::TEXTFIELD:
109  {
111  aUnoObj >>= xIFace;
112  pClassNameResourceId = RID_STR_PROPTITLE_EDIT;
113  if (xIFace.is())
114  { // we have a chance to check if it's a formatted field model
115  Reference< XServiceInfo > xInfo(xIFace, UNO_QUERY);
116  if (xInfo.is() && (xInfo->supportsService(FM_SUN_COMPONENT_FORMATTEDFIELD)))
117  pClassNameResourceId = RID_STR_PROPTITLE_FORMATTED;
118  else if (!xInfo.is())
119  {
120  // couldn't distinguish between formatted and edit with the service name, so try with the properties
121  Reference< XPropertySet > xProps(xIFace, UNO_QUERY);
122  if (xProps.is())
123  {
124  Reference< XPropertySetInfo > xPropsInfo = xProps->getPropertySetInfo();
125  if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(FM_PROP_FORMATSSUPPLIER))
126  pClassNameResourceId = RID_STR_PROPTITLE_FORMATTED;
127  }
128  }
129  }
130  }
131  break;
132 
133  case FormComponentType::COMMANDBUTTON:
134  pClassNameResourceId = RID_STR_PROPTITLE_PUSHBUTTON; break;
135  case FormComponentType::RADIOBUTTON:
136  pClassNameResourceId = RID_STR_PROPTITLE_RADIOBUTTON; break;
137  case FormComponentType::CHECKBOX:
138  pClassNameResourceId = RID_STR_PROPTITLE_CHECKBOX; break;
139  case FormComponentType::LISTBOX:
140  pClassNameResourceId = RID_STR_PROPTITLE_LISTBOX; break;
141  case FormComponentType::COMBOBOX:
142  pClassNameResourceId = RID_STR_PROPTITLE_COMBOBOX; break;
143  case FormComponentType::GROUPBOX:
144  pClassNameResourceId = RID_STR_PROPTITLE_GROUPBOX; break;
145  case FormComponentType::IMAGEBUTTON:
146  pClassNameResourceId = RID_STR_PROPTITLE_IMAGEBUTTON; break;
147  case FormComponentType::FIXEDTEXT:
148  pClassNameResourceId = RID_STR_PROPTITLE_FIXEDTEXT; break;
149  case FormComponentType::GRIDCONTROL:
150  pClassNameResourceId = RID_STR_PROPTITLE_DBGRID; break;
151  case FormComponentType::FILECONTROL:
152  pClassNameResourceId = RID_STR_PROPTITLE_FILECONTROL; break;
153  case FormComponentType::DATEFIELD:
154  pClassNameResourceId = RID_STR_PROPTITLE_DATEFIELD; break;
155  case FormComponentType::TIMEFIELD:
156  pClassNameResourceId = RID_STR_PROPTITLE_TIMEFIELD; break;
157  case FormComponentType::NUMERICFIELD:
158  pClassNameResourceId = RID_STR_PROPTITLE_NUMERICFIELD; break;
159  case FormComponentType::CURRENCYFIELD:
160  pClassNameResourceId = RID_STR_PROPTITLE_CURRENCYFIELD; break;
161  case FormComponentType::PATTERNFIELD:
162  pClassNameResourceId = RID_STR_PROPTITLE_PATTERNFIELD; break;
163  case FormComponentType::IMAGECONTROL:
164  pClassNameResourceId = RID_STR_PROPTITLE_IMAGECONTROL; break;
165  case FormComponentType::HIDDENCONTROL:
166  pClassNameResourceId = RID_STR_PROPTITLE_HIDDEN; break;
167  case FormComponentType::SCROLLBAR:
168  pClassNameResourceId = RID_STR_PROPTITLE_SCROLLBAR; break;
169  case FormComponentType::SPINBUTTON:
170  pClassNameResourceId = RID_STR_PROPTITLE_SPINBUTTON; break;
171  case FormComponentType::NAVIGATIONBAR:
172  pClassNameResourceId = RID_STR_PROPTITLE_NAVBAR; break;
173  case FormComponentType::CONTROL:
174  default:
175  pClassNameResourceId = RID_STR_CONTROL; break;
176  }
177 
178  return SvxResId(pClassNameResourceId);
179 }
180 
182  SfxChildWindow* _pMgr, weld::Window* _pParent, const SfxChildWinInfo* _pInfo)
183  : SfxModelessDialogController(_pBindings, _pMgr, _pParent, "svx/ui/formpropertydialog.ui", "FormPropertyDialog")
184  , SfxControllerItem(SID_FM_PROPERTY_CONTROL, *_pBindings)
185  , m_bInitialStateChange(true)
186  , m_pParent(_pParent)
187  , m_nAsyncGetFocusId(nullptr)
188  , m_xContainer(m_xBuilder->weld_container("container"))
189  , m_xORB(_xORB)
190 {
191  m_xContainer->set_size_request(m_xContainer->get_approximate_digit_width() * 72, m_xContainer->get_text_height() * 20);
192 
193  try
194  {
195  // create a frame wrapper for myself
196  m_xMeAsFrame = Frame::create(m_xORB);
197 
198  // transport the container area of this dialog to be the container window of the frame
199  css::uno::Reference<css::awt::XWindow> xFrameContainerWindow(new weld::TransportAsXWindow(m_xContainer.get()));
200  m_xMeAsFrame->initialize(xFrameContainerWindow);
201  m_xMeAsFrame->setName("form property browser");
202  }
203  catch (const Exception&)
204  {
205  OSL_FAIL("FmPropBrw::FmPropBrw: could not create/initialize my frame!");
206  m_xMeAsFrame.clear();
207  }
208 
209  if ( _pInfo )
211 }
212 
214 {
215  if (m_nAsyncGetFocusId)
216  {
218  m_nAsyncGetFocusId = nullptr;
219  }
220 
221  if (m_xBrowserController.is())
223  try
224  {
225  // remove our own properties from the component context. We cannot ensure that the component context
226  // is freed (there might be refcount problems :-\), so at least ensure the context itself
227  // does hold the objects anymore
228  Reference<XNameContainer> xName(m_xInspectorContext,uno::UNO_QUERY);
229  if ( xName.is() )
230  {
231  const OUString pProps[] = { OUString( "ContextDocument" )
232  , OUString( "DialogParentWindow" )
233  , OUString( "ControlContext" )
234  , OUString( "ControlShapeAccess" ) };
235  for (const auto & i : pProps)
236  xName->removeByName( i );
237  }
238  }
239  catch (const Exception& )
240  {
242  }
244 }
245 
247 {
248  OUString sCurrentPage;
249  try
250  {
251  if ( m_xBrowserController.is() )
252  {
253  OSL_VERIFY( m_xBrowserController->getViewData() >>= sCurrentPage );
254  }
255 
256  if ( sCurrentPage.isEmpty() )
257  sCurrentPage = m_sLastActivePage;
258  }
259  catch( const Exception& )
260  {
261  OSL_FAIL( "FmPropBrw::getCurrentPage: caught an exception while retrieving the current page!" );
262  }
263  return sCurrentPage;
264 }
265 
267 {
269 
271 
272  if ( m_xMeAsFrame.is() )
273  {
274  try
275  {
276  m_xMeAsFrame->setComponent(nullptr, nullptr);
277  }
278  catch( const Exception& )
279  {
280  OSL_FAIL( "FmPropBrw::implDetachController: caught an exception while resetting the component!" );
281  }
282  }
283 
284  // we attached a frame to the controller manually, so we need to manually tell it that it's detached, too
285  if ( m_xBrowserController.is() )
286  {
287  m_xBrowserController->attachFrame( nullptr );
288  }
289 
290  m_xBrowserController.clear();
291  m_xInspectorModel.clear();
292  m_xMeAsFrame.clear();
293 }
294 
296 {
297  // suspend the controller (it is allowed to veto)
298  if ( m_xMeAsFrame.is() )
299  {
300  try
301  {
302  Reference< XController > xController( m_xMeAsFrame->getController() );
303  if ( xController.is() && !xController->suspend( true ) )
304  return;
305  }
306  catch( const Exception& )
307  {
308  OSL_FAIL( "FmPropBrw::Close: caught an exception while asking the controller!" );
309  }
310  }
311 
313 
314  // remember our bindings: while we're closed, we're deleted, too, so accessing the bindings after this
315  // would be deadly
316  // 10/19/00 - 79321 - FS
318 
320 
321  rBindings.Invalidate(SID_FM_CTL_PROPERTIES);
322  rBindings.Invalidate(SID_FM_PROPERTIES);
323 }
324 
326 {
327  try
328  {
329  if ( m_xInspectorModel.is() )
330  return m_xInspectorModel->getIsReadOnly();
331  return false;
332  }
333  catch( const Exception& )
334  {
336  }
337  return true;
338 }
339 
340 
342 {
343  if ( m_xBrowserController.is() )
344  {
345  try
346  {
347  Reference< XObjectInspector > xInspector( m_xBrowserController, UNO_QUERY_THROW );
348 
349  // tell it the objects to inspect
350  xInspector->inspect( comphelper::containerToSequence(_rSelection) );
351  }
352  catch( const VetoException& )
353  {
354  return;
355  }
356  catch( const Exception& )
357  {
358  OSL_FAIL( "FmPropBrw::implSetNewSelection: caught an unexpected exception!" );
359  return;
360  }
361 
362  // set the new title according to the selected object
363  OUString sTitle;
364 
365  if ( _rSelection.empty() )
366  {
367  sTitle = SvxResId(RID_STR_NO_PROPERTIES);
368  }
369  else if ( _rSelection.size() > 1 )
370  {
371  // no form component and (no form or no name) -> Multiselection
372  sTitle = SvxResId(RID_STR_PROPERTIES_CONTROL) +
373  SvxResId(RID_STR_PROPTITLE_MULTISELECT);
374  }
375  else
376  {
377  Reference< XPropertySet > xSingleSelection( *_rSelection.begin(), UNO_QUERY);
378  if ( ::comphelper::hasProperty( FM_PROP_CLASSID, xSingleSelection ) )
379  {
380  sal_Int16 nClassID = FormComponentType::CONTROL;
381  xSingleSelection->getPropertyValue( FM_PROP_CLASSID ) >>= nClassID;
382 
383  sTitle = SvxResId(RID_STR_PROPERTIES_CONTROL) +
384  GetUIHeadlineName(nClassID, makeAny(xSingleSelection));
385  }
386  else if ( Reference< XForm >( xSingleSelection, UNO_QUERY ).is() )
387  sTitle = SvxResId(RID_STR_PROPERTIES_FORM);
388  }
389 
390  if ( implIsReadOnlyModel() )
391  sTitle += SvxResId(RID_STR_READONLY_VIEW);
392 
393  m_xDialog->set_title(sTitle);
394  }
395 }
396 
398 {
399  rInfo.bVisible = false;
400  rInfo.aExtraString = getCurrentPage();
401 }
402 
403 IMPL_LINK_NOARG( FmPropBrw, OnAsyncGetFocus, void*, void )
404 {
405  m_nAsyncGetFocusId = nullptr;
406 }
407 
408 namespace
409 {
410  bool lcl_shouldEnableHelpSection( const Reference< XComponentContext >& _rxContext )
411  {
412  ::utl::OConfigurationTreeRoot aConfiguration(
414  _rxContext,
415  "/org.openoffice.Office.Common/Forms/PropertyBrowser/" ) );
416 
417  bool bEnabled = false;
418  OSL_VERIFY( aConfiguration.getNodeValue( "DirectHelp" ) >>= bEnabled );
419  return bEnabled;
420  }
421 }
422 
424 {
425  // the document in which we live
426  Reference< XInterface > xDocument;
427  if ( _pFormShell && _pFormShell->GetObjectShell() )
428  xDocument = _pFormShell->GetObjectShell()->GetModel();
429 
430  // the context of the controls in our document
431  Reference< awt::XControlContainer > xControlContext;
432  if ( _pFormShell && _pFormShell->GetFormView() )
433  {
434  SdrPageView* pPageView = _pFormShell->GetFormView()->GetSdrPageView();
435 
436  if(pPageView)
437  {
438  SdrPageWindow* pPageWindow = pPageView->GetPageWindow(0);
439 
440  if(pPageWindow)
441  {
442  xControlContext = pPageWindow->GetControlContainer();
443  }
444  }
445  }
446 
447  // the default parent window for message boxes
448  Reference< XWindow > xParentWindow(m_xDialog->GetXWindow());
449 
450  // the mapping from control models to control shapes
451  Reference< XMap > xControlMap;
452  FmFormPage* pFormPage = _pFormShell ? _pFormShell->GetCurPage() : nullptr;
453  if ( pFormPage )
454  xControlMap = pFormPage->GetImpl().getControlToShapeMap();
455 
456  // our own component context
457 
458  // a ComponentContext for the
459  ::cppu::ContextEntry_Init aHandlerContextInfo[] =
460  {
461  ::cppu::ContextEntry_Init( "ContextDocument", makeAny( xDocument ) ),
462  ::cppu::ContextEntry_Init( "DialogParentWindow", makeAny( xParentWindow ) ),
463  ::cppu::ContextEntry_Init( "ControlContext", makeAny( xControlContext ) ),
464  ::cppu::ContextEntry_Init( "ControlShapeAccess", makeAny( xControlMap ) )
465  };
467  ::cppu::createComponentContext( aHandlerContextInfo, SAL_N_ELEMENTS( aHandlerContextInfo ),
468  m_xORB ) );
469 
470  bool bEnableHelpSection = lcl_shouldEnableHelpSection( m_xORB );
471 
472  // an object inspector model
474  bEnableHelpSection
475  ? DefaultFormComponentInspectorModel::createWithHelpSection( m_xInspectorContext, 3, 5 )
476  : DefaultFormComponentInspectorModel::createDefault( m_xInspectorContext );
477 
478  // an object inspector
480  ObjectInspector::createWithModel(
482  );
483 
484  if ( !m_xBrowserController.is() )
485  {
486  ShowServiceNotAvailableError(m_pParent, "com.sun.star.inspection.ObjectInspector", true);
487  }
488  else
489  {
490  m_xBrowserController->attachFrame( Reference<XFrame>(m_xMeAsFrame,UNO_QUERY_THROW) );
491  }
492 
493  if ( bEnableHelpSection )
494  {
495  Reference< XObjectInspector > xInspector( m_xBrowserController, UNO_QUERY_THROW );
496  Reference< XObjectInspectorUI > xInspectorUI( xInspector->getInspectorUI() );
497  DefaultHelpProvider::create( m_xInspectorContext, xInspectorUI );
498  }
499 }
500 
501 
503 {
504  // the document in which we live
505  Reference< XInterface > xDocument;
506  SfxObjectShell* pObjectShell = _pFormShell ? _pFormShell->GetObjectShell() : nullptr;
507  if ( pObjectShell )
508  xDocument = pObjectShell->GetModel();
509  if ( ( xDocument == m_xLastKnownDocument ) && m_xBrowserController.is() )
510  // nothing to do
511  return;
512 
513  try
514  {
515  // clean up any previous instances of the object inspector
516  if ( m_xMeAsFrame.is() )
517  m_xMeAsFrame->setComponent( nullptr, nullptr );
518  else
519  ::comphelper::disposeComponent( m_xBrowserController );
520  m_xBrowserController.clear();
521  m_xInspectorModel.clear();
522 
523  // and create a new one
524  impl_createPropertyBrowser_throw( _pFormShell );
525  }
526  catch( const Exception& )
527  {
529  }
530  m_xLastKnownDocument = xDocument;
531 }
532 
533 
534 void FmPropBrw::StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState)
535 {
536  if (!pState || SID_FM_PROPERTY_CONTROL != nSID)
537  return;
538 
539  try
540  {
541  if (eState >= SfxItemState::DEFAULT)
542  {
543  FmFormShell* pShell = dynamic_cast<FmFormShell*>( static_cast<const SfxObjectItem*>(pState)->GetShell() );
544  InterfaceBag aSelection;
545  if ( pShell )
546  pShell->GetImpl()->getCurrentSelection_Lock(aSelection);
547 
549 
550  // set the new object to inspect
551  implSetNewSelection( aSelection );
552 
553  // if this is the first time we're here, some additional things need to be done ...
554  if ( m_bInitialStateChange )
555  {
556  // if we're just newly created, we want to have the focus
557  m_nAsyncGetFocusId = Application::PostUserEvent(LINK(this, FmPropBrw, OnAsyncGetFocus));
558 
559  // and additionally, we want to show the page which was active during
560  // our previous incarnation
561  if ( !m_sLastActivePage.isEmpty() )
562  {
563  try
564  {
565  if ( m_xBrowserController.is() )
566  m_xBrowserController->restoreViewData( makeAny( m_sLastActivePage ) );
567  }
568  catch( const Exception& )
569  {
570  OSL_FAIL( "FmPropBrw::StateChanged: caught an exception while setting the initial page!" );
571  }
572  }
573 
574  m_bInitialStateChange = false;
575  }
576 
577  }
578  else
579  {
581  }
582  }
583  catch (Exception&)
584  {
585  OSL_FAIL("FmPropBrw::StateChanged: Exception occurred!");
586  }
587 }
588 
589 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
::std::set< css::uno::Reference< css::uno::XInterface > > InterfaceBag
Definition: fmtools.hxx:170
OUString aExtraString
void implDetachController()
Definition: fmPropBrw.cxx:266
Reference< XComponentContext > SAL_CALL createComponentContext(ContextEntry_Init const *pEntries, sal_Int32 nEntries, Reference< XComponentContext > const &xDelegate)
#define FM_PROP_FORMATSSUPPLIER
Definition: fmprop.hxx:66
FmFormView * GetFormView() const
Definition: fmshell.hxx:115
FmXFormShell * GetImpl() const
Definition: fmshell.hxx:118
css::uno::Reference< css::inspection::XObjectInspectorModel > m_xInspectorModel
Definition: fmPropBrw.hxx:58
IMPL_LINK_NOARG(FmPropBrw, OnAsyncGetFocus, void *, void)
Definition: fmPropBrw.cxx:403
bool implIsReadOnlyModel() const
Definition: fmPropBrw.cxx:325
css::uno::Reference< css::awt::XControlContainer > const & GetControlContainer(bool _bCreateIfNecessary=true) const
static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any &aUnoObj)
Definition: fmPropBrw.cxx:102
FmFormPage * GetCurPage() const
Definition: fmshell.cxx:1150
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
css::uno::Reference< css::frame::XModel > GetModel() const
void Invalidate(sal_uInt16 nId)
weld::Window * m_pParent
Definition: fmPropBrw.hxx:45
virtual ~FmPropBrw() override
Definition: fmPropBrw.cxx:213
void impl_ensurePropertyBrowser_nothrow(FmFormShell *_pFormShell)
creates the PropertyBrowser (aka ObjectInspector) and plugs it into our frame
Definition: fmPropBrw.cxx:502
static OConfigurationTreeRoot createWithComponentContext(const css::uno::Reference< css::uno::XComponentContext > &_rxContext, const OUString &_rPath, sal_Int32 _nDepth=-1, CREATION_MODE _eMode=CM_UPDATABLE)
Reference< XNameAccess > m_xContainer
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
Definition: svdpagv.cxx:93
Reference< XController > xController
OUString m_sLastActivePage
Definition: fmPropBrw.hxx:47
OUString SvxResId(const char *pId)
Definition: dialmgr.cxx:28
#define FM_PROP_CLASSID
Definition: fmprop.hxx:30
virtual void Close() override
void implSetNewSelection(const InterfaceBag &_rSelection)
Definition: fmPropBrw.cxx:341
std::unique_ptr< weld::Container > m_xContainer
Definition: fmPropBrw.hxx:48
bool m_bInitialStateChange
Definition: fmPropBrw.hxx:44
FmFormPageImpl & GetImpl() const
Definition: fmpage.hxx:62
virtual void Close() override
Definition: fmPropBrw.cxx:295
#define SAL_N_ELEMENTS(arr)
void ShowServiceNotAvailableError(weld::Widget *pParent, const OUString &rServiceName, bool bError)
static void RemoveUserEvent(ImplSVEvent *nUserEvent)
#define DBG_UNHANDLED_EXCEPTION(...)
FmPropBrw(const css::uno::Reference< css::uno::XComponentContext > &_xORB, SfxBindings *pBindings, SfxChildWindow *pMgr, weld::Window *pParent, const SfxChildWinInfo *_pInfo)
Definition: fmPropBrw.cxx:181
Shell * GetShell()
virtual void dispose()
int i
void getCurrentSelection_Lock(InterfaceBag &_rSelection) const
retrieves the current selection
Definition: fmshimp.cxx:1916
SfxBindings & GetBindings()
virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem *pState) override
Definition: fmPropBrw.cxx:534
css::uno::Reference< css::frame::XController > m_xBrowserController
Definition: fmPropBrw.hxx:60
css::uno::Reference< css::uno::XComponentContext > m_xInspectorContext
Definition: fmPropBrw.hxx:50
void impl_createPropertyBrowser_throw(FmFormShell *_pFormShell)
creates a property browser
Definition: fmPropBrw.cxx:423
#define FM_SUN_COMPONENT_FORMATTEDFIELD
Definition: fmservs.hxx:75
ImplSVEvent * m_nAsyncGetFocusId
Definition: fmPropBrw.hxx:46
SFX_IMPL_MODELESSDIALOGCONTOLLER(SfxRecordingFloatWrapper_Impl, SID_RECORDING_FLOATWINDOW)
css::uno::Reference< css::frame::XFrame2 > m_xMeAsFrame
Definition: fmPropBrw.hxx:54
SfxItemState
virtual void FillInfo(SfxChildWinInfo &rInfo) const override
Definition: fmPropBrw.cxx:397
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
SVXCORE_DLLPUBLIC css::uno::Reference< css::container::XMap > getControlToShapeMap()
returns an object mapping from control models to drawing shapes.
Definition: fmpgeimp.cxx:225
Reference< XExecutableDialog > m_xDialog
Reference< XComponentContext > getProcessComponentContext()
SdrPageView * GetSdrPageView() const
Definition: svdpntv.hxx:310
bool hasProperty(const OUString &_rName, const Reference< XPropertySet > &_rxSet)
OUString getCurrentPage() const
Definition: fmPropBrw.cxx:246
css::uno::Reference< css::uno::XInterface > m_xLastKnownDocument
Definition: fmPropBrw.hxx:56
class FmSearchEngine - Impl class for FmSearchDialog
virtual SfxObjectShell * GetObjectShell()
css::uno::Reference< css::uno::XComponentContext > m_xORB
Definition: fmPropBrw.hxx:52
css::uno::Any SAL_CALL makeAny(const SharedUNOComponent< INTERFACE, COMPONENT > &value)