/*
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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
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

