1*e3508121SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*e3508121SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*e3508121SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*e3508121SAndrew Rist * distributed with this work for additional information 6*e3508121SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*e3508121SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*e3508121SAndrew Rist * "License"); you may not use this file except in compliance 9*e3508121SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*e3508121SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*e3508121SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*e3508121SAndrew Rist * software distributed under the License is distributed on an 15*e3508121SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*e3508121SAndrew Rist * KIND, either express or implied. See the License for the 17*e3508121SAndrew Rist * specific language governing permissions and limitations 18*e3508121SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*e3508121SAndrew Rist *************************************************************/ 21*e3508121SAndrew Rist 22*e3508121SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef OOX_OLE_VBAMODULE_HXX 25cdf0e10cSrcweir #define OOX_OLE_VBAMODULE_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx> 28cdf0e10cSrcweir #include <rtl/ustring.hxx> 29cdf0e10cSrcweir 30cdf0e10cSrcweir namespace com { namespace sun { namespace star { 31cdf0e10cSrcweir namespace container { class XNameAccess; } 32cdf0e10cSrcweir namespace container { class XNameContainer; } 33cdf0e10cSrcweir namespace frame { class XModel; } 34cdf0e10cSrcweir namespace uno { class XComponentContext; } 35cdf0e10cSrcweir } } } 36cdf0e10cSrcweir 37cdf0e10cSrcweir namespace oox { 38cdf0e10cSrcweir class BinaryInputStream; 39cdf0e10cSrcweir class StorageBase; 40cdf0e10cSrcweir } 41cdf0e10cSrcweir 42cdf0e10cSrcweir namespace oox { 43cdf0e10cSrcweir namespace ole { 44cdf0e10cSrcweir 45cdf0e10cSrcweir // ============================================================================ 46cdf0e10cSrcweir 47cdf0e10cSrcweir class VbaModule 48cdf0e10cSrcweir { 49cdf0e10cSrcweir public: 50cdf0e10cSrcweir explicit VbaModule( 51cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, 52cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& rxDocModel, 53cdf0e10cSrcweir const ::rtl::OUString& rName, 54cdf0e10cSrcweir rtl_TextEncoding eTextEnc, 55cdf0e10cSrcweir bool bExecutable ); 56cdf0e10cSrcweir 57cdf0e10cSrcweir /** Returns the module type (com.sun.star.script.ModuleType constant). */ getType() const58cdf0e10cSrcweir inline sal_Int32 getType() const { return mnType; } 59cdf0e10cSrcweir /** Sets the passed module type. */ setType(sal_Int32 nType)60cdf0e10cSrcweir inline void setType( sal_Int32 nType ) { mnType = nType; } 61cdf0e10cSrcweir 62cdf0e10cSrcweir /** Returns the name of the module. */ getName() const63cdf0e10cSrcweir inline const ::rtl::OUString& getName() const { return maName; } 64cdf0e10cSrcweir /** Returns the stream name of the module. */ getStreamName() const65cdf0e10cSrcweir inline const ::rtl::OUString& getStreamName() const { return maStreamName; } 66cdf0e10cSrcweir 67cdf0e10cSrcweir /** Imports all records for this module until the MODULEEND record. */ 68cdf0e10cSrcweir void importDirRecords( BinaryInputStream& rDirStrm ); 69cdf0e10cSrcweir 70cdf0e10cSrcweir /** Imports the VBA source code into the passed Basic library. */ 71cdf0e10cSrcweir void createAndImportModule( 72cdf0e10cSrcweir StorageBase& rVbaStrg, 73cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rxBasicLib, 74cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& rxDocObjectNA ) const; 75cdf0e10cSrcweir /** Creates an empty Basic module in the passed Basic library. */ 76cdf0e10cSrcweir void createEmptyModule( 77cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rxBasicLib, 78cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& rxDocObjectNA ) const; 79cdf0e10cSrcweir 80cdf0e10cSrcweir private: 81cdf0e10cSrcweir /** Reads and returns the VBA source code from the passed storage. */ 82cdf0e10cSrcweir ::rtl::OUString readSourceCode( StorageBase& rVbaStrg ) const; 83cdf0e10cSrcweir 84cdf0e10cSrcweir /** Creates a new Basic module and inserts it into the passed Basic library. */ 85cdf0e10cSrcweir void createModule( 86cdf0e10cSrcweir const ::rtl::OUString& rVBASourceCode, 87cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rxBasicLib, 88cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& rxDocObjectNA ) const; 89cdf0e10cSrcweir 90cdf0e10cSrcweir private: 91cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > 92cdf0e10cSrcweir mxContext; /// Component context with service manager. 93cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > 94cdf0e10cSrcweir mxDocModel; /// Document model used to import/export the VBA project. 95cdf0e10cSrcweir ::rtl::OUString maName; 96cdf0e10cSrcweir ::rtl::OUString maStreamName; 97cdf0e10cSrcweir ::rtl::OUString maDocString; 98cdf0e10cSrcweir rtl_TextEncoding meTextEnc; 99cdf0e10cSrcweir sal_Int32 mnType; 100cdf0e10cSrcweir sal_uInt32 mnOffset; 101cdf0e10cSrcweir bool mbReadOnly; 102cdf0e10cSrcweir bool mbPrivate; 103cdf0e10cSrcweir bool mbExecutable; 104cdf0e10cSrcweir }; 105cdf0e10cSrcweir 106cdf0e10cSrcweir // ============================================================================ 107cdf0e10cSrcweir 108cdf0e10cSrcweir } // namespace ole 109cdf0e10cSrcweir } // namespace oox 110cdf0e10cSrcweir 111cdf0e10cSrcweir #endif 112