/*
 * wineconsole resource definitions
 *
 * Copyright 2001 Eric Pouech
 *
 * 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
 */

/* strings */
#define IDS_EDIT		0x100
#define IDS_DEFAULT		0x101
#define IDS_PROPERTIES		0x102

#define IDS_MARK		0x110
#define IDS_COPY		0x111
#define IDS_PASTE		0x112
#define IDS_SELECTALL		0x113
#define IDS_SCROLL		0x114
#define IDS_SEARCH		0x115

#define IDS_DLG_TIT_DEFAULT     0x120
#define IDS_DLG_TIT_CURRENT     0x121

#define IDS_FNT_DISPLAY		0x200
#define IDS_FNT_PREVIEW_1	0x201
#define IDS_FNT_PREVIEW_2	0x202

#define IDD_OPTION		0x0100
#define IDD_FONT		0x0200
#define IDD_CONFIG		0x0300

/* dialog boxes */
#define IDC_OPT_CURSOR_SMALL	0x0101
#define IDC_OPT_CURSOR_MEDIUM	0x0102
#define IDC_OPT_CURSOR_LARGE	0x0103
#define IDC_OPT_HIST_SIZE	0x0104
#define IDC_OPT_HIST_SIZE_UD	0x0105
#define IDC_OPT_HIST_DOUBLE	0x0106
#define IDC_OPT_CONF_CTRL       0x0107
#define IDC_OPT_CONF_SHIFT      0x0108
#define IDC_OPT_QUICK_EDIT      0x0109

#define IDC_FNT_LIST_FONT	0x0201
#define IDC_FNT_LIST_SIZE	0x0202
#define IDC_FNT_COLOR_BK 	0x0203
#define IDC_FNT_COLOR_FG 	0x0204
#define IDC_FNT_FONT_INFO	0x0205
#define IDC_FNT_PREVIEW		0x0206

#define IDC_CNF_SB_WIDTH	0x0301
#define IDC_CNF_SB_WIDTH_UD	0x0302
#define IDC_CNF_SB_HEIGHT	0x0303
#define IDC_CNF_SB_HEIGHT_UD	0x0304
#define IDC_CNF_WIN_WIDTH	0x0305
#define IDC_CNF_WIN_WIDTH_UD	0x0306
#define IDC_CNF_WIN_HEIGHT	0x0307
#define IDC_CNF_WIN_HEIGHT_UD	0x0308
