/*
 * Program Manager (Dutch resources)
 *
 * Copyright 2003 Hans Leidekker
 *
 * 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"

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

#pragma code_page(65001)

/* Menu */

MAIN_MENU MENU
{
 POPUP "&Bestand" {
   MENUITEM "&Nieuw...",                    PM_NEW
   MENUITEM "&Openen\tEnter",               PM_OPEN
   MENUITEM "Ve&rplaatsen...\tF7",          PM_MOVE,      GRAYED
   MENUITEM "&Kopiëren...\tF8",             PM_COPY,      GRAYED
   MENUITEM "&Verwijderen\tEntf",           PM_DELETE
   MENUITEM "&Eigenschappen...\tAlt+Enter", PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "&Uitvoeren...",                PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "&Afsluiten...",                PM_EXIT
 }
 POPUP "&Opties" {
   MENUITEM "&Automatisch rangschikken",           PM_AUTO_ARRANGE
   MENUITEM "&Geminimaliseerd uitvoeren",          PM_MIN_ON_RUN
   MENUITEM "&Instellingen opslaan bij afsluiten", PM_SAVE_SETTINGS
 }
 POPUP "&Venster" {
   MENUITEM "&Trapsgewijs\tShift+F5",  PM_OVERLAP
   MENUITEM "&Naast elkaar\tShift+F4", PM_SIDE_BY_SIDE
   MENUITEM "&Pictogrammen schikken",  PM_ARRANGE
 }
 
POPUP "&Help" {
   MENUITEM "Help-onder&werpen", PM_CONTENTS
   MENUITEM "&Zoeken...",        PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "&Hulp bij Help",    PM_HELPONHELP
   MENUITEM "&Instructie",       PM_TUTORIAL
   MENUITEM SEPARATOR
   MENUITEM "&Over Wine",     PM_ABOUT_WINE
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Nieuw"
{
RADIOBUTTON   "",                PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "Pr&ogrammagroep", -1,    20, 18,  80, 15
RADIOBUTTON   "",                PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         "&Programma",      -1,  20, 38,  80, 15
DEFPUSHBUTTON "OK",              IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Annuleren",       IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",           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 "Programma verplaatsen"
{
LTEXT         "Verplaats programma:", -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Van groep:",           -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Naar groep:",         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    "Annuleren",            IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",                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 "Programma kopiëren"
{
LTEXT         "Kopiëer programma:",    -1,            5,  5,  90, 15
LTEXT         "",                      PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Van programmagroep:",   -1,            5, 13,  90, 15
LTEXT         "",                      PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Naar programmagroep:", 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    "Annuleren",             IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",                 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 "Eigenschappen van de programmagroep"
{
LTEXT     "B&eschrijving:", PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                    PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT    "&Groepsbestand:", 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    "Annuleren",  IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",      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 "Programma-eigenschappen"
{
LTEXT         "B&eschrijving:",             PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                    PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "&Opdrachtregel:",            PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                                    PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "Werk&map:",                  PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                    PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "&Sneltoets:",                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         "&Geminimaliseerd uitvoeren", -1,             95, 75,  75, 10
DEFPUSHBUTTON "OK",                         IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Annuleren",                  IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Bladeren...",               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "Pictogram &wijzigen...",     PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",                      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 "Pictogram wijzigen"
{
LTEXT     "Bestands&naam:",     PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                        PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "Hui&dig pictogram:", 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    "Annuleren",       IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Bladeren...",    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",           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 "Programma uitvoeren"
{
LTEXT         "&Opdrachtregel:",                -1,   05, 15, 120, 10
EDITTEXT                                        PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                               PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "&Minimaliseren bij het starten", -1,   20, 45, 120, 10
DEFPUSHBUTTON "OK",                             IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Annuleren",                      IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Bladeren...",                   PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Help",                          PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE
{
IDS_PROGRAM_MANAGER,		"Programmabeheer"
IDS_ERROR,			"FOUT"
IDS_WARNING,			"WAARSCHUWING"
IDS_INFO,			"Informatie"
IDS_DELETE,			"Verwijderen"
IDS_DELETE_GROUP_s,		"Wilt u groep `%s' verwijderen?"
IDS_DELETE_PROGRAM_s,		"Wilt u programma `%s' verwijderen?"
IDS_NOT_IMPLEMENTED,		"Niet geïmplementeerd"
IDS_FILE_READ_ERROR_s,		"Fout bij het lezen van `%s'."
IDS_FILE_WRITE_ERROR_s,		"Fout bij het schrijven van `%s'."
IDS_GRPFILE_READ_ERROR_s,	"\
Het groepsbestand `%s' kan niet worden geopend.\n\
Wilt u het nogmaals proberen?"
IDS_OUT_OF_MEMORY,		"Geen geheugen beschikbaar."
IDS_WINHELP_ERROR,		"Help is niet beschikbaar."
IDS_UNKNOWN_FEATURE_s,		"Onbekende eigenschap in %s"
IDS_FILE_NOT_OVERWRITTEN_s,	"Het bestand `%s' bestaat reeds. Het is niet overschreven."
IDS_SAVE_GROUP_AS_s,		"Groep opslaan als `%s om het overschrijven van originele bestanden te voorkomen."
IDS_NO_HOT_KEY,			"Geen"
IDS_ALL_FILES,			"Alle bestanden (*.*)"
IDS_PROGRAMS,			"Programma's"
IDS_LIBRARIES_DLL,		"Programmabibliotheekbestanden (*.dll)"
IDS_SYMBOL_FILES,		"Pictogrambestanden"
IDS_SYMBOLS_ICO,		"Pictogrammen (*.ico)"
}
