22 #include <com/sun/star/beans/XPropertySet.hpp>
23 #include <com/sun/star/container/XEnumerationAccess.hpp>
24 #include <com/sun/star/container/XEnumeration.hpp>
25 #include <com/sun/star/document/XScriptInvocationContext.hpp>
26 #include <com/sun/star/frame/ModuleManager.hpp>
27 #include <com/sun/star/frame/Desktop.hpp>
28 #include <com/sun/star/frame/theUICommandDescription.hpp>
29 #include <com/sun/star/frame/XDispatchInformationProvider.hpp>
30 #include <com/sun/star/script/browse/XBrowseNode.hpp>
31 #include <com/sun/star/script/browse/BrowseNodeTypes.hpp>
32 #include <com/sun/star/script/browse/theBrowseNodeFactory.hpp>
33 #include <com/sun/star/script/browse/BrowseNodeFactoryViewTypes.hpp>
34 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
35 #include <com/sun/star/uno/RuntimeException.hpp>
36 #include <com/sun/star/ui/theUICategoryDescription.hpp>
40 #include <strings.hrc>
41 #include <bitmaps.hlst>
50 #include <osl/diagnose.h>
51 #include <dialmgr.hxx>
80 std::u16string_view sFamily, std::u16string_view sStyle)
82 return OUString::Concat(
".uno:StyleApply?Style:string=")
84 +
"&FamilyName:string="
100 sal_Int32 nCmdLen = aStyle.
sCommand.getLength();
101 OUString sCmdArgs = aStyle.
sCommand.copy(LEN_STYLEPROT, nCmdLen-LEN_STYLEPROT);
102 sal_Int32
i = sCmdArgs.indexOf(
'&');
106 OUString sArg = sCmdArgs.copy(0, i);
108 aStyle.
sStyle = sArg.copy(LEN_SPART);
110 aStyle.
sFamily = sArg.copy(LEN_FPART);
112 sArg = sCmdArgs.copy(i+1, sCmdArgs.getLength()-i-1);
114 aStyle.
sStyle = sArg.copy(LEN_SPART);
116 aStyle.
sFamily = sArg.copy(LEN_FPART);
118 return !(aStyle.
sFamily.isEmpty() || aStyle.
sStyle.isEmpty());
125 css::uno::Reference< css::style::XStyleFamiliesSupplier >
xModel(
m_xDoc, css::uno::UNO_QUERY);
127 css::uno::Reference< css::container::XNameAccess > xFamilies;
129 xFamilies = xModel->getStyleFamilies();
131 css::uno::Reference< css::container::XNameAccess > xStyleSet;
133 xFamilies->getByName(aStyle.
sFamily) >>= xStyleSet;
135 css::uno::Reference< css::beans::XPropertySet > xStyle;
137 xStyleSet->getByName(aStyle.
sStyle) >>= xStyle;
143 catch(
const css::uno::RuntimeException&)
145 catch(
const css::uno::Exception&)
146 { aStyle.
sLabel.clear(); }
148 if (aStyle.
sLabel.isEmpty())
157 css::uno::Reference< css::style::XStyleFamiliesSupplier >
xModel(
m_xDoc, css::uno::UNO_QUERY);
159 return std::vector< SfxStyleInfo_Impl >();
161 css::uno::Reference< css::container::XNameAccess > xCont = xModel->getStyleFamilies();
162 const css::uno::Sequence< OUString > lFamilyNames = xCont->getElementNames();
163 std::vector< SfxStyleInfo_Impl > lFamilies;
164 for (
const auto& aFamily : lFamilyNames)
166 if ((aFamily ==
"CellStyles" &&
m_aModuleName !=
"com.sun.star.sheet.SpreadsheetDocument") ||
167 aFamily ==
"cell" || aFamily ==
"table" || aFamily ==
"Default")
175 css::uno::Reference< css::beans::XPropertySet > xFamilyInfo;
176 xCont->getByName(aFamilyInfo.
sFamily) >>= xFamilyInfo;
177 if (!xFamilyInfo.is())
185 catch(
const css::uno::RuntimeException&)
187 catch(
const css::uno::Exception&)
188 {
return std::vector< SfxStyleInfo_Impl >(); }
190 lFamilies.push_back(aFamilyInfo);
198 css::uno::Sequence< OUString > lStyleNames;
199 css::uno::Reference< css::style::XStyleFamiliesSupplier >
xModel(
m_xDoc, css::uno::UNO_QUERY_THROW);
200 css::uno::Reference< css::container::XNameAccess > xFamilies = xModel->getStyleFamilies();
201 css::uno::Reference< css::container::XNameAccess > xStyleSet;
204 xFamilies->getByName(sFamily) >>= xStyleSet;
205 lStyleNames = xStyleSet->getElementNames();
207 catch(
const css::uno::RuntimeException&)
209 catch(
const css::uno::Exception&)
210 {
return std::vector< SfxStyleInfo_Impl >(); }
212 std::vector< SfxStyleInfo_Impl > lStyles;
213 sal_Int32 c = lStyleNames.getLength();
219 aStyleInfo.
sStyle = lStyleNames[i];
224 css::uno::Reference< css::beans::XPropertySet > xStyle;
225 xStyleSet->getByName(aStyleInfo.
sStyle) >>= xStyle;
228 xStyle->getPropertyValue(
"DisplayName") >>= aStyleInfo.
sLabel;
230 catch(
const css::uno::RuntimeException&)
232 catch(
const css::uno::Exception&)
235 lStyles.push_back(aStyleInfo);
273 if (!pData->
sLabel.isEmpty())
299 OUString aTip =
CuiResId(RID_SVXSTR_COMMANDTIP) +
": ";
310 for ( sal_uInt16
i=0;
i<nCount; ++
i )
316 OUString* pScriptURI =
static_cast<OUString*
>(pData->
pObject);
338 return *
static_cast<OUString*
>(pData->
pObject);
354 m_sMyMacros(
CuiResId(RID_SVXSTR_MYMACROS)),
355 m_sProdMacros(
CuiResId(RID_SVXSTR_PRODMACROS)),
356 m_sMacros(
CuiResId(RID_SVXSTR_BASICMACROS)),
357 m_sDlgMacros(
CuiResId(RID_SVXSTR_PRODMACROS)),
358 m_aStrGroupStyles(
CuiResId(RID_SVXSTR_GROUP_STYLES))
376 Reference< XModel > lcl_getDocumentWithScripts_throw(
const Reference< XInterface >& _rxComponent )
378 Reference< XEmbeddedScripts > xScripts( _rxComponent, UNO_QUERY );
379 if ( !xScripts.is() )
381 Reference< XScriptInvocationContext > xContext( _rxComponent, UNO_QUERY );
383 xScripts = xContext->getScriptContainer();
386 return Reference< XModel >( xScripts, UNO_QUERY );
390 Reference< XModel > lcl_getScriptableDocument_nothrow(
const Reference< XFrame >& _rxFrame )
392 Reference< XModel > xDocument;
397 OSL_ENSURE( _rxFrame.is(),
"lcl_getScriptableDocument_nothrow: you need to pass a frame to this dialog/tab page!" );
401 Reference< XController >
xController( _rxFrame->getController(), UNO_SET_THROW );
402 xDocument = lcl_getDocumentWithScripts_throw(
xController->getModel() );
404 if ( !xDocument.is() )
407 xDocument = lcl_getDocumentWithScripts_throw( _rxFrame->getController() );
411 catch(
const Exception& )
421 , m_pFunctionListBox(nullptr)
422 , m_pStylesInfo(nullptr)
438 for ( sal_uInt16
i=0;
i<nCount; ++
i )
448 OUString* pScriptURI =
static_cast<OUString*
>(pData->
pObject);
469 css::uno::Reference< css::frame::XDispatchInformationProvider > xProvider(
m_xFrame, css::uno::UNO_QUERY_THROW);
470 css::uno::Sequence< sal_Int16 > lGroups = xProvider->getSupportedCommandGroups();
471 sal_Int32 c1 = lGroups.getLength();
478 m_xTreeView->append(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())),
482 for (i1=0; i1<c1; ++i1)
484 sal_Int16& rGroupID = lGroups[i1];
485 OUString sGroupID = OUString::number(rGroupID);
486 OUString sGroupName ;
491 if (sGroupName.isEmpty())
494 catch(
const css::container::NoSuchElementException&)
498 m_xTreeView->append(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())),
502 catch(
const css::uno::RuntimeException&)
504 catch(
const css::uno::Exception&)
512 if ( xRootNode->hasChildNodes() )
517 const Sequence< Reference< browse::XBrowseNode > > children =
518 xRootNode->getChildNodes();
519 bool bIsRootNode =
false;
521 OUString user(
"user");
522 OUString share(
"share");
523 if ( xRootNode->getName() ==
"Root" )
534 OUString currentDocTitle;
535 Reference< XModel > xDocument( lcl_getScriptableDocument_nothrow(
m_xFrame ) );
536 if ( xDocument.is() )
538 currentDocTitle = ::comphelper::DocumentInfo::getDocumentTitle( xDocument );
541 for ( Reference< browse::XBrowseNode >
const & theChild : children )
543 bool bDisplay =
true;
544 OUString uiName = theChild->getName();
547 if ( ! (uiName == user || uiName == share ||
548 uiName == currentDocTitle ) )
554 if ( uiName == user )
556 uiName =
xImp->m_sMyMacros;
558 else if ( uiName == share )
560 uiName =
xImp->m_sProdMacros;
564 if (theChild->getType() != browse::BrowseNodeTypes::SCRIPT && bDisplay )
570 bool bChildOnDemand =
false;
571 if ( !bCheapChildrenOnDemand && theChild->hasChildNodes() )
573 const Sequence< Reference< browse::XBrowseNode > > grandchildren =
574 theChild->getChildNodes();
576 for (
const auto& rxNode : grandchildren )
578 if ( rxNode->getType() == browse::BrowseNodeTypes::CONTAINER )
580 bChildOnDemand =
true;
591 bChildOnDemand =
true;
597 0, static_cast<void *>( theChild.get())));
599 OUString
sId(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())));
614 for (
const auto & rInfo : xCommands)
622 pGrpInfo->
sLabel = sUIName;
630 const css::uno::Reference< css::frame::XFrame >& xFrame,
631 const OUString& sModuleLongName,
649 SAL_INFO(
"cui.customize",
"** ** About to initialise SF Scripts");
651 Reference< browse::XBrowseNode > rootNode;
654 Reference< browse::XBrowseNodeFactory > xFac = browse::theBrowseNodeFactory::get(
m_xContext );
655 rootNode.set( xFac->createView( browse::BrowseNodeFactoryViewTypes::MACROSELECTOR ) );
659 TOOLS_WARN_EXCEPTION(
"cui.customize",
"Caught some exception whilst retrieving browse nodes from factory");
673 static_cast<void *>(rootNode.get())));
674 OUString aTitle(
xImp->m_sDlgMacros);
675 OUString
sId(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())));
676 m_xTreeView->insert(
nullptr, -1, &aTitle, &
sId,
nullptr,
nullptr,
true,
nullptr);
690 OUString sStyle(
xImp->m_aStrGroupStyles);
691 OUString
sId(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())));
692 m_xTreeView->insert(
nullptr, -1, &sStyle, &
sId,
nullptr,
nullptr,
true,
nullptr);
701 const Reference< browse::XBrowseNode >& node,
708 if (node->getName() ==
"user" || node->getName() ==
"share" )
710 aImage = RID_CUIBMP_HARDDISK;
715 OUString nodeName = node->getName();
717 if ( xDocumentModel.is() )
719 Reference< frame::XModuleManager2 > xModuleManager( frame::ModuleManager::create(xCtx) );
721 OUString appModule( xModuleManager->identify(
724 Any aAny = xModuleManager->getByName(appModule);
725 if( !( aAny >>= moduleDescr ) )
729 beans::PropertyValue
const * pmoduleDescr =
730 moduleDescr.getConstArray();
731 for ( sal_Int32
pos = moduleDescr.getLength();
pos--; )
733 if ( pmoduleDescr[
pos ].
Name ==
"ooSetupFactoryEmptyDocumentURL" )
735 pmoduleDescr[
pos ].Value >>= factoryURL;
736 SAL_INFO(
"cui.customize",
"factory url for doc images is " << factoryURL);
741 if( !factoryURL.isEmpty() )
747 aImage = RID_CUIBMP_DOC;
753 if( node->getType() == browse::BrowseNodeTypes::SCRIPT )
754 aImage = RID_CUIBMP_MACRO;
756 aImage = RID_CUIBMP_LIB;
761 Reference< XInterface >
764 Reference< XInterface >
xModel;
765 Reference< frame::XDesktop2 >
desktop = frame::Desktop::create( xCtx );
767 Reference< container::XEnumerationAccess > componentsAccess =
768 desktop->getComponents();
769 Reference< container::XEnumeration > components =
770 componentsAccess->createEnumeration();
771 while (components->hasMoreElements())
774 components->nextElement(), UNO_QUERY );
778 ::comphelper::DocumentInfo::getDocumentTitle(
model );
779 if( sTdocUrl == docName )
794 css::uno::Reference< css::container::XNameAccess > xModuleConf;
796 if (xModuleConf.is())
802 catch(
const css::uno::RuntimeException&)
804 catch(css::uno::Exception&)
808 if (sUIName.isEmpty())
822 std::unique_ptr<weld::TreeIter> xIter(
m_xTreeView->make_iterator());
830 switch ( pInfo->
nKind )
834 css::uno::Reference< css::frame::XDispatchInformationProvider > xProvider(
m_xFrame, UNO_QUERY );
835 bool bValidIter =
m_xTreeView->get_iter_first(*xIter);
841 css::uno::Sequence< css::frame::DispatchInformation > lCommands;
844 lCommands = xProvider->getConfigurableDispatchInformation( pCurrentInfo->
nUniqueID );
847 catch ( container::NoSuchElementException& )
859 css::uno::Reference< css::frame::XDispatchInformationProvider > xProvider (
m_xFrame, css::uno::UNO_QUERY_THROW);
860 css::uno::Sequence< css::frame::DispatchInformation > lCommands = xProvider->getConfigurableDispatchInformation(nGroup);
869 Reference< browse::XBrowseNode > rootNode(
870 static_cast< browse::XBrowseNode* >( pInfo->
pObject ) ) ;
873 if ( rootNode->hasChildNodes() )
875 const Sequence< Reference< browse::XBrowseNode > > children =
876 rootNode->getChildNodes();
878 for (
const Reference< browse::XBrowseNode >& childNode : children )
880 if (childNode->getType() == browse::BrowseNodeTypes::SCRIPT)
882 OUString
uri, description;
891 xPropSet->getPropertyValue(
"URI");
896 value = xPropSet->getPropertyValue(
"Description");
897 value >>= description;
903 OUString* pScriptURI =
new OUString( uri );
930 for (
auto const& lStyle : lStyles)
945 SAL_INFO(
"cui.customize",
"Ignoring unexpected SfxCfgKind: " << static_cast<int>(pInfo->
nKind) );
961 switch ( pInfo->
nKind )
967 Reference< browse::XBrowseNode > rootNode(
968 static_cast< browse::XBrowseNode* >( pInfo->
pObject ) ) ;
969 FillScriptList(rootNode, &rIter,
true );
978 const std::vector<SfxStyleInfo_Impl> lStyleFamilies = m_pStylesInfo->getStyleFamilies();
979 for (
auto const& lStyleFamily : lStyleFamilies)
983 OUString
sId(OUString::number(reinterpret_cast<sal_Int64>(
aArr.back().get())));
991 OSL_FAIL(
"Wrong group type!" );
1004 const OUString& rMacro )
1006 const OUString aBasicName(OUString::Concat(rBasic) +
" " +
xImp->m_sMacros);
1007 sal_Int32 nIdx {rMacro.lastIndexOf(
'.')};
1008 const OUString aMethod( rMacro.copy(nIdx+1) );
1014 nIdx = rMacro.lastIndexOf(
'.', nIdx);
1018 aLib = rMacro.getToken( 0,
'.' );
1019 aModule = rMacro.getToken( 0,
'.', ++nIdx );
1023 std::unique_ptr<weld::TreeIter> xIter =
m_xTreeView->make_iterator();
1029 OUString aEntryBas =
m_xTreeView->get_text(*xIter);
1030 if (aEntryBas == aBasicName)
1033 std::unique_ptr<weld::TreeIter> xLibIter =
m_xTreeView->make_iterator(xIter.get());
1038 OUString aEntryLib =
m_xTreeView->get_text(*xLibIter);
1039 if (aEntryLib == aLib)
1042 std::unique_ptr<weld::TreeIter> xModIter =
m_xTreeView->make_iterator(xLibIter.get());
1047 OUString aEntryMod =
m_xTreeView->get_text(*xModIter);
1048 if ( aEntryMod == aModule )
1056 if (aEntryMethod == aMethod)
1064 }
while (
m_xTreeView->iter_next_sibling(*xModIter));
1067 }
while (
m_xTreeView->iter_next_sibling(*xLibIter));
1081 weld::Window* pParent,
const css::uno::Reference< css::frame::XFrame >& xFrame)
1082 : GenericDialogController(pParent,
"cui/ui/macroselectordialog.ui",
"MacroSelectorDialog")
1083 , m_xDialogDescription(m_xBuilder->weld_label(
"helpmacro"))
1086 , m_xLibraryFT(m_xBuilder->weld_label(
"libraryft"))
1087 , m_xCategoryFT(m_xBuilder->weld_label(
"categoryft"))
1088 , m_xMacronameFT(m_xBuilder->weld_label(
"macronameft"))
1089 , m_xCommandsFT(m_xBuilder->weld_label(
"commandsft"))
1091 , m_xCancelButton(m_xBuilder->weld_button(
"cancel"))
1092 , m_xDescriptionText(m_xBuilder->weld_text_view(
"description"))
1120 uno::Reference<frame::XModel>
xModel;
1122 xController = xFrame->getController();
1123 if (xController.is())
1124 xModel = xController->getModel();
1138 if (&rCtrl == &m_xCategories->get_widget())
1140 m_xCategories->GroupSelected();
1155 if (rCEvt.GetCommand() != CommandEventId::ContextMenu || !xTreeView.
n_children())
1159 std::unique_ptr<weld::Menu> xPopup(xBuilder->weld_menu(
"sortmenu"));
1160 std::unique_ptr<weld::Menu> xDropMenu(xBuilder->weld_menu(
"sortsubmenu"));
1161 xDropMenu->set_active(
"alphabetically", xTreeView.
get_sort_order());
1162 xDropMenu->set_active(
"properorder", !xTreeView.
get_sort_order());
1164 OString sCommand(xPopup->popup_at_rect(&xTreeView,
tools::Rectangle(rCEvt.GetMousePosPixel(),
Size(1,1))));
1165 if (sCommand ==
"alphabetically")
1169 else if (sCommand ==
"properorder")
1172 m_xCategories->GroupSelected();
1174 else if (!sCommand.isEmpty())
1176 SAL_WARN(
"cui.customize",
"Unknown context menu action: " << sCommand );
1188 if ( !url.isEmpty() )
1204 if (&rButton == m_xCancelButton.get())
1225 std::unique_ptr<weld::TreeIter> xIter =
m_xCommands->make_iterator();
#define LINK(Instance, Class, Member)
std::unique_ptr< SvxConfigGroupBoxResource_Impl > xImp
css::uno::Reference< css::container::XNameAccess > m_xGlobalCategoryInfo
std::vector< SfxStyleInfo_Impl > getStyleFamilies() const
OUString GetHelpText(bool bConsiderParent=true)
std::unique_ptr< CuiConfigFunctionListBox > m_xCommands
std::unique_ptr< ContentProperties > pData
void FillScriptList(const css::uno::Reference< css::script::browse::XBrowseNode > &xRootNode, const weld::TreeIter *pParentEntry, bool bCheapChildrenOnDemand)
SvxConfigGroupBoxResource_Impl()
OUString GetScriptURL() const
css::uno::Reference< css::frame::XModel > m_xDoc
const char CMDURL_FPART_ONLY[]
SfxStylesInfo_Impl * m_pStylesInfo
css::uno::Reference< css::container::XNameAccess > m_xUICmdDescription
virtual void make_unsorted()=0
static weld::Builder * CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false)
void getLabel4Style(SfxStyleInfo_Impl &aStyle)
std::unique_ptr< weld::TreeIter > m_xScratchIter
~CuiConfigFunctionListBox()
css::uno::Reference< css::container::XNameAccess > m_xModuleCategoryInfo
OUString MapCommand2UIName(const OUString &sCommand)
Reference< XController > xController
PropertiesInfo aProperties
OUString get_text(int nPos) const
std::unique_ptr< weld::Button > m_xOKButton
const char CMDURL_STYLEPROT_ONLY[]
virtual int n_children() const =0
std::unique_ptr< CuiConfigGroupListBox > m_xCategories
css::uno::Reference< css::uno::XCurrentContext > NoEnableJavaInteractionContext()
SfxGroupInfoArr_Impl aArr
OUString GetCurLabel() const
void Init(const css::uno::Reference< css::uno::XComponentContext > &xContext, const css::uno::Reference< css::frame::XFrame > &xFrame, const OUString &sModuleLongName, bool bEventMode)
std::unique_ptr< weld::TreeView > m_xTreeView
SvxScriptSelectorDialog(weld::Window *pParent, const css::uno::Reference< css::frame::XFrame > &xFrame)
SfxStylesInfo_Impl m_aStylesInfo
virtual OUString GetHelpText(const OUString &aHelpURL, const vcl::Window *pWindow)
TValueType getUnpackedValueOrDefault(const OUString &sKey, const TValueType &aDefault) const
#define TOOLS_WARN_EXCEPTION(area, stream)
std::unique_ptr< weld::Label > m_xLibraryFT
OUString GetModuleIdentifier(const Reference< frame::XFrame > &rxFrame)
std::vector< SfxStyleInfo_Impl > getStyles(const OUString &sFamily)
virtual ~SvxScriptSelectorDialog() override
constexpr OUStringLiteral STYLEPROP_UINAME
css::uno::Reference< css::uno::XComponentContext > m_xContext
OUString GetCurCommand() const
void scroll_to_row(int pos)
OUString GetSelectedScriptURI() const
OUString get_selected_id() const
void SetStylesInfo(SfxStylesInfo_Impl *pStyles)
OUString m_sModuleLongName
void init(const OUString &rModuleName, const css::uno::Reference< css::frame::XModel > &xModel)
OUString m_aStrGroupStyles
OUString CuiResId(const char *pKey)
const BasicManager * GetBasicManager() const
Sequence< beans::PropertyValue > GetCommandProperties(const OUString &rsCommandName, const OUString &rsModuleName)
std::unique_ptr< weld::Label > m_xMacronameFT
void FillFunctionsList(const css::uno::Sequence< css::frame::DispatchInformation > &xCommands)
SfxGroupInfoArr_Impl aArr
CuiConfigFunctionListBox(std::unique_ptr< weld::TreeView > xTreeView)
OUString GetQualifiedName() const
virtual bool get_sort_order() const =0
std::unique_ptr< weld::Label > m_xCommandsFT
#define SAL_INFO(area, stream)
const OUString & GetName() const
std::unique_ptr< weld::TreeView > m_xTreeView
static OUString generateCommand(std::u16string_view sFamily, std::u16string_view sStyle)
IMPL_LINK_NOARG(SvxScriptSelectorDialog, FunctionDoubleClickHdl, weld::TreeView &, bool)
Reference< XExecutableDialog > m_xDialog
static OUString GetImage(const css::uno::Reference< css::script::browse::XBrowseNode > &node, css::uno::Reference< css::uno::XComponentContext > const &xCtx, bool bIsRootNode)
Reference< XComponentContext > getProcessComponentContext()
std::unique_ptr< weld::Label > m_xDialogDescription
CuiConfigFunctionListBox * m_pFunctionListBox
static css::uno::Reference< css::uno::XInterface > getDocumentModel(css::uno::Reference< css::uno::XComponentContext > const &xCtx, std::u16string_view docName)
const SvxPageUsage aArr[]
static bool parseStyleCommand(SfxStyleInfo_Impl &aStyle)
std::unique_ptr< weld::Button > m_xOKButton
void SelectMacro(const SfxMacroInfoItem *)
#define SAL_WARN(area, stream)
Reference< XModel > xModel
std::unique_ptr< weld::Label > m_xCategoryFT
const char CMDURL_SPART_ONLY[]
std::unique_ptr< weld::Button > m_xCancelButton
CuiConfigGroupListBox(std::unique_ptr< weld::TreeView > xTreeView)
IMPL_LINK(CuiConfigFunctionListBox, QueryTooltip, const weld::TreeIter &, rIter, OUString)
virtual void make_sorted()=0
OUString GetTooltipForCommand(const OUString &rsCommandName, const css::uno::Sequence< css::beans::PropertyValue > &rProperties, const Reference< frame::XFrame > &rxFrame)
css::uno::Reference< css::frame::XFrame > m_xFrame
std::unique_ptr< weld::TreeView > m_xTreeView
std::unique_ptr< weld::TextView > m_xDescriptionText
exports com.sun.star. uri
void append(const OUString &rId, const OUString &rStr, const weld::TreeIter *pParent=nullptr)