summaryrefslogtreecommitdiff
path: root/basctl/source/inc/scriptdocument.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'basctl/source/inc/scriptdocument.hxx')
-rw-r--r--basctl/source/inc/scriptdocument.hxx540
1 files changed, 0 insertions, 540 deletions
diff --git a/basctl/source/inc/scriptdocument.hxx b/basctl/source/inc/scriptdocument.hxx
deleted file mode 100644
index f5ea8a060..000000000
--- a/basctl/source/inc/scriptdocument.hxx
+++ /dev/null
@@ -1,540 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef SCRIPTDOCUMENT_HXX
-#define SCRIPTDOCUMENT_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/script/XLibraryContainer.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/task/XStatusIndicator.hpp>
-#include <com/sun/star/io/XInputStreamProvider.hpp>
-/** === end UNO includes === **/
-
-#include <boost/shared_ptr.hpp>
-#include <vector>
-
-class BasicManager;
-class SfxListener;
-
-//........................................................................
-namespace basctl
-{
-//........................................................................
-
- //====================================================================
- //= LibraryContainerType
- //====================================================================
- enum LibraryContainerType
- {
- E_SCRIPTS,
- E_DIALOGS
- };
-
- enum LibraryLocation
- {
- LIBRARY_LOCATION_UNKNOWN,
- LIBRARY_LOCATION_USER,
- LIBRARY_LOCATION_SHARE,
- LIBRARY_LOCATION_DOCUMENT
- };
-
- enum LibraryType
- {
- LIBRARY_TYPE_UNKNOWN,
- LIBRARY_TYPE_MODULE,
- LIBRARY_TYPE_DIALOG,
- LIBRARY_TYPE_ALL
- };
-
- //====================================================================
- //= ScriptDocument
- //====================================================================
- class ScriptDocument_Impl;
-
- class ScriptDocument;
- typedef ::std::vector< ScriptDocument > ScriptDocuments;
-
- /** encapsulates a document which contains Basic scripts and dialogs
- */
- class ScriptDocument
- {
- private:
- ::boost::shared_ptr< ScriptDocument_Impl > m_pImpl;
-
- private:
- /** creates a ScriptDocument instance which operates on the application-wide
- scripts and dialogs
- */
- ScriptDocument();
-
- public:
- enum SpecialDocument { NoDocument };
- /** creates a ScriptDocument instance which does refers to neither the application-wide,
- nor a specific real document's scripts.
-
- This constructor might come handy when you need some kind of uninitialized
- ScriptDocument, which you do not want to operate on (yet), but initialize later
- by assignment.
-
- <member>isValid</member> will return <FALSE/> for a ScriptDocument constructed
- this way.
- */
- explicit ScriptDocument( SpecialDocument _eType );
-
- /** creates a ScriptDocument instance which refers to a document given as
- XModel
-
- @param _rxDocument
- the document. Must not be <NULL/>.
- */
- explicit ScriptDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxDocument );
-
- /// copy constructor
- ScriptDocument( const ScriptDocument& _rSource );
-
- /// destructor
- ~ScriptDocument();
-
- /** returns a reference to a shared ScriptDocument instance which
- operates on the application-wide scripts and dialogs
- */
- static const ScriptDocument&
- getApplicationScriptDocument();
-
- /** returns a (newly created) ScriptDocument instance for the document to
- which a given BasicManager belongs
-
- If the basic manager is the application's basic manager, then the (shared)
- ScriptDocument instance which is responsible for the application is returned.
-
- @see getApplicationScriptDocument
- */
- static ScriptDocument
- getDocumentForBasicManager( const BasicManager* _pManager );
-
- /** returns a (newly created) ScriptDocument instance for the document
- with a given caption or URL
-
- If there is no document with the given caption, then the (shared)
- ScriptDocument instance which is responsible for the application is returned.
-
- @see getApplicationScriptDocument
- */
- static ScriptDocument
- getDocumentWithURLOrCaption( const ::rtl::OUString& _rUrlOrCaption );
-
- /** operation mode for getAllScriptDocuments
- */
- enum ScriptDocumentList
- {
- /** all ScriptDocuments, including the dedicated one which represents
- the application-wide scripts/dialogs.
- */
- AllWithApplication,
- /** real documents only
- */
- DocumentsOnly,
- /** real documents only, sorted lexicographically by their title (using the sys locale's default
- collator)
- */
- DocumentsSorted
- };
-
- /** returns the set of ScriptDocument instances, one for each open document which
- contains Basic/Dialog containers; plus an additional instance for
- the application, if desired
-
- Documents which are not visible - i.e. do not have a visible frame.
-
- @param _bIncludingApplication
- <TRUE/> if the application-wide scripts/dialogs should also be represented
- by a ScriptDocument
- */
- static ScriptDocuments
- getAllScriptDocuments( ScriptDocumentList _eListType );
-
- // comparison
- bool operator==( const ScriptDocument& _rhs ) const;
- inline bool operator!=( const ScriptDocument& _rhs ) const { return !( *this == _rhs ); }
-
- /// retrieves a (pretty simple) hash code for the document
- sal_Int32 hashCode() const;
-
- /** determines whether the document is actually able to contain Basic/Dialog libraries
-
- Note that validity does not automatically imply the document can be used for active
- work. Instead, it is possible the document is closed already (or being closed currently).
- In this case, isValid will return <TRUE/>, but isAlive will return <FALSE/>.
-
- @return
- <TRUE/> if the instance refers to a document which contains Basic/Dialog libraries,
- or the application as a whole, <FALSE/> otherwise.
-
- @see isAlive
- */
- bool isValid() const;
-
- /** determines whether the document instance is alive
-
- If the instance is not valid, <FALSE/> is returned.
-
- If the instance refers to a real document, which is already closed, or just being closed,
- the method returns <FALSE/>.
-
- If the instance refers to the application, <TRUE/> is returned.
-
- @see isValid
- */
- bool isAlive() const;
-
- bool isInVBAMode() const;
- /// returns the BasicManager associated with this instance
- BasicManager*
- getBasicManager() const;
-
- /** returns the UNO component representing the document which the instance operates on
-
- Must not be used when the instance operates on the application-wide
- Basic/Dialog libraries.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
- getDocument() const;
-
- /** returns the UNO component representing the document which the instance operates on
-
- May be used when the instance operates on the application-wide
- Basic/Dialog libraries, in this case it returns <NULL/>.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
- getDocumentOrNull() const;
-
- /** returns the Basic or Dialog library container of the document
-
- If the document is not valid, <NULL/> is returned.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >
- getLibraryContainer( LibraryContainerType _eType ) const;
-
- /** determines whether there exists a library of the given type, with the given name
- */
- bool hasLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
-
- /** returns a script or dialog library given by name
-
- @param _eType
- the type of library to load
- @param _rLibName
- the name of the script library
- @param _bLoadLibrary
- <TRUE/> if and only if the library should be loaded.
-
- @throws NoSuchElementException
- if there is no script library with the given name
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
- getLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName, bool _bLoadLibrary ) const
- SAL_THROW((::com::sun::star::container::NoSuchElementException));
-
- /** creates a script or dialog library in the document, or returns an existing one
-
- If <code>_rLibName</code> denotes an existing library which does not need to be created,
- then this library will automatically be loaded, and then returned.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
- getOrCreateLibrary( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
-
- /** returns the names of the modules in a given script or dialog library of the document
- */
- ::com::sun::star::uno::Sequence< ::rtl::OUString >
- getObjectNames( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
-
- /** retrieves a name for a newly to be created module or dialog
- */
- ::rtl::OUString
- createObjectName( LibraryContainerType _eType, const ::rtl::OUString& _rLibName ) const;
-
- /** loads a script or dialog library given by name, if there is such a library
- */
- void loadLibraryIfExists( LibraryContainerType _eType, const ::rtl::OUString& _rLibrary );
-
- /// retrieves the (combined) names of all script and dialog libraries
- ::com::sun::star::uno::Sequence< ::rtl::OUString >
- getLibraryNames() const;
-
- /** removes a given script module from the document
-
- @return
- <TRUE/> if and only if the removal was successful. When <FALSE/> is returned,
- this will reported as assertion in a non-product build.
- */
- bool removeModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModuleName ) const;
-
- /** creates a module with the given name in the given library
- @param _rLibName
- the library name
- @param _rModName
- the name of the to-be-created module
- @param _bCreateMain
- determines whether or not a function Main should be created
- @param _out_rNewModuleCode
- the source code of the newly created module
- @return
- <TRUE/> if and only if the creation was successful
- */
- bool createModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, bool _bCreateMain, ::rtl::OUString& _out_rNewModuleCode ) const;
-
- /** inserts a given piece as code as module
- @param _rLibName
- the name of the library to insert the module into. If a library with this name does
- not yet exist, it will be created.
- @param _rModName
- the name of the module to insert the code as. Must denote a name which is not yet
- used in the module library.
- @param _rModuleCode
- the code of the new module
- @return
- <TRUE/> if and only if the insertion was successful.
- */
- bool insertModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const;
-
- /** updates a given module with new code
- @param _rLibName
- the name of the library the modules lives in. Must denote an existing module library.
- @param _rModName
- the name of the module to update. Must denote an existing module in the given library.
- @param _rModuleCode
- the new module code.
- @return
- <TRUE/> if and only if the insertion was successful.
- */
- bool updateModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, const ::rtl::OUString& _rModuleCode ) const;
-
- /// determines whether a module with the given name exists in the given library
- bool hasModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName ) const;
-
- /** retrieves a module's source
- @param _rLibName
- the library name where the module is located
- @param _rModName
- the module name
- @param _out_rModuleSource
- takes the module's source upon successful return
- @return
- <TRUE/> if and only if the code could be successfully retrieved, <FALSE/> otherwise
- */
- bool getModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rModName, ::rtl::OUString& _rModuleSource ) const;
-
- /** renames a module
- @param _rLibName
- the library where the module lives in. Must denote an existing library.
- @param _rOldName
- the old module name. Must denote an existing module.
- @param _rNewName
- the new module name
- @return
- <TRUE/> if and only if renaming was successful.
- */
- bool renameModule( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rOldName, const ::rtl::OUString& _rNewName ) const;
-
- /** removes a given dialog from the document
-
- @return
- <TRUE/> if and only if the removal was successful. When <FALSE/> is returned,
- this will reported as assertion in a non-product build.
- */
- bool removeDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const;
-
- /// determines whether a dialog with the given name exists in the given library
- bool hasDialog( const ::rtl::OUString& _rLibName, const ::rtl::OUString& _rDialogName ) const;
-
- /** retrieves a dialog
- @param _rLibName
- the library name where the module is located
- @param _rDialogName
- the dialog's name
- @param _out_rDialogSource
- takes the provider for the dialog's desription, upon successful return
- @return
- <TRUE/> if and only if the dialog could be successfully retrieved, <FALSE/> otherwise
- */
- bool getDialog(
- const ::rtl::OUString& _rLibName,
- const ::rtl::OUString& _rDialogName,
- ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _out_rDialogProvider
- ) const;
-
- /** renames a dialog
- @param _rLibName
- the library where the dialog lives in. Must denote an existing library.
- @param _rOldName
- the old dialog name. Must denote an existing dialog.
- @param _rNewName
- the new dialog name
- @param _rxExistingDialogModel
- the existing model of the dialog, if already loaded in the IDE
- @return
- <TRUE/> if and only if renaming was successful.
- */
- bool renameDialog(
- const ::rtl::OUString& _rLibName,
- const ::rtl::OUString& _rOldName,
- const ::rtl::OUString& _rNewName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxExistingDialogModel
- ) const;
-
- /** create a dialog
- @param _rLibName
- the library name where the module is located
- @param _rDialogName
- the dialog's name
- @param _out_rDialogSource
- takes the provider for the dialog's desription, upon successful return
- @return
- <TRUE/> if and only if the dialog could be successfully retrieved, <FALSE/> otherwise
- */
- bool createDialog(
- const ::rtl::OUString& _rLibName,
- const ::rtl::OUString& _rDialogName,
- ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _out_rDialogProvider
- ) const;
-
- /** inserts a given dialog into a given library
-
- @param _rLibName
- the name of the library to insert the dialog into. If a library with this name does
- not yet exist, it will be created.
- @param _rModName
- the name of the dialog to insert. Must denote a name which is not yet
- used in the dialog library.
- @param _rDialogProvider
- the provider of the dialog's description
- @return
- <TRUE/> if and only if the insertion was successful.
- */
- bool insertDialog(
- const ::rtl::OUString& _rLibName,
- const ::rtl::OUString& _rDialogName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStreamProvider >& _rDialogProvider
- ) const;
-
- /** determines whether the document is read-only
-
- cannot be called if the document operates on the application-wide scripts
- */
- bool isReadOnly() const;
-
- /** determines whether the ScriptDocument instance operates on the whole application,
- as opposed to a real document
- */
- bool isApplication() const;
-
- /** determines whether the ScriptDocument instance operates on a real document,
- as opposed to the whole application
- */
- bool isDocument() const { return isValid() && !isApplication(); }
-
- /** marks the document as modified
- @precond
- the instance operates on a real document, not on the application
- @see isDocument
- */
- void setDocumentModified() const;
-
- /** determines whether the document is modified
- @precond
- the instance operates on a real document, not on the application
- @see isDocument
- */
- bool isDocumentModified() const;
-
- /** saves the document, if the instance refers to a real document
- @precond
- <code>isApplication</code> returns <FALSE/>
- */
- bool saveDocument(
- const ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator >& _rxStatusIndicator
- ) const;
-
- /// returns the location of a library given by name
- LibraryLocation
- getLibraryLocation( const ::rtl::OUString& _rLibName ) const;
-
- /// returns the title for the document
- ::rtl::OUString
- getTitle( LibraryLocation _eLocation, LibraryType _eType = LIBRARY_TYPE_ALL ) const;
-
- /** returns the title of the document
-
- to be used for valid documents only
- */
- ::rtl::OUString
- getTitle() const;
-
- /** returns the URL of the document
-
- to be used for valid documents only
- */
- ::rtl::OUString
- getURL() const;
-
- /** determines whether the document is currently the one-and-only application-wide active document
- */
- bool isActive() const;
-
- /** determines whether macro execution for this document is allowed
-
- only to be called for real documents (->isDocument)
- */
- bool allowMacros() const;
- };
-
-//........................................................................
-} // namespace basctl
-//........................................................................
-
-// convenience ... better would be all classes in the project are in
-// the same namespace ...
-using ::basctl::ScriptDocument;
-using ::basctl::ScriptDocuments;
-using ::basctl::E_SCRIPTS;
-using ::basctl::E_DIALOGS;
-using ::basctl::LibraryLocation;
-using ::basctl::LIBRARY_LOCATION_UNKNOWN;
-using ::basctl::LIBRARY_LOCATION_USER;
-using ::basctl::LIBRARY_LOCATION_SHARE;
-using ::basctl::LIBRARY_LOCATION_DOCUMENT;
-using ::basctl::LibraryType;
-using ::basctl::LIBRARY_TYPE_UNKNOWN;
-using ::basctl::LIBRARY_TYPE_MODULE;
-using ::basctl::LIBRARY_TYPE_DIALOG;
-using ::basctl::LIBRARY_TYPE_ALL;
-
-#endif // SCRIPTDOCUMENT_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */