/*
 * Program Manager
 *
 * Copyright 1996 Ulrich Schmid
 *
 * 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
 */

/* Menu */

CONCAT(MENU_, LANGUAGE_ID) MENU
{
 POPUP MENU_FILE {
   MENUITEM MENU_FILE_NEW,              PM_NEW
   MENUITEM MENU_FILE_OPEN,             PM_OPEN
   MENUITEM MENU_FILE_MOVE,             PM_MOVE,      GRAYED
   MENUITEM MENU_FILE_COPY,             PM_COPY,      GRAYED
   MENUITEM MENU_FILE_DELETE,           PM_DELETE
   MENUITEM MENU_FILE_ATTRIBUTES,       PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM MENU_FILE_EXECUTE,          PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM MENU_FILE_EXIT,             PM_EXIT
 }
 POPUP MENU_OPTIONS {
   MENUITEM MENU_OPTIONS_AUTO_ARRANGE,  PM_AUTO_ARRANGE
   MENUITEM MENU_OPTIONS_MIN_ON_RUN,    PM_MIN_ON_RUN
   MENUITEM MENU_OPTIONS_SAVE_SETTINGS, PM_SAVE_SETTINGS
 }
 POPUP MENU_WINDOWS {
   MENUITEM MENU_WINDOWS_OVERLAP,       PM_OVERLAP
   MENUITEM MENU_WINDOWS_SIDE_BY_SIDE,  PM_SIDE_BY_SIDE
   MENUITEM MENU_WINDOWS_ARRANGE,       PM_ARRANGE
 }
 POPUP MENU_LANGUAGE {
   /* Dummy item, will be removed */
   MENUITEM SEPARATOR
 }
 POPUP MENU_HELP {
   MENUITEM MENU_HELP_CONTENTS,         PM_CONTENTS
   MENUITEM MENU_HELP_SEARCH,           PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM MENU_HELP_HELP_ON_HELP,     PM_HELPONHELP
   MENUITEM MENU_HELP_TUTORIAL,         PM_TUTORIAL
   MENUITEM SEPARATOR

   POPUP MENU_INFO {
     MENUITEM MENU_INFO_LICENSE,        PM_LICENSE
     MENUITEM MENU_INFO_NO_WARRANTY,    PM_NO_WARRANTY
     MENUITEM MENU_INFO_ABOUT_WINE,     PM_ABOUT_WINE
   }
 }
}

/* Dialog `New' */

CONCAT(DIALOG_NEW_, LANGUAGE_ID) DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_NEW_CAPTION
{
RADIOBUTTON   "",                 PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         DIALOG_NEW_GROUP,   PM_NEW_GROUP,    20, 18,  80, 15
RADIOBUTTON   "",                 PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         DIALOG_NEW_PROGRAM, PM_NEW_PROGRAM,  20, 38,  80, 15
DEFPUSHBUTTON DIALOG_OK,          IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,        PM_HELP,        105, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Move' */

CONCAT(DIALOG_MOVE_, LANGUAGE_ID) DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_MOVE_CAPTION
{
LTEXT         DIALOG_MOVE_PROGRAM,    IDIGNORE,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         DIALOG_MOVE_FROM_GROUP, IDIGNORE,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         DIALOG_MOVE_TO_GROUP,   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON DIALOG_OK,              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Copy' */

CONCAT(DIALOG_COPY_, LANGUAGE_ID) DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_COPY_CAPTION
{
LTEXT         DIALOG_COPY_PROGRAM,    IDIGNORE,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         DIALOG_COPY_FROM_GROUP, IDIGNORE,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         DIALOG_COPY_TO_GROUP,   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON DIALOG_OK,              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Group attributes' */

CONCAT(DIALOG_GROUP_, LANGUAGE_ID) DIALOG 0, 0, 230, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_GROUP_CAPTION
{
LTEXT     DIALOG_GROUP_DESCRIPTION, PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                            PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     DIALOG_GROUP_FILE,        PM_FILE_TXT,          05, 38,  50, 10
EDITTEXT                            PM_FILE,              60, 38,  90, 15, WS_TABSTOP
DEFPUSHBUTTON DIALOG_OK,            IDOK,                155,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,        IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,          PM_HELP,             155, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Program attributes' */

CONCAT(DIALOG_PROGRAM_, LANGUAGE_ID) DIALOG 0, 0, 250, 105
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_PROGRAM_CAPTION
{
LTEXT         DIALOG_PROGRAM_DESCRIPTION,  PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                   PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         DIALOG_PROGRAM_COMMAND_LINE, PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                                   PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         DIALOG_PROGRAM_DIRECTORY,    PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                   PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         DIALOG_PROGRAM_HOT_KEY,      PM_HOT_KEY_TXT,       05, 55,  60, 10
EDITTEXT                                   PM_HOT_KEY,           80, 55,  90, 15, WS_TABSTOP
ICON          "",                          PM_ICON,              20, 70
CHECKBOX      "",                          PM_SYMBOL,            80, 75,  10, 10, WS_TABSTOP
LTEXT         DIALOG_PROGRAM_SYMBOL,       IDIGNORE,             95, 75,  75, 10
DEFPUSHBUTTON DIALOG_OK,                   IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,               IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_BROWSE,               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_PROGRAM_OTHER_SYMBOL, PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,                 PM_HELP,             185, 85,  60, 15, WS_TABSTOP
}

/* Dialog `Symbol' */

CONCAT(DIALOG_SYMBOL_, LANGUAGE_ID) DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_SYMBOL_CAPTION
{
LTEXT     DIALOG_SYMBOL_FILE,    PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                         PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     DIALOG_SYMBOL_CURRENT, PM_SYMBOL_LIST_TXT,  5, 30, 125, 10
COMBOBOX                         PM_SYMBOL_LIST,      5, 40, 125, 50,
   CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_OWNERDRAWFIXED | WS_TABSTOP
DEFPUSHBUTTON DIALOG_OK,         IDOK,              135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,     IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_BROWSE ,    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,       PM_HELP,           135, 65,  60, 15, WS_TABSTOP
}

/* Dialog `Execute' */

CONCAT(DIALOG_EXECUTE_, LANGUAGE_ID) DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION DIALOG_EXECUTE_CAPTION
{
LTEXT     DIALOG_EXECUTE_COMMAND_LINE, IDIGNORE,   05, 15, 120, 10
EDITTEXT                               PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                      PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         DIALOG_EXECUTE_SYMBOL,   IDIGNORE,   20, 45, 120, 10
DEFPUSHBUTTON DIALOG_OK,               IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_CANCEL,           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_BROWSE ,          PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    DIALOG_HELP,             PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

#define STRING_LANGUAGE_ID        STRINGIFY(LANGUAGE_ID)
#define STRING_LANGUAGE_MENU_ITEM LANGUAGE_MENU_ITEM

STRINGTABLE
{
ADDSTRING(LANGUAGE_ID)
ADDSTRING(LANGUAGE_MENU_ITEM)
ADDSTRING(PROGRAM_MANAGER)
ADDSTRING(ERROR)
ADDSTRING(WARNING)
ADDSTRING(INFO)
ADDSTRING(DELETE)
ADDSTRING(DELETE_GROUP_s)
ADDSTRING(DELETE_PROGRAM_s)
ADDSTRING(NOT_IMPLEMENTED)
ADDSTRING(FILE_READ_ERROR_s)
ADDSTRING(FILE_WRITE_ERROR_s)
ADDSTRING(GRPFILE_READ_ERROR_s)
ADDSTRING(OUT_OF_MEMORY)
ADDSTRING(WINHELP_ERROR)
ADDSTRING(UNKNOWN_FEATURE_s)
ADDSTRING(FILE_NOT_OVERWRITTEN_s)
ADDSTRING(SAVE_GROUP_AS_s)
ADDSTRING(NO_HOT_KEY)
ADDSTRING(ALL_FILES)
ADDSTRING(PROGRAMS)
ADDSTRING(LIBRARIES_DLL)
ADDSTRING(SYMBOL_FILES)
ADDSTRING(SYMBOLS_ICO)
}


/* Undefine all language-specific strings */

#undef LANGUAGE_ID
#undef LANGUAGE_NUMBER
#undef LANGUAGE_MENU_ITEM

#undef MENU_FILE
#undef MENU_FILE_NEW
#undef MENU_FILE_OPEN
#undef MENU_FILE_MOVE
#undef MENU_FILE_COPY
#undef MENU_FILE_DELETE
#undef MENU_FILE_ATTRIBUTES
#undef MENU_FILE_EXECUTE
#undef MENU_FILE_EXIT
#undef MENU_OPTIONS
#undef MENU_OPTIONS_AUTO_ARRANGE
#undef MENU_OPTIONS_MIN_ON_RUN
#undef MENU_OPTIONS_SAVE_SETTINGS
#undef MENU_WINDOWS
#undef MENU_WINDOWS_OVERLAP
#undef MENU_WINDOWS_SIDE_BY_SIDE
#undef MENU_WINDOWS_ARRANGE
#undef MENU_LANGUAGE
#undef MENU_HELP
#undef MENU_HELP_CONTENTS
#undef MENU_HELP_SEARCH
#undef MENU_HELP_HELP_ON_HELP
#undef MENU_HELP_TUTORIAL
#undef MENU_INFO
#undef MENU_INFO_LICENSE
#undef MENU_INFO_NO_WARRANTY
#undef MENU_INFO_ABOUT_WINE

#undef DIALOG_OK
#undef DIALOG_CANCEL
#undef DIALOG_BROWSE
#undef DIALOG_HELP
#undef DIALOG_NEW_CAPTION
#undef DIALOG_NEW_NEW
#undef DIALOG_NEW_GROUP
#undef DIALOG_NEW_PROGRAM
#undef DIALOG_MOVE_CAPTION
#undef DIALOG_MOVE_PROGRAM
#undef DIALOG_MOVE_FROM_GROUP
#undef DIALOG_MOVE_TO_GROUP
#undef DIALOG_COPY_CAPTION
#undef DIALOG_COPY_PROGRAM
#undef DIALOG_COPY_FROM_GROUP
#undef DIALOG_COPY_TO_GROUP
#undef DIALOG_GROUP_CAPTION
#undef DIALOG_GROUP_DESCRIPTION
#undef DIALOG_GROUP_FILE
#undef DIALOG_PROGRAM_CAPTION
#undef DIALOG_PROGRAM_DESCRIPTION
#undef DIALOG_PROGRAM_COMMAND_LINE
#undef DIALOG_PROGRAM_DIRECTORY
#undef DIALOG_PROGRAM_HOT_KEY
#undef DIALOG_PROGRAM_SYMBOL
#undef DIALOG_PROGRAM_OTHER_SYMBOL
#undef DIALOG_SYMBOL_CAPTION
#undef DIALOG_SYMBOL_FILE
#undef DIALOG_SYMBOL_CURRENT
#undef DIALOG_EXECUTE_CAPTION
#undef DIALOG_EXECUTE_COMMAND_LINE
#undef DIALOG_EXECUTE_SYMBOL

#undef STRING_LANGUAGE_ID
#undef STRING_LANGUAGE_MENU_ITEM
#undef STRING_PROGRAM_MANAGER
#undef STRING_ERROR
#undef STRING_WARNING
#undef STRING_INFO
#undef STRING_DELETE
#undef STRING_DELETE_GROUP_s
#undef STRING_DELETE_PROGRAM_s
#undef STRING_NOT_IMPLEMENTED
#undef STRING_FILE_READ_ERROR_s
#undef STRING_FILE_WRITE_ERROR_s
#undef STRING_GRPFILE_READ_ERROR_s
#undef STRING_OUT_OF_MEMORY
#undef STRING_WINHELP_ERROR
#undef STRING_UNKNOWN_FEATURE_s
#undef STRING_FILE_NOT_OVERWRITTEN_s
#undef STRING_SAVE_GROUP_AS_s
#undef STRING_NO_HOT_KEY
#undef STRING_ALL_FILES
#undef STRING_PROGRAMS
#undef STRING_LIBRARIES_DLL
#undef STRING_SYMBOL_FILES
#undef STRING_SYMBOLS_ICO
