/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ #ifndef ACTIVESCRIPTSITE_H #define ACTIVESCRIPTSITE_H class CActiveScriptSite : public CComObjectRootEx, public IActiveScriptSite { // Pointer to owned script engine CComQIPtr m_spIActiveScript; // List of registered, named objects CNamedObjectList m_cObjectList; // Current script state SCRIPTSTATE m_ssScriptState; public: CActiveScriptSite(); virtual ~CActiveScriptSite(); BEGIN_COM_MAP(CActiveScriptSite) COM_INTERFACE_ENTRY(IActiveScriptSite) END_COM_MAP() // Attach to the specified script engine virtual HRESULT Attach(CLSID clsidScriptEngine); // Helper to attach to the VBScript engine virtual HRESULT AttachVBScript(); // Helper to attach to the JScript engine virtual HRESULT AttachJScript(); // Detach from the script engine virtual HRESULT Detach(); // Return the current state of the script engine virtual SCRIPTSTATE GetScriptState() const { return m_ssScriptState; } // Parse the specified script virtual HRESULT ParseScriptText(const TCHAR *szScript); // Parse the specified script from a file virtual HRESULT ParseScriptFile(const TCHAR *szFile); // Add object to script address space virtual HRESULT AddNamedObject(const TCHAR *szName, IUnknown *pObject, BOOL bGlobalMembers = FALSE); // Play the script virtual HRESULT PlayScript(); // Stop the script virtual HRESULT StopScript(); public: // IActiveScriptSite virtual HRESULT STDMETHODCALLTYPE GetLCID(/* [out] */ LCID __RPC_FAR *plcid); virtual HRESULT STDMETHODCALLTYPE GetItemInfo(/* [in] */ LPCOLESTR pstrName, /* [in] */ DWORD dwReturnMask, /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppiunkItem, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppti); virtual HRESULT STDMETHODCALLTYPE GetDocVersionString(/* [out] */ BSTR __RPC_FAR *pbstrVersion); virtual HRESULT STDMETHODCALLTYPE OnScriptTerminate(/* [in] */ const VARIANT __RPC_FAR *pvarResult, /* [in] */ const EXCEPINFO __RPC_FAR *pexcepinfo); virtual HRESULT STDMETHODCALLTYPE OnStateChange(/* [in] */ SCRIPTSTATE ssScriptState); virtual HRESULT STDMETHODCALLTYPE OnScriptError(/* [in] */ IActiveScriptError __RPC_FAR *pscripterror); virtual HRESULT STDMETHODCALLTYPE OnEnterScript(void); virtual HRESULT STDMETHODCALLTYPE OnLeaveScript(void); }; typedef CComObject CActiveScriptSiteInstance; #endif