diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/Library_vbaobj.mk | 2 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaapplication.cxx | 21 | ||||
-rw-r--r-- | sc/source/ui/vba/vbalineshape.cxx | 34 | ||||
-rw-r--r-- | sc/source/ui/vba/vbalineshape.hxx | 37 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaovalshape.cxx | 34 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaovalshape.hxx | 37 |
6 files changed, 163 insertions, 2 deletions
diff --git a/sc/Library_vbaobj.mk b/sc/Library_vbaobj.mk index 2d04d28d5bb5..082b254c88df 100644 --- a/sc/Library_vbaobj.mk +++ b/sc/Library_vbaobj.mk @@ -84,6 +84,7 @@ $(eval $(call gb_Library_add_exception_objects,vbaobj,\ sc/source/ui/vba/vbahyperlink \ sc/source/ui/vba/vbahyperlinks \ sc/source/ui/vba/vbainterior \ + sc/source/ui/vba/vbalineshape \ sc/source/ui/vba/vbamenubar \ sc/source/ui/vba/vbamenubars \ sc/source/ui/vba/vbamenu \ @@ -95,6 +96,7 @@ $(eval $(call gb_Library_add_exception_objects,vbaobj,\ sc/source/ui/vba/vbaoleobject \ sc/source/ui/vba/vbaoleobjects \ sc/source/ui/vba/vbaoutline \ + sc/source/ui/vba/vbaovalshape \ sc/source/ui/vba/vbapagebreak \ sc/source/ui/vba/vbapagebreaks \ sc/source/ui/vba/vbapagesetup \ diff --git a/sc/source/ui/vba/vbaapplication.cxx b/sc/source/ui/vba/vbaapplication.cxx index bab488c48b5d..1c915d15ae3b 100644 --- a/sc/source/ui/vba/vbaapplication.cxx +++ b/sc/source/ui/vba/vbaapplication.cxx @@ -33,6 +33,7 @@ #include <ooo/vba/excel/XlCalculation.hpp> #include <ooo/vba/excel/XlMousePointer.hpp> #include <ooo/vba/office/MsoShapeType.hpp> +#include <ooo/vba/office/MsoAutoShapeType.hpp> #include "service.hxx" #include "vbaapplication.hxx" @@ -51,6 +52,8 @@ #include "vbanames.hxx" #include <vbahelper/vbashape.hxx> #include "vbatextboxshape.hxx" +#include "vbaovalshape.hxx" +#include "vbalineshape.hxx" #include "vbaassistant.hxx" #include "sc.hrc" #include "macromgr.hxx" @@ -259,14 +262,28 @@ ScVbaApplication::getSelection() // if ScVbaShape::getType( xShape ) == office::MsoShapeType::msoAutoShape // and the uno object implements the com.sun.star.drawing.Text service // return a textboxshape object - if ( ScVbaShape::getType( xShape ) == office::MsoShapeType::msoAutoShape ) + sal_Int32 nType = ScVbaShape::getType( xShape ); + if ( nType == office::MsoShapeType::msoAutoShape ) { + // TODO Oval with text box + if( ScVbaShape::getAutoShapeType( xShape ) == office::MsoAutoShapeType::msoShapeOval ) + { + return uno::makeAny( uno::Reference< msforms::XOval >(new ScVbaOvalShape( mxContext, xShape, xShapes, xModel ) ) ); + } + + uno::Reference< lang::XServiceInfo > xShapeServiceInfo( xShape, uno::UNO_QUERY_THROW ); if ( xShapeServiceInfo->supportsService("com.sun.star.drawing.Text") ) { - return uno::makeAny( uno::Reference< msforms::XTextBoxShape >(new ScVbaTextBoxShape( mxContext, xShape, xShapes, xModel ) ) ); + return uno::makeAny( uno::Reference< msforms::XTextBoxShape >( + new ScVbaTextBoxShape( mxContext, xShape, xShapes, xModel ) ) ); } } + else if ( nType == office::MsoShapeType::msoLine ) + { + return uno::makeAny( uno::Reference< msforms::XLine >( new ScVbaLineShape( + mxContext, xShape, xShapes, xModel ) ) ); + } return uno::makeAny( uno::Reference< msforms::XShape >(new ScVbaShape( this, mxContext, xShape, xShapes, xModel, ScVbaShape::getType( xShape ) ) ) ); } else if( xServiceInfo->supportsService("com.sun.star.sheet.SheetCellRange") || diff --git a/sc/source/ui/vba/vbalineshape.cxx b/sc/source/ui/vba/vbalineshape.cxx new file mode 100644 index 000000000000..fac0f17155c9 --- /dev/null +++ b/sc/source/ui/vba/vbalineshape.cxx @@ -0,0 +1,34 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include "vbalineshape.hxx" + +using namespace com::sun::star; +using namespace ooo::vba; + +/* + * This is implemented as a new class in order to provide XTypeProvider + * interface. This is needed by TypeOf ... Is ... basic operator. + */ + +ScVbaLineShape::ScVbaLineShape( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape >& xShape, const uno::Reference< drawing::XShapes >& xShapes, const uno::Reference< frame::XModel >& xModel ) : LineShapeImpl_BASE( uno::Reference< XHelperInterface >(), xContext, xShape, xShapes, xModel, ScVbaShape::getType( xShape ) ) +{} + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/vba/vbalineshape.hxx b/sc/source/ui/vba/vbalineshape.hxx new file mode 100644 index 000000000000..08ce5f17b841 --- /dev/null +++ b/sc/source/ui/vba/vbalineshape.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_SC_SOURCE_UI_VBA_VBALINESHAPE_HXX +#define INCLUDED_SC_SOURCE_UI_VBA_VBALINESHAPE_HXX + +#include <ooo/vba/msforms/XLine.hpp> +#include <cppuhelper/implbase.hxx> +#include <vbahelper/vbashape.hxx> + +typedef cppu::ImplInheritanceHelper< ScVbaShape, ov::msforms::XLine > LineShapeImpl_BASE; + +class ScVbaLineShape : public LineShapeImpl_BASE +{ +public: + ScVbaLineShape( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::drawing::XShape >& xShape, const css::uno::Reference< css::drawing::XShapes >& xShapes, const css::uno::Reference< css::frame::XModel >& xModel ); + +}; + +#endif // INCLUDED_SC_SOURCE_UI_VBA_VBALINESHAPE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/vba/vbaovalshape.cxx b/sc/source/ui/vba/vbaovalshape.cxx new file mode 100644 index 000000000000..8efc877ee104 --- /dev/null +++ b/sc/source/ui/vba/vbaovalshape.cxx @@ -0,0 +1,34 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include "vbaovalshape.hxx" + +using namespace com::sun::star; +using namespace ooo::vba; + +/* + * This is implemented as a new class in order to provide XTypeProvider + * interface. This is needed by TypeOf ... Is ... basic operator. + */ + +ScVbaOvalShape::ScVbaOvalShape( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape >& xShape, const uno::Reference< drawing::XShapes >& xShapes, const uno::Reference< frame::XModel >& xModel ) : OvalShapeImpl_BASE( uno::Reference< XHelperInterface >(), xContext, xShape, xShapes, xModel, ScVbaShape::getType( xShape ) ) +{} + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/vba/vbaovalshape.hxx b/sc/source/ui/vba/vbaovalshape.hxx new file mode 100644 index 000000000000..72ec0996af38 --- /dev/null +++ b/sc/source/ui/vba/vbaovalshape.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_SC_SOURCE_UI_VBA_VBAOVALSHAPE_HXX +#define INCLUDED_SC_SOURCE_UI_VBA_VBAOVALSHAPE_HXX + +#include <ooo/vba/msforms/XOval.hpp> +#include <cppuhelper/implbase.hxx> +#include <vbahelper/vbashape.hxx> + +typedef cppu::ImplInheritanceHelper< ScVbaShape, ov::msforms::XOval > OvalShapeImpl_BASE; + +class ScVbaOvalShape : public OvalShapeImpl_BASE +{ +public: + ScVbaOvalShape( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::drawing::XShape >& xShape, const css::uno::Reference< css::drawing::XShapes >& xShapes, const css::uno::Reference< css::frame::XModel >& xModel ); + +}; + +#endif // INCLUDED_SC_SOURCE_UI_VBA_VBAOVALSHAPE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |