filedlgbrowser.h 4.86 KB
Newer Older
1 2
/*
 *  Implementation of IShellBrowser for the File Open common dialog
3
 *
4 5
 * Copyright 1999 Francois Boisvert
 * Copyright 1999, 2000 Juergen Schmied
6
 *
7 8 9 10 11 12 13 14 15 16 17 18
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * 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 26 27 28 29
#ifndef RC_INVOKED
#include <stdarg.h>
#endif

#include "windef.h"
30
#include "winbase.h"
31 32
#include "winuser.h"
#include "shlobj.h"
33 34 35 36 37 38 39
#include "objbase.h"
#include "commdlg.h"

/***********************************************************************
 * Defines and global variables
 */

40 41 42
/* dialog internal property */

#define FODPROP_SAVEDLG 0x0001  /* File dialog is a Save file dialog */
43
#define FODPROP_USEVIEW 0x0002  /* Indicates the user selection must be taken
44 45
				   from the IShellView */

46 47 48 49 50 51 52
/***********************************************************************
 * Data structure
 */


typedef struct
{
Jacek Caban's avatar
Jacek Caban committed
53
    LPOPENFILENAMEW ofnInfos;
54 55 56 57 58 59 60
    BOOL unicode;
    LPWSTR initdir;
    LPWSTR filename;
    LPCWSTR title;
    LPCWSTR defext;
    LPCWSTR filter;
    LPCWSTR customfilter;
61 62
    SIZE sizedlg; /* remember the size of the dialog */
    POINT initial_size; /* remember the initial size of the dialog */
63
    struct {
64
        IShellBrowser *FOIShellBrowser;
65 66
        IShellFolder *FOIShellFolder;
        IShellView *FOIShellView;
67
	IDataObject *FOIDataObject;
68 69 70 71 72 73 74 75 76 77 78 79 80 81
    } Shell;

    struct {
        HWND hwndOwner;
        HWND hwndView;
        FOLDERSETTINGS folderSettings;
        LPITEMIDLIST pidlAbsCurrent;
        LPWSTR lpstrCurrentFilter;
    } ShellInfos;

    struct {
        HWND hwndFileTypeCB;
        HWND hwndLookInCB;
        HWND hwndFileName;
82
	HWND hwndTB;
83
	HWND hwndGrip;
84
        HWND hwndCustomDlg;
85
	DWORD dwDlgProp;
86 87
    } DlgInfos;

88 89 90 91 92 93 94
    struct {
	UINT fileokstring;
	UINT lbselchstring;
	UINT helpmsgstring;
	UINT sharevistring;
    } HookMsg;

95 96
} FileOpenDlgInfos;

97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
/***********************************************************************
 * Control ID's
 */
#define IDS_ABOUTBOX                    101
#define IDS_DOCUMENTFOLDERS             102
#define IDS_PERSONAL                    103
#define IDS_FAVORITES                   104
#define IDS_PATH                        105
#define IDS_DESKTOP                     106

#define IDS_FONTS                       108
#define IDS_MYCOMPUTER                  110
#define IDS_SYSTEMFOLDERS               112
#define IDS_LOCALHARDRIVES              113
#define IDS_FILENOTFOUND                114
#define IDS_VERIFYFILE                  115
#define IDS_CREATEFILE                  116
Alexandre Julliard's avatar
Alexandre Julliard committed
114 115
#define IDS_CREATEFOLDER_DENIED         117
#define IDS_FILEOPEN_CAPTION            118
116
#define IDS_OVERWRITEFILE		119
117 118 119 120
#define IDS_INVALID_FILENAME_TITLE	120
#define IDS_INVALID_FILENAME		121
#define IDS_PATHNOTEXISTING		122
#define IDS_FILENOTEXISTING		123
121

Alexandre Julliard's avatar
Alexandre Julliard committed
122 123 124 125 126 127
/* File Dialog Tooltips string IDs */

#define IDS_UPFOLDER                    150
#define IDS_NEWFOLDER                   151
#define IDS_LISTVIEW                    152
#define IDS_REPORTVIEW                  153
Juergen Schmied's avatar
Juergen Schmied committed
128
#define IDS_TODESKTOP                   154
Alexandre Julliard's avatar
Alexandre Julliard committed
129

130 131 132 133 134 135 136 137 138 139 140 141 142 143
#define IDC_OPENREADONLY                chx1

#define IDC_TOOLBARSTATIC		stc1
#define IDC_FILETYPESTATIC              stc2
#define IDC_FILENAMESTATIC              stc3
#define IDC_LOOKINSTATIC                stc4

#define IDC_SHELLSTATIC                 lst1

#define IDC_FILETYPE                    cmb1
#define IDC_LOOKIN                      cmb2

#define IDC_FILENAME                    edt1

144
#define IDC_TOOLBAR			1
145

146 147 148 149 150 151 152
/***********************************************************************
 * Prototypes for the methods of the IShellBrowserImpl class
 */
/* Constructor */
IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);


153 154 155 156
LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);

/* Functions used by the EDIT box */
void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
157

158 159 160 161 162 163 164 165 166 167 168
/**************************************************************************
*   External Prototypes
*/
extern const char FileOpenDlgInfosStr[];

extern IShellFolder*    GetShellFolderFromPidl(LPITEMIDLIST pidlAbs);
extern LPITEMIDLIST     GetParentPidl(LPITEMIDLIST pidl);

extern int     FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl);
extern LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);

169
#endif /*SHBROWSER_H*/