/*
 * Program Manager
 *
 * Copyright 1996 Ulrich Schmid
 * Copyright 2002 Sylvain Petreolle
 * Copyright 2003 Ivan Leo Puoti
 * Copyright 2010 Luca Bennati
 *
 * 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_ITALIAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

/* Menu */

MAIN_MENU MENU
{
 POPUP "&File" {
   MENUITEM "&Nuovo...",              PM_NEW
   MENUITEM "&Apri\tInvio",             PM_OPEN
   MENUITEM "&Sposta...\tF7",             PM_MOVE,      GRAYED
   MENUITEM "&Copia...\tF8",             PM_COPY,      GRAYED
   MENUITEM "&Elimina\tEntf",           PM_DELETE
   MENUITEM "&Proprietà...\tAlt+Invio",       PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "&Esegui...",          PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "&Esci",             PM_EXIT
 }
 POPUP "&Opzioni" {
   MENUITEM "&Disposizione automatica",  PM_AUTO_ARRANGE
   MENUITEM "&Riduci a icona in esecuzione",    PM_MIN_ON_RUN
   MENUITEM "&Salva impostazioni in uscita", PM_SAVE_SETTINGS
 }
 POPUP "&F&inestra" {
   MENUITEM "&Sovrapponi\tShift+F5",       PM_OVERLAP
   MENUITEM "&A&ffianca\tShift+F4",  PM_SIDE_BY_SIDE
   MENUITEM "&Disponi icone",       PM_ARRANGE
 }
 
POPUP "&Aiuto" {
   MENUITEM "&Sommario",         PM_CONTENTS
   MENUITEM "&Ricerca...",           PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "&Aiuto sulla Guida",     PM_HELPONHELP
   MENUITEM "&Tutorial",         PM_TUTORIAL
   MENUITEM SEPARATOR

   POPUP "&Informazioni sul Gestore Del Programma" {
     MENUITEM "&Garanzia",    PM_NO_WARRANTY
     MENUITEM "&Informazioni su WINE",     PM_ABOUT_WINE
   }
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Nuovo"
{
RADIOBUTTON   "",                 PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "&Gruppo di programmi",   -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    "Annulla",      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",        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 "Sposta Programma"
{
LTEXT         "Sposta programma:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Dal gruppo:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Al gruppo:",   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    "Annulla",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",            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 "Copia Programma"
{
LTEXT         "Copia programma:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Dal gruppo:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Al gruppo:",   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    "Annulla",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",            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 "Proprietà del gruppo di Programmi"
{
LTEXT     "&Descrizione:", PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                            PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     "&File di gruppo:",        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    "Annulla",        IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",          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 "Proprietà del programma"
{
LTEXT         "&Descrizione:",  PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                   PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "&Linea di comando:", PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                                   PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "&Directory di &lavoro:",    PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                   PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "&Tasto di scelta rapida:",      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         "&Avvia ridotto a icona",       -1,             95, 75,  75, 10
DEFPUSHBUTTON "OK",                   IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Annulla",               IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Trova...",               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Cambia icona...", PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",                 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 "Cambia icona"
{
LTEXT     "&Nome del file:",    PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                         PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "I&cona corrente:", 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    "Annulla",     IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Cerca...",    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",       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 "Esegui programma"
{
LTEXT     "&Linea di comando:", -1,   05, 15, 120, 10
EDITTEXT                               PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                      PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "&Avvia ridotto a icona",   -1,   20, 45, 120, 10
DEFPUSHBUTTON "OK",               IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Annulla",           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Cerca...",          PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Aiuto",             PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE
{
IDS_PROGRAM_MANAGER,		"Gestore Programma"
IDS_ERROR,			"ERRORE"
IDS_WARNING,			"ATTENZIONE"
IDS_INFO,			"Informazioni"
IDS_DELETE,			"Elimina"
IDS_DELETE_GROUP_s,		"Eliminare il gruppo `%s' ?"
IDS_DELETE_PROGRAM_s,		"Eliminare `%s' ?"
IDS_NOT_IMPLEMENTED,		"Non implementato"
IDS_FILE_READ_ERROR_s,		"Errore di lettura `%s'."
IDS_FILE_WRITE_ERROR_s,		"Errore di scrittura `%s'."
IDS_GRPFILE_READ_ERROR_s,	"\
Il file di gruppo `%s' non può essere aperto.\n\
Provare ad aprirlo in futuro?"
IDS_OUT_OF_MEMORY,		"Memoria esaurita"
IDS_WINHELP_ERROR,		"Guida non disponibile"
IDS_UNKNOWN_FEATURE_s,		"Funzione sconosciuta nel file %s"
IDS_FILE_NOT_OVERWRITTEN_s,	"Il file `%s' esiste. Non sovrascritto."
IDS_SAVE_GROUP_AS_s,		"Salvare il gruppo come `%s' per non sovrascrivere i file originali"
IDS_NO_HOT_KEY,			"Nessuno"
IDS_ALL_FILES,			"Tutti i file (*.*)"
IDS_PROGRAMS,			"Programmi"
IDS_LIBRARIES_DLL,		"Librerie (*.dll)"
IDS_SYMBOL_FILES,		"File icona"
IDS_SYMBOLS_ICO,		"Icone (*.ico)"
}

STRINGTABLE DISCARDABLE
{
IDS_WARRANTY_CAPTION, "NESSUNA GARANZIA"
IDS_WARRANTY,
"Questo programma è distribuito nella speranza che sia utile, \
ma SENZA ALCUNA GARANZIA; pure senza la garanzia implicita di \
COMMERCIABILTÀ o ADEGUATEZZA PER UN PARTICOLARE SCOPO. Leggere la GNU \
Lesser General Public License per ulteriori informazioni."
}
