diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2004-09-08 16:07:01 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2004-09-08 16:07:01 +0000 |
commit | edc7b213015047db42dca9f440a581c12d686b61 (patch) | |
tree | 22456503841a47cc4b93c92e6df874195767083b | |
parent | a5c2b08e99e9eea6a12db5ff5d6918be3de1e7a5 (diff) |
INTEGRATION: CWS gtkfpicker1 (1.1.2); FILE ADDED
2004/09/08 09:42:07 cmc 1.1.2.4: #i32555# use system gtk folderpicker like gtk filepicker
2004/08/23 13:07:49 cmc 1.1.2.3: #i32555# commit in rauls latest and greatest gtk fpicker mods
2004/08/06 07:05:57 cmc 1.1.2.2: #i32555# raul has a better gtk version test
2004/08/04 15:03:03 cmc 1.1.2.1: #i32555# optional gnome filepicker
-rw-r--r-- | fpicker/source/unx/gnome/FPentry.cxx | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/fpicker/source/unx/gnome/FPentry.cxx b/fpicker/source/unx/gnome/FPentry.cxx new file mode 100644 index 000000000000..1569bb1dbb3d --- /dev/null +++ b/fpicker/source/unx/gnome/FPentry.cxx @@ -0,0 +1,228 @@ +/************************************************************************* + * + * + * + * + * + * + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): Jan Holesovsky <kendy@suse.cz> + * + * + ************************************************************************/ + +//---------------------------------------------- +// includes of other projects +//---------------------------------------------- + +#ifndef _CPPUHELPER_FACTORY_HXX_ +#include <cppuhelper/factory.hxx> +#endif + +#ifndef _COM_SUN_STAR_CONTAINER_XSET_HPP_ +#include <com/sun/star/container/XSet.hpp> +#endif + +#ifndef _OSL_DIAGNOSE_H_ +#include <osl/diagnose.h> +#endif + +#ifndef _SALGTKFILEPICKER_HXX_ +#include "SalGtkFilePicker.hxx" +#endif +#ifndef _SALGTKFOLDERPICKER_HXX_ +#include "SalGtkFolderPicker.hxx" +#endif + + +#ifndef _FPSERVICEINFO_HXX_ +#include "FPServiceInfo.hxx" +#endif + +#include <glib-object.h> + +extern const guint gtk_major_version; +extern const guint gtk_minor_version; + +//----------------------------------------------- +// namespace directives +//----------------------------------------------- + +using namespace ::rtl; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::registry; +using namespace ::cppu; +using ::com::sun::star::ui::dialogs::XFilePicker; +using ::com::sun::star::ui::dialogs::XFolderPicker; + +//------------------------------------------------ +// +//------------------------------------------------ + +static Reference< XInterface > SAL_CALL createFileInstance( + const Reference< XMultiServiceFactory >& rServiceManager ) +{ + return Reference< XInterface >( + static_cast< XFilePicker* >( + new SalGtkFilePicker( rServiceManager ) ) ); +} + +static Reference< XInterface > SAL_CALL createFolderInstance( + const Reference< XMultiServiceFactory >& rServiceManager ) +{ + return Reference< XInterface >( + static_cast< XFolderPicker* >( + new SalGtkFolderPicker( rServiceManager ) ) ); +} + +//------------------------------------------------ +// the three uno functions that will be exported +//------------------------------------------------ + +extern "C" +{ + +//------------------------------------------------ +// component_getImplementationEnvironment +//------------------------------------------------ + +void SAL_CALL component_getImplementationEnvironment( + const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv ) +{ + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} + +//------------------------------------------------ +// +//------------------------------------------------ + +sal_Bool SAL_CALL component_writeInfo( void* pServiceManager, void* pRegistryKey ) +{ + sal_Bool bRetVal = sal_True; + + if ( pRegistryKey ) + { + try + { + Reference< XRegistryKey > pXNewKey( static_cast< XRegistryKey* >( pRegistryKey ) ); + pXNewKey->createKey( OUString::createFromAscii( FILE_PICKER_REGKEY_NAME ) ); + pXNewKey->createKey( OUString::createFromAscii( FOLDER_PICKER_REGKEY_NAME ) ); + } + catch( InvalidRegistryException& ) + { + OSL_ENSURE( sal_False, "InvalidRegistryException caught" ); + bRetVal = sal_False; + } + } + + return bRetVal; +} + +//------------------------------------------------ +// +//------------------------------------------------ + +void* SAL_CALL component_getFactory( + const sal_Char* pImplName, uno_Interface* pSrvManager, uno_Interface* pRegistryKey ) +{ + void* pRet = 0; + + if( pSrvManager ) + { + if ( + !g_type_from_name( "GdkDisplay" ) || + !( gtk_major_version >= 2 && gtk_minor_version >= 4 ) + ) + { + return 0; // crude gtkplug check. + } + + Reference< XSingleServiceFactory > xFactory; + + if (0 == rtl_str_compare(pImplName, FILE_PICKER_IMPL_NAME)) + { + Sequence< OUString > aSNS( 1 ); + aSNS.getArray( )[0] = + OUString::createFromAscii(FILE_PICKER_SERVICE_NAME); + + xFactory = createSingleFactory( + reinterpret_cast< XMultiServiceFactory* > ( pSrvManager ), + OUString::createFromAscii( pImplName ), + createFileInstance, + aSNS ); + } + else if (0 == rtl_str_compare(pImplName, FOLDER_PICKER_IMPL_NAME)) + { + Sequence< OUString > aSNS( 1 ); + aSNS.getArray( )[0] = + OUString::createFromAscii(FOLDER_PICKER_SERVICE_NAME); + + xFactory = createSingleFactory( + reinterpret_cast< XMultiServiceFactory* > ( pSrvManager ), + OUString::createFromAscii( pImplName ), + createFolderInstance, + aSNS ); + } + + if ( xFactory.is() ) + { + xFactory->acquire(); + pRet = xFactory.get(); + } + } + + return pRet; +} + +} // extern "C" + |