/*
 * Winetest resources
 *
 * Copyright 2004 Ferenc Wagner
 *
 * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <windef.h>
#include <winuser.h>
#include <commctrl.h>

#include "resource.h"

#ifdef BUILD_SHA1
STRINGTABLE
BEGIN
    IDS_BUILD_ID BUILD_SHA1
END
#endif

IDD_TAG DIALOG 0, 0, 150, 65
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "No tag supplied"
BEGIN
    CTEXT "Please supply a tag for your report.  You can use letters, digits, dashes and periods."
        IDC_STATIC, 10, 5, 130, 30
    EDITTEXT IDC_TAG, 35, 30, 80, 10, ES_AUTOHSCROLL
    DEFPUSHBUTTON "Start", IDOK, 25, 45, 40, 14
    PUSHBUTTON    "Abort", IDABORT, 85, 45, 40, 14
END

IDD_STATUS DIALOG 0, 0, 160, 150
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "Wine Test Shell"
BEGIN
    LTEXT   "Extracting:",       IDC_ST0,        10,   5, 140, 10
    CONTROL "PB0", IDC_PB0, PROGRESS_CLASS, 0,    5,  15, 150, 10
    LTEXT   "Running:",          IDC_ST1,        10,  30, 140, 10
    CONTROL "PB1", IDC_PB1, PROGRESS_CLASS, 0,    5,  40, 150, 15
    LTEXT   "Network transfer:", IDC_ST2,        10,  60, 140, 10
    CONTROL "PB2", IDC_PB2, PROGRESS_CLASS, 0,    5,  70, 150, 10
                                               
    LTEXT   "Tag:",               IDC_STATIC,    10,  89, 100, 10
    EDITTEXT                      IDC_TAG,       25,  88, 125, 10,
             ES_READONLY
    LTEXT   "Working directory:", IDC_STATIC,    10, 100, 100, 10
    EDITTEXT                      IDC_DIR,       71,  99,  79, 10,
             ES_READONLY | ES_AUTOHSCROLL
    LTEXT   "Output file:",       IDC_STATIC,    10, 111, 100, 10
    EDITTEXT                      IDC_OUT,       46, 110, 104, 10,
             ES_READONLY | ES_AUTOHSCROLL

    DEFPUSHBUTTON "About", IDHELP,               20, 123,  30, 14
    PUSHBUTTON    "Edit",  IDCANCEL,             65, 123,  30, 14,
                   WS_DISABLED
    PUSHBUTTON    "Stop",  IDABORT,             110, 123,  30, 14

    CONTROL "Created", IDC_SB, STATUSCLASSNAME, 0, 0,0,0,0
END

IDD_ABOUT DIALOG 0, 0, 150, 60
STYLE WS_POPUP
CAPTION "About Wine Test Shell"
BEGIN
    CTEXT "This program extracts and runs a series of tests which check Wine's conformance to the Windows API.",
        IDC_STATIC, 10, 5, 130, 30
    DEFPUSHBUTTON "Close", IDCANCEL, 55, 40, 40, 14
END

/* @makedep: winetest.ico */
IDI_WINE ICON "winetest.ico"

/* list of tests (automatically generated by make_makefiles) */

advapi32_test.exe TESTRES "advapi32_test.exe"
advpack_test.exe TESTRES "advpack_test.exe"
browseui_test.exe TESTRES "browseui_test.exe"
cabinet_test.exe TESTRES "cabinet_test.exe"
comcat_test.exe TESTRES "comcat_test.exe"
comctl32_test.exe TESTRES "comctl32_test.exe"
comdlg32_test.exe TESTRES "comdlg32_test.exe"
credui_test.exe TESTRES "credui_test.exe"
crypt32_test.exe TESTRES "crypt32_test.exe"
cryptnet_test.exe TESTRES "cryptnet_test.exe"
d3d8_test.exe TESTRES "d3d8_test.exe"
d3d9_test.exe TESTRES "d3d9_test.exe"
d3drm_test.exe TESTRES "d3drm_test.exe"
d3dx8_test.exe TESTRES "d3dx8_test.exe"
d3dx9_36_test.exe TESTRES "d3dx9_36_test.exe"
ddraw_test.exe TESTRES "ddraw_test.exe"
dinput_test.exe TESTRES "dinput_test.exe"
dnsapi_test.exe TESTRES "dnsapi_test.exe"
dplayx_test.exe TESTRES "dplayx_test.exe"
dsound_test.exe TESTRES "dsound_test.exe"
fusion_test.exe TESTRES "fusion_test.exe"
gdi32_test.exe TESTRES "gdi32_test.exe"
gdiplus_test.exe TESTRES "gdiplus_test.exe"
hlink_test.exe TESTRES "hlink_test.exe"
imm32_test.exe TESTRES "imm32_test.exe"
inetcomm_test.exe TESTRES "inetcomm_test.exe"
inetmib1_test.exe TESTRES "inetmib1_test.exe"
infosoft_test.exe TESTRES "infosoft_test.exe"
iphlpapi_test.exe TESTRES "iphlpapi_test.exe"
itss_test.exe TESTRES "itss_test.exe"
jscript_test.exe TESTRES "jscript_test.exe"
kernel32_test.exe TESTRES "kernel32_test.exe"
localspl_test.exe TESTRES "localspl_test.exe"
localui_test.exe TESTRES "localui_test.exe"
lz32_test.exe TESTRES "lz32_test.exe"
mapi32_test.exe TESTRES "mapi32_test.exe"
mlang_test.exe TESTRES "mlang_test.exe"
msacm32_test.exe TESTRES "msacm32_test.exe"
mscms_test.exe TESTRES "mscms_test.exe"
mshtml_test.exe TESTRES "mshtml_test.exe"
msi_test.exe TESTRES "msi_test.exe"
msvcrt_test.exe TESTRES "msvcrt_test.exe"
msvcrtd_test.exe TESTRES "msvcrtd_test.exe"
msxml3_test.exe TESTRES "msxml3_test.exe"
netapi32_test.exe TESTRES "netapi32_test.exe"
ntdll_test.exe TESTRES "ntdll_test.exe"
ntdsapi_test.exe TESTRES "ntdsapi_test.exe"
ntprint_test.exe TESTRES "ntprint_test.exe"
odbccp32_test.exe TESTRES "odbccp32_test.exe"
ole32_test.exe TESTRES "ole32_test.exe"
oleaut32_test.exe TESTRES "oleaut32_test.exe"
opengl32_test.exe TESTRES "opengl32_test.exe"
pdh_test.exe TESTRES "pdh_test.exe"
psapi_test.exe TESTRES "psapi_test.exe"
qedit_test.exe TESTRES "qedit_test.exe"
qmgr_test.exe TESTRES "qmgr_test.exe"
quartz_test.exe TESTRES "quartz_test.exe"
rasapi32_test.exe TESTRES "rasapi32_test.exe"
riched20_test.exe TESTRES "riched20_test.exe"
riched32_test.exe TESTRES "riched32_test.exe"
rpcrt4_test.exe TESTRES "rpcrt4_test.exe"
rsaenh_test.exe TESTRES "rsaenh_test.exe"
schannel_test.exe TESTRES "schannel_test.exe"
secur32_test.exe TESTRES "secur32_test.exe"
serialui_test.exe TESTRES "serialui_test.exe"
setupapi_test.exe TESTRES "setupapi_test.exe"
shdocvw_test.exe TESTRES "shdocvw_test.exe"
shell32_test.exe TESTRES "shell32_test.exe"
shlwapi_test.exe TESTRES "shlwapi_test.exe"
snmpapi_test.exe TESTRES "snmpapi_test.exe"
spoolss_test.exe TESTRES "spoolss_test.exe"
urlmon_test.exe TESTRES "urlmon_test.exe"
user32_test.exe TESTRES "user32_test.exe"
userenv_test.exe TESTRES "userenv_test.exe"
usp10_test.exe TESTRES "usp10_test.exe"
uxtheme_test.exe TESTRES "uxtheme_test.exe"
version_test.exe TESTRES "version_test.exe"
winhttp_test.exe TESTRES "winhttp_test.exe"
wininet_test.exe TESTRES "wininet_test.exe"
winmm_test.exe TESTRES "winmm_test.exe"
winspool.drv_test.exe TESTRES "winspool.drv_test.exe"
wintrust_test.exe TESTRES "wintrust_test.exe"
ws2_32_test.exe TESTRES "ws2_32_test.exe"
