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