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