/*
 * 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

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;
    }
}
