xref: /reactos/dll/win32/comdlg32/filedlgbrowser.h (revision d55e33d0)
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 #ifdef __REACTOS__
51 typedef struct FileOpenDlgInfos
52 #else
53 typedef struct
54 #endif
55 {
56     LPOPENFILENAMEW ofnInfos;
57     BOOL unicode;
58     LPWSTR initdir;
59     LPWSTR filename;
60     LPCWSTR title;
61     LPCWSTR defext;
62     LPCWSTR filter;
63     LPCWSTR customfilter;
64     SIZE sizedlg; /* remember the size of the dialog */
65     POINT initial_size; /* remember the initial size of the dialog */
66     struct {
67         IShellBrowser *FOIShellBrowser;
68         IShellFolder *FOIShellFolder;
69         IShellView *FOIShellView;
70 	IDataObject *FOIDataObject;
71     } Shell;
72 
73     struct {
74         HWND hwndOwner;
75         HWND hwndView;
76         FOLDERSETTINGS folderSettings;
77         LPITEMIDLIST pidlAbsCurrent;
78         LPWSTR lpstrCurrentFilter;
79     } ShellInfos;
80 
81     struct {
82         HWND hwndFileTypeCB;
83         HWND hwndLookInCB;
84         HWND hwndFileName;
85 	HWND hwndTB;
86 	HWND hwndGrip;
87         HWND hwndCustomDlg;
88 	DWORD dwDlgProp;
89     } DlgInfos;
90 
91     struct {
92 	UINT fileokstring;
93 	UINT lbselchstring;
94 	UINT helpmsgstring;
95 	UINT sharevistring;
96     } HookMsg;
97 
98     BOOL ole_initialized;
99     LPITEMIDLIST places[5];
100 #ifdef __REACTOS__
101     LPVOID pvCWD; /* ICurrentWorkingDirectory */
102     LPVOID pvDropDown; /* IAutoCompleteDropDown */
103     LPVOID pvACList; /* IACList2 */
104 #endif
105 } FileOpenDlgInfos;
106 
107 /***********************************************************************
108  * Control IDs
109  */
110 #define IDS_FILENOTFOUND                114
111 #define IDS_VERIFYFILE                  115
112 #define IDS_CREATEFILE                  116
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 #define IDS_INVALID_FOLDERNAME		124
119 
120 /* File Dialog Tooltips string IDs */
121 
122 #define IDS_UPFOLDER                    150
123 #define IDS_NEWFOLDER                   151
124 #define IDS_LISTVIEW                    152
125 #define IDS_REPORTVIEW                  153
126 #define IDS_TODESKTOP                   154
127 
128 #define IDC_OPENREADONLY                chx1
129 
130 #define IDC_TOOLBARSTATIC		stc1
131 #define IDC_FILETYPESTATIC              stc2
132 #define IDC_FILENAMESTATIC              stc3
133 #define IDC_LOOKINSTATIC                stc4
134 
135 #define IDC_SHELLSTATIC                 lst1
136 
137 #define IDC_FILETYPE                    cmb1
138 #define IDC_LOOKIN                      cmb2
139 
140 #define IDC_FILENAME                    edt1
141 
142 #define IDC_TOOLBAR			1
143 #define IDC_TOOLBARPLACES               ctl1
144 
145 /***********************************************************************
146  * Prototypes for the methods of the IShellBrowserImpl class
147  */
148 /* Constructor */
149 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner) DECLSPEC_HIDDEN;
150 
151 
152 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex) DECLSPEC_HIDDEN;
153 
154 /* Functions used by the EDIT box */
155 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd) DECLSPEC_HIDDEN;
156 
157 /**************************************************************************
158 *   External Prototypes
159 */
160 extern FileOpenDlgInfos *get_filedlg_infoptr(HWND hwnd) DECLSPEC_HIDDEN;
161 
162 extern IShellFolder*    GetShellFolderFromPidl(LPITEMIDLIST pidlAbs) DECLSPEC_HIDDEN;
163 extern LPITEMIDLIST     GetParentPidl(LPITEMIDLIST pidl) DECLSPEC_HIDDEN;
164 
165 extern int     FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl) DECLSPEC_HIDDEN;
166 extern LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode) DECLSPEC_HIDDEN;
167 
168 #endif /*SHBROWSER_H*/
169