/*
 * Program Manager
 *
 * Copyright 1996 Ulrich Schmid
 * Copyright 2002 Sylvain Petreolle
 * Copyright 2010 Igor Paliychuk
 *
 * 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 "progman.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT

/* Menu */

MAIN_MENU MENU
{
 POPUP "&Файл" {
   MENUITEM "&Створити...",              	PM_NEW
   MENUITEM "Відк&рити\tEnter",             	PM_OPEN
   MENUITEM "&Перемістити...\tF7",             	PM_MOVE,      GRAYED
   MENUITEM "&Копіювати...\tF8",             	PM_COPY,      GRAYED
   MENUITEM "Ви&далити\tEntf",           	PM_DELETE
   MENUITEM "В&ластивості...\tAlt+Enter",       PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "&Виконати...",          		PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "Ви&хід...",             		PM_EXIT
 }
 POPUP "&Параметри" {
   MENUITEM "&Впорядкувати автоматично",  		PM_AUTO_ARRANGE
   MENUITEM "&Згорнути при старті",    			PM_MIN_ON_RUN
   MENUITEM "Зберегти &налаштування при виході", 	PM_SAVE_SETTINGS
 }
 POPUP "&Вікна" {
   MENUITEM "&Каскад\tShift+F5",       	PM_OVERLAP
   MENUITEM "&Поруч\tShift+F4",  	PM_SIDE_BY_SIDE
   MENUITEM "&Впорядкувати значки",     PM_ARRANGE
 }

POPUP "&Допомога" {
   MENUITEM "&Зміст",         		PM_CONTENTS
   MENUITEM "По&шук...",           	PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "&Використання Довідки",	PM_HELPONHELP
   MENUITEM "По&сібник",         	PM_TUTORIAL
   MENUITEM SEPARATOR
   MENUITEM "&Про Wine",     		PM_ABOUT_WINE
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Створити"
{
RADIOBUTTON   "",                 PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "&Групу програм",   -1,    20, 18,  80, 15
RADIOBUTTON   "",                 PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         "&Програму", -1,  20, 38,  80, 15
DEFPUSHBUTTON "OK",          IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Допомога",        PM_HELP,        105, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Move' */

DIALOG_MOVE DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Перемістити програму"
{
LTEXT         "Перемістити програму:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "З групи:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&В групу:",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "OK",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Copy' */

DIALOG_COPY DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Копіювати програму"
{
LTEXT         "Копіювати програму:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "З групи:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&В групу:",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "OK",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Group attributes' */

DIALOG_GROUP DIALOG 0, 0, 230, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Властивості програмної групи"
{
LTEXT     "&Опис:", PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                            PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     "&Файл групи:",        PM_FILE_TXT,          05, 38,  50, 10
EDITTEXT                            PM_FILE,              60, 38,  90, 15, WS_TABSTOP
DEFPUSHBUTTON "OK",            IDOK,                155,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",        IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",          PM_HELP,             155, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Program attributes' */

DIALOG_PROGRAM DIALOG 0, 0, 250, 105
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Властивості програми"
{
LTEXT         "&Опис:",  PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                   PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "&Командний рядок:", PM_COMMAND_LINE_TXT,  05, 25,  62, 10
EDITTEXT                                   PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "&Робоча тека:",    PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                   PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "&Сполучення клавіш:",      PM_HOT_KEY_TXT,       05, 55,  68, 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         "&Згорнути при старті",       -1,             95, 75,  75, 10
DEFPUSHBUTTON "OK",                   IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",               IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Огляд...",               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "Змінити зна&чок...", PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",                 PM_HELP,             185, 85,  60, 15, WS_TABSTOP
}

/* Dialog `Symbol' */

DIALOG_SYMBOL DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Зміна значка"
{
LTEXT     "&Ім'я файлу:",    PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                         PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "Поточний зна&чок:", 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 "OK",         IDOK,              135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",     IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Огляд...",    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",       PM_HELP,           135, 65,  60, 15, WS_TABSTOP
}

/* Dialog `Execute' */

DIALOG_EXECUTE DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Виконати програму"
{
LTEXT     "&Командний рядок:", -1,   05, 15, 120, 10
EDITTEXT                               PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                      PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "&Згорнути при старті",   -1,   20, 45, 120, 10
DEFPUSHBUTTON "OK",               IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Скасувати",           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Огляд...",          PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Довідка",             PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE
{
IDS_PROGRAM_MANAGER,		"Диспетчер програм"
IDS_ERROR,			"ПОМИЛКА"
IDS_WARNING,			"УВАГА"
IDS_INFO,			"Інформація"
IDS_DELETE,			"Видалити"
IDS_DELETE_GROUP_s,		"Видалити групу `%s' ?"
IDS_DELETE_PROGRAM_s,		"Видалити програму `%s' ?"
IDS_NOT_IMPLEMENTED,		"Не реалізовано"
IDS_FILE_READ_ERROR_s,		"Помилка читання `%s'."
IDS_FILE_WRITE_ERROR_s,		"Помикла запису `%s'."
IDS_GRPFILE_READ_ERROR_s,	"\
Файл групи `%s' неможливо відкрити.\n\
Спробувати знов наступного разу?"
IDS_OUT_OF_MEMORY,		"Замало пам'яті."
IDS_WINHELP_ERROR,		"Довідка не доступна."
IDS_UNKNOWN_FEATURE_s,		"Невідома ознака в %s"
IDS_FILE_NOT_OVERWRITTEN_s,	"Файл `%s' існує. Він не був перезаписаний."
IDS_SAVE_GROUP_AS_s,		"Група зберігається як `%s' щоб уникнути перезапис оригіналів."
IDS_NO_HOT_KEY,			"Немає"
IDS_ALL_FILES,			"Всі файли (*.*)"
IDS_PROGRAMS,			"Програми"
IDS_LIBRARIES_DLL,		"Бібліотеки (*.dll)"
IDS_SYMBOL_FILES,		"Файли значків"
IDS_SYMBOLS_ICO,		"Значки (*.ico)"
}
