Autosyncing with Wine HEAD
[reactos.git] / reactos / dll / win32 / comdlg32 / filedlgbrowser.h
1 /*
2 * Implementation of IShellBrowser for the File Open common dialog
3 *
4 * Copyright 1999 Francois Boisvert
5 * Copyright 1999, 2000 Juergen Schmied
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22 #ifndef SHBROWSER_H
23 #define SHBROWSER_H
24
25 #ifndef RC_INVOKED
26 #include <stdarg.h>
27 #endif
28
29 #include "windef.h"
30 #include "winbase.h"
31 #include "winuser.h"
32 #include "shlobj.h"
33 #include "objbase.h"
34 #include "commdlg.h"
35
36 /***********************************************************************
37 * Defines and global variables
38 */
39
40 /* dialog internal property */
41
42 #define FODPROP_SAVEDLG 0x0001 /* File dialog is a Save file dialog */
43 #define FODPROP_USEVIEW 0x0002 /* Indicates the user selection must be taken
44 from the IShellView */
45
46 /***********************************************************************
47 * Data structure
48 */
49
50
51 typedef struct
52 {
53 LPOPENFILENAMEW ofnInfos;
54 BOOL unicode;
55 LPWSTR initdir;
56 LPWSTR filename;
57 LPCWSTR title;
58 LPCWSTR defext;
59 LPCWSTR filter;
60 LPCWSTR customfilter;
61 struct {
62 IShellBrowser *FOIShellBrowser;
63 IShellFolder *FOIShellFolder;
64 IShellView *FOIShellView;
65 IDataObject *FOIDataObject;
66 } Shell;
67
68 struct {
69 HWND hwndOwner;
70 HWND hwndView;
71 FOLDERSETTINGS folderSettings;
72 LPITEMIDLIST pidlAbsCurrent;
73 LPWSTR lpstrCurrentFilter;
74 } ShellInfos;
75
76 struct {
77 HWND hwndFileTypeCB;
78 HWND hwndLookInCB;
79 HWND hwndFileName;
80 HWND hwndTB;
81 HWND hwndCustomDlg;
82 DWORD dwDlgProp;
83 } DlgInfos;
84
85 struct {
86 UINT fileokstring;
87 UINT lbselchstring;
88 UINT helpmsgstring;
89 UINT sharevistring;
90 } HookMsg;
91
92 } FileOpenDlgInfos;
93
94 /***********************************************************************
95 * Control ID's
96 */
97 #define IDS_ABOUTBOX 101
98 #define IDS_DOCUMENTFOLDERS 102
99 #define IDS_PERSONAL 103
100 #define IDS_FAVORITES 104
101 #define IDS_PATH 105
102 #define IDS_DESKTOP 106
103
104 #define IDS_FONTS 108
105 #define IDS_MYCOMPUTER 110
106 #define IDS_SYSTEMFOLDERS 112
107 #define IDS_LOCALHARDRIVES 113
108 #define IDS_FILENOTFOUND 114
109 #define IDS_VERIFYFILE 115
110 #define IDS_CREATEFILE 116
111 #define IDS_CREATEFOLDER_DENIED 117
112 #define IDS_FILEOPEN_CAPTION 118
113 #define IDS_OVERWRITEFILE 119
114 #define IDS_INVALID_FILENAME_TITLE 120
115 #define IDS_INVALID_FILENAME 121
116 #define IDS_PATHNOTEXISTING 122
117 #define IDS_FILENOTEXISTING 123
118
119 /* File Dialog Tooltips string IDs */
120
121 #define IDS_UPFOLDER 150
122 #define IDS_NEWFOLDER 151
123 #define IDS_LISTVIEW 152
124 #define IDS_REPORTVIEW 153
125 #define IDS_TODESKTOP 154
126
127 #define IDC_OPENREADONLY chx1
128
129 #define IDC_TOOLBARSTATIC stc1
130 #define IDC_FILETYPESTATIC stc2
131 #define IDC_FILENAMESTATIC stc3
132 #define IDC_LOOKINSTATIC stc4
133
134 #define IDC_SHELLSTATIC lst1
135
136 #define IDC_FILETYPE cmb1
137 #define IDC_LOOKIN cmb2
138
139 #define IDC_FILENAME edt1
140
141 #define IDC_TOOLBAR 1
142
143 /***********************************************************************
144 * Prototypes for the methods of the IShellBrowserImpl class
145 */
146 /* Constructor */
147 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
148
149
150 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
151 UINT GetNumSelected(IDataObject *doSelected);
152
153 /* pidl handling */
154 BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
155
156 /* Functions used by the EDIT box */
157 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
158
159 /**************************************************************************
160 * External Prototypes
161 */
162 extern const char FileOpenDlgInfosStr[];
163
164 extern IShellFolder* GetShellFolderFromPidl(LPITEMIDLIST pidlAbs);
165 extern LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl);
166
167 extern int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl);
168 extern LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);
169
170 #endif /*SHBROWSER_H*/