diff options
Diffstat (limited to 'scratch/sc-vba/dead-source/vbashape.cxx')
-rw-r--r-- | scratch/sc-vba/dead-source/vbashape.cxx | 486 |
1 files changed, 0 insertions, 486 deletions
diff --git a/scratch/sc-vba/dead-source/vbashape.cxx b/scratch/sc-vba/dead-source/vbashape.cxx deleted file mode 100644 index d9a36fff5..000000000 --- a/scratch/sc-vba/dead-source/vbashape.cxx +++ /dev/null @@ -1,486 +0,0 @@ -/************************************************************************* - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: vbashape.cxx,v $ - * - * $Revision: 1.1.2.4 $ - * - * last change: $Author: npower $ $Date: 2007/07/23 11:47:24 $ - * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 2.1. - * - * - * GNU Lesser General Public License Version 2.1 - * ============================================= - * Copyright 2005 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 - * - ************************************************************************/ -#include<org/openoffice/office/MsoZOrderCmd.hpp> -#include<org/openoffice/office/MsoScaleFrom.hpp> -#include<com/sun/star/container/XNamed.hpp> -#include<com/sun/star/drawing/ConnectorType.hpp> -#include <com/sun/star/lang/XEventListener.hpp> -#include<com/sun/star/drawing/XDrawPagesSupplier.hpp> -#include<com/sun/star/drawing/XDrawPages.hpp> - -#include <vos/mutex.hxx> -#include <vcl/svapp.hxx> -#include <svx/unopage.hxx> -#include <svx/unoshape.hxx> - -#include "vbashape.hxx" -#include "vbatextframe.hxx" -#include "vbalineformat.hxx" -#include "vbafillformat.hxx" -#include "vbapictureformat.hxx" - -using namespace ::org::openoffice; -using namespace ::com::sun::star; -using namespace ::vos; - -ScVbaShape::ScVbaShape( const uno::Reference< vba::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape > xShape, const uno::Reference< drawing::XShapes > xShapes, sal_Int32 nType ) throw( lang::IllegalArgumentException ) : ScVbaShape_BASE( xParent, xContext ), m_xShape( xShape ), m_xShapes( xShapes ), m_nType( nType ) -{ - m_xPropertySet.set( m_xShape, uno::UNO_QUERY_THROW ); - addListeners(); -} - -ScVbaShape::ScVbaShape( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape > xShape ) throw( lang::IllegalArgumentException ) : ScVbaShape_BASE( uno::Reference< vba::XHelperInterface >(), xContext ), m_xShape( xShape ) -{ - // add listener - addListeners(); -} - -ScVbaShape::~ScVbaShape() -{ - // dtor must never ever throw - try - { - removeShapeListener(); - removeShapesListener(); - } - catch( uno::Exception& ) - { - } -} - -void SAL_CALL -ScVbaShape::disposing( const lang::EventObject& rEventObject ) throw( uno::RuntimeException ) -{ - uno::Reference< drawing::XShapes > xShapes( rEventObject.Source, uno::UNO_QUERY ); - uno::Reference< drawing::XShape > xShape( rEventObject.Source, uno::UNO_QUERY ); - if ( xShapes.is() ) - removeShapesListener(); - if ( xShape.is() ) - removeShapeListener(); -} - - -void ScVbaShape::addListeners() -{ - uno::Reference< lang::XComponent > xComponent( m_xShape, uno::UNO_QUERY ); - if ( xComponent.is() ) - xComponent->addEventListener( this ); - - xComponent.set( m_xShapes, uno::UNO_QUERY ); - if ( xComponent.is() ) - xComponent->addEventListener( this ); -} - -void -ScVbaShape::removeShapeListener() throw( uno::RuntimeException ) -{ - if( m_xShape.is() ) - { - uno::Reference< lang::XComponent > xComponent( m_xShape, uno::UNO_QUERY_THROW ); - xComponent->removeEventListener( this ); - } - m_xShape = NULL; - m_xPropertySet = NULL; -} - -void -ScVbaShape::removeShapesListener() throw( uno::RuntimeException ) -{ - if( m_xShapes.is() ) - { - uno::Reference< lang::XComponent > xComponent( m_xShapes, uno::UNO_QUERY_THROW ); - xComponent->removeEventListener( this ); - } - m_xShapes = NULL; -} - -sal_Int32 -ScVbaShape::getType( const css::uno::Reference< drawing::XShape > xShape ) throw (uno::RuntimeException) -{ - rtl::OUString sShapeType; - uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor( xShape, uno::UNO_QUERY_THROW ); - sShapeType = xShapeDescriptor->getShapeType(); - // office::MsoShapeType::msoDiagram to "com.sun.star.drawing.GroupShape" - if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.GroupShape" ) ) ) - return office::MsoShapeType::msoGroup; - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.GraphicObjectShape" ) ) ) - return office::MsoShapeType::msoPicture; - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.ControlShape" ) ) ) - return office::MsoShapeType::msoOLEControlObject; - // OOo don't support office::MsoShapeType::msoComment as a Shape. - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.OLE2Shape" ) ) ) - return office::MsoShapeType::msoChart; - // Art characters office::MsoShapeType::msoTextEffect, in OOo corresponding to "com.sun.star.drawing.CustomShape" - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.ConnectorShape" ) ) ) - { - enum drawing::ConnectorType connectorType; - uno::Reference< beans::XPropertySet > xPropertySet( xShape, uno::UNO_QUERY_THROW ); - xPropertySet->getPropertyValue( rtl::OUString::createFromAscii("EdgeKind")) >>= connectorType; - if( connectorType == drawing::ConnectorType_CURVE ) - return office::MsoShapeType::msoFreeform; - else if( connectorType == drawing::ConnectorType_LINE ) - return office::MsoShapeType::msoLine; - else - return office::MsoShapeType::msoAutoShape; - } - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.LineShape" ) ) ) - return office::MsoShapeType::msoLine; - else if( sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.CustomShape" ) ) || - sShapeType.equals( rtl::OUString::createFromAscii( "com.sun.star.drawing.RectangleShape") ) ) - return office::MsoShapeType::msoAutoShape; - else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "the shape type do not be surppored: " ) + sShapeType, uno::Reference< uno::XInterface >() ); -} - -// Attributes -rtl::OUString SAL_CALL -ScVbaShape::getName() throw (uno::RuntimeException) -{ - rtl::OUString sName; - uno::Reference< container::XNamed > xNamed( m_xShape, uno::UNO_QUERY_THROW ); - sName = xNamed->getName(); - return sName; -} - -void SAL_CALL -ScVbaShape::setName( const rtl::OUString& _name ) throw (uno::RuntimeException) -{ - uno::Reference< container::XNamed > xNamed( m_xShape, uno::UNO_QUERY_THROW ); - xNamed->setName( _name ); -} - -double SAL_CALL -ScVbaShape::getHeight() throw (uno::RuntimeException) -{ - return Millimeter::getInPoints( m_xShape->getSize().Height ); -} - -void SAL_CALL -ScVbaShape::setHeight( double _height ) throw (uno::RuntimeException) -{ - awt::Size aSize( m_xShape->getSize() ); - aSize.Height = Millimeter::getInHundredthsOfOneMillimeter( _height ); - m_xShape->setSize( aSize ); -} - -double SAL_CALL -ScVbaShape::getWidth() throw (uno::RuntimeException) -{ - return Millimeter::getInPoints( m_xShape->getSize().Width ); -} - -void SAL_CALL -ScVbaShape::setWidth( double _width ) throw (uno::RuntimeException) -{ - awt::Size aSize( m_xShape->getSize() ); - aSize.Width = Millimeter::getInHundredthsOfOneMillimeter( _width ); - m_xShape->setSize( aSize ); -} - -double SAL_CALL -ScVbaShape::getLeft() throw (uno::RuntimeException) -{ - return Millimeter::getInPoints( m_xShape->getPosition().X ); -} - -void SAL_CALL -ScVbaShape::setLeft( double _left ) throw (uno::RuntimeException) -{ - awt::Point oldPosition; - oldPosition = m_xShape->getPosition(); - oldPosition.X = Millimeter::getInHundredthsOfOneMillimeter( _left ); - m_xShape->setPosition( oldPosition ); -} - -double SAL_CALL -ScVbaShape::getTop() throw (uno::RuntimeException) -{ - return Millimeter::getInPoints( m_xShape->getPosition().Y ); -} - -void SAL_CALL -ScVbaShape::setTop( double _top ) throw (uno::RuntimeException) -{ - awt::Point oldPosition; - oldPosition = m_xShape->getPosition(); - oldPosition.Y = Millimeter::getInHundredthsOfOneMillimeter( _top ); - m_xShape->setPosition( oldPosition ); -} - -sal_Bool SAL_CALL -ScVbaShape::getVisible() throw (uno::RuntimeException) -{ - //UNO Shapes are always visible - return sal_True; -} - -void SAL_CALL -ScVbaShape::setVisible( sal_Bool /*_visible*/ ) throw (uno::RuntimeException) -{ - //UNO Shapes are always visible -} - -sal_Int32 SAL_CALL -ScVbaShape::getZOrderPosition() throw (uno::RuntimeException) -{ - sal_Int32 nZOrderPosition = 0; - uno::Any aZOrderPosition = m_xPropertySet->getPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ) ); - aZOrderPosition >>= nZOrderPosition; - return nZOrderPosition + 1; -} - -sal_Int32 SAL_CALL -ScVbaShape::getType() throw (uno::RuntimeException) -{ - return m_nType; -} - -double SAL_CALL -ScVbaShape::getRotation() throw (uno::RuntimeException) -{ - double dRotation = 0; - sal_Int32 nRotation = 0; - m_xPropertySet->getPropertyValue( rtl::OUString::createFromAscii( "RotateAngle" ) ) >>= nRotation; - dRotation = static_cast< double >( nRotation /100 ); - return dRotation; -} - -void SAL_CALL -ScVbaShape::setRotation( double _rotation ) throw (uno::RuntimeException) -{ - sal_Int32 nRotation = static_cast < sal_Int32 > ( _rotation * 100 ); - m_xPropertySet->setPropertyValue( rtl::OUString::createFromAscii( "RotateAngle" ), uno::makeAny( nRotation ) ); -} - -uno::Reference< msforms::XLineFormat > SAL_CALL -ScVbaShape::getLine() throw (uno::RuntimeException) -{ - // TODO should ongly return line - return uno::Reference< msforms::XLineFormat >( new ScVbaLineFormat( this, mxContext, m_xShape ) ); -} - -uno::Reference< msforms::XFillFormat > SAL_CALL -ScVbaShape::getFill() throw (uno::RuntimeException) -{ - return uno::Reference< msforms::XFillFormat >( new ScVbaFillFormat( this, mxContext, m_xShape ) ); -} - -uno::Reference< msforms::XPictureFormat > SAL_CALL -ScVbaShape::getPictureFormat() throw (uno::RuntimeException) -{ - return uno::Reference< msforms::XPictureFormat >( new ScVbaPictureFormat( this, mxContext, m_xShape ) ); -} - -// Methods -uno::Reference< excel::XTextFrame > SAL_CALL -ScVbaShape::TextFrame() throw (uno::RuntimeException) -{ - return uno::Reference< excel::XTextFrame >(new ScVbaTextFrame( getParent(), mxContext, m_xShape ) ); -} - -void SAL_CALL -ScVbaShape::Delete() throw (uno::RuntimeException) -{ - OGuard aGuard( Application::GetSolarMutex() ); - m_xShapes->remove( m_xShape ); -} - -void SAL_CALL -ScVbaShape::ZOrder( sal_Int32 ZOrderCmd ) throw (uno::RuntimeException) -{ - sal_Int32 nOrderPositon; - uno::Any aOrderPostion = m_xPropertySet->getPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ) ); - aOrderPostion >>= nOrderPositon; - switch( ZOrderCmd ) - { - case office::MsoZOrderCmd::msoBringToFront: - m_xPropertySet->setPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ), uno::makeAny( SAL_MAX_INT32 ) ); - break; - case office::MsoZOrderCmd::msoSendToBack: - m_xPropertySet->setPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ), uno::makeAny( (sal_Int32)0 ) ); - break; - case office::MsoZOrderCmd::msoBringForward: - nOrderPositon += 1; - m_xPropertySet->setPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ), uno::makeAny( nOrderPositon ) ); - break; - case office::MsoZOrderCmd::msoSendBackward: - if( nOrderPositon > 0 ) - { - nOrderPositon -= 1; - m_xPropertySet->setPropertyValue( rtl::OUString::createFromAscii( "ZOrder" ), uno::makeAny( nOrderPositon ) ); - } - break; - // below two commands use with Writer for text and image object. - case office::MsoZOrderCmd::msoBringInFrontOfText: - case office::MsoZOrderCmd::msoSendBehindText: - throw uno::RuntimeException( rtl::OUString::createFromAscii( "This ZOrderCmd is not implemented, it is use with writer." ), uno::Reference< uno::XInterface >() ); - break; - default: - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid Parameter." ), uno::Reference< uno::XInterface >() ); - } -} - -void SAL_CALL -ScVbaShape::IncrementRotation( double Increment ) throw (uno::RuntimeException) -{ - double nCurrentRotation = getRotation(); - nCurrentRotation += Increment; - setRotation(nCurrentRotation); -} - -void SAL_CALL -ScVbaShape::IncrementLeft( double Increment ) throw (uno::RuntimeException) -{ - double nCurrentLeft = getLeft(); - nCurrentLeft += Increment; - setLeft(nCurrentLeft); -} - -void SAL_CALL -ScVbaShape::IncrementTop( double Increment ) throw (uno::RuntimeException) -{ - double nCurrentTop = getTop(); - nCurrentTop += Increment; - setTop(nCurrentTop); -} - -void SAL_CALL -ScVbaShape::ScaleHeight( double Factor, sal_Bool /*RelativeToOriginalSize*/, sal_Int32 Scale ) throw (uno::RuntimeException) -{ - double nHeight = getHeight(); - double nNewHeight = nHeight * Factor; - if( Scale == office::MsoScaleFrom::msoScaleFromTopLeft ) - { - setHeight(nNewHeight); - } - else if( Scale == office::MsoScaleFrom::msoScaleFromBottomRight ) - { - double nDeltaHeight = nNewHeight - nHeight; - double nNewTop = getTop() - nDeltaHeight; - setTop(nNewTop); - setHeight(nNewHeight); - } - else if( Scale == office::MsoScaleFrom::msoScaleFromMiddle ) - { - double nDeltaHeight = (nNewHeight - nHeight) / 2; - double nNewTop = getTop() - nDeltaHeight; - setTop(nNewTop); - setHeight(nNewHeight); - } - else - { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "ScaleHeight.Scale wrong value is given." ) , uno::Reference< uno::XInterface >() ); - } -} - -void SAL_CALL -ScVbaShape::ScaleWidth( double Factor, sal_Bool /*RelativeToOriginalSize*/, sal_Int32 Scale ) throw (uno::RuntimeException) -{ - double nWidth = getWidth(); - double nNewWidth = nWidth * Factor; - if( Scale == office::MsoScaleFrom::msoScaleFromTopLeft ) - { - setWidth(nNewWidth); - } - else if( Scale == office::MsoScaleFrom::msoScaleFromBottomRight ) - { - double nDeltaWidth = nNewWidth - nWidth; - double nNewLeft = getLeft() - nDeltaWidth; - setLeft(nNewLeft); - setWidth(nNewWidth); - } - else if( Scale == office::MsoScaleFrom::msoScaleFromMiddle ) - { - double nDeltaWidth = (nNewWidth - nWidth) / 2; - double nNewLeft = getLeft() - nDeltaWidth; - setLeft(nNewLeft); - setWidth(nNewWidth); - } - else - { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "ScaleHeight.Scale wrong value is given." ) , uno::Reference< uno::XInterface >() ); - } -} - -void SAL_CALL -ScVbaShape::Select( const uno::Any& /*Replace*/ ) throw ( uno::RuntimeException ) -{ - uno::Reference< frame::XModel > xModel( getCurrentDocument(), uno::UNO_QUERY_THROW ); - uno::Reference< view::XSelectionSupplier > xSelectSupp( xModel->getCurrentController(), uno::UNO_QUERY_THROW ); - xSelectSupp->select( uno::makeAny( m_xShape ) ); -} - -// This method should not be part of Shape, what we reall need to do is... -// dynamically create the appropriate objects e.g. TextBox, Oval, Picture etc. -// ( e.g. the ones that really do have ShapeRange as an attribute ) -#include "vbashaperange.hxx" - -uno::Any SAL_CALL -ScVbaShape::ShapeRange( const uno::Any& index ) throw ( uno::RuntimeException ) -{ - // perhaps we should store a reference to the Shapes Collection - // in this class - // but anyway this method should not even be in this class - // #TODO not sure what the parent of the Shapes collection should be - - XNamedObjectCollectionHelper< drawing::XShape >::XNamedVec aVec; - aVec.push_back( m_xShape ); - uno::Reference< container::XIndexAccess > xIndexAccess( new XNamedObjectCollectionHelper< drawing::XShape >( aVec ) ); - uno::Reference< container::XChild > xChild( m_xShape, uno::UNO_QUERY_THROW ); - // #FIXME for want of a better parent, setting this - uno::Reference< msforms::XShapeRange > xShapeRange( new ScVbaShapeRange( mxParent, mxContext, xIndexAccess, uno::Reference< drawing::XDrawPage >( xChild->getParent(), uno::UNO_QUERY_THROW ) ) ); - if ( index.hasValue() ) - return xShapeRange->Item( index, uno::Any() ); - return uno::makeAny( xShapeRange ); -} - -rtl::OUString& -ScVbaShape::getServiceImplName() -{ - static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaShape") ); - return sImplName; -} - -uno::Sequence< rtl::OUString > -ScVbaShape::getServiceNames() -{ - static uno::Sequence< rtl::OUString > aServiceNames; - if ( aServiceNames.getLength() == 0 ) - { - aServiceNames.realloc( 1 ); - aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("org.openoffice.msform.Shape" ) ); - } - return aServiceNames; -} |