xref: /AOO41X/main/fpicker/source/unx/gnome/SalGtkFilePicker.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef _SALGTKFILEPICKER_HXX_
29*cdf0e10cSrcweir #define _SALGTKFILEPICKER_HXX_
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir //_______________________________________________________________________________________________________________________
32*cdf0e10cSrcweir //	includes of other projects
33*cdf0e10cSrcweir //_______________________________________________________________________________________________________________________
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #include <cppuhelper/compbase10.hxx>
36*cdf0e10cSrcweir #include <com/sun/star/lang/XInitialization.hpp>
37*cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
38*cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilterManager.hpp>
39*cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
40*cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
41*cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePreview.hpp>
42*cdf0e10cSrcweir #include <com/sun/star/beans/StringPair.hpp>
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #ifndef _SALGTKPICKER_HXX_
45*cdf0e10cSrcweir #include "SalGtkPicker.hxx"
46*cdf0e10cSrcweir #endif
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir #include <memory>
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir #ifndef _RTL_USTRING_H_
51*cdf0e10cSrcweir #include <rtl/ustring.hxx>
52*cdf0e10cSrcweir #endif
53*cdf0e10cSrcweir 
54*cdf0e10cSrcweir #include <list>
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir //----------------------------------------------------------
57*cdf0e10cSrcweir // Implementation class for the XFilePicker Interface
58*cdf0e10cSrcweir //----------------------------------------------------------
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir //----------------------------------------------------------
61*cdf0e10cSrcweir // forward declarations
62*cdf0e10cSrcweir //----------------------------------------------------------
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir using namespace rtl;
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir struct FilterEntry;
67*cdf0e10cSrcweir struct ElementEntry_Impl;
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir typedef ::std::list < FilterEntry >		FilterList;
70*cdf0e10cSrcweir typedef ::std::list < ElementEntry_Impl >	ElementList;
71*cdf0e10cSrcweir typedef ::com::sun::star::beans::StringPair	UnoFilterEntry;
72*cdf0e10cSrcweir typedef ::com::sun::star::uno::Sequence< UnoFilterEntry >	UnoFilterList;	// can be transported more effectively
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir //----------------------------------------------------------
76*cdf0e10cSrcweir // class declaration
77*cdf0e10cSrcweir //----------------------------------------------------------
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir class SalGtkFilePicker :
80*cdf0e10cSrcweir         public SalGtkPicker,
81*cdf0e10cSrcweir 	public cppu::WeakComponentImplHelper10<
82*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilterManager,
83*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilterGroupManager,
84*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilePickerControlAccess,
85*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilePickerNotifier,
86*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilePreview,
87*cdf0e10cSrcweir         ::com::sun::star::ui::dialogs::XFilePicker2,
88*cdf0e10cSrcweir 	::com::sun::star::lang::XInitialization,
89*cdf0e10cSrcweir         ::com::sun::star::util::XCancellable,
90*cdf0e10cSrcweir 	::com::sun::star::lang::XEventListener,
91*cdf0e10cSrcweir 	::com::sun::star::lang::XServiceInfo >
92*cdf0e10cSrcweir {
93*cdf0e10cSrcweir 	public:
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir 		// constructor
96*cdf0e10cSrcweir 		SalGtkFilePicker( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceMgr );
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
99*cdf0e10cSrcweir 		// XFilePickerNotifier
100*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
101*cdf0e10cSrcweir 
102*cdf0e10cSrcweir 		virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
103*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
104*cdf0e10cSrcweir 		virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
105*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
108*cdf0e10cSrcweir 		// XExecutableDialog functions
109*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir 		virtual void SAL_CALL setTitle( const ::rtl::OUString& aTitle )
112*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir 		virtual sal_Int16 SAL_CALL execute(  )
115*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
118*cdf0e10cSrcweir 		// XFilePicker functions
119*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir 		virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode )
122*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
123*cdf0e10cSrcweir 
124*cdf0e10cSrcweir 		virtual void SAL_CALL setDefaultName( const ::rtl::OUString& aName )
125*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir 		virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString& aDirectory )
128*cdf0e10cSrcweir 			throw( com::sun::star::lang::IllegalArgumentException,
129*cdf0e10cSrcweir 				::com::sun::star::uno::RuntimeException );
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getDisplayDirectory(  )
132*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
133*cdf0e10cSrcweir 
134*cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles(  )
135*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir  		//------------------------------------------------------------------------------------
138*cdf0e10cSrcweir 		// XFilePicker2 functions
139*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSelectedFiles()
142*cdf0e10cSrcweir 				throw (::com::sun::star::uno::RuntimeException);
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
145*cdf0e10cSrcweir 		// XFilterManager functions
146*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
147*cdf0e10cSrcweir 
148*cdf0e10cSrcweir 		virtual void SAL_CALL appendFilter( const ::rtl::OUString& aTitle, const ::rtl::OUString& aFilter )
149*cdf0e10cSrcweir 			throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
150*cdf0e10cSrcweir 
151*cdf0e10cSrcweir 		virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString& aTitle )
152*cdf0e10cSrcweir 			throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
153*cdf0e10cSrcweir 
154*cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getCurrentFilter(  )
155*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
158*cdf0e10cSrcweir 		// XFilterGroupManager functions
159*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir 		virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString& sGroupTitle, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair >& aFilters )
162*cdf0e10cSrcweir 		        throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
165*cdf0e10cSrcweir 		// XFilePickerControlAccess functions
166*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir 		virtual void SAL_CALL setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const ::com::sun::star::uno::Any& aValue )
169*cdf0e10cSrcweir 		        throw (::com::sun::star::uno::RuntimeException);
170*cdf0e10cSrcweir 
171*cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 aControlId, sal_Int16 aControlAction )
172*cdf0e10cSrcweir 		        throw (::com::sun::star::uno::RuntimeException);
173*cdf0e10cSrcweir 
174*cdf0e10cSrcweir 		virtual void SAL_CALL enableControl( sal_Int16 nControlId, sal_Bool bEnable )
175*cdf0e10cSrcweir 			throw(::com::sun::star::uno::RuntimeException );
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir 		virtual void SAL_CALL setLabel( sal_Int16 nControlId, const ::rtl::OUString& aLabel )
178*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId )
181*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir 		//------------------------------------------------
184*cdf0e10cSrcweir 		// XFilePreview
185*cdf0e10cSrcweir 		//------------------------------------------------
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats(  )
188*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir 		virtual sal_Int32 SAL_CALL getTargetColorDepth(  )
191*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 		virtual sal_Int32 SAL_CALL getAvailableWidth(  )
194*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir 		virtual sal_Int32 SAL_CALL getAvailableHeight(  )
197*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
198*cdf0e10cSrcweir 
199*cdf0e10cSrcweir 		virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const ::com::sun::star::uno::Any& aImage )
200*cdf0e10cSrcweir 			throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState )
203*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL getShowState(  )
206*cdf0e10cSrcweir 			throw (::com::sun::star::uno::RuntimeException);
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir 		//------------------------------------------------
209*cdf0e10cSrcweir 		// XInitialization
210*cdf0e10cSrcweir 		//------------------------------------------------
211*cdf0e10cSrcweir 
212*cdf0e10cSrcweir 		virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
213*cdf0e10cSrcweir 			throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
214*cdf0e10cSrcweir 
215*cdf0e10cSrcweir 		//------------------------------------------------
216*cdf0e10cSrcweir 		// XCancellable
217*cdf0e10cSrcweir 		//------------------------------------------------
218*cdf0e10cSrcweir 
219*cdf0e10cSrcweir 		virtual void SAL_CALL cancel( )
220*cdf0e10cSrcweir 			throw( ::com::sun::star::uno::RuntimeException );
221*cdf0e10cSrcweir 
222*cdf0e10cSrcweir 		//------------------------------------------------
223*cdf0e10cSrcweir 		// XEventListener
224*cdf0e10cSrcweir 		//------------------------------------------------
225*cdf0e10cSrcweir 
226*cdf0e10cSrcweir         using cppu::WeakComponentImplHelperBase::disposing;
227*cdf0e10cSrcweir 		virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent )
228*cdf0e10cSrcweir 			throw(::com::sun::star::uno::RuntimeException);
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 		//------------------------------------------------
231*cdf0e10cSrcweir 		// XServiceInfo
232*cdf0e10cSrcweir 		//------------------------------------------------
233*cdf0e10cSrcweir 
234*cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getImplementationName(	 )
235*cdf0e10cSrcweir 			throw(::com::sun::star::uno::RuntimeException);
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
238*cdf0e10cSrcweir 			throw(::com::sun::star::uno::RuntimeException);
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  )
241*cdf0e10cSrcweir 			throw(::com::sun::star::uno::RuntimeException);
242*cdf0e10cSrcweir 
243*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
244*cdf0e10cSrcweir 		// FilePicker Event functions
245*cdf0e10cSrcweir 		//------------------------------------------------------------------------------------
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir 		void SAL_CALL fileSelectionChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
248*cdf0e10cSrcweir 		void SAL_CALL directoryChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
249*cdf0e10cSrcweir 		rtl::OUString SAL_CALL helpRequested( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ) const;
250*cdf0e10cSrcweir 		void SAL_CALL controlStateChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir 	private:
253*cdf0e10cSrcweir 		// prevent copy and assignment
254*cdf0e10cSrcweir 		SalGtkFilePicker( const SalGtkFilePicker& );
255*cdf0e10cSrcweir 		SalGtkFilePicker& operator=( const SalGtkFilePicker& );
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir 		sal_Bool FilterNameExists( const ::rtl::OUString& rTitle );
258*cdf0e10cSrcweir 		sal_Bool FilterNameExists( const UnoFilterList& _rGroupedFilters );
259*cdf0e10cSrcweir 
260*cdf0e10cSrcweir 		void ensureFilterList( const ::rtl::OUString& _rInitialCurrentFilter );
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir 		// to instanciate own services
263*cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr;
264*cdf0e10cSrcweir 
265*cdf0e10cSrcweir 	private:
266*cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >
267*cdf0e10cSrcweir             m_xListener;
268*cdf0e10cSrcweir         ::rtl::OUString msPlayLabel;
269*cdf0e10cSrcweir 		FilterList *m_pFilterList;
270*cdf0e10cSrcweir 		GtkWidget  *m_pVBox;
271*cdf0e10cSrcweir 
272*cdf0e10cSrcweir         GtkWidget  *m_pFilterExpander;
273*cdf0e10cSrcweir         GtkWidget  *m_pFilterView;
274*cdf0e10cSrcweir         GtkListStore *m_pFilterStore;
275*cdf0e10cSrcweir 
276*cdf0e10cSrcweir 		enum {
277*cdf0e10cSrcweir 			AUTOEXTENSION,
278*cdf0e10cSrcweir 			PASSWORD,
279*cdf0e10cSrcweir 			FILTEROPTIONS,
280*cdf0e10cSrcweir 			READONLY,
281*cdf0e10cSrcweir 			LINK,
282*cdf0e10cSrcweir 			PREVIEW,
283*cdf0e10cSrcweir 			SELECTION,
284*cdf0e10cSrcweir 			TOGGLE_LAST
285*cdf0e10cSrcweir 		      };
286*cdf0e10cSrcweir 
287*cdf0e10cSrcweir 		GtkWidget  *m_pToggles[ TOGGLE_LAST ];
288*cdf0e10cSrcweir 
289*cdf0e10cSrcweir 		bool mbToggleVisibility[TOGGLE_LAST];
290*cdf0e10cSrcweir 		bool mbToggleChecked[TOGGLE_LAST];
291*cdf0e10cSrcweir 
292*cdf0e10cSrcweir 		static const rtl::OString m_ToggleLabels[TOGGLE_LAST];
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir 		enum {
295*cdf0e10cSrcweir 			PLAY,
296*cdf0e10cSrcweir 			BUTTON_LAST };
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir 		GtkWidget  *m_pButtons[ BUTTON_LAST ];
299*cdf0e10cSrcweir 
300*cdf0e10cSrcweir 		enum {
301*cdf0e10cSrcweir 			VERSION,
302*cdf0e10cSrcweir 			TEMPLATE,
303*cdf0e10cSrcweir 			IMAGE_TEMPLATE,
304*cdf0e10cSrcweir 			LIST_LAST
305*cdf0e10cSrcweir 		      };
306*cdf0e10cSrcweir 
307*cdf0e10cSrcweir 		GtkWidget *m_pHBoxs[ LIST_LAST ];
308*cdf0e10cSrcweir         GtkWidget *m_pAligns[ LIST_LAST ];
309*cdf0e10cSrcweir 		GtkWidget *m_pLists[ LIST_LAST ];
310*cdf0e10cSrcweir 		GtkWidget *m_pListLabels[ LIST_LAST ];
311*cdf0e10cSrcweir 		bool mbListVisibility[ LIST_LAST ];
312*cdf0e10cSrcweir 		bool mbButtonVisibility[ BUTTON_LAST ];
313*cdf0e10cSrcweir         gulong mnHID_FolderChange;
314*cdf0e10cSrcweir         gulong mnHID_SelectionChange;
315*cdf0e10cSrcweir 
316*cdf0e10cSrcweir 		::rtl::OUString	m_aCurrentFilter;
317*cdf0e10cSrcweir 
318*cdf0e10cSrcweir         bool bVersionWidthUnset;
319*cdf0e10cSrcweir         sal_Bool mbPreviewState;
320*cdf0e10cSrcweir         gulong mHID_Preview;
321*cdf0e10cSrcweir         GtkWidget* m_pPreview;
322*cdf0e10cSrcweir         sal_Int32 m_PreviewImageWidth;
323*cdf0e10cSrcweir         sal_Int32 m_PreviewImageHeight;
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir         GtkWidget  *getWidget( sal_Int16 nControlId, GType *pType = NULL);
326*cdf0e10cSrcweir 
327*cdf0e10cSrcweir 		void SetCurFilter( const OUString& rFilter );
328*cdf0e10cSrcweir 		void SetFilters();
329*cdf0e10cSrcweir         void UpdateFilterfromUI();
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir         void implChangeType( GtkTreeSelection *selection );
332*cdf0e10cSrcweir 		int implAddFilter( const OUString& rFilter, const OUString& rType);
333*cdf0e10cSrcweir 		int implAddFilterGroup( const OUString& rFilter,
334*cdf0e10cSrcweir 					 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair>& _rFilters );
335*cdf0e10cSrcweir         void updateCurrentFilterFromName(const gchar* filtername);
336*cdf0e10cSrcweir         void unselect_type();
337*cdf0e10cSrcweir         void InitialMapping();
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir 		void HandleSetListValue(GtkComboBox *pWidget, sal_Int16 nControlAction,
340*cdf0e10cSrcweir             const ::com::sun::star::uno::Any& rValue);
341*cdf0e10cSrcweir 		::com::sun::star::uno::Any HandleGetListValue(GtkComboBox *pWidget, sal_Int16 nControlAction) const;
342*cdf0e10cSrcweir 
343*cdf0e10cSrcweir         static void expander_changed_cb( GtkExpander *expander, SalGtkFilePicker *pobjFP );
344*cdf0e10cSrcweir 		static void preview_toggled_cb (GtkObject *cb, SalGtkFilePicker *pobjFP);
345*cdf0e10cSrcweir 		static void filter_changed_cb (GtkFileChooser *file_chooser, GParamSpec *pspec, SalGtkFilePicker *pobjFP);
346*cdf0e10cSrcweir         static void type_changed_cb( GtkTreeSelection *selection, SalGtkFilePicker *pobjFP );
347*cdf0e10cSrcweir 		static void folder_changed_cb (GtkFileChooser *file_chooser, SalGtkFilePicker *pobjFP);
348*cdf0e10cSrcweir 		static void selection_changed_cb (GtkFileChooser *file_chooser, SalGtkFilePicker *pobjFP);
349*cdf0e10cSrcweir 		static void update_preview_cb (GtkFileChooser *file_chooser, SalGtkFilePicker *pobjFP);
350*cdf0e10cSrcweir         static void dialog_mapped_cb(GtkWidget *widget, SalGtkFilePicker *pobjFP);
351*cdf0e10cSrcweir 	public:
352*cdf0e10cSrcweir 		 virtual ~SalGtkFilePicker();
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir };
355*cdf0e10cSrcweir /* vi:set tabstop=4 shiftwidth=4 expandtab: */
356*cdf0e10cSrcweir #endif // _SALGTKFILEPICKER_HXX_
357