From a579e848e0b0e55eda9b9da94fc6e5d89ca995ca Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Wed, 25 Aug 2010 16:14:14 +0200 Subject: dba33h: #i114022# properly handle new/empty images --- forms/source/component/ImageControl.cxx | 12 +++++++++--- forms/source/component/imgprod.cxx | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx index da88d6bc0..c3556b4d9 100644 --- a/forms/source/component/ImageControl.cxx +++ b/forms/source/component/ImageControl.cxx @@ -523,7 +523,13 @@ Any OImageControlModel::translateDbColumnToControlValue() { switch ( lcl_getImageStoreType( getFieldType() ) ) { - case ImageStoreBinary: return makeAny( m_xColumn->getBinaryStream() ); + case ImageStoreBinary: + { + Reference< XInputStream > xImageStream( m_xColumn->getBinaryStream() ); + if ( m_xColumn->wasNull() ) + xImageStream.clear(); + return makeAny( xImageStream ); + } case ImageStoreLink: { ::rtl::OUString sImageLink( m_xColumn->getString() ); @@ -634,10 +640,10 @@ void SAL_CALL OImageControlModel::startProduction( ) throw (RuntimeException) //------------------------------------------------------------------------------ IMPL_LINK( OImageControlModel, OnImageImportDone, ::Graphic*, i_pGraphic ) { - ENSURE_OR_RETURN( i_pGraphic, "OImageControlModel::OnImageImportDone: illegal graphic!", 0L ); + const Reference< XGraphic > xGraphic( i_pGraphic != NULL ? Image( i_pGraphic->GetBitmapEx() ).GetXGraphic() : NULL ); setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Graphic" ) ), - makeAny( Image( i_pGraphic->GetBitmapEx() ).GetXGraphic() ) + makeAny( xGraphic ) ); return 1L; } diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx index 60143f9ed..f064772df 100644 --- a/forms/source/component/imgprod.cxx +++ b/forms/source/component/imgprod.cxx @@ -351,6 +351,9 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept // delete interfaces in temporary list for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() ) delete (::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons; + + if ( maDoneHdl.IsSet() ) + maDoneHdl.Call( NULL ); } } } -- cgit v1.2.3 From 6ceaf7dd12df2f66e0f3bbc42ad5ff8d14042e14 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 26 Aug 2010 12:02:20 +0200 Subject: dba33h: #i112659# ensure bound image controls never embed their image in the surrounding document --- forms/source/component/ImageControl.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx index c3556b4d9..671d0bd8d 100644 --- a/forms/source/component/ImageControl.cxx +++ b/forms/source/component/ImageControl.cxx @@ -800,6 +800,11 @@ bool OImageControlControl::implInsertGraphics() implClearGraphics( sal_False ); sal_Bool bIsLink = sal_False; xController->getValue(ExtendedFilePickerElementIds::CHECKBOX_LINK, 0) >>= bIsLink; + // Force bIsLink to be TRUE if we're bound to a field. Though we initialized the file picker with IsLink=TRUE + // in this case, and disabled the respective control, there might be picker implementations which do not + // respect this, and return IsLink=FALSE here. In this case, "normalize" the flag. + // #i112659# / 2010-08-26 / frank.schoenheit@oracle.com + bIsLink |= bHasField; if ( !bIsLink ) { Graphic aGraphic; -- cgit v1.2.3 From 0e743fea1a7d8dac9dfd04ebe60c72b2108d52e3 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 26 Aug 2010 15:24:03 +0200 Subject: dba33h: #i113991# handle ImageURL and Graphic properties ourselves, do not leave this to the aggregate. Otherwise, both the aggregate and we try to sync those, which is good for some problems ... --- forms/source/component/FormComponent.cxx | 104 ++++++++++------------------- forms/source/component/ImageControl.cxx | 109 ++++++++++++++++++------------- forms/source/component/ImageControl.hxx | 14 ++-- forms/source/inc/FormComponent.hxx | 22 +++++++ forms/source/inc/frm_strings.hxx | 1 + forms/source/inc/property.hrc | 2 +- forms/source/misc/property.cxx | 1 + 7 files changed, 134 insertions(+), 119 deletions(-) diff --git a/forms/source/component/FormComponent.cxx b/forms/source/component/FormComponent.cxx index 251363655..902f853c9 100644 --- a/forms/source/component/FormComponent.cxx +++ b/forms/source/component/FormComponent.cxx @@ -507,14 +507,12 @@ DBG_NAME(OControlModel) //------------------------------------------------------------------ Sequence SAL_CALL OControlModel::getImplementationId() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getImplementationId" ); return OImplementationIds::getImplementationId(getTypes()); } //------------------------------------------------------------------ Sequence SAL_CALL OControlModel::getTypes() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getTypes" ); TypeBag aTypes( _getTypes() ); Reference< XTypeProvider > xProv; @@ -527,7 +525,6 @@ Sequence SAL_CALL OControlModel::getTypes() throw(RuntimeException) //------------------------------------------------------------------------------ Sequence OControlModel::_getTypes() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::_getTypes" ); return TypeBag( OComponentHelper::getTypes(), OPropertySetAggregationHelper::getTypes(), OControlModel_BASE::getTypes() @@ -537,7 +534,6 @@ Sequence OControlModel::_getTypes() //------------------------------------------------------------------ Any SAL_CALL OControlModel::queryAggregation(const Type& _rType) throw (RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::queryAggregation" ); // base class 1 Any aReturn(OComponentHelper::queryAggregation(_rType)); @@ -561,7 +557,6 @@ Any SAL_CALL OControlModel::queryAggregation(const Type& _rType) throw (RuntimeE //------------------------------------------------------------------------------ void OControlModel::readHelpTextCompatibly(const staruno::Reference< stario::XObjectInputStream >& _rxInStream) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::readHelpTextCompatibly" ); ::rtl::OUString sHelpText; ::comphelper::operator>>( _rxInStream, sHelpText); try @@ -578,7 +573,6 @@ void OControlModel::readHelpTextCompatibly(const staruno::Reference< stario::XOb //------------------------------------------------------------------------------ void OControlModel::writeHelpTextCompatibly(const staruno::Reference< stario::XObjectOutputStream >& _rxOutStream) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::writeHelpTextCompatibly" ); ::rtl::OUString sHelpText; try { @@ -609,7 +603,6 @@ OControlModel::OControlModel( // the native look is ugly .... // #i37342# / 2004-11-19 / frank.schoenheit@sun.com { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::OControlModel" ); DBG_CTOR(OControlModel, NULL); if (_rUnoControlModelTypeName.getLength()) // the is a model we have to aggregate { @@ -651,7 +644,6 @@ OControlModel::OControlModel( const OControlModel* _pOriginal, const Reference< ,m_nTabIndex( FRM_DEFAULT_TABINDEX ) ,m_nClassId( FormComponentType::CONTROL ) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::OControlModel(copy)" ); DBG_CTOR( OControlModel, NULL ); DBG_ASSERT( _pOriginal, "OControlModel::OControlModel: invalid original!" ); @@ -696,14 +688,12 @@ OControlModel::~OControlModel() //------------------------------------------------------------------ void OControlModel::clonedFrom( const OControlModel* /*_pOriginal*/ ) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::clonedFrom" ); // nothing to do in this base class } //------------------------------------------------------------------------------ void OControlModel::doResetDelegator() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::doResetDelegator" ); if (m_xAggregate.is()) m_xAggregate->setDelegator(NULL); } @@ -711,7 +701,6 @@ void OControlModel::doResetDelegator() //------------------------------------------------------------------------------ void OControlModel::doSetDelegator() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::doSetDelegator" ); increment(m_refCount); if (m_xAggregate.is()) { @@ -724,14 +713,12 @@ void OControlModel::doSetDelegator() //------------------------------------------------------------------------------ InterfaceRef SAL_CALL OControlModel::getParent() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getParent" ); return m_xParent; } //------------------------------------------------------------------------------ void SAL_CALL OControlModel::setParent(const InterfaceRef& _rxParent) throw(com::sun::star::lang::NoSupportException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::setParent" ); osl::MutexGuard aGuard(m_aMutex); Reference xComp(m_xParent, UNO_QUERY); @@ -749,7 +736,6 @@ void SAL_CALL OControlModel::setParent(const InterfaceRef& _rxParent) throw(com: //------------------------------------------------------------------------------ ::rtl::OUString SAL_CALL OControlModel::getName() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getName" ); ::rtl::OUString aReturn; OPropertySetHelper::getFastPropertyValue(PROPERTY_ID_NAME) >>= aReturn; return aReturn; @@ -758,7 +744,6 @@ void SAL_CALL OControlModel::setParent(const InterfaceRef& _rxParent) throw(com: //------------------------------------------------------------------------------ void SAL_CALL OControlModel::setName(const ::rtl::OUString& _rName) throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::setName" ); setFastPropertyValue(PROPERTY_ID_NAME, makeAny(_rName)); } @@ -766,7 +751,6 @@ void SAL_CALL OControlModel::setName(const ::rtl::OUString& _rName) throw(Runtim //------------------------------------------------------------------------------ sal_Bool SAL_CALL OControlModel::supportsService(const rtl::OUString& _rServiceName) throw ( RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::supportsService" ); Sequence aSupported = getSupportedServiceNames(); const rtl::OUString* pSupported = aSupported.getConstArray(); for (sal_Int32 i=0; i OControlModel::getAggregateServiceNames() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getAggregateServiceNames" ); Sequence< ::rtl::OUString > aAggServices; Reference< XServiceInfo > xInfo; if ( query_aggregation( m_xAggregate, xInfo ) ) @@ -789,7 +772,6 @@ Sequence< ::rtl::OUString > OControlModel::getAggregateServiceNames() //------------------------------------------------------------------------------ Sequence SAL_CALL OControlModel::getSupportedServiceNames() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getSupportedServiceNames" ); return ::comphelper::concatSequences( getAggregateServiceNames(), getSupportedServiceNames_Static() @@ -799,7 +781,6 @@ Sequence SAL_CALL OControlModel::getSupportedServiceNames() throw //------------------------------------------------------------------------------ Sequence< ::rtl::OUString > SAL_CALL OControlModel::getSupportedServiceNames_Static() throw( RuntimeException ) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getSupportedServiceNames_Static" ); Sequence< ::rtl::OUString > aServiceNames( 2 ); aServiceNames[ 0 ] = FRM_SUN_FORMCOMPONENT; aServiceNames[ 1 ] = ::rtl::OUString::createFromAscii( "com.sun.star.form.FormControlModel" ); @@ -810,7 +791,6 @@ Sequence< ::rtl::OUString > SAL_CALL OControlModel::getSupportedServiceNames_Sta //------------------------------------------------------------------------------ void SAL_CALL OControlModel::disposing(const com::sun::star::lang::EventObject& _rSource) throw (RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::disposing" ); // release the parent if (_rSource.Source == m_xParent) { @@ -832,7 +812,6 @@ void SAL_CALL OControlModel::disposing(const com::sun::star::lang::EventObject& //----------------------------------------------------------------------------- void OControlModel::disposing() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::disposing" ); OPropertySetAggregationHelper::disposing(); Reference xComp; @@ -847,7 +826,6 @@ void OControlModel::disposing() //------------------------------------------------------------------------------ void OControlModel::writeAggregate( const Reference< XObjectOutputStream >& _rxOutStream ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::writeAggregate" ); Reference< XPersistObject > xPersist; if ( query_aggregation( m_xAggregate, xPersist ) ) xPersist->write( _rxOutStream ); @@ -856,7 +834,6 @@ void OControlModel::writeAggregate( const Reference< XObjectOutputStream >& _rxO //------------------------------------------------------------------------------ void OControlModel::readAggregate( const Reference< XObjectInputStream >& _rxInStream ) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::readAggregate" ); Reference< XPersistObject > xPersist; if ( query_aggregation( m_xAggregate, xPersist ) ) xPersist->read( _rxInStream ); @@ -866,7 +843,6 @@ void OControlModel::readAggregate( const Reference< XObjectInputStream >& _rxInS void SAL_CALL OControlModel::write(const Reference& _rxOutStream) throw(stario::IOException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::write" ); osl::MutexGuard aGuard(m_aMutex); // 1. Schreiben des UnoControls @@ -912,7 +888,6 @@ void SAL_CALL OControlModel::write(const Reference& //------------------------------------------------------------------------------ void OControlModel::read(const Reference& InStream) throw (::com::sun::star::io::IOException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::read" ); osl::MutexGuard aGuard(m_aMutex); Reference xMark(InStream, UNO_QUERY); @@ -966,7 +941,6 @@ void OControlModel::read(const Reference& InStream) //------------------------------------------------------------------------------ PropertyState OControlModel::getPropertyStateByHandle( sal_Int32 _nHandle ) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getPropertyStateByHandle" ); // simply compare the current and the default value Any aCurrentValue = getPropertyDefaultByHandle( _nHandle ); Any aDefaultValue; getFastPropertyValue( aDefaultValue, _nHandle ); @@ -983,7 +957,6 @@ PropertyState OControlModel::getPropertyStateByHandle( sal_Int32 _nHandle ) //------------------------------------------------------------------------------ void OControlModel::setPropertyToDefaultByHandle( sal_Int32 _nHandle) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::setPropertyToDefaultByHandle" ); Any aDefault = getPropertyDefaultByHandle( _nHandle ); Any aConvertedValue, aOldValue; @@ -997,7 +970,6 @@ void OControlModel::setPropertyToDefaultByHandle( sal_Int32 _nHandle) //------------------------------------------------------------------------------ Any OControlModel::getPropertyDefaultByHandle( sal_Int32 _nHandle ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getPropertyDefaultByHandle" ); Any aReturn; switch ( _nHandle ) { @@ -1030,7 +1002,6 @@ Any OControlModel::getPropertyDefaultByHandle( sal_Int32 _nHandle ) const //------------------------------------------------------------------------------ void OControlModel::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getFastPropertyValue" ); switch ( _nHandle ) { case PROPERTY_ID_NAME: @@ -1062,7 +1033,6 @@ sal_Bool OControlModel::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue) throw (com::sun::star::lang::IllegalArgumentException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::convertFastPropertyValue" ); sal_Bool bModified(sal_False); switch (_nHandle) { @@ -1092,7 +1062,6 @@ sal_Bool OControlModel::convertFastPropertyValue( void OControlModel::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const Any& _rValue) throw (Exception) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::setFastPropertyValue_NoBroadcast" ); switch (_nHandle) { case PROPERTY_ID_NAME: @@ -1125,7 +1094,6 @@ void OControlModel::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const A //------------------------------------------------------------------------------ void OControlModel::describeFixedProperties( Sequence< Property >& _rProps ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::describeFixedProperties" ); BEGIN_DESCRIBE_BASE_PROPERTIES( 4 ) DECL_PROP2 (CLASSID, sal_Int16, READONLY, TRANSIENT); DECL_PROP1 (NAME, ::rtl::OUString, BOUND); @@ -1137,7 +1105,6 @@ void OControlModel::describeFixedProperties( Sequence< Property >& _rProps ) con //------------------------------------------------------------------------------ void OControlModel::describeAggregateProperties( Sequence< Property >& /* [out] */ _rAggregateProps ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::describeAggregateProperties" ); if ( m_xAggregateSet.is() ) { Reference< XPropertySetInfo > xPSI( m_xAggregateSet->getPropertySetInfo() ); @@ -1149,14 +1116,12 @@ void OControlModel::describeAggregateProperties( Sequence< Property >& /* [out] //------------------------------------------------------------------------------ ::osl::Mutex& OControlModel::getMutex() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getMutex" ); return m_aMutex; } //------------------------------------------------------------------------------ void OControlModel::describeFixedAndAggregateProperties( Sequence< Property >& _out_rFixedProperties, Sequence< Property >& _out_rAggregateProperties ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::describeFixedAndAggregateProperties" ); describeFixedProperties( _out_rFixedProperties ); describeAggregateProperties( _out_rAggregateProperties ); } @@ -1164,49 +1129,42 @@ void OControlModel::describeFixedAndAggregateProperties( Sequence< Property >& _ //------------------------------------------------------------------------------ Reference< XMultiPropertySet > OControlModel::getPropertiesInterface() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getPropertiesInterface" ); return Reference< XMultiPropertySet >( *this, UNO_QUERY ); } //------------------------------------------------------------------------------ Reference< XPropertySetInfo> SAL_CALL OControlModel::getPropertySetInfo() throw( RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getPropertySetInfo" ); return createPropertySetInfo( getInfoHelper() ); } //------------------------------------------------------------------------------ ::cppu::IPropertyArrayHelper& OControlModel::getInfoHelper() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getInfoHelper" ); return m_aPropertyBagHelper.getInfoHelper(); } //-------------------------------------------------------------------- void SAL_CALL OControlModel::addProperty( const ::rtl::OUString& _rName, ::sal_Int16 _nAttributes, const Any& _rInitialValue ) throw (PropertyExistException, IllegalTypeException, IllegalArgumentException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::addProperty" ); m_aPropertyBagHelper.addProperty( _rName, _nAttributes, _rInitialValue ); } //-------------------------------------------------------------------- void SAL_CALL OControlModel::removeProperty( const ::rtl::OUString& _rName ) throw (UnknownPropertyException, NotRemoveableException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::removeProperty" ); m_aPropertyBagHelper.removeProperty( _rName ); } //-------------------------------------------------------------------- Sequence< PropertyValue > SAL_CALL OControlModel::getPropertyValues() throw (RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getPropertyValues" ); return m_aPropertyBagHelper.getPropertyValues(); } //-------------------------------------------------------------------- void SAL_CALL OControlModel::setPropertyValues( const Sequence< PropertyValue >& _rProps ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::setPropertyValues" ); m_aPropertyBagHelper.setPropertyValues( _rProps ); } @@ -1249,7 +1207,6 @@ Any SAL_CALL OBoundControlModel::queryAggregation( const Type& _rType ) throw (R Any aReturn( OControlModel::queryAggregation(_rType) ); if (!aReturn.hasValue()) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::queryAggregation" ); aReturn = OBoundControlModel_BASE1::queryInterface(_rType); if ( !aReturn.hasValue() && m_bCommitable ) @@ -1426,11 +1383,20 @@ void OBoundControlModel::implInitValuePropertyListening( ) const } } +//----------------------------------------------------------------------------- +void OBoundControlModel::initOwnValueProperty( const ::rtl::OUString& i_rValuePropertyName ) +{ + OSL_PRECOND( !m_sValuePropertyName.getLength() && -1 == m_nValuePropertyAggregateHandle, + "OBoundControlModel::initOwnValueProperty: value property is already initialized!" ); + OSL_ENSURE( i_rValuePropertyName.getLength(), "OBoundControlModel::initOwnValueProperty: invalid property name!" ); + m_sValuePropertyName = i_rValuePropertyName; +} + //----------------------------------------------------------------------------- void OBoundControlModel::initValueProperty( const ::rtl::OUString& _rValuePropertyName, sal_Int32 _nValuePropertyExternalHandle ) { OSL_PRECOND( !m_sValuePropertyName.getLength() && -1 == m_nValuePropertyAggregateHandle, - "OBoundControlModel::initValueProperty: already called before!" ); + "OBoundControlModel::initValueProperty: value property is already initialized!" ); OSL_ENSURE( _rValuePropertyName.getLength(), "OBoundControlModel::initValueProperty: invalid property name!" ); OSL_ENSURE( _nValuePropertyExternalHandle != -1, "OBoundControlModel::initValueProperty: invalid property handle!" ); @@ -1495,7 +1461,6 @@ Sequence< Type > OBoundControlModel::_getTypes() //----------------------------------------------------------------------------- void OBoundControlModel::disposing() { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::_getTypes" ); OControlModel::disposing(); ::osl::ClearableMutexGuard aGuard(m_aMutex); @@ -1532,6 +1497,29 @@ void OBoundControlModel::disposing() disconnectValidator( ); } +//------------------------------------------------------------------------------ +void OBoundControlModel::onValuePropertyChange( ControlModelLock& i_rControLock ) +{ + if ( hasExternalValueBinding() ) + { // the control value changed, while we have an external value binding + // -> forward the value to it + if ( m_eControlValueChangeInstigator != eExternalBinding ) + transferControlValueToExternal( i_rControLock ); + } + else if ( !m_bCommitable && m_xColumnUpdate.is() ) + { // the control value changed, while we are bound to a database column, + // but not committable (which means changes in the control have to be reflected to + // the underlying database column immediately) + // -> forward the value to the database column + if ( m_eControlValueChangeInstigator != eDbColumnBinding ) + commitControlValueToDbColumn( false ); + } + + // validate the new value + if ( m_bSupportsValidation ) + recheckValidity( true ); +} + //------------------------------------------------------------------------------ void OBoundControlModel::_propertyChanged( const PropertyChangeEvent& _rEvt ) throw ( RuntimeException ) { @@ -1543,26 +1531,8 @@ void OBoundControlModel::_propertyChanged( const PropertyChangeEvent& _rEvt ) th "OBoundControlModel::_propertyChanged: where did this come from (2)?" ); if ( _rEvt.PropertyName == m_sValuePropertyName ) - { // our control value changed - - if ( hasExternalValueBinding() ) - { // the control value changed, while we have an external value binding - // -> forward the value to it - if ( m_eControlValueChangeInstigator != eExternalBinding ) - transferControlValueToExternal( aLock ); - } - else if ( !m_bCommitable && m_xColumnUpdate.is() ) - { // the control value changed, while we are bound to a database column, - // but not committable (which means changes in the control have to be reflected to - // the underlying database column immediately) - // -> forward the value to the database column - if ( m_eControlValueChangeInstigator != eDbColumnBinding ) - commitControlValueToDbColumn( false ); - } - - // validate the new value - if ( m_bSupportsValidation ) - recheckValidity( true ); + { + onValuePropertyChange( aLock ); } } @@ -1673,7 +1643,6 @@ void SAL_CALL OBoundControlModel::disposing(const com::sun::star::lang::EventObj //------------------------------------------------------------------------------ StringSequence SAL_CALL OBoundControlModel::getSupportedServiceNames() throw(RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::disposing" ); return ::comphelper::concatSequences( getAggregateServiceNames(), getSupportedServiceNames_Static() @@ -1696,7 +1665,6 @@ Sequence< ::rtl::OUString > SAL_CALL OBoundControlModel::getSupportedServiceName //------------------------------------------------------------------------------ void SAL_CALL OBoundControlModel::write( const Reference& _rxOutStream ) throw(stario::IOException, RuntimeException) { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::getSupportedServiceNames_Static" ); OControlModel::write(_rxOutStream); osl::MutexGuard aGuard(m_aMutex); @@ -1797,7 +1765,6 @@ void SAL_CALL OBoundControlModel::read( const Reference< stario::XObjectInputStr //------------------------------------------------------------------------------ void OBoundControlModel::getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OBoundControlModel::getFastPropertyValue" ); switch (nHandle) { case PROPERTY_ID_INPUT_REQUIRED: @@ -1866,7 +1833,6 @@ sal_Bool OBoundControlModel::convertFastPropertyValue( //------------------------------------------------------------------------------ Any OBoundControlModel::getPropertyDefaultByHandle( sal_Int32 _nHandle ) const { - // RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "forms", "dev@dba.openoffice.org", "OControlModel::convertFastPropertyValue" ); Any aDefault; switch ( _nHandle ) { diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx index 671d0bd8d..f710696df 100644 --- a/forms/source/component/ImageControl.cxx +++ b/forms/source/component/ImageControl.cxx @@ -152,10 +152,12 @@ OImageControlModel::OImageControlModel(const Reference& _r // use the old control name for compytibility reasons ,m_pImageProducer( NULL ) ,m_bReadOnly( sal_False ) + ,m_sImageURL() + ,m_xGraphic() { DBG_CTOR( OImageControlModel, NULL ); m_nClassId = FormComponentType::IMAGECONTROL; - initValueProperty( PROPERTY_IMAGE_URL, PROPERTY_ID_IMAGE_URL); + initOwnValueProperty( PROPERTY_IMAGE_URL ); implConstruct(); } @@ -165,22 +167,19 @@ OImageControlModel::OImageControlModel( const OImageControlModel* _pOriginal, co :OBoundControlModel( _pOriginal, _rxFactory ) // use the old control name for compytibility reasons ,m_pImageProducer( NULL ) + ,m_bReadOnly( _pOriginal->m_bReadOnly ) + ,m_sImageURL( _pOriginal->m_sImageURL ) + ,m_xGraphic( _pOriginal->m_xGraphic ) { DBG_CTOR( OImageControlModel, NULL ); implConstruct(); - m_bReadOnly = _pOriginal->m_bReadOnly; osl_incrementInterlockedCount( &m_refCount ); { // simulate a propertyChanged event for the ImageURL // 2003-05-15 - #109591# - fs@openoffice.org - Any aImageURL; - getFastPropertyValue( aImageURL, PROPERTY_ID_IMAGE_URL ); - ::rtl::OUString sImageURL; - aImageURL >>= sImageURL; - ::osl::MutexGuard aGuard( m_aMutex ); - impl_handleNewImageURL_lck( sImageURL, eOther ); + impl_handleNewImageURL_lck( eOther ); } osl_decrementInterlockedCount( &m_refCount ); } @@ -244,32 +243,20 @@ sal_Bool OImageControlModel::approveDbColumnType( sal_Int32 _nColumnType ) return ImageStoreInvalid != lcl_getImageStoreType( _nColumnType ); } - -//------------------------------------------------------------------------------ -void OImageControlModel::_propertyChanged( const PropertyChangeEvent& _rEvent ) - throw( RuntimeException ) -{ - if ( m_xColumnUpdate.is() ) - { - OBoundControlModel::_propertyChanged( _rEvent ); - } - else - { // we're not bound. In this case, we have to manually care for updating the - // image producer, since the base class will not do this - ::rtl::OUString sImageURL; - _rEvent.NewValue >>= sImageURL; - - ::osl::MutexGuard aGuard( m_aMutex ); - impl_handleNewImageURL_lck( sImageURL, eOther ); - } -} - //------------------------------------------------------------------------------ void OImageControlModel::getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const { switch (nHandle) { - case PROPERTY_ID_READONLY : rValue <<= (sal_Bool)m_bReadOnly; break; + case PROPERTY_ID_READONLY: + rValue <<= (sal_Bool)m_bReadOnly; + break; + case PROPERTY_ID_IMAGE_URL: + rValue <<= m_sImageURL; + break; + case PROPERTY_ID_GRAPHIC: + rValue <<= m_xGraphic; + break; default: OBoundControlModel::getFastPropertyValue(rValue, nHandle); } @@ -285,8 +272,24 @@ void OImageControlModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, con m_bReadOnly = getBOOL(rValue); break; + case PROPERTY_ID_IMAGE_URL: + OSL_VERIFY( rValue >>= m_sImageURL ); + impl_handleNewImageURL_lck( eOther ); + { + ControlModelLock aLock( *this ); + // that's a fake ... onValuePropertyChange expects to receive the only lock to our instance, + // but we're already called with our mutex locked ... + onValuePropertyChange( aLock ); + } + break; + + case PROPERTY_ID_GRAPHIC: + OSL_VERIFY( rValue >>= m_xGraphic ); + break; + default: OBoundControlModel::setFastPropertyValue_NoBroadcast(nHandle, rValue); + break; } } @@ -299,6 +302,12 @@ sal_Bool OImageControlModel::convertFastPropertyValue(Any& rConvertedValue, Any& case PROPERTY_ID_READONLY : return tryPropertyValue(rConvertedValue, rOldValue, rValue, m_bReadOnly); + case PROPERTY_ID_IMAGE_URL: + return tryPropertyValue( rConvertedValue, rOldValue, rValue, m_sImageURL ); + + case PROPERTY_ID_GRAPHIC: + return tryPropertyValue( rConvertedValue, rOldValue, rValue, m_xGraphic ); + default: return OBoundControlModel::convertFastPropertyValue(rConvertedValue, rOldValue, nHandle, rValue); } @@ -307,12 +316,24 @@ sal_Bool OImageControlModel::convertFastPropertyValue(Any& rConvertedValue, Any& //------------------------------------------------------------------------------ void OImageControlModel::describeFixedProperties( Sequence< Property >& _rProps ) const { - BEGIN_DESCRIBE_PROPERTIES( 2, OBoundControlModel ) - DECL_BOOL_PROP1 ( READONLY, BOUND ); - DECL_PROP1 ( TABINDEX, sal_Int16, BOUND ); + BEGIN_DESCRIBE_PROPERTIES( 4, OBoundControlModel ) + DECL_IFACE_PROP2( GRAPHIC, XGraphic, BOUND, TRANSIENT ); + DECL_PROP1 ( IMAGE_URL, ::rtl::OUString, BOUND ); + DECL_BOOL_PROP1 ( READONLY, BOUND ); + DECL_PROP1 ( TABINDEX, sal_Int16, BOUND ); END_DESCRIBE_PROPERTIES(); } +//------------------------------------------------------------------------------ +void OImageControlModel::describeAggregateProperties( Sequence< Property >& /* [out] */ o_rAggregateProperties ) const +{ + OBoundControlModel::describeAggregateProperties( o_rAggregateProperties ); + // remove ImageULR and Graphic properties, we "overload" them. This is because our aggregate synchronizes those + // two, but we have an own sychronization mechanism. + RemoveProperty( o_rAggregateProperties, PROPERTY_IMAGE_URL ); + RemoveProperty( o_rAggregateProperties, PROPERTY_GRAPHIC ); +} + //------------------------------------------------------------------------------ ::rtl::OUString OImageControlModel::getServiceName() throw ( ::com::sun::star::uno::RuntimeException) { @@ -411,18 +432,18 @@ sal_Bool OImageControlModel::impl_updateStreamForURL_lck( const ::rtl::OUString& } //------------------------------------------------------------------------------ -sal_Bool OImageControlModel::impl_handleNewImageURL_lck( const ::rtl::OUString& _rURL, ValueChangeInstigator _eInstigator ) +sal_Bool OImageControlModel::impl_handleNewImageURL_lck( ValueChangeInstigator _eInstigator ) { switch ( lcl_getImageStoreType( getFieldType() ) ) { case ImageStoreBinary: - if ( impl_updateStreamForURL_lck( _rURL, _eInstigator ) ) + if ( impl_updateStreamForURL_lck( m_sImageURL, _eInstigator ) ) return sal_True; break; case ImageStoreLink: { - ::rtl::OUString sCommitURL( _rURL ); + ::rtl::OUString sCommitURL( m_sImageURL ); if ( m_sDocumentURL.getLength() ) sCommitURL = URIHelper::simpleNormalizedMakeRelative( m_sDocumentURL, sCommitURL ); OSL_ENSURE( m_xColumnUpdate.is(), "OImageControlModel::impl_handleNewImageURL_lck: no bound field, but ImageStoreLink?!" ); @@ -435,7 +456,7 @@ sal_Bool OImageControlModel::impl_handleNewImageURL_lck( const ::rtl::OUString& break; case ImageStoreInvalid: - OSL_ENSURE( false, "OImageControlModel::impl_handleNewImageURL_lck: invalid current field type!" ); + OSL_ENSURE( false, "OImageControlModel::impl_handleNewImageURL_lck: image storage type type!" ); break; } @@ -462,10 +483,7 @@ sal_Bool OImageControlModel::commitControlValueToDbColumn( bool _bPostReset ) else { ::osl::MutexGuard aGuard(m_aMutex); - - ::rtl::OUString sImageURL; - m_xAggregateSet->getPropertyValue( PROPERTY_IMAGE_URL ) >>= sImageURL; - return impl_handleNewImageURL_lck( sImageURL, eDbColumnBinding ); + return impl_handleNewImageURL_lck( eDbColumnBinding ); } return sal_True; @@ -544,6 +562,12 @@ Any OImageControlModel::translateDbColumnToControlValue() return Any(); } +//------------------------------------------------------------------------------ +Any OImageControlModel::getControlValue( ) const +{ + return makeAny( m_sImageURL ); +} + //------------------------------------------------------------------------------ void OImageControlModel::doSetControlValue( const Any& _rValue ) { @@ -599,11 +623,6 @@ void OImageControlModel::doSetControlValue( const Any& _rValue ) void SAL_CALL OImageControlModel::disposing() { OBoundControlModel::disposing(); - - { - ::osl::MutexGuard aGuard( m_aMutex ); // setControlValue expects this - setControlValue( Any(), eOther ); - } } //------------------------------------------------------------------------------ diff --git a/forms/source/component/ImageControl.hxx b/forms/source/component/ImageControl.hxx index 8099fed51..78eb4a83b 100644 --- a/forms/source/component/ImageControl.hxx +++ b/forms/source/component/ImageControl.hxx @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,9 @@ class OImageControlModel ::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageProducer> m_xImageProducer; ImageProducer* m_pImageProducer; sal_Bool m_bReadOnly; + ::rtl::OUString m_sImageURL; + ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > + m_xGraphic; ::rtl::OUString m_sDocumentURL; protected: @@ -86,9 +90,6 @@ public: // OComponentHelper virtual void SAL_CALL disposing(); - // OPropertyChangeListener - virtual void _propertyChanged( const ::com::sun::star::beans::PropertyChangeEvent& ) throw(::com::sun::star::uno::RuntimeException); - // XPersistObject virtual ::rtl::OUString SAL_CALL getServiceName() throw ( ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); @@ -103,6 +104,9 @@ public: virtual void SAL_CALL startProduction( ) throw (::com::sun::star::uno::RuntimeException); // OControlModel's property handling + virtual void describeAggregateProperties( + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rAggregateProps + ) const; virtual void describeFixedProperties( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps ) const; @@ -119,6 +123,8 @@ protected: translateDbColumnToControlValue( ); virtual sal_Bool commitControlValueToDbColumn( bool _bPostReset ); + virtual ::com::sun::star::uno::Any + getControlValue( ) const; virtual void doSetControlValue( const ::com::sun::star::uno::Any& _rValue ); virtual sal_Bool approveDbColumnType(sal_Int32 _nColumnType); @@ -134,7 +140,7 @@ protected: @precond our own mutex is locked */ - sal_Bool impl_handleNewImageURL_lck( const ::rtl::OUString& _rURL, ValueChangeInstigator _eInstigator ); + sal_Bool impl_handleNewImageURL_lck( ValueChangeInstigator _eInstigator ); /** updates the binary stream, created from loading the file which the given URL points to, into our bound field, or the control itself if there is no bound field diff --git a/forms/source/inc/FormComponent.hxx b/forms/source/inc/FormComponent.hxx index deb57bd66..040a690bc 100644 --- a/forms/source/inc/FormComponent.hxx +++ b/forms/source/inc/FormComponent.hxx @@ -759,6 +759,18 @@ protected: sal_Int32 _nValuePropertyExternalHandle ); + /** initializes the part of the class which is related to the control value. + +

In opposite to ->initValueProperty, this method is to be used for value properties which are not + implemented by our aggregate, but by ourselves.

+ +

Certain functionality is not available when using own value properties. This includes binding to an external + value and external validation. (This is not a conceptual limit, but simply missing implementation.)

+ */ + void initOwnValueProperty( + const ::rtl::OUString& i_rValuePropertyName + ); + /** suspends listening at the value property

As long as this listening is suspended, changes in the value property will not be @@ -782,6 +794,16 @@ protected: */ void resumeValueListening( ); + /** (to be) called when the value property changed + + Normally, this is done automatically, since the value property is a property of our aggregate, and we're + a listener at this property. + However, in some cases the value property might not be an aggregate property, but a property of the + delegator instance. In this case, you'll need to call onValuePropertyChange whenever this + property changes. + */ + void onValuePropertyChange( ControlModelLock& i_rControLock ); + /** starts listening at the aggregate, for changes in the given property

The OBoundControlModel automatically registers a multiplexer which listens for diff --git a/forms/source/inc/frm_strings.hxx b/forms/source/inc/frm_strings.hxx index 1f57f425d..74581b9d8 100644 --- a/forms/source/inc/frm_strings.hxx +++ b/forms/source/inc/frm_strings.hxx @@ -141,6 +141,7 @@ namespace frm FORMS_CONSTASCII_STRING( PROPERTY_SUBMIT_METHOD, "SubmitMethod" ); FORMS_CONSTASCII_STRING( PROPERTY_SUBMIT_ENCODING, "SubmitEncoding" ); FORMS_CONSTASCII_STRING( PROPERTY_IMAGE_URL, "ImageURL" ); + FORMS_CONSTASCII_STRING( PROPERTY_GRAPHIC, "Graphic" ); FORMS_CONSTASCII_STRING( PROPERTY_IMAGE_POSITION, "ImagePosition" ); FORMS_CONSTASCII_STRING( PROPERTY_EMPTY_IS_NULL, "ConvertEmptyToNull" ); FORMS_CONSTASCII_STRING( PROPERTY_LISTSOURCETYPE, "ListSourceType" ); diff --git a/forms/source/inc/property.hrc b/forms/source/inc/property.hrc index e70dff4b2..3eddaa398 100644 --- a/forms/source/inc/property.hrc +++ b/forms/source/inc/property.hrc @@ -61,7 +61,7 @@ namespace frm #define PROPERTY_ID_WRITING_MODE (PROPERTY_ID_START + 20) #define PROPERTY_ID_CONTEXT_WRITING_MODE (PROPERTY_ID_START + 21) #define PROPERTY_ID_VERTICAL_ALIGN (PROPERTY_ID_START + 22) - // free +#define PROPERTY_ID_GRAPHIC (PROPERTY_ID_START + 23) // free // free // free diff --git a/forms/source/misc/property.cxx b/forms/source/misc/property.cxx index 11d08f985..21498cc17 100644 --- a/forms/source/misc/property.cxx +++ b/forms/source/misc/property.cxx @@ -134,6 +134,7 @@ void PropertyInfoService::initialize() ADD_PROP_ASSIGNMENT(SUBMIT_METHOD); ADD_PROP_ASSIGNMENT(SUBMIT_ENCODING); ADD_PROP_ASSIGNMENT(IMAGE_URL); + ADD_PROP_ASSIGNMENT(GRAPHIC); ADD_PROP_ASSIGNMENT(EMPTY_IS_NULL); ADD_PROP_ASSIGNMENT(LISTSOURCETYPE); ADD_PROP_ASSIGNMENT(LISTSOURCE); -- cgit v1.2.3 From 2f78daf7769342a7016599915e1ae2ef8b6a74ea Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 26 Aug 2010 17:14:25 +0200 Subject: dba33h: #i114122# don't set GraphicObject-URLs at the image control/model, instead, just set the XGraphic, and let the implementation manage the respective XGraphicObject instance and its life time --- forms/source/component/ImageControl.cxx | 65 +++++++++++++++++++++++++-------- forms/source/component/ImageControl.hxx | 7 ++-- 2 files changed, 53 insertions(+), 19 deletions(-) diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx index f710696df..e9e2ce3e2 100644 --- a/forms/source/component/ImageControl.cxx +++ b/forms/source/component/ImageControl.cxx @@ -151,9 +151,10 @@ OImageControlModel::OImageControlModel(const Reference& _r :OBoundControlModel( _rxFactory, VCL_CONTROLMODEL_IMAGECONTROL, FRM_SUN_CONTROL_IMAGECONTROL, sal_False, sal_False, sal_False ) // use the old control name for compytibility reasons ,m_pImageProducer( NULL ) + ,m_bExternalGraphic( true ) ,m_bReadOnly( sal_False ) ,m_sImageURL() - ,m_xGraphic() + ,m_xGraphicObject() { DBG_CTOR( OImageControlModel, NULL ); m_nClassId = FormComponentType::IMAGECONTROL; @@ -167,9 +168,10 @@ OImageControlModel::OImageControlModel( const OImageControlModel* _pOriginal, co :OBoundControlModel( _pOriginal, _rxFactory ) // use the old control name for compytibility reasons ,m_pImageProducer( NULL ) + ,m_bExternalGraphic( true ) ,m_bReadOnly( _pOriginal->m_bReadOnly ) ,m_sImageURL( _pOriginal->m_sImageURL ) - ,m_xGraphic( _pOriginal->m_xGraphic ) + ,m_xGraphicObject( _pOriginal->m_xGraphicObject ) { DBG_CTOR( OImageControlModel, NULL ); implConstruct(); @@ -255,7 +257,7 @@ void OImageControlModel::getFastPropertyValue(Any& rValue, sal_Int32 nHandle) co rValue <<= m_sImageURL; break; case PROPERTY_ID_GRAPHIC: - rValue <<= m_xGraphic; + rValue <<= m_xGraphicObject.is() ? m_xGraphicObject->getGraphic() : Reference< XGraphic >(); break; default: OBoundControlModel::getFastPropertyValue(rValue, nHandle); @@ -284,8 +286,35 @@ void OImageControlModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, con break; case PROPERTY_ID_GRAPHIC: - OSL_VERIFY( rValue >>= m_xGraphic ); - break; + { + Reference< XGraphic > xGraphic; + OSL_VERIFY( rValue >>= xGraphic ); + if ( !xGraphic.is() ) + m_xGraphicObject.clear(); + else + { + m_xGraphicObject = GraphicObject::create( m_aContext.getUNOContext() ); + m_xGraphicObject->setGraphic( xGraphic ); + } + + if ( m_bExternalGraphic ) + { + // if that's an external graphic, i.e. one which has not been loaded by ourselves in response to a + // new image URL, then also adjust our ImageURL. + ::rtl::OUString sNewImageURL; + if ( m_xGraphicObject.is() ) + { + sNewImageURL = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.GraphicObject:" ) ); + sNewImageURL = sNewImageURL + m_xGraphicObject->getUniqueID(); + } + m_sImageURL = sNewImageURL; + // TODO: speaking strictly, this would need to be notified, since ImageURL is a bound property. However, + // this method here is called with a locked mutex, so we cannot simply call listeners ... + // I think the missing notification (and thus clients which potentially cannot observe the change) + // is less severe than the potential deadlock ... + } + } + break; default: OBoundControlModel::setFastPropertyValue_NoBroadcast(nHandle, rValue); @@ -306,7 +335,10 @@ sal_Bool OImageControlModel::convertFastPropertyValue(Any& rConvertedValue, Any& return tryPropertyValue( rConvertedValue, rOldValue, rValue, m_sImageURL ); case PROPERTY_ID_GRAPHIC: - return tryPropertyValue( rConvertedValue, rOldValue, rValue, m_xGraphic ); + { + const Reference< XGraphic > xGraphic( getFastPropertyValue( PROPERTY_ID_GRAPHIC ), UNO_QUERY ); + return tryPropertyValue( rConvertedValue, rOldValue, rValue, xGraphic ); + } default: return OBoundControlModel::convertFastPropertyValue(rConvertedValue, rOldValue, nHandle, rValue); @@ -660,10 +692,16 @@ void SAL_CALL OImageControlModel::startProduction( ) throw (RuntimeException) IMPL_LINK( OImageControlModel, OnImageImportDone, ::Graphic*, i_pGraphic ) { const Reference< XGraphic > xGraphic( i_pGraphic != NULL ? Image( i_pGraphic->GetBitmapEx() ).GetXGraphic() : NULL ); - setPropertyValue( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Graphic" ) ), - makeAny( xGraphic ) - ); + m_bExternalGraphic = false; + try + { + setPropertyValue( PROPERTY_GRAPHIC, makeAny( xGraphic ) ); + } + catch ( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + m_bExternalGraphic = true; return 1L; } @@ -828,12 +866,7 @@ bool OImageControlControl::implInsertGraphics() { Graphic aGraphic; aDialog.GetGraphic( aGraphic ); - - Reference< graphic::XGraphicObject > xGrfObj = graphic::GraphicObject::create( m_aContext.getUNOContext() ); - xGrfObj->setGraphic( aGraphic.GetXGraphic() ); - rtl::OUString sObjectID( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.GraphicObject:" ) ); - sObjectID = sObjectID + xGrfObj->getUniqueID(); - xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( ::rtl::OUString( sObjectID ) ) ); + xSet->setPropertyValue( PROPERTY_GRAPHIC, makeAny( aGraphic.GetXGraphic() ) ); } else xSet->setPropertyValue( PROPERTY_IMAGE_URL, makeAny( ::rtl::OUString( aDialog.GetPath() ) ) ); diff --git a/forms/source/component/ImageControl.hxx b/forms/source/component/ImageControl.hxx index 78eb4a83b..cd47e15f3 100644 --- a/forms/source/component/ImageControl.hxx +++ b/forms/source/component/ImageControl.hxx @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include #include @@ -58,10 +58,11 @@ class OImageControlModel { ::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageProducer> m_xImageProducer; ImageProducer* m_pImageProducer; + bool m_bExternalGraphic; sal_Bool m_bReadOnly; ::rtl::OUString m_sImageURL; - ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > - m_xGraphic; + ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphicObject > + m_xGraphicObject; ::rtl::OUString m_sDocumentURL; protected: -- cgit v1.2.3 From 61bf1db52942cc7a3d50181e078be2854a6e274a Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Wed, 1 Sep 2010 14:59:07 +0200 Subject: dba33i: #i111146# migrated all SFX-based applications to use named views --- basctl/source/basicide/basidesh.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx index 6e4e2cf9d..6cd39178e 100644 --- a/basctl/source/basicide/basidesh.cxx +++ b/basctl/source/basicide/basidesh.cxx @@ -155,7 +155,7 @@ public: TYPEINIT1( BasicIDEShell, SfxViewShell ); -SFX_IMPL_VIEWFACTORY( BasicIDEShell, IDEResId( SVX_INTERFACE_BASIDE_VIEWSH ) ) +SFX_IMPL_NAMED_VIEWFACTORY( BasicIDEShell, "Default" ) { SFX_VIEW_REGISTRATION( BasicDocShell ); } -- cgit v1.2.3 From 2cab1ad00d080b85294350ed02a3d39e0522a15c Mon Sep 17 00:00:00 2001 From: Ingo Schmidt Date: Mon, 13 Sep 2010 17:33:53 +0200 Subject: native330 #163564# fixing installation on Cent OS --- .../org/openoffice/setup/InstallData.java | 9 + .../openoffice/setup/Installer/LinuxInstaller.java | 265 ++++++++------------- .../setup/InstallerHelper/LinuxHelper.java | 37 ++- 3 files changed, 129 insertions(+), 182 deletions(-) diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java index d3ba4abc5..e472d2b72 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java @@ -76,6 +76,7 @@ public class InstallData static private boolean useRtl = false; static private boolean installedProductMinorSet = false; static private boolean isDebianSystem = false; + static private boolean useForceDebian = false; static private boolean debianInvestigated = false; static private String installType; /* custom or typical installation */ static private String osType; /* Linux, SunOS, ... */ @@ -667,6 +668,14 @@ public class InstallData isDebianSystem = value; } + public boolean useForceDebian() { + return useForceDebian; + } + + public void setUseForceDebian(boolean value) { + useForceDebian = value; + } + public boolean databaseQueried() { return databaseQueried; } diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java index c66c84a56..2906f7a05 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java @@ -202,12 +202,13 @@ public class LinuxInstaller extends Installer { } if ( data.isDebianSystem() ) { - forceDebianString = "--force-debian"; nodepsString = "--nodeps"; + + if ( data.useForceDebian() ) { + forceDebianString = "--force-debian"; + } } - String rpmCommand = ""; - String[] rpmCommandArray; String databasePath = null; String databaseString = ""; boolean useLocalDatabase = false; @@ -225,130 +226,57 @@ public class LinuxInstaller extends Installer { useLocalDatabase = true; } - if (useForce) { - if (useLocalDatabase) { - if ( relocations != null ) { - rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " + - "--relocate " + relocations + " " + databaseString + - " " + databasePath + " " + packageName; - rpmCommandArray = new String[12]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = "--force"; - rpmCommandArray[4] = forceDebianString; - rpmCommandArray[5] = nodepsString; - rpmCommandArray[6] = "-vh"; - rpmCommandArray[7] = "--relocate"; - rpmCommandArray[8] = relocations; - rpmCommandArray[9] = databaseString; - rpmCommandArray[10] = databasePath; - rpmCommandArray[11] = packageName; - } else { - rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " + - databaseString + " " + databasePath + " " + packageName; - rpmCommandArray = new String[10]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = "--force"; - rpmCommandArray[4] = forceDebianString; - rpmCommandArray[5] = nodepsString; - rpmCommandArray[6] = "-vh"; - rpmCommandArray[7] = databaseString; - rpmCommandArray[8] = databasePath; - rpmCommandArray[9] = packageName; - } - } else { - if ( relocations != null ) - { - rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " + - "--relocate " + relocations + " " + packageName; - rpmCommandArray = new String[10]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = "--force"; - rpmCommandArray[4] = forceDebianString; - rpmCommandArray[5] = nodepsString; - rpmCommandArray[6] = "-vh"; - rpmCommandArray[7] = "--relocate"; - rpmCommandArray[8] = relocations; - rpmCommandArray[9] = packageName; - } else { - rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " + packageName; - rpmCommandArray = new String[8]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = "--force"; - rpmCommandArray[4] = forceDebianString; - rpmCommandArray[5] = nodepsString; - rpmCommandArray[6] = "-vh"; - rpmCommandArray[7] = packageName; - } - } - } else { - if (useLocalDatabase) { - if ( relocations != null ) { - rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " + - "--relocate " + relocations + " " + databaseString + - " " + databasePath + " " + packageName; - rpmCommandArray = new String[11]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = forceDebianString; - rpmCommandArray[4] = nodepsString; - rpmCommandArray[5] = "-vh"; - rpmCommandArray[6] = "--relocate"; - rpmCommandArray[7] = relocations; - rpmCommandArray[8] = databaseString; - rpmCommandArray[9] = databasePath; - rpmCommandArray[10] = packageName; - } else { - rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " + - databaseString + " " + databasePath + " " + packageName; - rpmCommandArray = new String[9]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = forceDebianString; - rpmCommandArray[4] = nodepsString; - rpmCommandArray[5] = "-vh"; - rpmCommandArray[6] = databaseString; - rpmCommandArray[7] = databasePath; - rpmCommandArray[8] = packageName; - } - } else { - if ( relocations != null ) - { - rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " + - "--relocate " + relocations + " " + packageName; - rpmCommandArray = new String[9]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = forceDebianString; - rpmCommandArray[4] = nodepsString; - rpmCommandArray[5] = "-vh"; - rpmCommandArray[6] = "--relocate"; - rpmCommandArray[7] = relocations; - rpmCommandArray[8] = packageName; - } else { - rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " + packageName; - rpmCommandArray = new String[7]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "--upgrade"; - rpmCommandArray[2] = "--ignoresize"; - rpmCommandArray[3] = forceDebianString; - rpmCommandArray[4] = nodepsString; - rpmCommandArray[5] = "-vh"; - rpmCommandArray[6] = packageName; - } - } + // Defining a Vector that contains the full rpm command. Then the string array can be + // created dynamically. + + Vector rpmVector = new Vector(); + + rpmVector.add("rpm"); + rpmVector.add("--upgrade"); + rpmVector.add("--ignoresize"); + + if ( useForce ) { + rpmVector.add("--force"); } - + + if ( ! forceDebianString.equals("") ) { + rpmVector.add(forceDebianString); + } + + if ( ! nodepsString.equals("") ) { + rpmVector.add(nodepsString); + } + + rpmVector.add("-vh"); + + if ( relocations != null ) { + rpmVector.add("--relocate"); + rpmVector.add(relocations); + } + + if ( useLocalDatabase ) { + rpmVector.add(databaseString); + rpmVector.add(databasePath); + } + + rpmVector.add(packageName); + + // Creating String and StringArray for rpm command + + int capacity = rpmVector.size(); + + String rpmCommand = ""; + String[] rpmCommandArray = new String[capacity]; + + for (int i = 0; i < rpmVector.size(); i++) { + rpmCommandArray[i] = (String)rpmVector.get(i); + rpmCommand = rpmCommand + " " + (String)rpmVector.get(i); + } + + rpmCommand = rpmCommand.trim(); + + // Staring rpm process + Vector returnVector = new Vector(); Vector returnErrorVector = new Vector(); // int returnValue = SystemManager.executeProcessReturnVector(rpmCommand, returnVector, returnErrorVector); @@ -407,8 +335,6 @@ public class LinuxInstaller extends Installer { String databasePath = data.getDatabasePath(); String databaseString = ""; boolean useLocalDatabase = false; - String rpmCommand; - String[] rpmCommandArray; if (( databasePath != null ) && (! databasePath.equalsIgnoreCase("null"))) { databaseString = "--dbpath"; @@ -427,51 +353,52 @@ public class LinuxInstaller extends Installer { } if ( data.isDebianSystem() ) { - forceDebianString = "--force-debian"; nodepsString = "--nodeps"; + + if ( data.useForceDebian() ) { + forceDebianString = "--force-debian"; + } } - - // Code duplication for isDebianSystem is necessary, because there is no valid position - // for forceDebianString, if it is empty. This is no problem in installPackage. - if ( data.isDebianSystem() ) { - - if (useLocalDatabase) { - rpmCommand = "rpm " + forceDebianString + " " + nodepsString + " -ev" + " " + databaseString + " " + databasePath + " " + packageName; - rpmCommandArray = new String[7]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = forceDebianString; - rpmCommandArray[2] = nodepsString; - rpmCommandArray[3] = "-ev"; - rpmCommandArray[4] = databaseString; - rpmCommandArray[5] = databasePath; - rpmCommandArray[6] = packageName; - } else { - rpmCommand = "rpm " + forceDebianString + " " + nodepsString + " -ev" + " " + packageName; - rpmCommandArray = new String[5]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = forceDebianString; - rpmCommandArray[2] = nodepsString; - rpmCommandArray[3] = "-ev"; - rpmCommandArray[4] = packageName; - } - } else { - if (useLocalDatabase) { - rpmCommand = "rpm -ev" + " " + databaseString + " " + databasePath + " " + packageName; - rpmCommandArray = new String[5]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "-ev"; - rpmCommandArray[2] = databaseString; - rpmCommandArray[3] = databasePath; - rpmCommandArray[4] = packageName; - } else { - rpmCommand = "rpm -ev" + " " + packageName; - rpmCommandArray = new String[3]; - rpmCommandArray[0] = "rpm"; - rpmCommandArray[1] = "-ev"; - rpmCommandArray[2] = packageName; - } + // Defining a Vector that contains the full rpm command. Then the string array can be + // created dynamically. + + Vector rpmVector = new Vector(); + + rpmVector.add("rpm"); + + if ( ! forceDebianString.equals("") ) { + rpmVector.add(forceDebianString); } + + if ( ! nodepsString.equals("") ) { + rpmVector.add(nodepsString); + } + + rpmVector.add("-ev"); + + if ( useLocalDatabase ) { + rpmVector.add(databaseString); + rpmVector.add(databasePath); + } + + rpmVector.add(packageName); + + // Creating String and StringArray for rpm command + + int capacity = rpmVector.size(); + + String rpmCommand = ""; + String[] rpmCommandArray = new String[capacity]; + + for (int i = 0; i < rpmVector.size(); i++) { + rpmCommandArray[i] = (String)rpmVector.get(i); + rpmCommand = rpmCommand + " " + (String)rpmVector.get(i); + } + + rpmCommand = rpmCommand.trim(); + + // Starting rpm process Vector returnVector = new Vector(); Vector returnErrorVector = new Vector(); diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java index 9ce41daf2..b21123cb2 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java @@ -383,21 +383,32 @@ import java.util.Vector;public class LinuxHelper { public void investigateDebian(InstallData data) { - // String rpmQuery = "rpm --help; - String[] rpmQueryArray = new String[2]; - rpmQueryArray[0] = "rpm"; - rpmQueryArray[1] = "--help"; - - Vector returnVector = new Vector(); - Vector returnErrorVector = new Vector(); - int returnValue = ExecuteProcess.executeProcessReturnVector(rpmQueryArray, returnVector, returnErrorVector); + // First check: Is this a Debian system? - // Checking if the return vector contains the string "force-debian" + String dpkgFile = "/usr/bin/dpkg"; + + if ( new File(dpkgFile).exists() ) { + + data.setIsDebianSystem(true); + + // Second check: If this is a Debian system, is "--force-debian" required? + + // String rpmQuery = "rpm --help; + String[] rpmQueryArray = new String[2]; + rpmQueryArray[0] = "rpm"; + rpmQueryArray[1] = "--help"; + + Vector returnVector = new Vector(); + Vector returnErrorVector = new Vector(); + int returnValue = ExecuteProcess.executeProcessReturnVector(rpmQueryArray, returnVector, returnErrorVector); + + // Checking if the return vector contains the string "force-debian" - for (int i = 0; i < returnVector.size(); i++) { - String line = (String) returnVector.get(i); - if ( line.indexOf("force-debian") > -1 ) { - data.setIsDebianSystem(true); + for (int i = 0; i < returnVector.size(); i++) { + String line = (String) returnVector.get(i); + if ( line.indexOf("force-debian") > -1 ) { + data.setUseForceDebian(true); + } } } } -- cgit v1.2.3 From 9158068afebb908d7273ec6b4ee25936abec3192 Mon Sep 17 00:00:00 2001 From: Ingo Schmidt Date: Tue, 14 Sep 2010 12:00:24 +0200 Subject: native330 #i114487# fixing installation on Cent OS --- javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java | 2 +- .../src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java | 4 ++-- .../JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java index e472d2b72..30a222d3b 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java @@ -76,7 +76,7 @@ public class InstallData static private boolean useRtl = false; static private boolean installedProductMinorSet = false; static private boolean isDebianSystem = false; - static private boolean useForceDebian = false; + static private boolean useForceDebian = false; /* --force-debian */ static private boolean debianInvestigated = false; static private String installType; /* custom or typical installation */ static private String osType; /* Linux, SunOS, ... */ diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java index 2906f7a05..204c9e18e 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java @@ -227,7 +227,7 @@ public class LinuxInstaller extends Installer { } // Defining a Vector that contains the full rpm command. Then the string array can be - // created dynamically. + // created dynamically. Otherwise there would be too many different scenarios. Vector rpmVector = new Vector(); @@ -361,7 +361,7 @@ public class LinuxInstaller extends Installer { } // Defining a Vector that contains the full rpm command. Then the string array can be - // created dynamically. + // created dynamically. Otherwise there would be too many different scenarios. Vector rpmVector = new Vector(); diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java index b21123cb2..fb8bfa96a 100755 --- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java @@ -391,7 +391,8 @@ import java.util.Vector;public class LinuxHelper { data.setIsDebianSystem(true); - // Second check: If this is a Debian system, is "--force-debian" required? + // Second check: If this is a Debian system, is "--force-debian" required? Older + // versions do not support "--force-debian". // String rpmQuery = "rpm --help; String[] rpmQueryArray = new String[2]; -- cgit v1.2.3 From ce53dcd5bacb13b47afcec9662f98bc729dc1a5e Mon Sep 17 00:00:00 2001 From: Ingo Schmidt Date: Fri, 17 Sep 2010 14:48:05 +0200 Subject: native330 #i113835# fix --- setup_native/scripts/admin.pl | 1 - 1 file changed, 1 deletion(-) diff --git a/setup_native/scripts/admin.pl b/setup_native/scripts/admin.pl index 466182b24..d90c76650 100644 --- a/setup_native/scripts/admin.pl +++ b/setup_native/scripts/admin.pl @@ -66,7 +66,6 @@ sub usage { print <