ooo-build r13086 - trunk/patches/test/vba
- From: noelpwer svn gnome org
- To: svn-commits-list gnome org
- Subject: ooo-build r13086 - trunk/patches/test/vba
- Date: Mon, 7 Jul 2008 13:36:48 +0000 (UTC)
Author: noelpwer
Date: Mon Jul 7 13:36:48 2008
New Revision: 13086
URL: http://svn.gnome.org/viewvc/ooo-build?rev=13086&view=rev
Log:
ok, got form controls to read from image stream inside the document too.
next, create a proper patch
Modified:
trunk/patches/test/vba/HackyImageControlWithNonLinkedImages.diff
Modified: trunk/patches/test/vba/HackyImageControlWithNonLinkedImages.diff
==============================================================================
--- trunk/patches/test/vba/HackyImageControlWithNonLinkedImages.diff (original)
+++ trunk/patches/test/vba/HackyImageControlWithNonLinkedImages.diff Mon Jul 7 13:36:48 2008
@@ -1,3 +1,87 @@
+diff --git forms/source/component/ImageControl.cxx forms/source/component/ImageControl.cxx
+index 1ba9f90..6db2387 100644
+--- forms/source/component/ImageControl.cxx
++++ forms/source/component/ImageControl.cxx
+@@ -43,6 +43,8 @@
+ #include <svtools/imageresourceaccess.hxx>
+ #include <unotools/ucblockbytes.hxx>
+ #include <sfx2/filedlghelper.hxx>
++#include <com/sun/star/graphic/XGraphicLinkProvider.hpp>
++#include <com/sun/star/embed/ElementModes.hpp>
+ #include <com/sun/star/awt/XPopupMenu.hpp>
+ #include <com/sun/star/awt/PopupMenuDirection.hpp>
+ #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+@@ -352,7 +354,51 @@ sal_Bool OImageControlModel::handleNewIm
+ // create a stream for the image specified by the URL
+ ::std::auto_ptr< SvStream > pImageStream;
+ Reference< XInputStream > xImageStream;
++ String aUserData = _rURL;
+
++ Reference< graphic::XGraphicLinkProvider > xProv;
++
++ getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("GraphicLinkProvider" ) ) ) >>= xProv;
++ OSL_TRACE("GraphicLinkProvider.is %d", xProv.is() );
++ if ( xProv.is() && _rURL.toAsciiLowerCase().indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.package:") ) ) == 0 )
++ {
++ Reference< embed::XStorage > xStor( xProv->getStorage() );
++ String aUserData = _rURL;
++ if( aUserData.Len() )
++ {
++ const String aPicturePath( aUserData.GetToken( 1, ':' ) );
++
++ // graphic from picture stream in picture storage in XML package
++ if( aPicturePath.GetTokenCount( '/' ) == 2 )
++ {
++ const String aPictureStreamName( aPicturePath.GetToken( 1, '/' ) );
++ const String aPictureStorageName( aPicturePath.GetToken( 0, '/' ) );
++
++ try {
++ if ( xStor->isStorageElement( aPictureStorageName ) )
++ {
++ uno::Reference< embed::XStorage > xPictureStorage =
++ xStor->openStorageElement( aPictureStorageName, embed::ElementModes::READ );
++ if( xPictureStorage.is() &&
++ xPictureStorage->isStreamElement( aPictureStreamName ) )
++ {
++ uno::Reference< io::XStream > xStream = xPictureStorage->openStreamElement( aPictureStreamName, embed::ElementModes::READ );
++ if ( xStream.is() )
++ {
++ pImageStream.reset( ::utl::UcbStreamHelper::CreateStream( xStream ) );
++
++ }
++ }
++ }
++ }
++ catch( uno::Exception& )
++ {
++ }
++ }
++ }
++ }
++if ( !pImageStream.get() )
++{
+ if ( ::svt::ImageResourceAccess::isImageResourceURL( _rURL ) )
+ {
+ xImageStream = ::svt::ImageResourceAccess::getImageXStream( getORB(), _rURL );
+@@ -360,8 +406,9 @@ sal_Bool OImageControlModel::handleNewIm
+ else
+ {
+ pImageStream.reset( ::utl::UcbStreamHelper::CreateStream( _rURL, STREAM_READ ) );
++ }
++}
+ sal_Bool bSetNull = ( pImageStream.get() == NULL ) || ( ERRCODE_NONE != pImageStream->GetErrorCode() );
+-
+ if (!bSetNull)
+ {
+ // get the size of the stream
+@@ -373,7 +420,6 @@ sal_Bool OImageControlModel::handleNewIm
+
+ xImageStream = new ::utl::OInputStreamHelper( new SvLockBytes( pImageStream.get(), sal_False ), nSize );
+ }
+- }
+
+ if ( xImageStream.is() )
+ {
diff --git forms/source/component/imgprod.cxx forms/source/component/imgprod.cxx
index 01fa8ac..8c7e065 100644
--- forms/source/component/imgprod.cxx
@@ -68,6 +152,18 @@
}
namespace frm
+diff --git forms/source/inc/frm_strings.hxx forms/source/inc/frm_strings.hxx
+index 7b1677d..a29cf97 100644
+--- forms/source/inc/frm_strings.hxx
++++ forms/source/inc/frm_strings.hxx
+@@ -144,6 +144,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_GRAPHICLINKPROVIDER, "GraphicLinkProvider" );
+ FORMS_CONSTASCII_STRING( PROPERTY_IMAGE_POSITION, "ImagePosition" );
+ FORMS_CONSTASCII_STRING( PROPERTY_EMPTY_IS_NULL, "ConvertEmptyToNull" );
+ FORMS_CONSTASCII_STRING( PROPERTY_LISTSOURCETYPE, "ListSourceType" );
diff --git goodies/source/unographic/descriptor.cxx goodies/source/unographic/descriptor.cxx
index 37721e1..d902d51 100644
--- goodies/source/unographic/descriptor.cxx
@@ -328,18 +424,23 @@
.IF "$(GUI)"=="WNT"
diff --git toolkit/inc/toolkit/controls/unocontrols.hxx toolkit/inc/toolkit/controls/unocontrols.hxx
-index 72c7db8..757a6c8 100644
+index 72c7db8..23cdb87 100644
--- toolkit/inc/toolkit/controls/unocontrols.hxx
+++ toolkit/inc/toolkit/controls/unocontrols.hxx
-@@ -221,7 +221,7 @@ private:
+@@ -219,10 +219,11 @@ private:
+ std::list< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > > maListeners;
+ bool mbAdjustingImagePosition;
bool mbAdjustingGraphic;
++ bool mbInLinkProvider;
protected:
- ImageProducerControlModel() : mbAdjustingImagePosition( false ), mbAdjustingGraphic( false ) { }
+- ImageProducerControlModel( const ImageProducerControlModel& _rSource ) : com::sun::star::awt::XImageProducer(), UnoControlModel( _rSource ), mbAdjustingImagePosition( false ), mbAdjustingGraphic( false ) { }
+ ImageProducerControlModel();
- ImageProducerControlModel( const ImageProducerControlModel& _rSource ) : com::sun::star::awt::XImageProducer(), UnoControlModel( _rSource ), mbAdjustingImagePosition( false ), mbAdjustingGraphic( false ) { }
++ ImageProducerControlModel( const ImageProducerControlModel& _rSource ) : com::sun::star::awt::XImageProducer(), UnoControlModel( _rSource ), mbAdjustingImagePosition( false ), mbAdjustingGraphic( false ), mbInLinkProvider( false ) { }
::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
diff --git toolkit/inc/toolkit/helper/property.hxx toolkit/inc/toolkit/helper/property.hxx
index db61c94..73e861e 100644
--- toolkit/inc/toolkit/helper/property.hxx
@@ -400,7 +501,7 @@
case BASEPROPERTY_BORDERCOLOR:
case BASEPROPERTY_SYMBOL_COLOR:
diff --git toolkit/source/controls/unocontrols.cxx toolkit/source/controls/unocontrols.cxx
-index 821c1b9..de4294d 100644
+index 821c1b9..fa2aae6 100644
--- toolkit/source/controls/unocontrols.cxx
+++ toolkit/source/controls/unocontrols.cxx
@@ -37,6 +37,7 @@
@@ -460,30 +561,38 @@
}
void SAL_CALL ImageProducerControlModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::uno::Exception)
-@@ -615,16 +635,39 @@ void SAL_CALL ImageProducerControlModel:
+@@ -615,16 +635,47 @@ void SAL_CALL ImageProducerControlModel:
{
switch ( nHandle )
{
-+ case BASEPROPERTY_GRAPHICLINKPROVIDER:
-+ if ( !mbAdjustingGraphic && ImplHasProperty( BASEPROPERTY_GRAPHIC ) )
-+ {
-+ uno::Reference< graphic::XGraphicLinkProvider > xProv;
-+ OSL_VERIFY( rValue >>= xProv );
-+ rtl::OUString sURL;
-+ //mbAdjustingGraphic = true;
-+ if ( xProv.is() )
-+ sURL = xProv->getSourceURL();
-+
-+ if ( sURL.getLength() )
-+ {
-+ //setPropertyValue( GetPropertyName( BASEPROPERTY_GRAPHIC ), uno::makeAny( lcl_getGraphicFromURL_nothrow( sURL, xProv->getStorage() ) ) );
-+ }
-+ break;
-+
-+ }
++ // someone wants to set an image that is carried in the
++ // associated storage ( e.g the document )
++ case BASEPROPERTY_GRAPHICLINKPROVIDER:
++ {
++ uno::Reference< graphic::XGraphicLinkProvider > xProv;
++ OSL_VERIFY( rValue >>= xProv );
++ rtl::OUString sURL;
++ if ( xProv.is() )
++ {
++ sURL = xProv->getSourceURL();
++ if ( sURL.getLength() )
++ {
++ mbInLinkProvider = true;
++ setPropertyValue( GetPropertyName( BASEPROPERTY_IMAGEURL ), uno::makeAny( sURL ) );
++ mbInLinkProvider = false;
++ }
++ }
++ break;
++ }
+
case BASEPROPERTY_IMAGEURL:
+ {
++ OSL_TRACE("Setting IMAGEURL mbInLinkProvider = %s", mbInLinkProvider ? "true" : "false" );
++ // someone has set the an ImageUrl ( e.g. Linked Image )
++ if ( !mbInLinkProvider && ImplHasProperty( BASEPROPERTY_GRAPHICLINKPROVIDER ) )
++ setPropertyValue( GetPropertyName( BASEPROPERTY_GRAPHICLINKPROVIDER ), uno::makeAny( uno::Reference< graphic::XGraphicLinkProvider >() ) );
++
++
if ( !mbAdjustingGraphic && ImplHasProperty( BASEPROPERTY_GRAPHIC ) )
{
mbAdjustingGraphic = true;
@@ -501,7 +610,7 @@
case BASEPROPERTY_GRAPHIC:
if ( !mbAdjustingGraphic && ImplHasProperty( BASEPROPERTY_IMAGEURL ) )
-@@ -676,8 +719,23 @@ void ImageProducerControlModel::removeCo
+@@ -676,8 +727,23 @@ void ImageProducerControlModel::removeCo
void ImageProducerControlModel::startProduction( ) throw (::com::sun::star::uno::RuntimeException)
{
@@ -546,8 +655,139 @@
DECL_PROP_2 ( "HelpText", HELPTEXT, ::rtl::OUString, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HelpURL", HELPURL, ::rtl::OUString, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HideInactiveSelection", HIDEINACTIVESELECTION, bool, BOUND, MAYBEDEFAULT ),
+diff --git xmloff/source/forms/elementimport.cxx xmloff/source/forms/elementimport.cxx
+index edc0c77..0cc56a7 100644
+--- xmloff/source/forms/elementimport.cxx
++++ xmloff/source/forms/elementimport.cxx
+@@ -56,6 +56,7 @@
+ #include <com/sun/star/beans/XMultiPropertySet.hpp>
+ #include <com/sun/star/beans/XPropertyContainer.hpp>
+ #include <com/sun/star/beans/PropertyAttribute.hpp>
++#include <com/sun/star/document/XStorageBasedDocument.hpp>
+ /** === end UNO includes === **/
+ #include <tools/urlobj.hxx>
+ #include <tools/time.hxx>
+@@ -81,6 +82,38 @@ namespace xmloff
+ using namespace ::com::sun::star::util;
+ using namespace ::com::sun::star::text;
+ using namespace ::comphelper;
++typedef ::cppu::WeakImplHelper1< graphic::XGraphicLinkProvider > GRAPHIC_LINKPROVIDER_BASE;
++
++class GraphLinkProviderImpl : public GRAPHIC_LINKPROVIDER_BASE
++{
++ Reference< embed::XStorage > mxStorage;
++ rtl::OUString msURL;
++public:
++ GraphLinkProviderImpl( const Reference< frame::XModel >& rxModel, const rtl::OUString& sURL ) : msURL( sURL )
++ {
++ Reference< document::XStorageBasedDocument > xDocStorage( rxModel, UNO_QUERY );
++ if ( xDocStorage.is() )
++ {
++ mxStorage = xDocStorage->getDocumentStorage();
++ }
++ }
++
++ virtual Reference< embed::XStorage > SAL_CALL getStorage() throw (RuntimeException)
++ {
++ return mxStorage;
++ }
++
++ virtual void SAL_CALL setStorage( const Reference< embed::XStorage >& _storage ) throw (RuntimeException)
++ {
++ }
++
++ virtual ::rtl::OUString SAL_CALL getSourceURL() throw (RuntimeException)
++ {
++ return msURL;
++ }
++
++};
++
+
+ #define PROPID_VALUE 1
+ #define PROPID_CURRENT_VALUE 2
+@@ -979,10 +1012,39 @@ namespace xmloff
+ _rValue, OEnumMapper::getEnumMap( OEnumMapper::epImageAlign )
+ ) >>= m_nImageAlign );
+ }
++ else if ( _rLocalName == GetXMLToken( XML_IMAGE_DATA ) )//&& ( _rValue.indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.Package:") ) ) == 0 ) )
++ {
++ // strange, it seems the .GetAbsoluteReference call changes
++ // vnd.sun.star.Package to vnd.sun.star.package
++ sal_Int32 index = _rValue.toAsciiLowerCase().indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.package:") ) );
++ OSL_TRACE("*** Setting Packeurl link provider thing _rValue is %s index of = %d", rtl::OUStringToOString( _rValue, RTL_TEXTENCODING_UTF8 ).getStr(), index );
++ if ( index == 0 )
++ m_xProv = new GraphLinkProviderImpl( m_rContext.getGlobalContext().GetModel(), _rValue );
++ else
++ OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue );
++ }
+ else
+ OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue );
+ }
+-
++ void OImagePositionImport::EndElement()
++ {
++ OSL_TRACE("** Image::EndElement");
++ if ( m_xElement.is () )
++ {
++ OSL_TRACE("**** About to set the attribute xProv is %d", m_xProv.is() );
++ try
++ {
++ m_xElement->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("GraphicLinkProvider" ) ), uno::makeAny( m_xProv ) );
++ }
++ catch(uno::Exception& e)
++ {
++ OSL_TRACE("Caught exception %s", rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
++ }
++ }
++ else
++ OSL_TRACE("Phreaking null");
++ OControlImport::EndElement();
++ }
+ //---------------------------------------------------------------------
+ void OImagePositionImport::StartElement(const Reference< sax::XAttributeList >& _rxAttrList)
+ {
+@@ -1136,7 +1198,9 @@ namespace xmloff
+ if ( bMakeAbsolute )
+ {
+ // make a global URL out of the local one
++ OSL_TRACE("Incomming URL = %s", rtl::OUStringToOString( _rValue, RTL_TEXTENCODING_UTF8 ).getStr() );
+ ::rtl::OUString sAdjustedValue = m_rContext.getGlobalContext().GetAbsoluteReference( _rValue );
++ OSL_TRACE("OutGoing URL = %s", rtl::OUStringToOString( sAdjustedValue, RTL_TEXTENCODING_UTF8 ).getStr() );
+ OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, sAdjustedValue );
+ }
+ else
+diff --git xmloff/source/forms/elementimport.hxx xmloff/source/forms/elementimport.hxx
+index 58d279a..a41d341 100644
+--- xmloff/source/forms/elementimport.hxx
++++ xmloff/source/forms/elementimport.hxx
+@@ -41,6 +41,7 @@
+ #include <com/sun/star/lang/XMultiServiceFactory.hpp>
+ #include <com/sun/star/form/XGridColumnFactory.hpp>
+ #include <com/sun/star/script/XEventAttacherManager.hpp>
++#include <com/sun/star/graphic/XGraphicLinkProvider.hpp>
+ /** === end UNO includes === **/
+ #include <comphelper/stl_types.hxx>
+ #include "eventimport.hxx"
+@@ -282,6 +283,7 @@ namespace xmloff
+ sal_Int16 m_nImagePosition;
+ sal_Int16 m_nImageAlign;
+ sal_Bool m_bHaveImagePosition;
++ ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphicLinkProvider > m_xProv;
+
+ public:
+ OImagePositionImport(
+@@ -294,7 +296,7 @@ namespace xmloff
+ // SvXMLImportContext overridables
+ virtual void StartElement(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList);
+-
++ virtual void EndElement();
+ // OPropertyImport overridables
+ virtual void handleAttribute( sal_uInt16 _nNamespaceKey,
+ const ::rtl::OUString& _rLocalName,
diff --git xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
-index d57bb95..8be9235 100644
+index d57bb95..f495e5f 100644
--- xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
+++ xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
@@ -40,6 +40,8 @@
@@ -603,6 +843,7 @@
ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleImage") ),
OUString( RTL_CONSTASCII_USTRINGPARAM("scale-image") ),
_xAttributes );
+- ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
+
+ rtl::OUString sURL = _xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, OUSTR( "src" ) );
+ // hard code-test
@@ -619,8 +860,8 @@
+ }
+
+ }
-+
- ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
++ else
++ ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
OUString( RTL_CONSTASCII_USTRINGPARAM("src") ),
_xAttributes );
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]