/*
 * WineFile
 * English Language Support
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 *
 * 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
 */

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
	POPUP "&File"  {
		MENUITEM "&Open\tEnter" ,			ID_ACTIVATE
		MENUITEM "&Move...\tF7" , 			ID_FILE_MOVE
		MENUITEM "&Copy...\tF8" ,			ID_FILE_COPY
		MENUITEM "&In Clipboard...\tF9" ,		118
		MENUITEM "&Delete\tDel" ,			ID_FILE_DELETE
		MENUITEM "Re&name..." ,			109
		MENUITEM "Propert&ies...\tAlt+Enter" , ID_EDIT_PROPERTIES
		MENUITEM SEPARATOR
		MENUITEM "C&ompress..." ,		119
		MENUITEM "Dec&ompress..." ,		120
		MENUITEM SEPARATOR
		MENUITEM "&Run..." ,			ID_EXECUTE
		MENUITEM "&Print..." , 			102
		MENUITEM "Associate..." ,		103
		MENUITEM SEPARATOR
		MENUITEM "Cr&eate Directory..." ,			111
		MENUITEM "Searc&h..." ,			104
		MENUITEM "&Select Files..." ,			116
		MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
		MENUITEM "E&xit\tAlt+X" , 			ID_FILE_EXIT
#else
		MENUITEM "E&xit", 				ID_FILE_EXIT
#endif
	}

	POPUP "&Disk"  {
		MENUITEM "&Copy Disk..." ,			201
		MENUITEM "&Label Disk..." ,			202
		MENUITEM SEPARATOR
		MENUITEM "&Format Disk..." ,			ID_FORMAT_DISK
#ifdef _WIN95
		MENUITEM "&Make System Disk...", -1	/*TODO*/
#endif
		MENUITEM SEPARATOR
		MENUITEM "Connect &Network Drive" ,			ID_CONNECT_NETWORK_DRIVE
		MENUITEM "&Disconnect Network Drive" ,		ID_DISCONNECT_NETWORK_DRIVE
		MENUITEM SEPARATOR
		MENUITEM "Share as..." ,			254
		MENUITEM "&Remove Share..." ,			255
		MENUITEM SEPARATOR
		MENUITEM "&Select Drive..." ,			251
	}

	POPUP "Di&rectories"  {
		MENUITEM "&Next Level\t+" ,			301
		MENUITEM "Expand &Tree\t*" ,		302
		MENUITEM "Expand &all\tStrg+*" ,		303
		MENUITEM "Collapse &Tree\t-" ,			304
		MENUITEM SEPARATOR
		MENUITEM "&Mark Children" ,				505
	}

	POPUP "&View"  {
		MENUITEM "T&ree and Directory" ,			413
		MENUITEM "Tr&ee Only" ,			411
		MENUITEM "Directory &Only" ,			412
		MENUITEM SEPARATOR
		MENUITEM "Sp&lit" ,			ID_VIEW_SPLIT
		MENUITEM SEPARATOR
		MENUITEM "&Name" ,			ID_VIEW_NAME
		MENUITEM "&All File Details" ,				ID_VIEW_ALL_ATTRIBUTES, CHECKED
		MENUITEM "&Partial Details..." ,			ID_VIEW_SELECTED_ATTRIBUTES
		MENUITEM SEPARATOR
		MENUITEM "&Sort by Name" ,		ID_VIEW_SORT_NAME
		MENUITEM "Sort &by Type" ,		ID_VIEW_SORT_TYPE
		MENUITEM "Sort by Si&ze" , 		ID_VIEW_SORT_SIZE
		MENUITEM "Sort by &Date" , 		ID_VIEW_SORT_DATE
		MENUITEM SEPARATOR
		MENUITEM "Filter by &..." ,			ID_VIEW_FILTER
	}

	POPUP "&Options"  {
		MENUITEM "&Confirmation..." ,		-1
		MENUITEM "&Font..." ,			ID_SELECT_FONT
		MENUITEM "Customize Tool&bar..." , -1
		MENUITEM SEPARATOR
		MENUITEM "&Toolbar" ,		ID_VIEW_TOOL_BAR, CHECKED
		MENUITEM "&Drivebar" ,		ID_VIEW_DRIVE_BAR, CHECKED
		MENUITEM "&Status Bar" ,	ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
		MENUITEM "F&ull Screen\tCtrl+Shift+S" , 	ID_VIEW_FULLSCREEN
#endif
		MENUITEM SEPARATOR
		MENUITEM "&Minimize on run" ,		-1
		MENUITEM "&Save settings on exit" ,			511
	}


	POPUP "&Security"  {
		MENUITEM "&Access..." ,		605
		MENUITEM "&Logging..." ,			606
		MENUITEM "&Owner..." ,		607
	}

	POPUP "&Window"  {
		MENUITEM "New &Window" ,			ID_WINDOW_NEW
		MENUITEM "Cascading\tCtrl+F5" ,		ID_WINDOW_CASCADE
		MENUITEM "Tile &Horizontally" ,		ID_WINDOW_TILE_HORZ
		MENUITEM "Tile &Vertically\tCtrl+F4" ,		ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
		MENUITEM "Arrange Automatically" ,		ID_WINDOW_AUTOSORT
#endif
		MENUITEM "Arrange &Symbols" ,		ID_WINDOW_ARRANGE
		MENUITEM "&Refresh\tF5" ,		ID_REFRESH
	}

	POPUP "&?"  {
		MENUITEM "&Help Topics\tF1" ,			ID_HELP
		MENUITEM "Help &Search...\tF1" ,			ID_HELP
		MENUITEM "&Using Help\tF1" ,			ID_HELP_USING
		MENUITEM SEPARATOR
		POPUP "Info..."  {
		  MENUITEM "Info about &Wine..." ,			ID_ABOUT_WINE
/*
 *		  MENUITEM "&License..."		ID_LICENSE
 *		  MENUITEM "&NO WARRANTY"		ID_NO_WARRANTY
 */
		}
	}
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Execute"
FONT 8, "MS Shell Dlg"
{
	CONTROL 		"", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
	CONTROL 		"&Command:" , -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
	EDITTEXT		201, 3, 29, 134, 12, ES_AUTOHSCROLL
	CONTROL 		"As &Symbol" , 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
	DEFPUSHBUTTON		"OK" , 1, 158, 6, 47, 14
	PUSHBUTTON		"Cancel" , 2, 158, 23, 47, 14
	PUSHBUTTON		"&Help" , 254, 158, 43, 47, 14
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Select destination"
FONT 8, "MS Shell Dlg"
{
	CONTROL 		"", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
	CONTROL 		"&Path:" , -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
	EDITTEXT		201, 3, 29, 134, 12, ES_AUTOHSCROLL
	DEFPUSHBUTTON		"OK" , 1, 158, 6, 47, 14
	PUSHBUTTON		"Cancel" , 2, 158, 23, 47, 14
	PUSHBUTTON		"&Browse" , 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "By File Type"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Name:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "File Type",-1,7,23,87,56
    CONTROL         "&Directories",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programs",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "Docu&ments",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Other files",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Show Hidden/&System Files",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Properties for %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,191,29,50,14
    LTEXT           "&File Name:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Full &Path:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Last Change:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Version:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Cop&yright:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Size:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Attributes",-1,7,79,158,46
    CONTROL         "&Read Only",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "H&idden",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archive",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&System",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Compressed",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Version Information",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
	IDS_FONT_SEL_DLG_NAME	"Applying font settings"
	IDS_FONT_SEL_ERROR	"Error while selecting new font."
}

STRINGTABLE
{
 IDS_WINEFILE "Winefile"
 IDS_ERROR  "Error"
 IDS_ROOT_FS  "root fs"
 IDS_UNIXFS  "unixfs"
 IDS_DESKTOP  "Desktop"
 IDS_SHELL  "Shell"
 IDS_TITLEFMT "%s - %s"
 IDS_NO_IMPL  "Not yet implemented"
 IDS_WINE  "WINE"
 IDS_WINE_FILE "Wine File"
}

STRINGTABLE
{
 IDS_COL_NAME "Name"
 IDS_COL_SIZE "Size"
 IDS_COL_CDATE "CDate"
 IDS_COL_ADATE "ADate"
 IDS_COL_MDATE "MDate"
 IDS_COL_IDX  "Index/Inode"
 IDS_COL_LINKS "Links"
 IDS_COL_ATTR "Attributes"
 IDS_COL_SEC  "Security"
 IDS_FREE_SPACE_FMT "%s of %s free"
}
