/*
 * Program Manager
 *
 * Copyright 1996 Ulrich Schmid
 */

/* 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
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
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
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
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
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
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
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

