/*
* Add/Remove Programs resources
*
* Copyright 2001-2002, 2008 Owen Rudge
*
* 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 "res.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
   IDS_CPL_TITLE, "Add/Remove Programs"
   IDS_CPL_DESC, "Allows you to install new software, or remove existing software from your computer."
   IDS_TAB1_TITLE, "Applications"

   IDS_UNINSTALL_FAILED, "Unable to execute the uninstaller, '%s'. Do you want to remove the uninstall entry for this program from the registry?"
   IDS_NOT_SPECIFIED, "Not specified"

   IDS_COLUMN_NAME, "Name"
   IDS_COLUMN_PUBLISHER, "Publisher"
   IDS_COLUMN_VERSION, "Version"
   IDS_FILTER_INSTALLS, "Installation programs"
   IDS_FILTER_PROGRAMS, "Programs (*.exe)"
   IDS_FILTER_ALL,      "All files (*.*)"

   IDS_REMOVE, "&Remove"
   IDS_MODIFY_REMOVE, "&Modify/Remove"
}

STRINGTABLE
{
    IDS_DOWNLOADING     "Downloading..."
    IDS_INSTALLING      "Installing..."
    IDS_INVALID_SHA     "Unexpected checksum of downloaded file. Aborting installation of corrupted file."
}

IDD_MAIN DIALOG 0, 0, 320, 220
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Install/Uninstall"
FONT 8, "MS Shell Dlg"
{
 CONTROL "To install a new program from a floppy disk, CD-ROM drive, or your hard drive, click Install.", 1000, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 7, 270, 20
 CONTROL "&Install...", IDC_INSTALL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 246, 26, 64, 14
 CONTROL "", -1, "STATIC", SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 7, 46, 303, 1
 CONTROL 2, 1001, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20
 CONTROL "The following software can be automatically removed. To remove a program or to modify its installed components, select it from the list and click Change/Remove.", 1002, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 54, 275, 34
 CONTROL "", IDL_PROGRAMS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SORTASCENDING | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 90, 303, 100
 CONTROL "&Support Information", IDC_SUPPORT_INFO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 34, 198, 90, 14
 CONTROL "&Modify...", IDC_MODIFY, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 198, 90, 14
 CONTROL "&Remove", IDC_ADDREMOVE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 222, 198, 90, 14
 CONTROL 3, 1003, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 57, 21, 20
}

IDD_INFO DIALOG 0, 0, 256, 138
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Support Information"
FONT 8, "MS Shell Dlg"
{
 CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 6, 120, 50, 14
 CONTROL "The following information can be used to get technical support for %s:", IDC_INFO_LABEL, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 8, 220, 24
 CONTROL "Publisher:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 35, 90, 8
 CONTROL "Version:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 45, 90, 8
 CONTROL "Contact:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 55, 90, 8
 CONTROL "Support Information:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 65, 90, 8
 CONTROL "Support Telephone:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 75, 90, 8
 CONTROL "Readme:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 85, 90, 8
 CONTROL "Product Updates:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 95, 90, 8
 CONTROL "Comments:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 105, 90, 8
 CONTROL "", IDC_INFO_PUBLISHER, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 35, 150, 8
 CONTROL "", IDC_INFO_VERSION, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 45, 150, 8
 CONTROL "", IDC_INFO_CONTACT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 55, 150, 8
 CONTROL "", IDC_INFO_SUPPORT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 65, 150, 8
 CONTROL "", IDC_INFO_PHONE, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 75, 150, 8
 CONTROL "", IDC_INFO_README, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 85, 150, 8
 CONTROL "", IDC_INFO_UPDATES, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 95, 150, 8
 CONTROL "", IDC_INFO_COMMENTS, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 100, 105, 150, 8
}

ID_DWL_DIALOG DIALOG  0, 0, 260, 95
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wine Gecko Installer"
FONT 8, "MS Shell Dlg"
{
    CONTROL "Wine could not find a Gecko package which is needed for applications embedding HTML " \
          "to work correctly. Wine can automatically download and install it for you.\n\n" \
          "Note: it is recommended to use your distribution's packages instead. " \
          "See <a href=\"http://wiki.winehq.org/Gecko\">http://wiki.winehq.org/Gecko</a> for details.",
          ID_DWL_STATUS, "SysLink", 0, 10, 10, 240, 65
    CONTROL "", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
    DEFPUSHBUTTON "&Install", ID_DWL_INSTALL, 200, 76, 50, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Cancel", IDCANCEL, 144, 76, 50, 14, WS_GROUP | WS_TABSTOP
}

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/* @makedep: appwiz.ico */
ICO_MAIN ICON "appwiz.ico"
