/*
 * Copyright 2005 Jacek Caban
 *
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

import "ocidl.idl";
import "objidl.idl";
import "oleidl.idl";
import "oaidl.idl";
import "docobj.idl";

cpp_quote("#define CONTEXT_MENU_DEFAULT     0")
cpp_quote("#define CONTEXT_MENU_IMAGE       1")
cpp_quote("#define CONTEXT_MENU_CONTROL     2")
cpp_quote("#define CONTEXT_MENU_TABLE       3")
cpp_quote("#define CONTEXT_MENU_TEXTSELECT  4")
cpp_quote("#define CONTEXT_MENU_ANCHOR      5")
cpp_quote("#define CONTEXT_MENU_UNKNOWN     6")
cpp_quote("#define CONTEXT_MENU_IMGDYNSRC   7")
cpp_quote("#define CONTEXT_MENU_IMGART      8")
cpp_quote("#define CONTEXT_MENU_DEBUG       9")
cpp_quote("#define CONTEXT_MENU_VSCROLL    10")
cpp_quote("#define CONTEXT_MENU_HSCROLL    11")

cpp_quote("#define MENUEXT_SHOWDIALOG 1")

cpp_quote("#define DOCHOSTUIFLAG_BROWSER (DOCHOSTUIFLAG_DISABLE_HELP_MENU|DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE)")

cpp_quote("#define HTMLDLG_NOUI            0x0010")
cpp_quote("#define HTMLDLG_MODAL           0x0020")
cpp_quote("#define HTMLDLG_MODELESS        0x0040")
cpp_quote("#define HTMLDLG_PRINT_TEMPLATE  0x0080")
cpp_quote("#define HTMLDLG_VERIFY          0x0100")

cpp_quote("#define PRINT_DONTBOTHERUSER     0x0001")
cpp_quote("#define PRINT_WAITFORCOMPLETION  0x0002")

cpp_quote("#ifndef __IHTMLWindow2_FWD_DEFINED__")
cpp_quote("#define __IHTMLWindow2_FWD_DEFINED__")
cpp_quote("typedef interface IHTMLWindow2 IHTMLWindow2;")
cpp_quote("#endif")

/*****************************************************************************
 *    IHostDialogHelper interface
 */
[
    object,
    uuid(53DEC138-A51E-11d2-861E-00C04FA35C89),
    pointer_default(unique),
    local
]
interface IHostDialogHelper : IUnknown
{
    HRESULT ShowHTMLDialog(
        HWND hwndParent,
        IMoniker *pMk,
        VARIANT *pvarArgIn,
        WCHAR *pchOptions,
        VARIANT *pvarArgOut,
        IUnknown *punkHost);
}

/*****************************************************************************
 *    HostDialogHelper coclass
 */
[
    uuid(429AF92C-A51F-11d2-861E-00C04FA35C89)
]
coclass HostDialogHelper
{
    [default] interface IHostDialogHelper;
};

/*****************************************************************************
 *    IDocHostUIHandler interface
 */

typedef enum tagDOCHOSTUIDBLCLK
{
    DOCHOSTUIDBLCLK_DEFAULT         = 0,
    DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
    DOCHOSTUIDBLCLK_SHOWCODE        = 2
} DOCHOSTUIDBLCLK;

typedef enum tagDOCHOSTUIFLAG
{
    DOCHOSTUIFLAG_DIALOG                      = 0x00000001,
    DOCHOSTUIFLAG_DISABLE_HELP_MENU           = 0x00000002,
    DOCHOSTUIFLAG_NO3DBORDER                  = 0x00000004,
    DOCHOSTUIFLAG_SCROLL_NO                   = 0x00000008,
    DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE     = 0x00000010,
    DOCHOSTUIFLAG_OPENNEWWIN                  = 0x00000020,
    DOCHOSTUIFLAG_DISABLE_OFFSCREEN           = 0x00000040,
    DOCHOSTUIFLAG_FLAT_SCROLLBAR              = 0x00000080,
    DOCHOSTUIFLAG_DIV_BLOCKDEFAULT            = 0x00000100,
    DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY     = 0x00000200,
    DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY     = 0x00000400,
    DOCHOSTUIFLAG_CODEPAGELINKEDFONTS         = 0x00000800,
    DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8   = 0x00001000,
    DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8    = 0x00002000,
    DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE   = 0x00004000,
    DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION   = 0x00010000,
    DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION     = 0x00020000,
    DOCHOSTUIFLAG_THEME                       = 0x00040000,
    DOCHOSTUIFLAG_NOTHEME                     = 0x00080000,
    DOCHOSTUIFLAG_NOPICS                      = 0x00100000,
    DOCHOSTUIFLAG_NO3DOUTERBORDER             = 0x00200000,
    DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP       = 0x00400000,
    DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK  = 0x00800000,
    DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL   = 0x01000000
} DOCHOSTUIFLAG;

[
    object,
    uuid(BD3F23C0-D43E-11CF-893B-00AA00BDCE1A),
    pointer_default(unique),
    local
]
interface IDocHostUIHandler : IUnknown
{
    typedef struct _DOCHOSTUIINFO
    {
        ULONG cbSize;
        DWORD dwFlags;
        DWORD dwDoubleClick;
        OLECHAR *pchHostCss;
        OLECHAR *pchHostNS;
    } DOCHOSTUIINFO;

    HRESULT ShowContextMenu(
        [in] DWORD dwID, 
        [in] POINT *ppt, 
        [in] IUnknown *pcmdtReserved,  
        [in] IDispatch *pdispReserved);

    HRESULT GetHostInfo([in, out] DOCHOSTUIINFO *pInfo);

    HRESULT ShowUI(
        [in] DWORD dwID,
        [in] IOleInPlaceActiveObject *pActiveObject,
        [in] IOleCommandTarget *pCommandTarget,
        [in] IOleInPlaceFrame *pFrame,
        [in] IOleInPlaceUIWindow *pDoc);

    HRESULT HideUI();

    HRESULT UpdateUI();

    HRESULT EnableModeless([in] BOOL fEnable);

    HRESULT OnDocWindowActivate([in] BOOL fActivate);

    HRESULT OnFrameWindowActivate([in] BOOL fActivate);

    HRESULT ResizeBorder(
        [in] LPCRECT prcBorder,
        [in] IOleInPlaceUIWindow *pUIWindow,
        [in] BOOL fRameWindow);

    HRESULT TranslateAccelerator(
        [in] LPMSG lpMsg,
        [in] const GUID *pguidCmdGroup, 
        [in] DWORD nCmdID);

    HRESULT GetOptionKeyPath(
        [out] LPOLESTR *pchKey,
        [in] DWORD dw);

    HRESULT GetDropTarget(
        [in] IDropTarget *pDropTarget, 
        [out] IDropTarget **ppDropTarget);

    HRESULT GetExternal([out] IDispatch **ppDispatch);

    HRESULT TranslateUrl(
        [in] DWORD dwTranslate,
        [in] OLECHAR *pchURLIn,
        [out] OLECHAR **ppchURLOut);

    HRESULT FilterDataObject(
        [in] IDataObject *pDO,
        [out] IDataObject **ppDORet);
}

[
    object,
    uuid(3050F6D0-98b5-11CF-BB82-00AA00BDCE0B),
    pointer_default(unique),
    local
]
interface IDocHostUIHandler2 : IDocHostUIHandler
{
    HRESULT GetOverrideKeyPath(
        [out] LPOLESTR *pchKey,
        [in] DWORD dw);
}

/*****************************************************************************
 *    ICustomDoc interface
 */
[
    object,
    uuid(3050f3f0-98b5-11cf-bb82-00aa00bdce0b),
    pointer_default(unique),
    local
]
interface ICustomDoc : IUnknown
{
    HRESULT SetUIHandler([in] IDocHostUIHandler *pUIHandler);
}

/*****************************************************************************
 *    IDocHostShowUI interface
 */
[
    object,
    uuid(c4d244b0-d43e-11cf-893b-00aa00bdce1a),
    pointer_default(unique),
    local
]
interface IDocHostShowUI : IUnknown
{
    HRESULT ShowMessage(
        [in] HWND hwnd,
        [in] LPOLESTR lpstrText,
        [in] LPOLESTR lpstrCaption,
        [in] DWORD dwType,
        [in] LPOLESTR lpstrHelpFile,
        [in] DWORD dwHelpContext,
        [out] LRESULT *plResult);

    HRESULT ShowHelp(
        [in] HWND hwnd,
        [in] LPOLESTR pszHelpFile,
        [in] UINT uCommand,
        [in] DWORD dwData,
        [in] POINT ptMouse,
        [out] IDispatch *pDispatchObjectHit);
}

/*****************************************************************************
 *    IClassFactoryEx interface
 */

cpp_quote("#define IClassFactory3 IClassFactoryEx")
cpp_quote("#define IID_IClassFactory3 IID_IClassFactoryEx")

[
    object,
    uuid(342D1EA0-AE25-11D1-89C5-006008C3FBFC),
    pointer_default(unique),
    local
]
interface IClassFactoryEx : IClassFactory
{
    HRESULT CreateInstanceWithContext(
        IUnknown *punkContext,
        IUnknown *punkOuter,
        REFIID riid,
        [out] void **ppv);
};

cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);");
cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGEXFN(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);");
cpp_quote("typedef HRESULT WINAPI SHOWMODELESSHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);");

cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialog(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);");
cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialogEx(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);");
cpp_quote("EXTERN_C HRESULT WINAPI ShowModelessHTMLDialog(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);");
cpp_quote("EXTERN_C HRESULT WINAPI RunHTMLApplication(HINSTANCE,HINSTANCE,LPSTR,int);");
cpp_quote("EXTERN_C HRESULT WINAPI CreateHTMLPropertyPage(IMoniker*,IPropertyPage**);");
