xref: /aoo4110/main/cui/source/inc/cfg.hxx (revision b1cdbd2c)
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 _SVXCFG_HXX
24*b1cdbd2cSJim Jagielski #define _SVXCFG_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
27*b1cdbd2cSJim Jagielski #include <vcl/toolbox.hxx>
28*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx>
29*b1cdbd2cSJim Jagielski #include <vcl/group.hxx>
30*b1cdbd2cSJim Jagielski #include <vcl/menubtn.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/toolbox.hxx>
32*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx>
33*b1cdbd2cSJim Jagielski #include <svtools/svmedit2.hxx>
34*b1cdbd2cSJim Jagielski #include <svtools/svmedit.hxx>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexContainer.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModuleManager.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XUIConfigurationListener.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XUIConfigurationManager.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XImageManager.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/graphic/XGraphicProvider.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XStorable.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleComponentFactory.hpp>
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski #define _SVSTDARR_USHORTS
49*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSDTOR
50*b1cdbd2cSJim Jagielski #include <svl/svstdarr.hxx>		// SvUShorts
51*b1cdbd2cSJim Jagielski #include <sfx2/minarray.hxx>
52*b1cdbd2cSJim Jagielski #include <sfx2/tabdlg.hxx>
53*b1cdbd2cSJim Jagielski #include <vector>
54*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #include "selector.hxx"
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski class SvxConfigEntry;
59*b1cdbd2cSJim Jagielski class SvxConfigPage;
60*b1cdbd2cSJim Jagielski class SvxMenuConfigPage;
61*b1cdbd2cSJim Jagielski class SvxToolbarConfigPage;
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski typedef std::vector< SvxConfigEntry* > SvxEntries;
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski class SvxConfigDialog : public SfxTabDialog
66*b1cdbd2cSJim Jagielski {
67*b1cdbd2cSJim Jagielski private:
68*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame;
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski public:
71*b1cdbd2cSJim Jagielski 	SvxConfigDialog( Window*, const SfxItemSet* );
72*b1cdbd2cSJim Jagielski 	~SvxConfigDialog();
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski 	virtual void				PageCreated( sal_uInt16 nId, SfxTabPage &rPage );
75*b1cdbd2cSJim Jagielski 	virtual short				Ok();
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski     void SetFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame);
78*b1cdbd2cSJim Jagielski };
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski class SaveInData : public ImageProvider
81*b1cdbd2cSJim Jagielski {
82*b1cdbd2cSJim Jagielski private:
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski 	bool		bModified;
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski 	bool		bDocConfig;
87*b1cdbd2cSJim Jagielski 	bool		bReadOnly;
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
90*b1cdbd2cSJim Jagielski 		< com::sun::star::ui::XUIConfigurationManager > m_xCfgMgr;
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
93*b1cdbd2cSJim Jagielski 		< com::sun::star::ui::XUIConfigurationManager > m_xParentCfgMgr;
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
96*b1cdbd2cSJim Jagielski 		< com::sun::star::ui::XImageManager > m_xImgMgr;
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
99*b1cdbd2cSJim Jagielski 		< com::sun::star::ui::XImageManager > m_xParentImgMgr;
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski     static ::com::sun::star::uno::Reference
102*b1cdbd2cSJim Jagielski 		< com::sun::star::ui::XImageManager >* xDefaultImgMgr;
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski public:
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 	SaveInData(
107*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
108*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >& xCfgMgr,
109*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
110*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >& xParentCfgMgr,
111*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
112*b1cdbd2cSJim Jagielski 		bool docConfig );
113*b1cdbd2cSJim Jagielski 
~SaveInData()114*b1cdbd2cSJim Jagielski 	~SaveInData() {}
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 	bool PersistChanges(
117*b1cdbd2cSJim Jagielski 		const com::sun::star::uno::Reference
118*b1cdbd2cSJim Jagielski 			< com::sun::star::uno::XInterface >& xManager );
119*b1cdbd2cSJim Jagielski 
SetModified(bool bValue=sal_True)120*b1cdbd2cSJim Jagielski 	void SetModified( bool bValue = sal_True ) { bModified = bValue; }
IsModified()121*b1cdbd2cSJim Jagielski 	bool IsModified( ) { return bModified; }
122*b1cdbd2cSJim Jagielski 
IsReadOnly()123*b1cdbd2cSJim Jagielski 	bool IsReadOnly( ) { return bReadOnly; }
IsDocConfig()124*b1cdbd2cSJim Jagielski 	bool IsDocConfig( ) { return bDocConfig; }
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
127*b1cdbd2cSJim Jagielski         < ::com::sun::star::ui::XUIConfigurationManager >
GetConfigManager()128*b1cdbd2cSJim Jagielski 			GetConfigManager() { return m_xCfgMgr; };
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
131*b1cdbd2cSJim Jagielski         < ::com::sun::star::ui::XUIConfigurationManager >
GetParentConfigManager()132*b1cdbd2cSJim Jagielski 			GetParentConfigManager() { return m_xParentCfgMgr; };
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
135*b1cdbd2cSJim Jagielski         < ::com::sun::star::ui::XImageManager >
GetImageManager()136*b1cdbd2cSJim Jagielski 			GetImageManager() { return m_xImgMgr; };
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
139*b1cdbd2cSJim Jagielski         < ::com::sun::star::ui::XImageManager >
GetParentImageManager()140*b1cdbd2cSJim Jagielski 			GetParentImageManager() { return m_xParentImgMgr; };
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
143*b1cdbd2cSJim Jagielski 		< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
146*b1cdbd2cSJim Jagielski 		< com::sun::star::container::XNameAccess > m_xCommandToLabelMap;
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski     com::sun::star::uno::Reference
149*b1cdbd2cSJim Jagielski 		< com::sun::star::uno::XComponentContext > m_xComponentContext;
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski     com::sun::star::uno::Sequence
152*b1cdbd2cSJim Jagielski 		< com::sun::star::beans::PropertyValue > m_aSeparatorSeq;
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski 	Image GetImage( const rtl::OUString& rCommandURL );
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski 	virtual bool HasURL( const rtl::OUString& aURL ) = 0;
157*b1cdbd2cSJim Jagielski 	virtual bool HasSettings() = 0;
158*b1cdbd2cSJim Jagielski 	virtual SvxEntries* GetEntries() = 0;
159*b1cdbd2cSJim Jagielski 	virtual void SetEntries( SvxEntries* ) = 0;
160*b1cdbd2cSJim Jagielski 	virtual void Reset() = 0;
161*b1cdbd2cSJim Jagielski 	virtual bool Apply() = 0;
162*b1cdbd2cSJim Jagielski };
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski class MenuSaveInData : public SaveInData
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski private:
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 	rtl::OUString				m_aMenuResourceURL;
169*b1cdbd2cSJim Jagielski 	rtl::OUString				m_aDescriptorContainer;
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
172*b1cdbd2cSJim Jagielski 		< com::sun::star::container::XIndexAccess > m_xMenuSettings;
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski 	SvxConfigEntry*	pRootEntry;
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski 	// static holder of the default menu data
177*b1cdbd2cSJim Jagielski 	static MenuSaveInData* pDefaultData;
178*b1cdbd2cSJim Jagielski 
SetDefaultData(MenuSaveInData * pData)179*b1cdbd2cSJim Jagielski 	static void SetDefaultData( MenuSaveInData* pData ) {pDefaultData = pData;}
GetDefaultData()180*b1cdbd2cSJim Jagielski 	static MenuSaveInData* GetDefaultData() { return pDefaultData; }
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski 	void		Apply( bool bDefault );
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski     void		Apply(
185*b1cdbd2cSJim Jagielski 		SvxConfigEntry* pRootEntry,
186*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
187*b1cdbd2cSJim Jagielski 			com::sun::star::container::XIndexContainer >& rNewMenuBar,
188*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
189*b1cdbd2cSJim Jagielski 			com::sun::star::lang::XSingleComponentFactory >& rFactory,
190*b1cdbd2cSJim Jagielski 		SvLBoxEntry *pParent = NULL );
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski     void		ApplyMenu(
193*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
194*b1cdbd2cSJim Jagielski 			com::sun::star::container::XIndexContainer >& rNewMenuBar,
195*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
196*b1cdbd2cSJim Jagielski 			com::sun::star::lang::XSingleComponentFactory >& rFactory,
197*b1cdbd2cSJim Jagielski 		SvxConfigEntry *pMenuData = NULL );
198*b1cdbd2cSJim Jagielski 
199*b1cdbd2cSJim Jagielski 	bool		LoadSubMenus(
200*b1cdbd2cSJim Jagielski     	const ::com::sun::star::uno::Reference<
201*b1cdbd2cSJim Jagielski 			com::sun::star::container::XIndexAccess >& xMenuBarSettings,
202*b1cdbd2cSJim Jagielski 		const rtl::OUString& rBaseTitle, SvxConfigEntry* pParentData );
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski public:
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski 	MenuSaveInData(
207*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
208*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
209*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
210*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
211*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
212*b1cdbd2cSJim Jagielski 		bool docConfig );
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski 	~MenuSaveInData();
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski 	// methods inherited from SaveInData
217*b1cdbd2cSJim Jagielski 	SvxEntries*			GetEntries();
218*b1cdbd2cSJim Jagielski 	void				SetEntries( SvxEntries* );
HasURL(const rtl::OUString & URL)219*b1cdbd2cSJim Jagielski 	bool				HasURL( const rtl::OUString& URL ) { (void)URL; return sal_False; }
HasSettings()220*b1cdbd2cSJim Jagielski 	bool				HasSettings() { return m_xMenuSettings.is(); }
221*b1cdbd2cSJim Jagielski 	void				Reset();
222*b1cdbd2cSJim Jagielski 	bool				Apply();
223*b1cdbd2cSJim Jagielski };
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski class SvxConfigEntry
226*b1cdbd2cSJim Jagielski {
227*b1cdbd2cSJim Jagielski private:
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski 	// common properties
230*b1cdbd2cSJim Jagielski 	sal_uInt16						nId;
231*b1cdbd2cSJim Jagielski 	::rtl::OUString  			aHelpText;
232*b1cdbd2cSJim Jagielski 	::rtl::OUString				aLabel;
233*b1cdbd2cSJim Jagielski 	::rtl::OUString				aCommand;
234*b1cdbd2cSJim Jagielski     ::rtl::OUString				aHelpURL;
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski     bool                        bPopUp;
237*b1cdbd2cSJim Jagielski     bool                        bStrEdited;
238*b1cdbd2cSJim Jagielski 	bool						bIsUserDefined;
239*b1cdbd2cSJim Jagielski 	bool						bIsMain;
240*b1cdbd2cSJim Jagielski 	bool						bIsDeletable;
241*b1cdbd2cSJim Jagielski 	bool						bIsMovable;
242*b1cdbd2cSJim Jagielski     bool                        bIsParentData;
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski 	// toolbar specific properties
245*b1cdbd2cSJim Jagielski 	bool						bIsVisible;
246*b1cdbd2cSJim Jagielski 	sal_Int32					nStyle;
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference<
249*b1cdbd2cSJim Jagielski 		::com::sun::star::graphic::XGraphic > xBackupGraphic;
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski 	SvxEntries					*pEntries;
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski public:
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 	SvxConfigEntry( const ::rtl::OUString& rDisplayName,
256*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& rCommandURL,
257*b1cdbd2cSJim Jagielski 					bool bPopup = sal_False,
258*b1cdbd2cSJim Jagielski                     bool bParentData = sal_False );
259*b1cdbd2cSJim Jagielski 
SvxConfigEntry()260*b1cdbd2cSJim Jagielski 	SvxConfigEntry()
261*b1cdbd2cSJim Jagielski 		:
262*b1cdbd2cSJim Jagielski 			nId( 0 ),
263*b1cdbd2cSJim Jagielski 			bPopUp( sal_False ),
264*b1cdbd2cSJim Jagielski 			bStrEdited( sal_False ),
265*b1cdbd2cSJim Jagielski 			bIsUserDefined( sal_False ),
266*b1cdbd2cSJim Jagielski 			bIsMain( sal_False ),
267*b1cdbd2cSJim Jagielski             bIsParentData( sal_False ),
268*b1cdbd2cSJim Jagielski 			bIsVisible( sal_True ),
269*b1cdbd2cSJim Jagielski 			nStyle( 0 ),
270*b1cdbd2cSJim Jagielski 			pEntries( 0 )
271*b1cdbd2cSJim Jagielski 	{}
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski 	~SvxConfigEntry();
274*b1cdbd2cSJim Jagielski 
GetCommand() const275*b1cdbd2cSJim Jagielski 	const ::rtl::OUString&		GetCommand() const { return aCommand; }
SetCommand(const String & rCmd)276*b1cdbd2cSJim Jagielski 	void	SetCommand( const String& rCmd ) { aCommand = rCmd; }
277*b1cdbd2cSJim Jagielski 
GetName() const278*b1cdbd2cSJim Jagielski 	const ::rtl::OUString& 		GetName() const { return aLabel; }
SetName(const String & rStr)279*b1cdbd2cSJim Jagielski 	void	SetName( const String& rStr ) { aLabel = rStr; bStrEdited = sal_True; }
HasChangedName() const280*b1cdbd2cSJim Jagielski     bool	HasChangedName() const { return bStrEdited; }
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 	const ::rtl::OUString&		GetHelpText() ;
SetHelpText(const String & rStr)283*b1cdbd2cSJim Jagielski 	void	SetHelpText( const String& rStr ) { aHelpText = rStr; }
284*b1cdbd2cSJim Jagielski 
GetHelpURL() const285*b1cdbd2cSJim Jagielski     const ::rtl::OUString&		GetHelpURL() const { return aHelpURL; }
SetHelpURL(const String & rStr)286*b1cdbd2cSJim Jagielski     void	SetHelpURL( const String& rStr ) { aHelpURL = rStr; }
287*b1cdbd2cSJim Jagielski 
SetPopup(bool bOn=sal_True)288*b1cdbd2cSJim Jagielski 	void	SetPopup( bool bOn = sal_True ) { bPopUp = bOn; }
IsPopup() const289*b1cdbd2cSJim Jagielski 	bool	IsPopup() const { return bPopUp; }
290*b1cdbd2cSJim Jagielski 
SetUserDefined(bool bOn=sal_True)291*b1cdbd2cSJim Jagielski 	void	SetUserDefined( bool bOn = sal_True ) { bIsUserDefined = bOn; }
IsUserDefined() const292*b1cdbd2cSJim Jagielski 	bool	IsUserDefined() const { return bIsUserDefined; }
293*b1cdbd2cSJim Jagielski 
IsBinding() const294*b1cdbd2cSJim Jagielski 	bool	IsBinding() const { return !bPopUp; }
IsSeparator() const295*b1cdbd2cSJim Jagielski 	bool	IsSeparator() const { return nId == 0; }
296*b1cdbd2cSJim Jagielski 
GetEntries() const297*b1cdbd2cSJim Jagielski 	SvxEntries*	GetEntries() const { return pEntries; }
SetEntries(SvxEntries * entries)298*b1cdbd2cSJim Jagielski 	void	SetEntries( SvxEntries* entries ) { pEntries = entries; }
HasEntries() const299*b1cdbd2cSJim Jagielski 	bool	HasEntries() const { return pEntries != NULL; }
300*b1cdbd2cSJim Jagielski 
SetMain(bool bValue=sal_True)301*b1cdbd2cSJim Jagielski 	void	SetMain( bool bValue = sal_True ) { bIsMain = bValue; }
IsMain()302*b1cdbd2cSJim Jagielski 	bool	IsMain() { return bIsMain; }
303*b1cdbd2cSJim Jagielski 
SetParentData(bool bValue=sal_True)304*b1cdbd2cSJim Jagielski     void    SetParentData( bool bValue = sal_True ) { bIsParentData = bValue; }
IsParentData()305*b1cdbd2cSJim Jagielski     bool    IsParentData() { return bIsParentData; }
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski     bool	IsMovable();
308*b1cdbd2cSJim Jagielski 	bool	IsDeletable();
309*b1cdbd2cSJim Jagielski 	bool	IsRenamable();
310*b1cdbd2cSJim Jagielski 
SetVisible(bool b)311*b1cdbd2cSJim Jagielski 	void	SetVisible( bool b ) { bIsVisible = b; }
IsVisible() const312*b1cdbd2cSJim Jagielski 	bool	IsVisible() const { return bIsVisible; }
313*b1cdbd2cSJim Jagielski 
SetBackupGraphic(::com::sun::star::uno::Reference<::com::sun::star::graphic::XGraphic> graphic)314*b1cdbd2cSJim Jagielski 	void	SetBackupGraphic(
315*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference<
316*b1cdbd2cSJim Jagielski 			::com::sun::star::graphic::XGraphic > graphic )
317*b1cdbd2cSJim Jagielski 				{ xBackupGraphic = graphic; }
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference<
320*b1cdbd2cSJim Jagielski 		::com::sun::star::graphic::XGraphic >
GetBackupGraphic()321*b1cdbd2cSJim Jagielski 			GetBackupGraphic()
322*b1cdbd2cSJim Jagielski 				{ return xBackupGraphic; }
323*b1cdbd2cSJim Jagielski 
IsIconModified()324*b1cdbd2cSJim Jagielski 	bool	IsIconModified() { return xBackupGraphic.is(); }
325*b1cdbd2cSJim Jagielski 
GetStyle()326*b1cdbd2cSJim Jagielski 	sal_Int32	GetStyle() { return nStyle; }
SetStyle(sal_Int32 style)327*b1cdbd2cSJim Jagielski 	void		SetStyle( sal_Int32 style ) { nStyle = style; }
328*b1cdbd2cSJim Jagielski };
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski class SvxMenuEntriesListBox : public SvTreeListBox
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski private:
333*b1cdbd2cSJim Jagielski 	SvxConfigPage*		pPage;
334*b1cdbd2cSJim Jagielski 
335*b1cdbd2cSJim Jagielski protected:
336*b1cdbd2cSJim Jagielski 	bool				m_bIsInternalDrag;
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski public:
339*b1cdbd2cSJim Jagielski 	SvxMenuEntriesListBox( Window*, const ResId& );
340*b1cdbd2cSJim Jagielski 	~SvxMenuEntriesListBox();
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 	virtual sal_Int8	AcceptDrop( const AcceptDropEvent& rEvt );
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski 	virtual sal_Bool    	NotifyAcceptDrop( SvLBoxEntry* pEntry );
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 	virtual sal_Bool    	NotifyMoving( SvLBoxEntry*, SvLBoxEntry*,
347*b1cdbd2cSJim Jagielski 									  SvLBoxEntry*&, sal_uLong& );
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski 	virtual sal_Bool		NotifyCopying( SvLBoxEntry*, SvLBoxEntry*,
350*b1cdbd2cSJim Jagielski 									   SvLBoxEntry*&, sal_uLong&);
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski 	virtual DragDropMode	NotifyStartDrag(
353*b1cdbd2cSJim Jagielski 		TransferDataContainer&, SvLBoxEntry* );
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski 	virtual void		DragFinished( sal_Int8 );
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski 	void 				KeyInput( const KeyEvent& rKeyEvent );
358*b1cdbd2cSJim Jagielski };
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski class SvxDescriptionEdit : public ExtMultiLineEdit
361*b1cdbd2cSJim Jagielski {
362*b1cdbd2cSJim Jagielski private:
363*b1cdbd2cSJim Jagielski     Rectangle           m_aRealRect;
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski public:
366*b1cdbd2cSJim Jagielski     SvxDescriptionEdit( Window* pParent, const ResId& _rId );
~SvxDescriptionEdit()367*b1cdbd2cSJim Jagielski     inline ~SvxDescriptionEdit() {}
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski     void                SetNewText( const String& _rText );
Clear()370*b1cdbd2cSJim Jagielski     inline void         Clear() { SetNewText( String() ); }
371*b1cdbd2cSJim Jagielski };
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski class SvxConfigPage : public SfxTabPage
374*b1cdbd2cSJim Jagielski {
375*b1cdbd2cSJim Jagielski private:
376*b1cdbd2cSJim Jagielski 
377*b1cdbd2cSJim Jagielski 	bool								bInitialised;
378*b1cdbd2cSJim Jagielski 	SaveInData*							pCurrentSaveInData;
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski     DECL_LINK(  SelectSaveInLocation, ListBox * );
381*b1cdbd2cSJim Jagielski     DECL_LINK(  AsyncInfoMsg, String* );
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski     bool        SwapEntryData( SvLBoxEntry* pSourceEntry, SvLBoxEntry* pTargetEntry );
384*b1cdbd2cSJim Jagielski     void        AlignControls();
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski protected:
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski 	// the top section of the tab page where top level menus and toolbars
389*b1cdbd2cSJim Jagielski 	//  are displayed in a listbox
390*b1cdbd2cSJim Jagielski 	FixedLine							aTopLevelSeparator;
391*b1cdbd2cSJim Jagielski 	FixedText							aTopLevelLabel;
392*b1cdbd2cSJim Jagielski 	ListBox								aTopLevelListBox;
393*b1cdbd2cSJim Jagielski 	PushButton							aNewTopLevelButton;
394*b1cdbd2cSJim Jagielski 	MenuButton							aModifyTopLevelButton;
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski 	// the contents section where the contents of the selected
397*b1cdbd2cSJim Jagielski 	// menu or toolbar are displayed
398*b1cdbd2cSJim Jagielski 	FixedLine							aContentsSeparator;
399*b1cdbd2cSJim Jagielski 	FixedText							aContentsLabel;
400*b1cdbd2cSJim Jagielski 	SvTreeListBox*						aContentsListBox;
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski 	PushButton							aAddCommandsButton;
403*b1cdbd2cSJim Jagielski 	MenuButton							aModifyCommandButton;
404*b1cdbd2cSJim Jagielski 
405*b1cdbd2cSJim Jagielski 	ImageButton							aMoveUpButton;
406*b1cdbd2cSJim Jagielski 	ImageButton							aMoveDownButton;
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski 	FixedText							aSaveInText;
409*b1cdbd2cSJim Jagielski 	ListBox								aSaveInListBox;
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski     FixedText                           aDescriptionLabel;
412*b1cdbd2cSJim Jagielski     SvxDescriptionEdit                  aDescriptionField;
413*b1cdbd2cSJim Jagielski 
414*b1cdbd2cSJim Jagielski 	SvxScriptSelectorDialog*			pSelectorDlg;
415*b1cdbd2cSJim Jagielski 
416*b1cdbd2cSJim Jagielski 	// the ResourceURL to select when opening the dialog
417*b1cdbd2cSJim Jagielski 	rtl::OUString						m_aURLToSelect;
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference
420*b1cdbd2cSJim Jagielski 		< ::com::sun::star::frame::XFrame > m_xFrame;
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski 	SvxConfigPage( Window*, /* const ResId&, */ const SfxItemSet& );
423*b1cdbd2cSJim Jagielski 	virtual ~SvxConfigPage();
424*b1cdbd2cSJim Jagielski 
425*b1cdbd2cSJim Jagielski 	DECL_LINK( MoveHdl, Button * );
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski 	virtual SaveInData* CreateSaveInData(
428*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
429*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
430*b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference <
431*b1cdbd2cSJim Jagielski             ::com::sun::star::ui::XUIConfigurationManager >&,
432*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
433*b1cdbd2cSJim Jagielski 		bool docConfig ) = 0;
434*b1cdbd2cSJim Jagielski 
435*b1cdbd2cSJim Jagielski 	virtual void			Init() = 0;
436*b1cdbd2cSJim Jagielski 	virtual void			UpdateButtonStates() = 0;
437*b1cdbd2cSJim Jagielski 	virtual short			QueryReset() = 0;
438*b1cdbd2cSJim Jagielski 
439*b1cdbd2cSJim Jagielski 	void			PositionContentsListBox();
440*b1cdbd2cSJim Jagielski 
441*b1cdbd2cSJim Jagielski 	SvLBoxEntry*	InsertEntry(		SvxConfigEntry* pNewEntryData,
442*b1cdbd2cSJim Jagielski 										SvLBoxEntry* pTarget = NULL,
443*b1cdbd2cSJim Jagielski 										bool bFront = sal_False );
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski 	void			AddSubMenusToUI(	const String& rBaseTitle,
446*b1cdbd2cSJim Jagielski 										SvxConfigEntry* pParentData );
447*b1cdbd2cSJim Jagielski 
448*b1cdbd2cSJim Jagielski 	SvLBoxEntry*	InsertEntryIntoUI ( SvxConfigEntry* pNewEntryData,
449*b1cdbd2cSJim Jagielski 										sal_uLong nPos = LIST_APPEND );
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski 	SvxEntries*		FindParentForChild( SvxEntries* pParentEntries,
452*b1cdbd2cSJim Jagielski 										SvxConfigEntry* pChildData );
453*b1cdbd2cSJim Jagielski 
454*b1cdbd2cSJim Jagielski 	void			ReloadTopLevelListBox( SvxConfigEntry* pSelection = NULL );
455*b1cdbd2cSJim Jagielski 
456*b1cdbd2cSJim Jagielski public:
457*b1cdbd2cSJim Jagielski 
458*b1cdbd2cSJim Jagielski 	static bool		CanConfig( const ::rtl::OUString& rModuleId );
459*b1cdbd2cSJim Jagielski 
GetSaveInData()460*b1cdbd2cSJim Jagielski 	SaveInData*		GetSaveInData() { return pCurrentSaveInData; }
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski 	SvLBoxEntry*	AddFunction( SvLBoxEntry* pTarget = NULL,
463*b1cdbd2cSJim Jagielski 								 bool bFront = sal_False,
464*b1cdbd2cSJim Jagielski 								 bool bAllowDuplicates = sal_False );
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski 	virtual void	MoveEntry( bool bMoveUp );
467*b1cdbd2cSJim Jagielski 
468*b1cdbd2cSJim Jagielski 	bool			MoveEntryData(	SvLBoxEntry* pSourceEntry,
469*b1cdbd2cSJim Jagielski 									SvLBoxEntry* pTargetEntry );
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski 	sal_Bool			FillItemSet( SfxItemSet& );
472*b1cdbd2cSJim Jagielski 	void			Reset( const SfxItemSet& );
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski 	virtual bool	DeleteSelectedContent() = 0;
475*b1cdbd2cSJim Jagielski 	virtual void	DeleteSelectedTopLevel() = 0;
476*b1cdbd2cSJim Jagielski 
GetTopLevelSelection()477*b1cdbd2cSJim Jagielski 	SvxConfigEntry*	GetTopLevelSelection()
478*b1cdbd2cSJim Jagielski 	{
479*b1cdbd2cSJim Jagielski 		return (SvxConfigEntry*) aTopLevelListBox.GetEntryData(
480*b1cdbd2cSJim Jagielski 			aTopLevelListBox.GetSelectEntryPos() );
481*b1cdbd2cSJim Jagielski 	}
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski     /** identifies the module in the given frame. If the frame is <NULL/>, a default
484*b1cdbd2cSJim Jagielski         frame will be determined beforehand.
485*b1cdbd2cSJim Jagielski 
486*b1cdbd2cSJim Jagielski         If the given frame is <NULL/>, a default frame will be used: The method the active
487*b1cdbd2cSJim Jagielski         frame of the desktop, then the current frame. If both are <NULL/>,
488*b1cdbd2cSJim Jagielski         the SfxViewFrame::Current's XFrame is used. If this is <NULL/>, too, an empty string is returned.
489*b1cdbd2cSJim Jagielski 
490*b1cdbd2cSJim Jagielski         If the given frame is not <NULL/>, or an default frame could be successfully determined, then
491*b1cdbd2cSJim Jagielski         the ModuleManager is asked for the module ID of the component in the frame.
492*b1cdbd2cSJim Jagielski     */
493*b1cdbd2cSJim Jagielski     static ::rtl::OUString
494*b1cdbd2cSJim Jagielski         GetFrameWithDefaultAndIdentify( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _inout_rxFrame );
495*b1cdbd2cSJim Jagielski };
496*b1cdbd2cSJim Jagielski 
497*b1cdbd2cSJim Jagielski class SvxMenuConfigPage : public SvxConfigPage
498*b1cdbd2cSJim Jagielski {
499*b1cdbd2cSJim Jagielski private:
500*b1cdbd2cSJim Jagielski 
501*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectMenu, ListBox * );
502*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectMenuEntry, Control * );
503*b1cdbd2cSJim Jagielski 	DECL_LINK( NewMenuHdl, Button * );
504*b1cdbd2cSJim Jagielski 	DECL_LINK( MenuSelectHdl, MenuButton * );
505*b1cdbd2cSJim Jagielski 	DECL_LINK( EntrySelectHdl, MenuButton * );
506*b1cdbd2cSJim Jagielski 	DECL_LINK( AddCommandsHdl, Button * );
507*b1cdbd2cSJim Jagielski 	DECL_LINK( AddFunctionHdl, SvxScriptSelectorDialog * );
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski 	void			Init();
510*b1cdbd2cSJim Jagielski 	void			UpdateButtonStates();
511*b1cdbd2cSJim Jagielski 	short			QueryReset();
512*b1cdbd2cSJim Jagielski 	bool			DeleteSelectedContent();
513*b1cdbd2cSJim Jagielski 	void			DeleteSelectedTopLevel();
514*b1cdbd2cSJim Jagielski 
515*b1cdbd2cSJim Jagielski public:
516*b1cdbd2cSJim Jagielski 	SvxMenuConfigPage( Window *pParent, const SfxItemSet& rItemSet );
517*b1cdbd2cSJim Jagielski 	~SvxMenuConfigPage();
518*b1cdbd2cSJim Jagielski 
519*b1cdbd2cSJim Jagielski 	SaveInData* CreateSaveInData(
520*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
521*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
522*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
523*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
524*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
525*b1cdbd2cSJim Jagielski 		bool docConfig );
526*b1cdbd2cSJim Jagielski };
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski class SvxMainMenuOrganizerDialog : public ModalDialog
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski 	FixedText		aMenuNameText;
531*b1cdbd2cSJim Jagielski 	Edit			aMenuNameEdit;
532*b1cdbd2cSJim Jagielski 	FixedText		aMenuListText;
533*b1cdbd2cSJim Jagielski 	SvTreeListBox	aMenuListBox;
534*b1cdbd2cSJim Jagielski 	ImageButton		aMoveUpButton;
535*b1cdbd2cSJim Jagielski 	ImageButton		aMoveDownButton;
536*b1cdbd2cSJim Jagielski 	OKButton		aOKButton;
537*b1cdbd2cSJim Jagielski 	CancelButton	aCloseButton;
538*b1cdbd2cSJim Jagielski 	HelpButton		aHelpButton;
539*b1cdbd2cSJim Jagielski 
540*b1cdbd2cSJim Jagielski 	SvxEntries*		pEntries;
541*b1cdbd2cSJim Jagielski 	SvLBoxEntry*	pNewMenuEntry;
542*b1cdbd2cSJim Jagielski 	bool			bModified;
543*b1cdbd2cSJim Jagielski 
544*b1cdbd2cSJim Jagielski 	void UpdateButtonStates();
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski 	DECL_LINK( MoveHdl, Button * );
547*b1cdbd2cSJim Jagielski 	DECL_LINK( ModifyHdl, Edit * );
548*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectHdl, Control* );
549*b1cdbd2cSJim Jagielski 
550*b1cdbd2cSJim Jagielski public:
551*b1cdbd2cSJim Jagielski 	SvxMainMenuOrganizerDialog (
552*b1cdbd2cSJim Jagielski 		Window*, SvxEntries*,
553*b1cdbd2cSJim Jagielski 		SvxConfigEntry*, bool bCreateMenu = sal_False );
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski 	~SvxMainMenuOrganizerDialog ();
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski 	SvxEntries* 	GetEntries();
558*b1cdbd2cSJim Jagielski 	void 			SetEntries( SvxEntries* );
559*b1cdbd2cSJim Jagielski 	SvxConfigEntry*	GetSelectedEntry();
560*b1cdbd2cSJim Jagielski };
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski class SvxToolbarEntriesListBox : public SvxMenuEntriesListBox
563*b1cdbd2cSJim Jagielski {
564*b1cdbd2cSJim Jagielski 	Size			m_aCheckBoxImageSizePixel;
565*b1cdbd2cSJim Jagielski 	Link			m_aChangedListener;
566*b1cdbd2cSJim Jagielski 	SvLBoxButtonData*	m_pButtonData;
567*b1cdbd2cSJim Jagielski 	sal_Bool			m_bHiContrastMode;
568*b1cdbd2cSJim Jagielski 	SvxConfigPage*	pPage;
569*b1cdbd2cSJim Jagielski 
570*b1cdbd2cSJim Jagielski 	void			ChangeVisibility( SvLBoxEntry* pEntry );
571*b1cdbd2cSJim Jagielski 
572*b1cdbd2cSJim Jagielski protected:
573*b1cdbd2cSJim Jagielski 
574*b1cdbd2cSJim Jagielski 	virtual void	CheckButtonHdl();
575*b1cdbd2cSJim Jagielski 	virtual void	DataChanged( const DataChangedEvent& rDCEvt );
576*b1cdbd2cSJim Jagielski 	void			BuildCheckBoxButtonImages( SvLBoxButtonData* );
577*b1cdbd2cSJim Jagielski 	Image			GetSizedImage(
578*b1cdbd2cSJim Jagielski 		VirtualDevice& aDev, const Size& aNewSize, const Image& aImage );
579*b1cdbd2cSJim Jagielski 
580*b1cdbd2cSJim Jagielski public:
581*b1cdbd2cSJim Jagielski 
582*b1cdbd2cSJim Jagielski 	SvxToolbarEntriesListBox(
583*b1cdbd2cSJim Jagielski 		Window* pParent, const ResId& );
584*b1cdbd2cSJim Jagielski 
585*b1cdbd2cSJim Jagielski 	~SvxToolbarEntriesListBox();
586*b1cdbd2cSJim Jagielski 
SetChangedListener(const Link & aChangedListener)587*b1cdbd2cSJim Jagielski 	void			SetChangedListener( const Link& aChangedListener )
588*b1cdbd2cSJim Jagielski 		{ m_aChangedListener = aChangedListener; }
589*b1cdbd2cSJim Jagielski 
GetChangedListener() const590*b1cdbd2cSJim Jagielski 	const Link&		GetChangedListener() const { return m_aChangedListener; }
591*b1cdbd2cSJim Jagielski 
GetCheckBoxPixelSize() const592*b1cdbd2cSJim Jagielski 	Size			GetCheckBoxPixelSize() const
593*b1cdbd2cSJim Jagielski 		{ return m_aCheckBoxImageSizePixel; }
594*b1cdbd2cSJim Jagielski 
595*b1cdbd2cSJim Jagielski 	virtual sal_Bool	NotifyMoving(
596*b1cdbd2cSJim Jagielski 		SvLBoxEntry*, SvLBoxEntry*, SvLBoxEntry*&, sal_uLong& );
597*b1cdbd2cSJim Jagielski 
598*b1cdbd2cSJim Jagielski 	virtual sal_Bool	NotifyCopying(
599*b1cdbd2cSJim Jagielski 		SvLBoxEntry*, SvLBoxEntry*, SvLBoxEntry*&, sal_uLong&);
600*b1cdbd2cSJim Jagielski 
601*b1cdbd2cSJim Jagielski 	void 			KeyInput( const KeyEvent& rKeyEvent );
602*b1cdbd2cSJim Jagielski };
603*b1cdbd2cSJim Jagielski 
604*b1cdbd2cSJim Jagielski class SvxToolbarConfigPage : public SvxConfigPage
605*b1cdbd2cSJim Jagielski {
606*b1cdbd2cSJim Jagielski private:
607*b1cdbd2cSJim Jagielski 
608*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectToolbar, ListBox * );
609*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectToolbarEntry, Control * );
610*b1cdbd2cSJim Jagielski 	DECL_LINK( ToolbarSelectHdl, MenuButton * );
611*b1cdbd2cSJim Jagielski 	DECL_LINK( EntrySelectHdl, MenuButton * );
612*b1cdbd2cSJim Jagielski 	DECL_LINK( NewToolbarHdl, Button * );
613*b1cdbd2cSJim Jagielski 	DECL_LINK( AddCommandsHdl, Button * );
614*b1cdbd2cSJim Jagielski 	DECL_LINK( AddFunctionHdl, SvxScriptSelectorDialog * );
615*b1cdbd2cSJim Jagielski 	DECL_LINK( MoveHdl, Button * );
616*b1cdbd2cSJim Jagielski 
617*b1cdbd2cSJim Jagielski 	void			UpdateButtonStates();
618*b1cdbd2cSJim Jagielski 	short			QueryReset();
619*b1cdbd2cSJim Jagielski 	void			Init();
620*b1cdbd2cSJim Jagielski 	bool			DeleteSelectedContent();
621*b1cdbd2cSJim Jagielski 	void			DeleteSelectedTopLevel();
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski public:
624*b1cdbd2cSJim Jagielski 	SvxToolbarConfigPage( Window *pParent, const SfxItemSet& rItemSet );
625*b1cdbd2cSJim Jagielski 	~SvxToolbarConfigPage();
626*b1cdbd2cSJim Jagielski 
627*b1cdbd2cSJim Jagielski 	SvLBoxEntry*	AddFunction( SvLBoxEntry* pTarget = NULL,
628*b1cdbd2cSJim Jagielski 											 bool bFront = sal_False,
629*b1cdbd2cSJim Jagielski 											 bool bAllowDuplicates = sal_True );
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski 	void			MoveEntry( bool bMoveUp );
632*b1cdbd2cSJim Jagielski 
633*b1cdbd2cSJim Jagielski 	SaveInData*		CreateSaveInData(
634*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
635*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
636*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
637*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
638*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
639*b1cdbd2cSJim Jagielski 		bool docConfig );
640*b1cdbd2cSJim Jagielski };
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski class ToolbarSaveInData : public SaveInData
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski private:
645*b1cdbd2cSJim Jagielski 
646*b1cdbd2cSJim Jagielski 	SvxConfigEntry*	                               pRootEntry;
647*b1cdbd2cSJim Jagielski 	rtl::OUString	                               m_aDescriptorContainer;
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference
650*b1cdbd2cSJim Jagielski 		< com::sun::star::container::XNameAccess > m_xPersistentWindowState;
651*b1cdbd2cSJim Jagielski 
652*b1cdbd2cSJim Jagielski 	bool		LoadToolbar(
653*b1cdbd2cSJim Jagielski     	const ::com::sun::star::uno::Reference<
654*b1cdbd2cSJim Jagielski 			com::sun::star::container::XIndexAccess >& xToolBarSettings,
655*b1cdbd2cSJim Jagielski 		SvxConfigEntry* pParentData );
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski 	void		ApplyToolbar(
658*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
659*b1cdbd2cSJim Jagielski 			com::sun::star::container::XIndexContainer >& rNewToolbarBar,
660*b1cdbd2cSJim Jagielski 		com::sun::star::uno::Reference<
661*b1cdbd2cSJim Jagielski 			com::sun::star::lang::XSingleComponentFactory >& rFactory,
662*b1cdbd2cSJim Jagielski 		SvxConfigEntry *pToolbar = NULL );
663*b1cdbd2cSJim Jagielski 
664*b1cdbd2cSJim Jagielski public:
665*b1cdbd2cSJim Jagielski 
666*b1cdbd2cSJim Jagielski 	ToolbarSaveInData(
667*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
668*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XUIConfigurationManager >&,
669*b1cdbd2cSJim Jagielski             const ::com::sun::star::uno::Reference <
670*b1cdbd2cSJim Jagielski             ::com::sun::star::ui::XUIConfigurationManager >&,
671*b1cdbd2cSJim Jagielski 		const rtl::OUString& aModuleId,
672*b1cdbd2cSJim Jagielski 		bool docConfig );
673*b1cdbd2cSJim Jagielski 
674*b1cdbd2cSJim Jagielski 	~ToolbarSaveInData();
675*b1cdbd2cSJim Jagielski 
676*b1cdbd2cSJim Jagielski 	void			CreateToolbar( SvxConfigEntry* pToolbar );
677*b1cdbd2cSJim Jagielski 	void 			RestoreToolbar( SvxConfigEntry* pToolbar );
678*b1cdbd2cSJim Jagielski 	void 			RemoveToolbar( SvxConfigEntry* pToolbar );
679*b1cdbd2cSJim Jagielski 	void 			ApplyToolbar( SvxConfigEntry* pToolbar );
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski 	rtl::OUString	GetSystemUIName( const rtl::OUString& rResourceURL );
682*b1cdbd2cSJim Jagielski 
683*b1cdbd2cSJim Jagielski 	sal_Int32		GetSystemStyle( const rtl::OUString& rResourceURL );
684*b1cdbd2cSJim Jagielski 
685*b1cdbd2cSJim Jagielski 	void			SetSystemStyle(
686*b1cdbd2cSJim Jagielski 		const rtl::OUString& rResourceURL, sal_Int32 nStyle );
687*b1cdbd2cSJim Jagielski 
688*b1cdbd2cSJim Jagielski 	void			SetSystemStyle(
689*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference
690*b1cdbd2cSJim Jagielski 			< ::com::sun::star::frame::XFrame > xFrame,
691*b1cdbd2cSJim Jagielski 		const rtl::OUString& rResourceURL, sal_Int32 nStyle );
692*b1cdbd2cSJim Jagielski 
693*b1cdbd2cSJim Jagielski 	SvxEntries*		GetEntries();
694*b1cdbd2cSJim Jagielski 	void 			SetEntries( SvxEntries* );
695*b1cdbd2cSJim Jagielski 	bool			HasSettings();
696*b1cdbd2cSJim Jagielski 	bool			HasURL( const rtl::OUString& rURL );
697*b1cdbd2cSJim Jagielski 	void			Reset();
698*b1cdbd2cSJim Jagielski 	bool			Apply();
699*b1cdbd2cSJim Jagielski };
700*b1cdbd2cSJim Jagielski 
701*b1cdbd2cSJim Jagielski class SvxNewToolbarDialog : public ModalDialog
702*b1cdbd2cSJim Jagielski {
703*b1cdbd2cSJim Jagielski private:
704*b1cdbd2cSJim Jagielski 	FixedText		aFtDescription;
705*b1cdbd2cSJim Jagielski 	Edit			aEdtName;
706*b1cdbd2cSJim Jagielski 	FixedText		aSaveInText;
707*b1cdbd2cSJim Jagielski 	OKButton		aBtnOK;
708*b1cdbd2cSJim Jagielski 	CancelButton	aBtnCancel;
709*b1cdbd2cSJim Jagielski 	HelpButton		aBtnHelp;
710*b1cdbd2cSJim Jagielski 
711*b1cdbd2cSJim Jagielski     Link            aCheckNameHdl;
712*b1cdbd2cSJim Jagielski 
713*b1cdbd2cSJim Jagielski     DECL_LINK(ModifyHdl, Edit*);
714*b1cdbd2cSJim Jagielski 
715*b1cdbd2cSJim Jagielski public:
716*b1cdbd2cSJim Jagielski 	SvxNewToolbarDialog( Window* pWindow, const String& rName );
717*b1cdbd2cSJim Jagielski 
718*b1cdbd2cSJim Jagielski 	ListBox			aSaveInListBox;
719*b1cdbd2cSJim Jagielski 
GetName(rtl::OUString & rName)720*b1cdbd2cSJim Jagielski     void    GetName( rtl::OUString& rName ){rName = aEdtName.GetText();}
721*b1cdbd2cSJim Jagielski 
SetCheckNameHdl(const Link & rLink,bool bCheckImmediately=false)722*b1cdbd2cSJim Jagielski     void    SetCheckNameHdl( const Link& rLink, bool bCheckImmediately = false )
723*b1cdbd2cSJim Jagielski     {
724*b1cdbd2cSJim Jagielski         aCheckNameHdl = rLink;
725*b1cdbd2cSJim Jagielski         if ( bCheckImmediately )
726*b1cdbd2cSJim Jagielski             aBtnOK.Enable( rLink.Call( this ) > 0 );
727*b1cdbd2cSJim Jagielski     }
728*b1cdbd2cSJim Jagielski 
SetEditHelpId(const rtl::OString & aHelpId)729*b1cdbd2cSJim Jagielski     void    SetEditHelpId( const rtl::OString& aHelpId) {aEdtName.SetHelpId(aHelpId);}
730*b1cdbd2cSJim Jagielski };
731*b1cdbd2cSJim Jagielski 
732*b1cdbd2cSJim Jagielski class SvxIconSelectorDialog : public ModalDialog
733*b1cdbd2cSJim Jagielski {
734*b1cdbd2cSJim Jagielski private:
735*b1cdbd2cSJim Jagielski 	FixedText		aFtDescription;
736*b1cdbd2cSJim Jagielski 	ToolBox			aTbSymbol;
737*b1cdbd2cSJim Jagielski 	FixedText		aFtNote;
738*b1cdbd2cSJim Jagielski 	OKButton		aBtnOK;
739*b1cdbd2cSJim Jagielski 	CancelButton	aBtnCancel;
740*b1cdbd2cSJim Jagielski 	HelpButton		aBtnHelp;
741*b1cdbd2cSJim Jagielski 	PushButton		aBtnImport;
742*b1cdbd2cSJim Jagielski 	PushButton      aBtnDelete;
743*b1cdbd2cSJim Jagielski 	FixedLine       aFlSeparator;
744*b1cdbd2cSJim Jagielski     sal_uInt16      m_nNextId;
745*b1cdbd2cSJim Jagielski 
746*b1cdbd2cSJim Jagielski 	sal_Int32		m_nExpectedSize;
747*b1cdbd2cSJim Jagielski 
748*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference<
749*b1cdbd2cSJim Jagielski 		::com::sun::star::ui::XImageManager > m_xImageManager;
750*b1cdbd2cSJim Jagielski 
751*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference<
752*b1cdbd2cSJim Jagielski 		::com::sun::star::ui::XImageManager > m_xParentImageManager;
753*b1cdbd2cSJim Jagielski 
754*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference<
755*b1cdbd2cSJim Jagielski 		::com::sun::star::ui::XImageManager > m_xImportedImageManager;
756*b1cdbd2cSJim Jagielski 
757*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference<
758*b1cdbd2cSJim Jagielski 		::com::sun::star::graphic::XGraphicProvider > m_xGraphProvider;
759*b1cdbd2cSJim Jagielski 
760*b1cdbd2cSJim Jagielski     bool ReplaceGraphicItem( const ::rtl::OUString& aURL );
761*b1cdbd2cSJim Jagielski 
762*b1cdbd2cSJim Jagielski     bool ImportGraphic( const ::rtl::OUString& aURL );
763*b1cdbd2cSJim Jagielski 
764*b1cdbd2cSJim Jagielski 	void ImportGraphics(
765*b1cdbd2cSJim Jagielski 		const com::sun::star::uno::Sequence< rtl::OUString >& aURLs );
766*b1cdbd2cSJim Jagielski 
767*b1cdbd2cSJim Jagielski     BitmapEx AutoScaleBitmap(BitmapEx & aBitmap, const long aStandardSize);// Added by shizhoubo
768*b1cdbd2cSJim Jagielski 
769*b1cdbd2cSJim Jagielski public:
770*b1cdbd2cSJim Jagielski 
771*b1cdbd2cSJim Jagielski 	SvxIconSelectorDialog(
772*b1cdbd2cSJim Jagielski 		Window *pWindow,
773*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
774*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XImageManager >& rXImageManager,
775*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
776*b1cdbd2cSJim Jagielski 			::com::sun::star::ui::XImageManager >& rXParentImageManager
777*b1cdbd2cSJim Jagielski 			);
778*b1cdbd2cSJim Jagielski 
779*b1cdbd2cSJim Jagielski 	~SvxIconSelectorDialog();
780*b1cdbd2cSJim Jagielski 
781*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >
782*b1cdbd2cSJim Jagielski 		GetSelectedIcon();
783*b1cdbd2cSJim Jagielski 
784*b1cdbd2cSJim Jagielski 	DECL_LINK( SelectHdl, ToolBox * );
785*b1cdbd2cSJim Jagielski 	DECL_LINK( ImportHdl, PushButton * );
786*b1cdbd2cSJim Jagielski 	DECL_LINK( DeleteHdl, PushButton * );
787*b1cdbd2cSJim Jagielski };
788*b1cdbd2cSJim Jagielski 
789*b1cdbd2cSJim Jagielski class SvxIconReplacementDialog : public MessBox
790*b1cdbd2cSJim Jagielski {
791*b1cdbd2cSJim Jagielski public:
792*b1cdbd2cSJim Jagielski 	SvxIconReplacementDialog(
793*b1cdbd2cSJim Jagielski 		Window *pWindow,
794*b1cdbd2cSJim Jagielski 		const rtl::OUString& aMessage,
795*b1cdbd2cSJim Jagielski 		bool aYestoAll);
796*b1cdbd2cSJim Jagielski 
797*b1cdbd2cSJim Jagielski 	SvxIconReplacementDialog(
798*b1cdbd2cSJim Jagielski 		Window *pWindow,
799*b1cdbd2cSJim Jagielski 		const rtl::OUString& aMessage );
800*b1cdbd2cSJim Jagielski 
801*b1cdbd2cSJim Jagielski 	rtl::OUString ReplaceIconName( const rtl::OUString& );
802*b1cdbd2cSJim Jagielski 	sal_uInt16 ShowDialog();
803*b1cdbd2cSJim Jagielski };
804*b1cdbd2cSJim Jagielski //added for issue83555
805*b1cdbd2cSJim Jagielski class SvxIconChangeDialog : public ModalDialog
806*b1cdbd2cSJim Jagielski {
807*b1cdbd2cSJim Jagielski private:
808*b1cdbd2cSJim Jagielski 	FixedImage		aFImageInfo;
809*b1cdbd2cSJim Jagielski 	OKButton		aBtnOK;
810*b1cdbd2cSJim Jagielski 	FixedText         aDescriptionLabel;
811*b1cdbd2cSJim Jagielski 	SvxDescriptionEdit aLineEditDescription;
812*b1cdbd2cSJim Jagielski public:
813*b1cdbd2cSJim Jagielski 	SvxIconChangeDialog(Window *pWindow, const rtl::OUString& aMessage);
814*b1cdbd2cSJim Jagielski };
815*b1cdbd2cSJim Jagielski #endif // _SVXCFG_HXX
816