1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef _CFGUTIL_HXX 24*b1cdbd2cSJim Jagielski #define _CFGUTIL_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <vector> 27*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 28*b1cdbd2cSJim Jagielski #include <tools/string.hxx> 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModel.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleComponentFactory.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/script/browse/XBrowseNode.hpp> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSDTOR 37*b1cdbd2cSJim Jagielski #include <svl/svstdarr.hxx> 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski #include <vcl/timer.hxx> 40*b1cdbd2cSJim Jagielski #include <svtools/svtabbx.hxx> 41*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx> 42*b1cdbd2cSJim Jagielski #include <vcl/image.hxx> 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski class BasicManager; 45*b1cdbd2cSJim Jagielski class SfxSlotPool; 46*b1cdbd2cSJim Jagielski class SfxStringItem; 47*b1cdbd2cSJim Jagielski class SfxFontItem; 48*b1cdbd2cSJim Jagielski class SfxMacroInfoItem; 49*b1cdbd2cSJim Jagielski struct SfxStyleInfo_Impl; 50*b1cdbd2cSJim Jagielski struct SfxStylesInfo_Impl; 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski #define css ::com::sun::star 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski struct SfxStyleInfo_Impl 55*b1cdbd2cSJim Jagielski { 56*b1cdbd2cSJim Jagielski ::rtl::OUString sFamily; 57*b1cdbd2cSJim Jagielski ::rtl::OUString sStyle; 58*b1cdbd2cSJim Jagielski ::rtl::OUString sCommand; 59*b1cdbd2cSJim Jagielski ::rtl::OUString sLabel; 60*b1cdbd2cSJim Jagielski SfxStyleInfo_ImplSfxStyleInfo_Impl61*b1cdbd2cSJim Jagielski SfxStyleInfo_Impl() 62*b1cdbd2cSJim Jagielski {} 63*b1cdbd2cSJim Jagielski SfxStyleInfo_ImplSfxStyleInfo_Impl64*b1cdbd2cSJim Jagielski SfxStyleInfo_Impl(const SfxStyleInfo_Impl& rCopy) 65*b1cdbd2cSJim Jagielski { 66*b1cdbd2cSJim Jagielski sFamily = rCopy.sFamily; 67*b1cdbd2cSJim Jagielski sStyle = rCopy.sStyle; 68*b1cdbd2cSJim Jagielski sCommand = rCopy.sCommand; 69*b1cdbd2cSJim Jagielski sLabel = rCopy.sLabel; 70*b1cdbd2cSJim Jagielski } 71*b1cdbd2cSJim Jagielski }; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski struct SfxStylesInfo_Impl 74*b1cdbd2cSJim Jagielski { 75*b1cdbd2cSJim Jagielski private: 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > m_xDoc; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski public: 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski SfxStylesInfo_Impl(); 82*b1cdbd2cSJim Jagielski void setModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski sal_Bool parseStyleCommand(SfxStyleInfo_Impl& aStyle); 85*b1cdbd2cSJim Jagielski void getLabel4Style(SfxStyleInfo_Impl& aStyle); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski ::std::vector< SfxStyleInfo_Impl > getStyleFamilies(); 88*b1cdbd2cSJim Jagielski ::std::vector< SfxStyleInfo_Impl > getStyles(const ::rtl::OUString& sFamily); 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski static ::rtl::OUString generateCommand(const ::rtl::OUString& sFamily, const ::rtl::OUString& sStyle); 91*b1cdbd2cSJim Jagielski }; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski #define SFX_CFGGROUP_FUNCTION 1 94*b1cdbd2cSJim Jagielski #define SFX_CFGFUNCTION_SLOT 2 95*b1cdbd2cSJim Jagielski #define SFX_CFGGROUP_SCRIPTCONTAINER 3 96*b1cdbd2cSJim Jagielski #define SFX_CFGFUNCTION_SCRIPT 4 97*b1cdbd2cSJim Jagielski #define SFX_CFGGROUP_STYLES 5 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski struct SfxGroupInfo_Impl 100*b1cdbd2cSJim Jagielski { 101*b1cdbd2cSJim Jagielski sal_uInt16 nKind; 102*b1cdbd2cSJim Jagielski sal_uInt16 nUniqueID; 103*b1cdbd2cSJim Jagielski void* pObject; 104*b1cdbd2cSJim Jagielski sal_Bool bWasOpened; 105*b1cdbd2cSJim Jagielski String sCommand; 106*b1cdbd2cSJim Jagielski String sLabel; 107*b1cdbd2cSJim Jagielski SfxGroupInfo_ImplSfxGroupInfo_Impl108*b1cdbd2cSJim Jagielski SfxGroupInfo_Impl( sal_uInt16 n, sal_uInt16 nr, void* pObj = 0 ) : 109*b1cdbd2cSJim Jagielski nKind( n ), nUniqueID( nr ), pObject( pObj ), bWasOpened(sal_False) {} 110*b1cdbd2cSJim Jagielski }; 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski struct CuiMacroInfo 113*b1cdbd2cSJim Jagielski { 114*b1cdbd2cSJim Jagielski }; 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski typedef SfxGroupInfo_Impl* SfxGroupInfoPtr; 117*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_DEL(SfxGroupInfoArr_Impl, SfxGroupInfoPtr, 5, 5) 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski class SfxConfigFunctionListBox_Impl : public SvTreeListBox 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski friend class SfxConfigGroupListBox_Impl; 122*b1cdbd2cSJim Jagielski Timer aTimer; 123*b1cdbd2cSJim Jagielski SvLBoxEntry* pCurEntry; 124*b1cdbd2cSJim Jagielski SfxGroupInfoArr_Impl aArr; 125*b1cdbd2cSJim Jagielski SfxStylesInfo_Impl* pStylesInfo; 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski DECL_LINK( TimerHdl, Timer* ); 128*b1cdbd2cSJim Jagielski virtual void MouseMove( const MouseEvent& rMEvt ); 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski public: 131*b1cdbd2cSJim Jagielski SfxConfigFunctionListBox_Impl( Window*, const ResId& ); 132*b1cdbd2cSJim Jagielski ~SfxConfigFunctionListBox_Impl(); 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski void ClearAll(); 135*b1cdbd2cSJim Jagielski using Window::GetHelpText; 136*b1cdbd2cSJim Jagielski String GetHelpText( SvLBoxEntry *pEntry ); 137*b1cdbd2cSJim Jagielski String GetCurCommand(); 138*b1cdbd2cSJim Jagielski String GetCurLabel(); 139*b1cdbd2cSJim Jagielski String GetSelectedScriptURI(); 140*b1cdbd2cSJim Jagielski void FunctionSelected(); 141*b1cdbd2cSJim Jagielski void SetStylesInfo(SfxStylesInfo_Impl* pStyles); 142*b1cdbd2cSJim Jagielski }; 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski struct SvxConfigGroupBoxResource_Impl; 145*b1cdbd2cSJim Jagielski class SfxConfigGroupListBox_Impl : public SvTreeListBox 146*b1cdbd2cSJim Jagielski { 147*b1cdbd2cSJim Jagielski SvxConfigGroupBoxResource_Impl* pImp; 148*b1cdbd2cSJim Jagielski //SfxSlotPool* pSlotPool; 149*b1cdbd2cSJim Jagielski SfxConfigFunctionListBox_Impl* pFunctionListBox; 150*b1cdbd2cSJim Jagielski SfxGroupInfoArr_Impl aArr; 151*b1cdbd2cSJim Jagielski sal_uLong nMode; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski ::rtl::OUString m_sModuleLongName; 154*b1cdbd2cSJim Jagielski css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; 155*b1cdbd2cSJim Jagielski css::uno::Reference< css::frame::XFrame > m_xFrame; 156*b1cdbd2cSJim Jagielski css::uno::Reference< css::container::XNameAccess > m_xGlobalCategoryInfo; 157*b1cdbd2cSJim Jagielski css::uno::Reference< css::container::XNameAccess > m_xModuleCategoryInfo; 158*b1cdbd2cSJim Jagielski css::uno::Reference< css::container::XNameAccess > m_xUICmdDescription; 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski Image GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::script::browse::XBrowseNode > node, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xCtx, bool bIsRootNode, bool bHighContrast ); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getDocumentModel( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xCtx, ::rtl::OUString& docName ); 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski void InitModule(); 165*b1cdbd2cSJim Jagielski void InitBasic(); 166*b1cdbd2cSJim Jagielski void InitStyles(); 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski ::rtl::OUString MapCommand2UIName(const ::rtl::OUString& sCommand); 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski SfxStylesInfo_Impl* pStylesInfo; 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski protected: 173*b1cdbd2cSJim Jagielski virtual void RequestingChilds( SvLBoxEntry *pEntry); 174*b1cdbd2cSJim Jagielski using SvListView::Expand; 175*b1cdbd2cSJim Jagielski virtual sal_Bool Expand( SvLBoxEntry* pParent ); 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski public: 178*b1cdbd2cSJim Jagielski SfxConfigGroupListBox_Impl ( Window* pParent, 179*b1cdbd2cSJim Jagielski const ResId&, 180*b1cdbd2cSJim Jagielski sal_uLong nConfigMode = 0 ); 181*b1cdbd2cSJim Jagielski ~SfxConfigGroupListBox_Impl(); 182*b1cdbd2cSJim Jagielski void ClearAll(); 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski void Init(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR , 185*b1cdbd2cSJim Jagielski const css::uno::Reference< css::frame::XFrame >& xFrame , 186*b1cdbd2cSJim Jagielski const ::rtl::OUString& sModuleLongName); SetFunctionListBox(SfxConfigFunctionListBox_Impl * pBox)187*b1cdbd2cSJim Jagielski void SetFunctionListBox( SfxConfigFunctionListBox_Impl *pBox ) 188*b1cdbd2cSJim Jagielski { pFunctionListBox = pBox; } 189*b1cdbd2cSJim Jagielski void Open( SvLBoxEntry*, sal_Bool ); 190*b1cdbd2cSJim Jagielski void GroupSelected(); 191*b1cdbd2cSJim Jagielski void SelectMacro( const SfxMacroInfoItem* ); 192*b1cdbd2cSJim Jagielski void SelectMacro( const String&, const String& ); 193*b1cdbd2cSJim Jagielski String GetGroup(); 194*b1cdbd2cSJim Jagielski void SetStylesInfo(SfxStylesInfo_Impl* pStyles); 195*b1cdbd2cSJim Jagielski }; 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski #undef css 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski #endif 200*b1cdbd2cSJim Jagielski 201