/*
 * Copyright 2004 by Krzysztof Foltman
 * Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
 *
 * 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 "wordpad.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

IDM_MAINMENU MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "&New...\tCtrl+N",       ID_FILE_NEW
        MENUITEM "&Open...\tCtrl+O",      ID_FILE_OPEN
        MENUITEM "&Save\tCtrl+S",         ID_FILE_SAVE
        MENUITEM "Save &as...",           ID_FILE_SAVEAS
        MENUITEM SEPARATOR
        MENUITEM "&Print...\tCtrl+P",     ID_PRINT
        MENUITEM "Print previe&w",        ID_PREVIEW
        MENUITEM "Page Se&tup...",        ID_PRINTSETUP
        MENUITEM SEPARATOR
        MENUITEM "E&xit",                 ID_FILE_EXIT
    END
    POPUP "&Edit"
    BEGIN
        MENUITEM "&Undo\tCtrl+Z",               ID_EDIT_UNDO
        MENUITEM "R&edo\tCtrl+Y",               ID_EDIT_REDO
        MENUITEM SEPARATOR
        MENUITEM "Cu&t\tCtrl+X",                ID_EDIT_CUT
        MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY
        MENUITEM "&Paste\tCtrl+V",              ID_EDIT_PASTE
        MENUITEM "&Clear\tDel",                 ID_EDIT_CLEAR
        MENUITEM "&Select all\tCtrl+A",         ID_EDIT_SELECTALL
        MENUITEM SEPARATOR
        MENUITEM "&Find...\tCtrl+F",            ID_FIND
        MENUITEM "Find &next\tF3",              ID_FIND_NEXT
        MENUITEM "&Replace...\tCtrl+H",         ID_REPLACE
        MENUITEM SEPARATOR
        MENUITEM "Read-&only",                  ID_EDIT_READONLY
        MENUITEM "&Modified",                   ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "E&xtras"
        BEGIN
            MENUITEM "Selection &info",             ID_EDIT_SELECTIONINFO
            MENUITEM "Character &format",           ID_EDIT_CHARFORMAT
            MENUITEM "&Def. char format",           ID_EDIT_DEFCHARFORMAT
            MENUITEM "Paragrap&h format",           ID_EDIT_PARAFORMAT
            MENUITEM "&Get text",                   ID_EDIT_GETTEXT
        END
    END
    POPUP "&View"
    BEGIN
        MENUITEM "&Toolbar",        ID_TOGGLE_TOOLBAR
        MENUITEM "&Format Bar",     ID_TOGGLE_FORMATBAR
        MENUITEM "&Ruler",          ID_TOGGLE_RULER
        MENUITEM "&Status Bar",     ID_TOGGLE_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Options...",     ID_VIEWPROPERTIES
    END
    POPUP "&Insert"
    BEGIN
        MENUITEM "&Date and time...",  ID_DATETIME
    END
    POPUP "F&ormat"
    BEGIN
        MENUITEM "&Font...",                     ID_FONTSETTINGS
        MENUITEM "&Bullet points"                ID_BULLET
        MENUITEM "&Paragraph..."                 ID_PARAFORMAT
        MENUITEM "&Tabs..."                      ID_TABSTOPS
        POPUP "Backgroun&d"
        BEGIN
            MENUITEM "&System\tCtrl+1",         ID_BACK_1
            MENUITEM "&Pale yellow\tCtrl+2",           ID_BACK_2
        END
    END
    POPUP "&Help"
    BEGIN
        MENUITEM "&About Wine Wordpad"       ID_ABOUT
    END
END

IDM_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "Cu&t",                ID_EDIT_CUT
        MENUITEM "&Copy",               ID_EDIT_COPY
        MENUITEM "&Paste",              ID_EDIT_PASTE
        MENUITEM SEPARATOR
        MENUITEM "&Bullet points"       ID_BULLET
        MENUITEM "&Paragraph..."        ID_PARAFORMAT
    END
END

IDM_COLOR_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "Black",      ID_COLOR_BLACK
        MENUITEM "Maroon",     ID_COLOR_MAROON
        MENUITEM "Green",      ID_COLOR_GREEN
        MENUITEM "Olive"       ID_COLOR_OLIVE
        MENUITEM "Navy"        ID_COLOR_NAVY
        MENUITEM "Purple"      ID_COLOR_PURPLE
        MENUITEM "Teal"        ID_COLOR_TEAL
        MENUITEM "Gray"        ID_COLOR_GRAY
        MENUITEM "Silver"      ID_COLOR_SILVER
        MENUITEM "Red"         ID_COLOR_RED
        MENUITEM "Lime"        ID_COLOR_LIME
        MENUITEM "Yellow"      ID_COLOR_YELLOW
        MENUITEM "Blue"        ID_COLOR_BLUE
        MENUITEM "Fuchsia"     ID_COLOR_FUCHSIA
        MENUITEM "Aqua"        ID_COLOR_AQUA
        MENUITEM "White"       ID_COLOR_WHITE
        MENUITEM "Automatic"   ID_COLOR_AUTOMATIC
    END
END

STRINGTABLE
BEGIN
    STRING_ALL_FILES,              "All documents (*.*)"
    STRING_TEXT_FILES_TXT,         "Text documents (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "Unicode text document (*.txt)"
    STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
    STRING_NEWFILE_RICHTEXT,       "Rich text document"
    STRING_NEWFILE_TXT,            "Text document"
    STRING_NEWFILE_TXT_UNICODE,    "Unicode text document"
    STRING_PRINTER_FILES_PRN,      "Printer files (*.prn)"
END

STRINGTABLE
BEGIN
    STRING_ALIGN_LEFT,            "Left"
    STRING_ALIGN_RIGHT,           "Right"
    STRING_ALIGN_CENTER,          "Center"
END

STRINGTABLE
BEGIN
    STRING_VIEWPROPS_TITLE,          "Options"
    STRING_VIEWPROPS_TEXT,           "Text"
    STRING_VIEWPROPS_RICHTEXT,       "Rich text"
END

STRINGTABLE
BEGIN
    STRING_PREVIEW_PRINT,            "Print"
    STRING_PREVIEW_NEXTPAGE,         "Next page"
    STRING_PREVIEW_PREVPAGE,         "Previous page"
    STRING_PREVIEW_TWOPAGES,         "Two pages"
    STRING_PREVIEW_ONEPAGE,          "One page"
    STRING_PREVIEW_ZOOMIN,           "Zoom in"
    STRING_PREVIEW_ZOOMOUT,          "Zoom out"
    STRING_PREVIEW_CLOSE,            "Close"
    STRING_PREVIEW_PAGE,             "Page"
    STRING_PREVIEW_PAGES,            "Pages"
    STRING_UNITS_CM,                 "#msgctxt#unit: centimeter#cm"
    STRING_UNITS_IN,                 "#msgctxt#unit: inch#in"
    STRING_UNITS_INCH,               "inch"
    STRING_UNITS_PT,                 "#msgctxt#unit: point#pt"
END

STRINGTABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "Document"
    STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
    STRING_SEARCH_FINISHED,      "Finished searching the document."
    STRING_LOAD_RICHED_FAILED,   "Failed to load the RichEdit library."
    STRING_SAVE_LOSEFORMATTING,  "You have chosen to save in plain text format, " \
                                 "which will cause all formatting to be lost. " \
                                 "Are you sure that you wish to do this?"
    STRING_INVALID_NUMBER,       "Invalid number format."
    STRING_OLE_STORAGE_NOT_SUPPORTED, "OLE storage documents are not supported."
    STRING_WRITE_FAILED,              "Could not save the file."
    STRING_WRITE_ACCESS_DENIED,       "You do not have access to save the file."
    STRING_OPEN_FAILED,               "Could not open the file."
    STRING_OPEN_ACCESS_DENIED,        "You do not have access to open the file."
    STRING_PRINTING_NOT_IMPLEMENTED,  "Printing not implemented."
    STRING_MAX_TAB_STOPS,             "Cannot add more than 32 tab stops."
END

IDD_DATETIME DIALOG 30, 20, 130, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Date and time"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT        "Available formats",-1,3,2,100,15
    LISTBOX      IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT | LBS_NOTIFY
    DEFPUSHBUTTON "OK",IDOK,87,12,40,12
    PUSHBUTTON   "Cancel",IDCANCEL,87,26,40,12
END

IDD_NEWFILE DIALOG 30, 20, 140, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "New"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT        "New document type",-1,3,2,100,15
    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
    DEFPUSHBUTTON "OK",IDOK,97,12,40,12
    PUSHBUTTON   "Cancel",IDCANCEL,97,26,40,12
END

IDD_PARAFORMAT DIALOG 30, 20, 220, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Paragraph format"
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Indentation", -1, 10, 10, 140, 68
    LTEXT "Left", -1, 15, 22, 60, 13
    EDITTEXT IDC_PARA_LEFT, 75, 20, 65, 13
    LTEXT "Right", -1, 15, 40, 60, 13
    EDITTEXT IDC_PARA_RIGHT, 75, 38, 65, 13
    LTEXT "First line", -1, 15, 58, 60, 13
    EDITTEXT IDC_PARA_FIRST, 75, 56, 65, 13
    LTEXT "Alignment", -1, 15, 87, 60, 13
    COMBOBOX IDC_PARA_ALIGN, 75, 85, 65, 60, CBS_DROPDOWNLIST
    DEFPUSHBUTTON "OK", IDOK, 160, 15, 50, 15
    PUSHBUTTON "Cancel", IDCANCEL, 160, 33, 50, 15
END

IDD_TABSTOPS DIALOG 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Tabs"
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Tab stops", -1, 10, 10, 120, 90
    COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE
    DEFPUSHBUTTON "&Add", ID_TAB_ADD, 20, 80, 45, 15
    PUSHBUTTON "&Remove", ID_TAB_DEL, 72, 80, 45, 15
    PUSHBUTTON "OK", IDOK, 135, 15, 58, 15
    PUSHBUTTON "Cancel", IDCANCEL, 135, 33, 58, 15
    PUSHBUTTON "Remove al&l", ID_TAB_EMPTY, 135, 51, 58, 15
END

IDD_FORMATOPTS DIALOG 0, 0, 280, 110
STYLE DS_SYSMODAL
CAPTION ""
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Line wrapping", -1, 5, 10, 145, 85
    RADIOBUTTON "&No line wrapping", IDC_PAGEFMT_WN, 10, 25, 138, 15
    RADIOBUTTON "Wrap text by the &window border", IDC_PAGEFMT_WW, 10, 45, 138, 15
    RADIOBUTTON "Wrap text by the &margin", IDC_PAGEFMT_WM, 10, 65, 138, 15
    GROUPBOX "Toolbars", -1, 155, 10, 115, 85
    CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 165, 20, 80, 15
    CHECKBOX "&Format Bar", IDC_PAGEFMT_FB, 165, 38, 80, 15
    CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 165, 56, 80, 15
    CHECKBOX "&Status Bar", IDC_PAGEFMT_SB, 165, 74, 80, 15
    LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
END

MAINACCELTABLE ACCELERATORS
BEGIN
    "1",          ID_BACK_1,          VIRTKEY, CONTROL
    "2",          ID_BACK_2,          VIRTKEY, CONTROL
    VK_F3,        ID_FIND_NEXT,       VIRTKEY
    "#msgctxt#accelerator Align Left#L",   ID_ALIGN_LEFT, VIRTKEY, CONTROL
    "#msgctxt#accelerator Align Center#E", ID_ALIGN_CENTER, VIRTKEY, CONTROL
    "#msgctxt#accelerator Align Right#R",  ID_ALIGN_RIGHT, VIRTKEY, CONTROL
    "#msgctxt#accelerator Find#F",         ID_FIND, VIRTKEY, CONTROL
    "#msgctxt#accelerator Replace#H",      ID_REPLACE, VIRTKEY, CONTROL
    "#msgctxt#accelerator Select All#A",   ID_EDIT_SELECTALL, VIRTKEY, CONTROL
    "#msgctxt#accelerator Cut#X",          ID_EDIT_CUT, VIRTKEY, CONTROL
    "#msgctxt#accelerator Copy#C",         ID_EDIT_COPY, VIRTKEY, CONTROL
    "#msgctxt#accelerator Undo#Z",         ID_EDIT_UNDO, VIRTKEY, CONTROL
    "#msgctxt#accelerator Redo#Y",         ID_EDIT_REDO, VIRTKEY, CONTROL
    "#msgctxt#accelerator Bold#B",         ID_FORMAT_BOLD, VIRTKEY, CONTROL
    "#msgctxt#accelerator Italic#I",       ID_FORMAT_ITALIC, VIRTKEY, CONTROL
    "#msgctxt#accelerator Underline#U",    ID_FORMAT_UNDERLINE, VIRTKEY, CONTROL
    "#msgctxt#accelerator New#N",          ID_FILE_NEW, VIRTKEY, CONTROL
    "#msgctxt#accelerator Open#O",         ID_FILE_OPEN, VIRTKEY, CONTROL
    "#msgctxt#accelerator Save#S",         ID_FILE_SAVE, VIRTKEY, CONTROL
    "#msgctxt#accelerator Print#P",        ID_PRINT, VIRTKEY, CONTROL
END

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/* @makedep: toolbar.bmp */
IDB_TOOLBAR BITMAP "toolbar.bmp"

/* @makedep: formatbar.bmp */
IDB_FORMATBAR BITMAP "formatbar.bmp"

/* @makedep: wordpad.ico */
IDI_WORDPAD ICON "wordpad.ico"

/* @makedep: zoom.cur */
IDC_ZOOM CURSOR "zoom.cur"
