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 _SVXSELECTOR_HXX 24*b1cdbd2cSJim Jagielski #define _SVXSELECTOR_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx> 27*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 28*b1cdbd2cSJim Jagielski #include <vcl/group.hxx> 29*b1cdbd2cSJim Jagielski #include <vcl/menubtn.hxx> 30*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx> 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/script/browse/XBrowseNode.hpp> 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski #define _SVSTDARR_USHORTS 38*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSDTOR 39*b1cdbd2cSJim Jagielski #include <svl/svstdarr.hxx> // SvUShorts 40*b1cdbd2cSJim Jagielski #include <sfx2/minarray.hxx> 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski #define SVX_CFGGROUP_FUNCTION 1 43*b1cdbd2cSJim Jagielski #define SVX_CFGFUNCTION_SLOT 2 44*b1cdbd2cSJim Jagielski #define SVX_CFGGROUP_SCRIPTCONTAINER 3 45*b1cdbd2cSJim Jagielski #define SVX_CFGFUNCTION_SCRIPT 4 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski struct SvxGroupInfo_Impl 48*b1cdbd2cSJim Jagielski { 49*b1cdbd2cSJim Jagielski sal_uInt16 nKind; 50*b1cdbd2cSJim Jagielski sal_uInt16 nOrd; 51*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::script::browse::XBrowseNode > 52*b1cdbd2cSJim Jagielski xBrowseNode; 53*b1cdbd2cSJim Jagielski ::rtl::OUString sURL; 54*b1cdbd2cSJim Jagielski ::rtl::OUString sHelpText; 55*b1cdbd2cSJim Jagielski sal_Bool bWasOpened; 56*b1cdbd2cSJim Jagielski SvxGroupInfo_ImplSvxGroupInfo_Impl57*b1cdbd2cSJim Jagielski SvxGroupInfo_Impl( sal_uInt16 n, sal_uInt16 nr ) 58*b1cdbd2cSJim Jagielski :nKind( n ) 59*b1cdbd2cSJim Jagielski ,nOrd( nr ) 60*b1cdbd2cSJim Jagielski ,xBrowseNode() 61*b1cdbd2cSJim Jagielski ,sURL() 62*b1cdbd2cSJim Jagielski ,sHelpText() 63*b1cdbd2cSJim Jagielski ,bWasOpened(sal_False) 64*b1cdbd2cSJim Jagielski { 65*b1cdbd2cSJim Jagielski } 66*b1cdbd2cSJim Jagielski SvxGroupInfo_ImplSvxGroupInfo_Impl67*b1cdbd2cSJim Jagielski SvxGroupInfo_Impl( sal_uInt16 n, sal_uInt16 nr, const ::com::sun::star::uno::Reference< ::com::sun::star::script::browse::XBrowseNode >& _rxNode ) 68*b1cdbd2cSJim Jagielski :nKind( n ) 69*b1cdbd2cSJim Jagielski ,nOrd( nr ) 70*b1cdbd2cSJim Jagielski ,xBrowseNode( _rxNode ) 71*b1cdbd2cSJim Jagielski ,sURL() 72*b1cdbd2cSJim Jagielski ,sHelpText() 73*b1cdbd2cSJim Jagielski ,bWasOpened(sal_False) 74*b1cdbd2cSJim Jagielski { 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski SvxGroupInfo_ImplSvxGroupInfo_Impl77*b1cdbd2cSJim Jagielski SvxGroupInfo_Impl( sal_uInt16 n, sal_uInt16 nr, const ::rtl::OUString& _rURL, const ::rtl::OUString& _rHelpText ) 78*b1cdbd2cSJim Jagielski :nKind( n ) 79*b1cdbd2cSJim Jagielski ,nOrd( nr ) 80*b1cdbd2cSJim Jagielski ,xBrowseNode() 81*b1cdbd2cSJim Jagielski ,sURL( _rURL ) 82*b1cdbd2cSJim Jagielski ,sHelpText( _rHelpText ) 83*b1cdbd2cSJim Jagielski ,bWasOpened(sal_False) 84*b1cdbd2cSJim Jagielski { 85*b1cdbd2cSJim Jagielski } 86*b1cdbd2cSJim Jagielski }; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski typedef SvxGroupInfo_Impl* SvxGroupInfoPtr; 89*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_DEL(SvxGroupInfoArr_Impl, SvxGroupInfoPtr, 5, 5) 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski class ImageProvider 92*b1cdbd2cSJim Jagielski { 93*b1cdbd2cSJim Jagielski public: ~ImageProvider()94*b1cdbd2cSJim Jagielski virtual ~ImageProvider() {} 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski virtual Image GetImage( const rtl::OUString& rCommandURL ) = 0; 97*b1cdbd2cSJim Jagielski }; 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski class SvxConfigFunctionListBox_Impl : public SvTreeListBox 100*b1cdbd2cSJim Jagielski { 101*b1cdbd2cSJim Jagielski friend class SvxConfigGroupListBox_Impl; 102*b1cdbd2cSJim Jagielski Timer aTimer; 103*b1cdbd2cSJim Jagielski SvLBoxEntry* pCurEntry; 104*b1cdbd2cSJim Jagielski SvxGroupInfoArr_Impl aArr; 105*b1cdbd2cSJim Jagielski SvLBoxEntry* m_pDraggingEntry; 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski DECL_LINK( TimerHdl, Timer* ); 108*b1cdbd2cSJim Jagielski virtual void MouseMove( const MouseEvent& rMEvt ); 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski public: 111*b1cdbd2cSJim Jagielski SvxConfigFunctionListBox_Impl( Window*, const ResId& ); 112*b1cdbd2cSJim Jagielski ~SvxConfigFunctionListBox_Impl(); 113*b1cdbd2cSJim Jagielski void ClearAll(); 114*b1cdbd2cSJim Jagielski String GetHelpText( SvLBoxEntry *pEntry ); 115*b1cdbd2cSJim Jagielski using Window::GetHelpText; 116*b1cdbd2cSJim Jagielski SvLBoxEntry* GetLastSelectedEntry(); 117*b1cdbd2cSJim Jagielski void FunctionSelected(); 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski // drag n drop methods 120*b1cdbd2cSJim Jagielski virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski virtual DragDropMode NotifyStartDrag( 123*b1cdbd2cSJim Jagielski TransferDataContainer&, SvLBoxEntry* ); 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski virtual void DragFinished( sal_Int8 ); 126*b1cdbd2cSJim Jagielski }; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski class SvxConfigGroupListBox_Impl : public SvTreeListBox 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski SvxGroupInfoArr_Impl aArr; 131*b1cdbd2cSJim Jagielski bool m_bShowSlots; 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski SvxConfigFunctionListBox_Impl* pFunctionListBox; 134*b1cdbd2cSJim Jagielski ImageProvider* m_pImageProvider; 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference 137*b1cdbd2cSJim Jagielski < ::com::sun::star::frame::XFrame > m_xFrame; 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference 140*b1cdbd2cSJim Jagielski < ::com::sun::star::container::XNameAccess > m_xModuleCommands; 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski Image m_hdImage; 143*b1cdbd2cSJim Jagielski Image m_hdImage_hc; 144*b1cdbd2cSJim Jagielski Image m_libImage; 145*b1cdbd2cSJim Jagielski Image m_libImage_hc; 146*b1cdbd2cSJim Jagielski Image m_macImage; 147*b1cdbd2cSJim Jagielski Image m_macImage_hc; 148*b1cdbd2cSJim Jagielski Image m_docImage; 149*b1cdbd2cSJim Jagielski Image m_docImage_hc; 150*b1cdbd2cSJim Jagielski ::rtl::OUString m_sMyMacros; 151*b1cdbd2cSJim Jagielski ::rtl::OUString m_sProdMacros; 152*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 ); 153*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 ); 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski private: 156*b1cdbd2cSJim Jagielski void fillScriptList( 157*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::script::browse::XBrowseNode >& _rxRootNode, 158*b1cdbd2cSJim Jagielski SvLBoxEntry* _pParentEntry, 159*b1cdbd2cSJim Jagielski bool _bCheapChildsOnDemand 160*b1cdbd2cSJim Jagielski ); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski protected: 163*b1cdbd2cSJim Jagielski virtual void RequestingChilds( SvLBoxEntry *pEntry); 164*b1cdbd2cSJim Jagielski virtual sal_Bool Expand( SvLBoxEntry* pParent ); 165*b1cdbd2cSJim Jagielski using SvListView::Expand; 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski public: 168*b1cdbd2cSJim Jagielski SvxConfigGroupListBox_Impl ( 169*b1cdbd2cSJim Jagielski Window* pParent, const ResId&, 170*b1cdbd2cSJim Jagielski bool _bShowSlots, 171*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference 172*b1cdbd2cSJim Jagielski < ::com::sun::star::frame::XFrame >& xFrame 173*b1cdbd2cSJim Jagielski ); 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski ~SvxConfigGroupListBox_Impl(); 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski void Init(); 178*b1cdbd2cSJim Jagielski void Open( SvLBoxEntry*, sal_Bool ); 179*b1cdbd2cSJim Jagielski void ClearAll(); 180*b1cdbd2cSJim Jagielski void GroupSelected(); 181*b1cdbd2cSJim Jagielski SetFunctionListBox(SvxConfigFunctionListBox_Impl * pBox)182*b1cdbd2cSJim Jagielski void SetFunctionListBox( SvxConfigFunctionListBox_Impl *pBox ) 183*b1cdbd2cSJim Jagielski { pFunctionListBox = pBox; } 184*b1cdbd2cSJim Jagielski SetImageProvider(ImageProvider * provider)185*b1cdbd2cSJim Jagielski void SetImageProvider( ImageProvider* provider ) 186*b1cdbd2cSJim Jagielski { m_pImageProvider = provider; } 187*b1cdbd2cSJim Jagielski }; 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski class SvxScriptSelectorDialog : public ModelessDialog 190*b1cdbd2cSJim Jagielski { 191*b1cdbd2cSJim Jagielski FixedText aDialogDescription; 192*b1cdbd2cSJim Jagielski FixedText aGroupText; 193*b1cdbd2cSJim Jagielski SvxConfigGroupListBox_Impl aCategories; 194*b1cdbd2cSJim Jagielski FixedText aFunctionText; 195*b1cdbd2cSJim Jagielski SvxConfigFunctionListBox_Impl aCommands; 196*b1cdbd2cSJim Jagielski OKButton aOKButton; 197*b1cdbd2cSJim Jagielski CancelButton aCancelButton; 198*b1cdbd2cSJim Jagielski HelpButton aHelpButton; 199*b1cdbd2cSJim Jagielski FixedLine aDescription; 200*b1cdbd2cSJim Jagielski FixedText aDescriptionText; 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski sal_Bool m_bShowSlots; 203*b1cdbd2cSJim Jagielski Link m_aAddHdl; 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski DECL_LINK( ClickHdl, Button * ); 206*b1cdbd2cSJim Jagielski DECL_LINK( SelectHdl, Control* ); 207*b1cdbd2cSJim Jagielski DECL_LINK( FunctionDoubleClickHdl, Control* ); 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski void UpdateUI(); 210*b1cdbd2cSJim Jagielski void ResizeControls(); 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski public: 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski SvxScriptSelectorDialog ( 215*b1cdbd2cSJim Jagielski Window* pParent = NULL, 216*b1cdbd2cSJim Jagielski sal_Bool bShowSlots = sal_False, 217*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference 218*b1cdbd2cSJim Jagielski < ::com::sun::star::frame::XFrame >& xFrame = 0 219*b1cdbd2cSJim Jagielski ); 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski ~SvxScriptSelectorDialog ( ); 222*b1cdbd2cSJim Jagielski SetAddHdl(const Link & rLink)223*b1cdbd2cSJim Jagielski void SetAddHdl( const Link& rLink ) { m_aAddHdl = rLink; } GetAddHdl() const224*b1cdbd2cSJim Jagielski const Link& GetAddHdl() const { return m_aAddHdl; } 225*b1cdbd2cSJim Jagielski SetImageProvider(ImageProvider * provider)226*b1cdbd2cSJim Jagielski void SetImageProvider( ImageProvider* provider ) 227*b1cdbd2cSJim Jagielski { aCategories.SetImageProvider( provider ); } 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski String GetScriptURL() const; 230*b1cdbd2cSJim Jagielski String GetSelectedDisplayName(); 231*b1cdbd2cSJim Jagielski String GetSelectedHelpText(); 232*b1cdbd2cSJim Jagielski void SetRunLabel(); 233*b1cdbd2cSJim Jagielski void SetDialogDescription(const String& rDescription); 234*b1cdbd2cSJim Jagielski }; 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski #endif 237