/*
 * 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"

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"
