/*
 * Copyright 2015 Jacek Caban for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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 for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#pragma makedep header

import "oaidl.idl";

[
    helpstring("Microsoft Script Control 1.0"),
    uuid(0e59f1d2-1fbe-11d0-8ff2-00a0d10038bc),
    version(1.0)
]
library MSScriptControl
{
    importlib("stdole2.tlb");

    typedef enum {
        Initialized = 0,
        Connected = 1
    } ScriptControlStates;

    [
        dual,
        uuid(70841c73-067d-11d0-95d8-00a02463ab28),
        odl,
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptProcedure : IDispatch {
        [id(DISPID_VALUE), propget]
        HRESULT Name([out, retval] BSTR *pbstrName);

        [id(0x0064), propget]
        HRESULT NumArgs([out, retval] long *pcArgs);

        [id(0x0065), propget]
        HRESULT HasReturnValue([out, retval] VARIANT_BOOL *pfHasReturnValue);
    }

    [
        dual,
        uuid(70841c71-067d-11d0-95d8-00a02463ab28),
        odl,
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptProcedureCollection : IDispatch {
        [id(DISPID_NEWENUM), propget]
        HRESULT _NewEnum([out, retval] IUnknown *ppenumProcedures);

        [id(DISPID_VALUE), propget]
        HRESULT Item(
                [in] VARIANT Index,
                [out, retval] IScriptProcedure **ppdispProcedure);

        [id(1), propget]
        HRESULT Count([out, retval] long *plCount);
    }

    [
        dual,
        uuid(70841c70-067d-11d0-95d8-00a02463ab28),
        odl,
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptModule : IDispatch {
        [id(DISPID_VALUE), propget]
        HRESULT Name([out, retval] BSTR *pbstrName);

        [id(0x03e8), propget]
        HRESULT CodeObject([out, retval] IDispatch *ppdispObject);

        [id(0x03e9), propget]
        HRESULT Procedures([out, retval] IScriptProcedureCollection **ppdispProcedures);

        [id(0x07d0)]
        HRESULT AddCode([in] BSTR Code);

        [id(0x07d1)]
        HRESULT Eval(
                [in] BSTR Expression,
                [out, retval] VARIANT *pvarResult);

        [id(0x07d2)]
        HRESULT ExecuteStatement([in] BSTR Statement);

        [id(0x07d3), vararg]
        HRESULT Run(
                [in] BSTR ProcedureName,
                [in] SAFEARRAY(VARIANT) *Parameters,
                [out, retval] VARIANT *pvarResult);
    }

    [
        dual,
        uuid(70841c6f-067d-11d0-95d8-00a02463ab28),
        odl,
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptModuleCollection : IDispatch {
        [id(DISPID_NEWENUM), propget]
        HRESULT _NewEnum([out, retval] IUnknown *ppenumContexts);

        [id(DISPID_VALUE), propget]
        HRESULT Item(
                [in] VARIANT Index,
                [out, retval] IScriptModule **ppmod);

        [id(1), propget]
        HRESULT Count([out, retval] long *plCount);

        [id(2)]
        HRESULT Add(
                [in] BSTR Name,
                [in, optional] VARIANT *Object,
                [out, retval] IScriptModule **ppmod);
    }

    [
        dual,
        uuid(70841c78-067d-11d0-95d8-00a02463ab28),
        odl,
        helpstring("Provides access to scripting error information"),
        helpcontext(0x00113eb6),
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptError : IDispatch {
        [id(0x00c9), propget]
        HRESULT Number([out, retval] long *plNumber);

        [id(0x00ca), propget]
        HRESULT Source([out, retval] BSTR *pbstrSource);

        [id(0x00cb), propget]
        HRESULT Description([out, retval] BSTR *pbstrDescription);

        [id(0x00cc), propget]
        HRESULT HelpFile([out, retval] BSTR *pbstrHelpFile);

        [id(0x00cd), propget]
        HRESULT HelpContext([out, retval] long *plHelpContext);

        [id(0xfffffdfb), propget]
        HRESULT Text([out, retval] BSTR *pbstrText);

        [id(0x00ce), propget]
        HRESULT Line([out, retval] long *plLine);

        [id(0xfffffdef), propget]
        HRESULT Column([out, retval] long *plColumn);

        [id(0x00d0)]
        HRESULT Clear();
    }

     [
        dual,
        uuid(0e59f1d3-1fbe-11d0-8ff2-00a0d10038bc),
        odl,
        hidden,
        nonextensible,
        oleautomation
    ]
    interface IScriptControl : IDispatch {
        [id(0x05dc), propget] HRESULT Language([out, retval] BSTR *pbstrLanguage);
        [id(0x05dc), propput] HRESULT Language([in] BSTR pbstrLanguage);

        [id(0x05dd), propget] HRESULT State([out, retval] ScriptControlStates *pssState);
        [id(0x05dd), propput] HRESULT State([in] ScriptControlStates pssState);

        [id(0x05de), propput] HRESULT SitehWnd([in] long rhs);
        [id(0x05de), propget] HRESULT SitehWnd([out, retval] long *rhs);

        [id(0x05df), propget] HRESULT Timeout([out, retval] long *plMilleseconds);
        [id(0x05df), propput] HRESULT Timeout([in] long plMilleseconds);

        [id(0x05e0), propget] HRESULT AllowUI([out, retval] VARIANT_BOOL *pfAllowUI);
        [id(0x05e0), propput] HRESULT AllowUI([in] VARIANT_BOOL pfAllowUI);

        [id(0x05e1), propget] HRESULT UseSafeSubset([out, retval] VARIANT_BOOL *pfUseSafeSubset);
        [id(0x05e1), propput] HRESULT UseSafeSubset([in] VARIANT_BOOL pfUseSafeSubset);

        [id(0x05e2), propget] HRESULT Modules([out, retval] IScriptModuleCollection **ppmods);

        [id(0x05e3), propget] HRESULT Error([out, retval] IScriptError **ppse);

        [id(0x03e8), propget] HRESULT CodeObject([out, retval] IDispatch **ppdispObject);

        [id(0x03e9), propget] HRESULT Procedures([out, retval] IScriptProcedureCollection **ppdispProcedures);

        [id(0xfffffdd8)]
        HRESULT _AboutBox();

        [id(0x09c4)]
        HRESULT AddObject(
                [in] BSTR Name,
                [in] IDispatch *Object,
                [in, optional, defaultvalue(0)] VARIANT_BOOL AddMembers);

        [id(0x09c5)]
        HRESULT Reset();

        [id(0x07d0)]
        HRESULT AddCode([in] BSTR Code);

        [id(0x07d1)]
        HRESULT Eval(
                [in] BSTR Expression,
                [out, retval] VARIANT *pvarResult);

        [id(0x07d2)]
        HRESULT ExecuteStatement([in] BSTR Statement);

        [id(0x07d3), vararg]
        HRESULT Run(
                [in] BSTR ProcedureName,
                [in] SAFEARRAY(VARIANT) *Parameters,
                [out, retval] VARIANT *pvarResult);
    }

    [
        uuid(8b167d60-8605-11d0-abcb-00a0c90fffc0),
        hidden
    ]
    dispinterface DScriptControlSource {
    properties:
    methods:
        [id(0x0bb8)] void Error();
        [id(0x0bb9)] void Timeout();
    }

    [
        uuid(0e59f1da-1fbe-11d0-8ff2-00a0d10038bc),
        noncreatable
    ]
    coclass Procedure {
        [default] interface IScriptProcedure;
    }

    [
        uuid(0e59f1db-1fbe-11d0-8ff2-00a0d10038bc),
        noncreatable
    ]
    coclass Procedures {
        [default] interface IScriptProcedureCollection;
    }

    [
        uuid(0e59f1dc-1fbe-11d0-8ff2-00a0d10038bc),
        noncreatable
    ]
    coclass Module {
        [default] interface IScriptModule;
    }

    [
        uuid(0e59f1dd-1fbe-11d0-8ff2-00a0d10038bc),
        noncreatable
    ]
    coclass Modules {
        [default] interface IScriptModuleCollection;
    }

    [
        uuid(0e59f1de-1fbe-11d0-8ff2-00a0d10038bc),
        noncreatable
    ]
    coclass Error {
        [default] interface IScriptError;
    }

    [
        helpstring("ScriptControl Object"),
        uuid(0e59f1d5-1fbe-11d0-8ff2-00a0d10038bc),
        threading(apartment),
        progid("MSScriptControl.ScriptControl.1"),
        vi_progid("MSScriptControl.ScriptControl")
    ]
    coclass ScriptControl {
        [default] interface  IScriptControl;
        [default, source] dispinterface DScriptControlSource;
    }
}
