windowscodecs: Implement Commit for the PNG encoder.
[wine] / dlls / 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     SIZE sizedlg; /* remember the size of the dialog */
62     POINT initial_size; /* remember the initial size of the dialog */
63     struct {
64         IShellBrowser *FOIShellBrowser;
65         IShellFolder *FOIShellFolder;
66         IShellView *FOIShellView;
67         IDataObject *FOIDataObject;
68     } Shell;
69
70     struct {
71         HWND hwndOwner;
72         HWND hwndView;
73         FOLDERSETTINGS folderSettings;
74         LPITEMIDLIST pidlAbsCurrent;
75         LPWSTR lpstrCurrentFilter;
76     } ShellInfos;
77
78     struct {
79         HWND hwndFileTypeCB;
80         HWND hwndLookInCB;
81         HWND hwndFileName;
82         HWND hwndTB;
83         HWND hwndGrip;
84         HWND hwndCustomDlg;
85         DWORD dwDlgProp;
86     } DlgInfos;
87
88     struct {
89         UINT fileokstring;
90         UINT lbselchstring;
91         UINT helpmsgstring;
92         UINT sharevistring;
93     } HookMsg;
94
95 } FileOpenDlgInfos;
96
97 /***********************************************************************
98  * Control ID's
99  */
100 #define IDS_ABOUTBOX                    101
101 #define IDS_DOCUMENTFOLDERS             102
102 #define IDS_PERSONAL                    103
103 #define IDS_FAVORITES                   104
104 #define IDS_PATH                        105
105 #define IDS_DESKTOP                     106
106
107 #define IDS_FONTS                       108
108 #define IDS_MYCOMPUTER                  110
109 #define IDS_SYSTEMFOLDERS               112
110 #define IDS_LOCALHARDRIVES              113
111 #define IDS_FILENOTFOUND                114
112 #define IDS_VERIFYFILE                  115
113 #define IDS_CREATEFILE                  116
114 #define IDS_CREATEFOLDER_DENIED         117
115 #define IDS_FILEOPEN_CAPTION            118
116 #define IDS_OVERWRITEFILE               119
117 #define IDS_INVALID_FILENAME_TITLE      120
118 #define IDS_INVALID_FILENAME            121
119 #define IDS_PATHNOTEXISTING             122
120 #define IDS_FILENOTEXISTING             123
121
122 /* File Dialog Tooltips string IDs */
123
124 #define IDS_UPFOLDER                    150
125 #define IDS_NEWFOLDER                   151
126 #define IDS_LISTVIEW                    152
127 #define IDS_REPORTVIEW                  153
128 #define IDS_TODESKTOP                   154
129
130 #define IDC_OPENREADONLY                chx1
131
132 #define IDC_TOOLBARSTATIC               stc1
133 #define IDC_FILETYPESTATIC              stc2
134 #define IDC_FILENAMESTATIC              stc3
135 #define IDC_LOOKINSTATIC                stc4
136
137 #define IDC_SHELLSTATIC                 lst1
138
139 #define IDC_FILETYPE                    cmb1
140 #define IDC_LOOKIN                      cmb2
141
142 #define IDC_FILENAME                    edt1
143
144 #define IDC_TOOLBAR                     1
145
146 /***********************************************************************
147  * Prototypes for the methods of the IShellBrowserImpl class
148  */
149 /* Constructor */
150 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
151
152
153 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
154
155 /* Functions used by the EDIT box */
156 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
157
158 /**************************************************************************
159 *   External Prototypes
160 */
161 extern const char FileOpenDlgInfosStr[];
162
163 extern IShellFolder*    GetShellFolderFromPidl(LPITEMIDLIST pidlAbs);
164 extern LPITEMIDLIST     GetParentPidl(LPITEMIDLIST pidl);
165
166 extern int     FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl);
167 extern LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);
168
169 #endif /*SHBROWSER_H*/