diff options
author | Daniel Rentz <dr@openoffice.org> | 2010-07-06 19:34:53 +0200 |
---|---|---|
committer | Daniel Rentz <dr@openoffice.org> | 2010-07-06 19:34:53 +0200 |
commit | b103addffc04b4ac0072992f2ec077135150d3ba (patch) | |
tree | e49c1a68c16b75749c8492bcd5e8973791435f99 /offapi/com/sun | |
parent | ca97ac09b39baf9885a9be179e69997320fb0ba5 (diff) |
mib17: #i112634# add VBA sheet event handling, based on a patch from Noel Power
Diffstat (limited to 'offapi/com/sun')
-rwxr-xr-x | offapi/com/sun/star/script/vba/EventIdentifier.idl | 140 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/EventProcessor.idl | 51 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/SpreadsheetEventProcessor.idl | 50 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/TextEventProcessor.idl | 50 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/XCoreEventProcessor.idl | 79 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/XEventProcessor.idl | 114 | ||||
-rwxr-xr-x | offapi/com/sun/star/script/vba/makefile.mk | 51 |
7 files changed, 535 insertions, 0 deletions
diff --git a/offapi/com/sun/star/script/vba/EventIdentifier.idl b/offapi/com/sun/star/script/vba/EventIdentifier.idl new file mode 100755 index 000000000000..ea200c858c30 --- /dev/null +++ b/offapi/com/sun/star/script/vba/EventIdentifier.idl @@ -0,0 +1,140 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_EventIdentifier_idl__ +#define __com_sun_star_script_vba_EventIdentifier_idl__ + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +/** Constants used to identify VBA document events. + + <p>If one of these events is fired, a specific VBA macro in a specific + document code module will be executed.</p> + + <p>Each event expects some specific arguments to be passed to + <member>XEventProcessor::processVbaEvent</member>.</p> + + @see XEventProcessor + */ +constants EventIdentifier +{ + //========================================================================= + + /** An identifier not corresponding to any VBA document event. */ + const long NO_EVENT = -1; + + //========================================================================= + // Global events (identifiers from 1 to 999) + + /** New document opened from template. No arguments. */ + const long AUTO_NEW = 1; + /** Document opened (loaded). No arguments. */ + const long AUTO_OPEN = 2; + /** Document about to be closed. No arguments. */ + const long AUTO_CLOSE = 3; + /** Application start. No arguments. */ + const long AUTO_EXEC = 4; + /** Application exit. No arguments. */ + const long AUTO_EXIT = 5; + + //========================================================================= + // MS Word (identifiers from 1001 to 1999) + + /** New text document opened from template. No arguments. */ + const long DOCUMENT_NEW = 1001; + /** Text document opened (loaded). No arguments. */ + const long DOCUMENT_OPEN = 1002; + /** Document about to be closed. No arguments. */ + const long DOCUMENT_CLOSE = 1003; + + //========================================================================= + // MS Excel (identifiers from 2001 to 2999) + + //------------------------------------------------------------------------- + // document events (2001-2099) + + /** Document activated. No arguments. */ + const long WORKBOOK_ACTIVATE = 2001; + /** Document deactivated. No arguments. */ + const long WORKBOOK_DEACTIVATE = 2002; + /** Document opened (loaded). No arguments. */ + const long WORKBOOK_OPEN = 2003; + /** Document about to be closed. No arguments. Cancellable. */ + const long WORKBOOK_BEFORECLOSE = 2004; + /** Document about to be printed. No arguments. Cancellable. */ + const long WORKBOOK_BEFOREPRINT = 2005; + /** Document about to be saved. Arguments: boolean bSaveAs. Cancellable. */ + const long WORKBOOK_BEFORESAVE = 2006; + /** Document has been saved. Arguments: boolean bSuccess. */ + const long WORKBOOK_AFTERSAVE = 2007; + /** New sheet inserted. Arguments: short nSheet. */ + const long WORKBOOK_NEWSHEET = 2008; + /** Document window has been activated. No arguments. */ + const long WORKBOOK_WINDOWACTIVATE = 2009; + /** Document window has been deactivated. No arguments. */ + const long WORKBOOK_WINDOWDEACTIVATE = 2010; + /** Document window has been resized. No arguments. */ + const long WORKBOOK_WINDOWRESIZE = 2011; + + //------------------------------------------------------------------------- + // sheet events (2101-2199) + + /** Worksheet has been activated (made visible). Arguments: short nSheet. */ + const long WORKSHEET_ACTIVATE = 2101; + /** Worksheet has been activated (made visible). Arguments: short nSheet. */ + const long WORKSHEET_DEACTIVATE = 2102; + /** Double click in the sheet. Arguments: XRange/XSheetCellRangeContainer aRange. */ + const long WORKSHEET_BEFOREDOUBLECLICK = 2103; + /** Right click in the sheet. Arguments: XRange/XSheetCellRangeContainer aRange. */ + const long WORKSHEET_BEFORERIGHTCLICK = 2104; + /** Cells in sheet have been recalculated. Arguments: short nSheet. */ + const long WORKSHEET_CALCULATE = 2105; + /** Cells in sheet have been changed. Arguments: XRange/XSheetCellRangeContainer aRange. */ + const long WORKSHEET_CHANGE = 2106; + /** Selection in sheet has been changed. Arguments: XRange/XSheetCellRangeContainer aRange. */ + const long WORKSHEET_SELECTIONCHANGE = 2107; + /** Hyperlink has been clicked. Arguments: XCell aCell. */ + const long WORKSHEET_FOLLOWHYPERLINK = 2108; + + //========================================================================= + + /** Implementations are allowed to use identifiers above this value for any + internal purpose. */ + const long USERDEFINED_START = 1000000; +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/EventProcessor.idl b/offapi/com/sun/star/script/vba/EventProcessor.idl new file mode 100755 index 000000000000..78b2d9c23fdb --- /dev/null +++ b/offapi/com/sun/star/script/vba/EventProcessor.idl @@ -0,0 +1,51 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_EventProcessor_idl__ +#define __com_sun_star_script_vba_EventProcessor_idl__ + +#include <com/sun/star/script/vba/XEventProcessor.idl> + +module com { module sun { module star { module frame { interface XModel; }; }; }; }; + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +service EventProcessor : XEventProcessor +{ +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/SpreadsheetEventProcessor.idl b/offapi/com/sun/star/script/vba/SpreadsheetEventProcessor.idl new file mode 100755 index 000000000000..680a0e1069aa --- /dev/null +++ b/offapi/com/sun/star/script/vba/SpreadsheetEventProcessor.idl @@ -0,0 +1,50 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_SpreadsheetEventProcessor_idl__ +#define __com_sun_star_script_vba_SpreadsheetEventProcessor_idl__ + +#include <com/sun/star/script/vba/EventProcessor.idl> + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +service SpreadsheetEventProcessor +{ + service EventProcessor; +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/TextEventProcessor.idl b/offapi/com/sun/star/script/vba/TextEventProcessor.idl new file mode 100755 index 000000000000..ae2d36a223c6 --- /dev/null +++ b/offapi/com/sun/star/script/vba/TextEventProcessor.idl @@ -0,0 +1,50 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_TextEventProcessor_idl__ +#define __com_sun_star_script_vba_TextEventProcessor_idl__ + +#include <com/sun/star/script/vba/EventProcessor.idl> + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +service TextEventProcessor +{ + service EventProcessor; +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/XCoreEventProcessor.idl b/offapi/com/sun/star/script/vba/XCoreEventProcessor.idl new file mode 100755 index 000000000000..be152a8ba7fd --- /dev/null +++ b/offapi/com/sun/star/script/vba/XCoreEventProcessor.idl @@ -0,0 +1,79 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_XCoreEventProcessor_idl__ +#define __com_sun_star_script_vba_XCoreEventProcessor_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/script/provider/ScriptFrameworkErrorException.idl> +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/util/VetoException.idl> + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +/** Executes VBA event handlers based on a specific core model event. + */ +interface XCoreEventProcessor +{ + //------------------------------------------------------------------------- + + /** Executes a VBA compatible event handler for a core event. + + @param nSlotId + The implementation defined identifier of the core event. + + @throws <type scope="::com::sun::star::lang">IllegalArgumentException</type> + if the passed slot identifier is not supported. + + @throws <type scope="::com::sun::star::script::provider">ScriptFrameworkErrorException</type> + if the VBA event handler could not be invoked. Reasons may be, that + handling of VBA events is not enabled, that the VBA event handler + macro has not been found, or that the execution of the macro has + been aborted with an error. + + @throws <type scope="::com::sun::star::util">VetoException</type> + if the VBA event handler has indicated to veto the event. + **/ + void processCoreVbaEvent( [in] long nSlotId ) + raises (::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::script::provider::ScriptFrameworkErrorException, + ::com::sun::star::util::VetoException); + + //------------------------------------------------------------------------- +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/XEventProcessor.idl b/offapi/com/sun/star/script/vba/XEventProcessor.idl new file mode 100755 index 000000000000..579cdf881963 --- /dev/null +++ b/offapi/com/sun/star/script/vba/XEventProcessor.idl @@ -0,0 +1,114 @@ +/************************************************************************* + * + * 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 __com_sun_star_script_vba_XEventProcessor_idl__ +#define __com_sun_star_script_vba_XEventProcessor_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/script/provider/ScriptFrameworkErrorException.idl> +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/util/VetoException.idl> + +//============================================================================= + +module com { module sun { module star { module script { module vba { + +//============================================================================= + +/** Executes VBA event handlers. + */ +interface XEventProcessor +{ + //------------------------------------------------------------------------- + + /** Specifies whether VBA event handling is currently disabled. + */ + [attribute] boolean IgnoreEvents; + + //------------------------------------------------------------------------- + + /** Returns whether a VBA event handler exists. + + @param nEventId + The identifier of the event. Must be a constant from <type> + EventIdentifier</type>. + + @param aArgs + Additional arguments needed to identify some event handlers, e.g. a + sheet index for spreadsheet events. + + @return + <TRUE/>, if the VBA event handler exists. + + @throws <type scope="::com::sun::star::lang">IllegalArgumentException</type> + if the passed event identifier is not supported, or if the passed + specifier is required but invalid. + **/ + boolean hasVbaEventHandler( [in] long nEventId, [in] sequence< any > aArgs ) + raises (::com::sun::star::lang::IllegalArgumentException); + + //------------------------------------------------------------------------- + + /** Executes a VBA event handler. + + @param nEventId + The identifier of the event. Must be a constant from <type> + EventIdentifier</type>. + + @param aArgs + The input arguments needed to create the argument list of the VBA + event handler. + + @throws <type scope="::com::sun::star::lang">IllegalArgumentException</type> + if the passed event identifier is not supported, or if the passed + arguments do not conform to the arguments expected by the specified + event. + + @throws <type scope="::com::sun::star::script::provider">ScriptFrameworkErrorException</type> + if the VBA event handler could not be invoked. Reasons may be, that + handling of VBA events is not enabled, that the VBA event handler + macro has not been found, or that the execution of the macro has + been aborted with an error. + + @throws <type scope="::com::sun::star::util">VetoException</type> + if the VBA event handler has indicated to veto the event. + **/ + void processVbaEvent( [in] long nEventId, [in] sequence< any > aArgs ) + raises (::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::script::provider::ScriptFrameworkErrorException, + ::com::sun::star::util::VetoException); + + //------------------------------------------------------------------------- +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/script/vba/makefile.mk b/offapi/com/sun/star/script/vba/makefile.mk new file mode 100755 index 000000000000..c9526d86b070 --- /dev/null +++ b/offapi/com/sun/star/script/vba/makefile.mk @@ -0,0 +1,51 @@ +#************************************************************************* +# +# 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. +# +#************************************************************************* + +PRJ=..$/..$/..$/..$/.. + +PRJNAME=offapi + +TARGET=cssscriptvba +PACKAGE=com$/sun$/star$/script$/vba + +# --- Settings ----------------------------------------------------- +.INCLUDE : $(PRJ)$/util$/makefile.pmk + +# ------------------------------------------------------------------------ + +IDLFILES=\ + EventIdentifier.idl \ + EventProcessor.idl \ + SpreadsheetEventProcessor.idl \ + TextEventProcessor.idl \ + XCoreEventProcessor.idl \ + XEventProcessor.idl + +# ------------------------------------------------------------------ + +.INCLUDE : target.mk +.INCLUDE : $(PRJ)$/util$/target.pmk |