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
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>
62#include <vcl/stdtext.hxx>
63#include <vcl/svapp.hxx>
64#include <vcl/weld.hxx>
65#include <vcl/weldutils.hxx>
66
67using namespace ::com::sun::star;
68using namespace ::com::sun::star::beans;
69using namespace ::com::sun::star::container;
70using namespace ::com::sun::star::form;
71using namespace ::com::sun::star::form::inspection;
72using namespace ::com::sun::star::frame;
73using namespace ::com::sun::star::inspection;
74using namespace ::com::sun::star::lang;
75using namespace ::com::sun::star::uno;
76using namespace ::com::sun::star::util;
77using namespace ::svxform;
78using ::com::sun::star::awt::XWindow;
79
80//= FmPropBrwMgr
82
83FmPropBrwMgr::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
93static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any& aUnoObj)
94{
95 TranslateId pClassNameResourceId;
96
97 switch ( nClassId )
98 {
99 case FormComponentType::TEXTFIELD:
100 {
101 Reference< XInterface > xIFace;
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
172FmPropBrw::FmPropBrw(const Reference< XComponentContext >& _xORB, SfxBindings* _pBindings,
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{
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, Any(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;
392}
393
394IMPL_LINK_NOARG( FmPropBrw, OnAsyncGetFocus, void*, void )
395{
396 m_nAsyncGetFocusId = nullptr;
397}
398
399namespace
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", Any( xDocument ) ),
453 ::cppu::ContextEntry_Init( "DialogParentWindow", Any( xParentWindow ) ),
454 ::cppu::ContextEntry_Init( "ControlContext", Any( xControlContext ) ),
455 ::cppu::ContextEntry_Init( "ControlShapeAccess", Any( 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, u"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
516 }
517 catch( const Exception& )
518 {
520 }
521 m_xLastKnownDocument = xDocument;
522}
523
524
525void FmPropBrw::StateChangedAtToolBoxControl(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 ...
546 {
547 // if we're just newly created, we want to have the focus
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( Any( 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: */
Reference< XExecutableDialog > m_xDialog
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
static void RemoveUserEvent(ImplSVEvent *nUserEvent)
FmFormPageImpl & GetImpl() const
Definition: fmpage.hxx:62
FmFormView * GetFormView() const
Definition: fmshell.hxx:115
FmXFormShell * GetImpl() const
Definition: fmshell.hxx:118
FmFormPage * GetCurPage() const
Definition: fmshell.cxx:1132
void implDetachController()
Definition: fmPropBrw.cxx:257
OUString getCurrentPage() const
Definition: fmPropBrw.cxx:237
css::uno::Reference< css::inspection::XObjectInspectorModel > m_xInspectorModel
Definition: fmPropBrw.hxx:58
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
void impl_createPropertyBrowser_throw(FmFormShell *_pFormShell)
creates a property browser
Definition: fmPropBrw.cxx:414
css::uno::Reference< css::uno::XInterface > m_xLastKnownDocument
Definition: fmPropBrw.hxx:56
bool implIsReadOnlyModel() const
Definition: fmPropBrw.cxx:316
virtual void FillInfo(SfxChildWinInfo &rInfo) const override
Definition: fmPropBrw.cxx:388
css::uno::Reference< css::frame::XFrame2 > m_xMeAsFrame
Definition: fmPropBrw.hxx:54
virtual void StateChangedAtToolBoxControl(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem *pState) override
Definition: fmPropBrw.cxx:525
virtual void Close() override
Definition: fmPropBrw.cxx:286
OUString m_sLastActivePage
Definition: fmPropBrw.hxx:47
weld::Window * m_pParent
Definition: fmPropBrw.hxx:45
std::unique_ptr< weld::Container > m_xContainer
Definition: fmPropBrw.hxx:48
bool m_bInitialStateChange
Definition: fmPropBrw.hxx:44
css::uno::Reference< css::uno::XComponentContext > m_xInspectorContext
Definition: fmPropBrw.hxx:50
ImplSVEvent * m_nAsyncGetFocusId
Definition: fmPropBrw.hxx:46
void implSetNewSelection(const InterfaceBag &_rSelection)
Definition: fmPropBrw.cxx:332
css::uno::Reference< css::uno::XComponentContext > m_xORB
Definition: fmPropBrw.hxx:52
css::uno::Reference< css::frame::XController > m_xBrowserController
Definition: fmPropBrw.hxx:60
FmPropBrw(const css::uno::Reference< css::uno::XComponentContext > &_xORB, SfxBindings *pBindings, SfxChildWindow *pMgr, weld::Window *pParent, const SfxChildWinInfo *_pInfo)
Definition: fmPropBrw.cxx:172
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
Definition: svdpagv.cxx:83
css::uno::Reference< css::awt::XControlContainer > const & GetControlContainer(bool _bCreateIfNecessary=true) const
SdrPageView * GetSdrPageView() const
Definition: svdpntv.hxx:300
void Invalidate(sal_uInt16 nId)
SfxBindings & GetBindings()
virtual void dispose()
virtual void Close() override
css::uno::Reference< css::frame::XModel3 > GetModel() const
virtual SfxObjectShell * GetObjectShell()
const_iterator begin() const
bool empty() const
size_type size() const
static OConfigurationTreeRoot createWithComponentContext(const css::uno::Reference< css::uno::XComponentContext > &_rxContext, const OUString &_rPath, sal_Int32 _nDepth=-1, CREATION_MODE _eMode=CM_UPDATABLE)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define DBG_UNHANDLED_EXCEPTION(...)
OUString SvxResId(TranslateId aId)
Definition: dialmgr.cxx:24
virtual std::shared_ptr< SfxDialogController > GetController() override
float u
IMPL_LINK_NOARG(FmPropBrw, OnAsyncGetFocus, void *, void)
Definition: fmPropBrw.cxx:394
static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any &aUnoObj)
Definition: fmPropBrw.cxx:93
constexpr OUStringLiteral FM_PROP_FORMATSSUPPLIER
Definition: fmprop.hxx:68
constexpr OUStringLiteral FM_PROP_CLASSID
Definition: fmprop.hxx:32
constexpr OUStringLiteral FM_SUN_COMPONENT_FORMATTEDFIELD
Definition: fmservs.hxx:73
::o3tl::sorted_vector< css::uno::Reference< css::uno::XInterface > > InterfaceBag
Definition: fmtools.hxx:171
#define SAL_N_ELEMENTS(arr)
Shell * GetShell()
@ Exception
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
int i
class FmSearchEngine - Impl class for FmSearchDialog
Reference< XNameAccess > m_xContainer
SfxItemState
SFX_IMPL_MODELESSDIALOGCONTOLLER(SfxRecordingFloatWrapper_Impl, SID_RECORDING_FLOATWINDOW)
void VCL_DLLPUBLIC ShowServiceNotAvailableError(weld::Widget *pParent, std::u16string_view rServiceName, bool bError)
OUString aExtraString
Reference< XController > xController