/*
 * Copyright 2000 Juergen Schmied
 *
 * 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
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef __WINE_SHELL_RES_H
#define __WINE_SHELL_RES_H

/*
	columntitles for the shellview
*/
#define IDS_SHV_COLUMN1		7
#define IDS_SHV_COLUMN2		8
#define IDS_SHV_COLUMN3		9
#define IDS_SHV_COLUMN4		10
#define IDS_SHV_COLUMN5		11
#define IDS_SHV_COLUMN6		12
#define IDS_SHV_COLUMN7		13

#define IDS_DESKTOP		20
#define IDS_MYCOMPUTER		21

#define IDS_SELECT		22
#define IDS_OPEN		23
#define IDS_VIEW_LARGE		24
#define IDS_VIEW_SMALL		25
#define IDS_VIEW_LIST		26
#define IDS_VIEW_DETAILS	27

#define IDS_CREATEFOLDER_DENIED 30
#define IDS_CREATEFOLDER_CAPTION 31
#define IDS_DELETEITEM_CAPTION	32
#define IDS_DELETEFOLDER_CAPTION 33
#define IDS_DELETEITEM_TEXT	34
#define IDS_DELETEMULTIPLE_TEXT	35

/* browse for folder dialog box */
#define IDD_STATUS		0x3743
#define IDD_TITLE		0x3742
#define IDD_TREEVIEW		0x3741

#endif
