include: Add a generic red-black tree.
[wine] / include / hlink.idl
1 /*
2  * Copyright 2005 Jacek Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "urlmon.idl";
20
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
25
26 cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
27 cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
28 cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);")
29 cpp_quote("HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);")
30 cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);")
31 cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);")
32 cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);")
33 cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
34 cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
35 cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);")
36 cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);")
37 cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);")
38 cpp_quote("HRESULT WINAPI HlinkParseDisplayName(LPBC,LPCWSTR,BOOL,ULONG*,IMoniker**);")
39 cpp_quote("HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER,DWORD,LPBC,ULONG,FORMATETC*,IBindStatusCallback*,LPMONIKER);")
40
41 typedef enum _HLSR_NOREDEF10 {
42     HLSR_HOME,
43     HLSR_SEARCHPAGE,
44     HLSR_HISTORYFOLDER
45 } HLSR;
46
47 cpp_quote("HRESULT WINAPI HlinkSetSpecialReference(ULONG uReference, LPCWSTR pwzReference);")
48 cpp_quote("HRESULT WINAPI HlinkGetSpecialReference(ULONG uReference, LPWSTR *ppwzReference);")
49
50 cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
51
52 /*****************************************************************************
53  *    IHlink interface
54  */
55 [
56     object,
57     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
58     pointer_default(unique)
59 ]
60 interface IHlink: IUnknown
61 {
62     typedef [unique] IHlink *LPHLINK;
63
64     typedef enum {
65         HLNF_INTERNALJUMP          = 0x00000001,
66         HLNF_OPENINNEWWINDOW       = 0x00000002,
67         HLNF_NAVIGATINGBACK        = 0x00000004,
68         HLNF_NAVIGATINGFORWARD     = 0x00000008,
69         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
70         HLNF_CREATENOHISTORY       = 0x00000020
71     } HLNF;
72
73     typedef enum {
74         HLINKGETREF_DEFAULT  = 0,
75         HLINKGETREF_ABSOLUTE = 1,
76         HLINKGETREF_RELATIVE = 2,
77     } HLINKGETREF;
78
79     typedef enum {
80         HLFNAMEF_DEFAULT          = 0x00000000,
81         HLFNAMEF_TRYCACHE         = 0x00000001,
82         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
83         HLFNAMEF_TRYFULLTARGET    = 0x00000004,
84         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
85     } HLFNAMEF;
86
87     typedef enum {
88         HLINKMISC_RELATIVE = 0x00000001,
89     } HLINKMISC;
90
91     typedef enum {
92         HLINKSETF_TARGET   = 0x00000001,
93         HLINKSETF_LOCATION = 0x00000002
94     } HLINKSETF;
95
96     HRESULT SetHlinkSite(
97         [in, unique] IHlinkSite *pihlSite,
98         [in] DWORD dwSiteData);
99
100     HRESULT GetHlinkSite(
101         [out] IHlinkSite **ppihlSite,
102         [out] DWORD *pdwSiteData);
103
104     HRESULT SetMonikerReference(
105         [in] DWORD grfHLSETF,
106         [in, unique] IMoniker *pimkTarget,
107         [in, unique] LPCWSTR pwzLocation);
108
109     HRESULT GetMonikerReference(
110         [in]  DWORD dwWhichRef,
111         [out] IMoniker **ppimkTarget,
112         [out] LPWSTR *ppwzLocation);
113
114     HRESULT SetStringReference(
115         [in] DWORD grfHLSETF,
116         [in, unique] LPCWSTR pwzTarget,
117         [in, unique] LPCWSTR pwzLocation);
118
119     HRESULT GetStringReference(
120         [in]  DWORD dwWhichRef,
121         [out] LPWSTR *ppwzTarget,
122         [out] LPWSTR *ppwzLocation);
123
124     HRESULT SetFriendlyName(
125         [in, unique] LPCWSTR pwzFriendlyName);
126
127     HRESULT GetFriendlyName(
128         [in]  DWORD grfHLFNAMEF,
129         [out] LPWSTR *ppwzFriendlyName);
130
131     HRESULT SetTargetFrameName(
132         [in, unique] LPCWSTR pwzTargetFrameName);
133
134     HRESULT GetTargetFrameName(
135         [out] LPWSTR *ppwzTargetFrameName);
136
137     HRESULT GetMiscStatus(
138         [out] DWORD *pdwStatus);
139
140     HRESULT Navigate(
141         [in] DWORD grfHLNF,
142         [in, unique] LPBC pibc,
143         [in, unique] IBindStatusCallback *pibsc,
144         [in, unique] IHlinkBrowseContext *pihlbc);
145
146     HRESULT SetAdditionalParams(
147         [in, unique] LPCWSTR pwzAdditionalParams);
148
149     HRESULT GetAdditionalParams(
150         [out] LPWSTR *ppwzAdditionalParams);
151 }
152
153 /*****************************************************************************
154  *    IHlink interface
155  */
156 [
157     object,
158     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
159     pointer_default(unique)
160 ]
161 interface IHlinkSite: IUnknown
162 {
163     typedef [unique] IHlinkSite *LPHLINKSITE;
164
165     typedef enum {
166         HLINKWHICHMK_CONTAINER = 1,
167         HLINKWHICHMK_BASE      = 2,
168     } HLINKWHICHMK;
169
170     HRESULT QueryService(
171         [in] DWORD dwSiteData,
172         [in] REFGUID guidService,
173         [in] REFIID riid,
174         [out, iid_is(riid)] IUnknown **ppiunk);
175
176     HRESULT GetMoniker(
177         [in] DWORD dwSiteData,
178         [in] DWORD dwAssign,
179         [in] DWORD dwWhich,
180         [out] IMoniker **ppimk);
181
182     HRESULT ReadyToNavigate(
183         [in] DWORD dwSiteData,
184         [in] DWORD dwReserved);
185
186     HRESULT OnNavigationComplete(
187         [in] DWORD dwSiteData,
188         [in] DWORD dwreserved,
189         [in] HRESULT hrError,
190         [in, unique] LPCWSTR pwzError);
191 }
192
193 /*****************************************************************************
194  *    IEnumHLITEM interface
195  */
196 [
197     local,
198     object,
199     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
200     pointer_default(unique)
201 ]
202 interface IEnumHLITEM : IUnknown
203 {
204     typedef [unique] IEnumHLITEM *LPENUMHLITEM;
205
206     typedef struct tagHLITEM {
207         ULONG  uHLID;
208         LPWSTR pwzFriendlyName;
209     } HLITEM;
210     typedef [unique] HLITEM *LPHLITEM;
211
212     HRESULT Next(
213         [in]  ULONG celt,
214         [out] HLITEM *rgelt,
215         [out] ULONG *pceltFetched);
216
217     HRESULT Skip(
218         [in] ULONG celt);
219
220     HRESULT Reset();
221
222     HRESULT Clone(
223         [out] IEnumHLITEM **ppienumhlitem);
224 }
225
226 /*****************************************************************************
227  *    IHlinkBrowseContext interface
228  */
229 [
230     local,
231     object,
232     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
233     pointer_default(unique)
234 ]
235 interface IHlinkBrowseContext : IUnknown
236 {
237     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
238
239     enum {
240         HLTB_DOCKEDLEFT    = 0,
241         HLTB_DOCKEDTOP     = 1,
242         HLTB_DOCKEDRIGHT   = 2,
243         HLTB_DOCKEDBOTTOM  = 3,
244         HLTB_FLOATING      = 4
245     };
246
247     typedef struct _tagHLTBINFO {
248         ULONG uDockType;
249         RECT  rcTbPos;
250     } HLTBINFO;
251
252     enum {
253         HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
254         HLBWIF_HASDOCWNDINFO     = 0x00000002,
255         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
256         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
257         HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
258         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
259     };
260
261     typedef struct _tagHLBWINFO {
262         ULONG    cbSize;
263         DWORD    grfHLBWIF;
264         RECT     rcFramePos;
265         RECT     rcDocPos;
266         HLTBINFO hltbinfo;
267     } HLBWINFO;
268
269     typedef [unique] HLBWINFO *LPHLBWINFO;
270
271     enum {
272         HLID_INVALID     = 0x00000000,
273         HLID_PREVIOUS    = 0xFFFFFFFF,
274         HLID_NEXT        = 0xFFFFFFFE,
275         HLID_CURRENT     = 0xFFFFFFFD,
276         HLID_STACKBOTTOM = 0xFFFFFFFC,
277         HLID_STACKTOP    = 0xFFFFFFFB
278     };
279
280     enum {
281         HLQF_ISVALID   = 0x00000001,
282         HLQF_ISCURRENT = 0x00000002
283     };
284
285     HRESULT Register(
286         [in] DWORD reserved,
287         [in, unique] IUnknown *piunk,
288         [in, unique] IMoniker *pimk,
289         [out] DWORD *pdwRegister);
290
291 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
292 cpp_quote("#undef GetObject")
293 cpp_quote("#endif")
294
295     HRESULT GetObject(
296         [in, unique] IMoniker *pimk,
297         [in] BOOL fBindIfRootRegistered,
298         [out] IUnknown **ppiunk);
299
300     HRESULT Revoke(
301         [in] DWORD dwRegister);
302
303     HRESULT SetBrowseWindowInfo(
304         [in, unique] HLBWINFO *phlbwi);
305
306     HRESULT GetBrowseWindowInfo(
307         [out] HLBWINFO *phlbwi);
308
309     HRESULT SetInitialHlink(
310         [in, unique] IMoniker * pimkTarget,
311         [in, unique] LPCWSTR pwzLocation,
312         [in, unique] LPCWSTR pwzFriendlyName);
313
314     HRESULT OnNavigateHlink(
315         [in] DWORD grfHLNF,
316         [in, unique] IMoniker *pimkTarget,
317         [in, unique] LPCWSTR pwzLocation,
318         [in, unique] LPCWSTR pwzFriendlyName,
319         [out] ULONG *puHLID);
320
321     HRESULT UpdateHlink(
322         [in] ULONG uHLID,
323         [in, unique] IMoniker *pimkTarget,
324         [in, unique] LPCWSTR pwzLocation,
325         [in, unique] LPCWSTR pwzFriendlyName);
326
327     HRESULT EnumNavigationStack(
328         [in] DWORD dwReserved,
329         [in] DWORD grfHLFNAMEF,
330         [out] IEnumHLITEM **ppienumhlitem);
331
332     HRESULT QueryHlink(
333         [in] DWORD grfHLQF,
334         [in] ULONG uHLID);
335
336     HRESULT GetHlink(
337         [in] ULONG uHLID,
338         [out] IHlink **ppihl);
339
340     HRESULT SetCurrentHlink(
341         [in] ULONG uHLID);
342
343     HRESULT Clone(
344         [in, unique] IUnknown *piunkOuter,
345         [in] REFIID riid,
346         [out, iid_is(riid)] IUnknown **ppiunkObj);
347
348     HRESULT Close(
349         [in] DWORD reserved);
350 }
351
352
353 /*****************************************************************************
354  *    IHlinkTarget interface
355  */
356 [
357     object,
358     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
359     pointer_default(unique)
360 ]
361 interface IHlinkTarget : IUnknown
362 {
363     typedef [unique] IHlinkTarget *LPHLINKTARGET;
364
365     HRESULT SetBrowseContext(
366         [in, unique] IHlinkBrowseContext *pihlbc);
367
368     HRESULT GetBrowseContext(
369         [out] IHlinkBrowseContext **ppihlbc);
370
371     HRESULT Navigate(
372         [in] DWORD grfHLNF,
373         [in, unique] LPCWSTR pwzJumpLocation);
374
375     HRESULT GetMoniker(
376         [in,unique]  LPCWSTR pwzLocation,
377         [in] DWORD dwAssign,
378         [out] IMoniker **ppimkLocation);
379
380     HRESULT GetFriendlyName(
381         [in,unique]  LPCWSTR pwzLocation,
382         [out] LPWSTR *ppwzFriendlyName);
383 }
384
385 /*****************************************************************************
386  *    IHlinkFrame interface
387  */
388 [
389     object,
390     uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
391     pointer_default(unique)
392 ]
393
394 interface IHlinkFrame : IUnknown
395 {
396     typedef IHlinkFrame *LPHLINKFRAME;
397
398     HRESULT SetBrowseContext( 
399         [in, unique] IHlinkBrowseContext * pihlbc);
400     HRESULT GetBrowseContext( 
401         [out] IHlinkBrowseContext ** ppihlbc);
402     HRESULT Navigate( 
403         [in] DWORD grfHLNF, 
404         [in, unique] LPBC pbc, 
405         [in, unique] IBindStatusCallback *pibsc, 
406         [in, unique] IHlink *pihlNavigate);
407     HRESULT OnNavigate( 
408         [in] DWORD grfHLNF, 
409         [in, unique] IMoniker *pimkTarget, 
410         [in, unique] LPCWSTR pwzLocation, 
411         [in, unique] LPCWSTR pwzFriendlyName, 
412         [in] DWORD dwreserved);
413     HRESULT UpdateHlink( 
414         [in] ULONG uHLID, 
415         [in, unique] IMoniker *pimkTarget, 
416         [in, unique] LPCWSTR pwzLocation, 
417         [in, unique] LPCWSTR pwzFriendlyName);
418 }
419
420 /*****************************************************************************
421  *    IExtensionServices interface
422  */
423 [
424     object,
425     uuid(79eac9cb-baf9-11ce-8c82-00aa004ba90b),
426     pointer_default(unique)
427 ]
428
429 interface IExtensionServices: IUnknown
430 {
431     typedef IExtensionServices *LPEXTENSIONSERVICES;
432
433     HRESULT SetAdditionalHeaders(
434         [in] LPCWSTR pwzAdditionalHeaders);
435
436     HRESULT SetAuthenticateData(
437         [in] HWND phwnd,
438         [in] LPCWSTR pwzUsername,
439         [in] LPCWSTR pwzPassword);
440 }