/*
 * Copyright 2005-2006 Jacek Caban
 *
 * 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 "shdoclc.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    IDS_MESSAGE_BOX_TITLE, "Wine Internet Explorer"
}

STRINGTABLE
{
    IDS_PRINT_HEADER_TEMPLATE "&w&bPage &p" /* FIXME: should be "&w&bPage &p of &P" */
    IDS_PRINT_FOOTER_TEMPLATE "#msgctxt#do not translate#&u&b&d"
}

IDR_BROWSE_CONTEXT_MENU MENU
{
    POPUP "" /* Default */
    {
        MENUITEM "&Back",                  IDM_GOBACKWARD
        MENUITEM "F&orward",               IDM_GOFORWARD
        MENUITEM SEPARATOR
        MENUITEM "&Save Background As...", IDM_SAVEBACKGROUND
        MENUITEM "Set As Back&ground",     IDM_SETWALLPAPER
        MENUITEM "&Copy Background",       IDM_COPYBACKGROUND
        MENUITEM "Set as &Desktop Item",   IDM_SETDESKTOPITEM
        MENUITEM SEPARATOR
        MENUITEM "Select &All",            IDM_SELECTALL
        MENUITEM "&Paste",                 IDM_PASTE
        MENUITEM SEPARATOR
        MENUITEM "Create Shor&tcut",       IDM_CREATESHORTCUT
        MENUITEM "Add to &Favorites...",   IDM_ADDFAVORITES
        MENUITEM "&View Source",           IDM_VIEWSOURCE
        MENUITEM SEPARATOR
        MENUITEM "&Encoding",              IDM_LANGUAGE
        MENUITEM SEPARATOR
        MENUITEM "Pr&int",                 IDM_PRINT
        MENUITEM "&Refresh",               _IDM_REFRESH
        MENUITEM SEPARATOR
        MENUITEM "&Properties",            IDM_PROPERTIES
    }

    POPUP "" /* Image */
    {
        MENUITEM "&Open Link",               IDM_FOLLOWLINKC
        MENUITEM "Open Link in &New Window", IDM_FOLLOWLINKN
        MENUITEM "Save Target &As...",       IDM_SAVETARGET
        MENUITEM "&Print Target",            IDM_PRINTTARGET
        MENUITEM SEPARATOR
        MENUITEM "S&how Picture",            IDM_SHOWPICTURE
        MENUITEM "&Save Picture As...",      IDM_SAVEPICTURE
        MENUITEM "&E-mail Picture...",       IDM_MP_EMAILPICTURE
        MENUITEM "Pr&int Picture...",        IDM_MP_PRINTPICTURE
        MENUITEM "&Go to My Pictures",       IDM_MP_MYPICS
        MENUITEM "Set as Back&ground",       IDM_SETWALLPAPER
        MENUITEM "Set as &Desktop Item...",  IDM_SETDESKTOPITEM
        MENUITEM SEPARATOR
        MENUITEM "Cu&t",                     IDM_CUT
        MENUITEM "&Copy",                    IDM_COPY
        MENUITEM "Copy Shor&tcut",           IDM_COPYSHORTCUT
        MENUITEM "&Paste",                   IDM_PASTE
        MENUITEM SEPARATOR
        MENUITEM "Add to &Favorites...",     IDM_ADDFAVORITES
        MENUITEM SEPARATOR
        MENUITEM "P&roperties",              IDM_PROPERTIES
    }

    POPUP "" /* Control */
    {
        MENUITEM "&Undo",       IDM_UNDO
        MENUITEM SEPARATOR
        MENUITEM "Cu&t",        IDM_CUT
        MENUITEM "&Copy",       IDM_COPY
        MENUITEM "&Paste",      IDM_PASTE
        MENUITEM "&Delete",     IDM_DELETE
        MENUITEM SEPARATOR
        MENUITEM "Select &All", IDM_SELECTALL
    }

    POPUP "" /* Table */
    {
        POPUP "&Select"
        {
            MENUITEM "&Cell",         IDM_CELLSELECT
            MENUITEM "&Row",          IDM_ROWSELECT
            MENUITEM "&Column",       IDM_COLUMNSELECT
            MENUITEM "&Table",        IDM_TABLESELECT
        }
        MENUITEM SEPARATOR
        MENUITEM "&Cell Properties",  IDM_CELLPROPERTIES
        MENUITEM "&Table Properties", IDM_TABLEPROPERTIES
    }

    POPUP "" /* 1DSite Select */
    {
        MENUITEM "Cu&t",        IDM_CUT
        MENUITEM "&Copy",       IDM_COPY
        MENUITEM "Paste",       IDM_PASTE
        MENUITEM "Select &All", IDM_SELECTALL
        MENUITEM "&Print",      IDM_PRINT
        MENUITEM SEPARATOR
    }

    POPUP "" /* Anchor */
    {
        MENUITEM "&Open",                IDM_FOLLOWLINKC
        MENUITEM "Open in &New Window",  IDM_FOLLOWLINKN
        MENUITEM "Save Target &As...",   IDM_SAVETARGET
        MENUITEM "&Print Target",        IDM_PRINTTARGET
        MENUITEM SEPARATOR
        MENUITEM "Cut",                  IDM_CUT
        MENUITEM "&Copy",                IDM_COPY
        MENUITEM "Copy Shor&tcut",       IDM_COPYSHORTCUT
        MENUITEM "&Paste",               IDM_PASTE
        MENUITEM SEPARATOR
        MENUITEM "Add to &Favorites...", IDM_ADDFAVORITES
        MENUITEM SEPARATOR
        MENUITEM "P&roperties",          IDM_PROPERTIES
    }

    POPUP "" /* Context Unknown */
    {
        MENUITEM SEPARATOR
    }

    POPUP "" /* DYNSRC Image */
    {
        MENUITEM "&Open Link",               IDM_FOLLOWLINKC
        MENUITEM "Open Link in &New Window", IDM_FOLLOWLINKN
        MENUITEM "Save Target &As...",       IDM_SAVETARGET
        MENUITEM "&Print Target",            IDM_PRINTTARGET
        MENUITEM SEPARATOR
        MENUITEM "S&how Picture",            IDM_SHOWPICTURE
        MENUITEM "&Save Video As...",        IDM_SAVEPICTURE
        MENUITEM "Set as Back&ground",       IDM_SETWALLPAPER
        MENUITEM "Set as &Desktop Item...",  IDM_SETDESKTOPITEM
        MENUITEM SEPARATOR
        MENUITEM "Cu&t",                     IDM_CUT
        MENUITEM "&Copy",                    IDM_COPY
        MENUITEM "Copy Shor&tcut",           IDM_COPYSHORTCUT
        MENUITEM "&Paste",                   IDM_PASTE
        MENUITEM SEPARATOR
        MENUITEM "Add to &Favorites...",     IDM_ADDFAVORITES
        MENUITEM SEPARATOR
        MENUITEM "Play",                     IDM_DYNSRCPLAY
        MENUITEM "Stop",                     IDM_DYNSRCSTOP
        MENUITEM "P&roperties",              IDM_PROPERTIES
    }

    POPUP "" /* ART Image */
    {
        MENUITEM "&Open Link",               IDM_FOLLOWLINKC
        MENUITEM "Open Link in &New Window", IDM_FOLLOWLINKN
        MENUITEM "Save Target &As...",       IDM_SAVETARGET
        MENUITEM "&Print Target",            IDM_PRINTTARGET
        MENUITEM SEPARATOR
        MENUITEM "S&how Picture",            IDM_SHOWPICTURE
        MENUITEM "&Save Picture As...",      IDM_SAVEPICTURE
        MENUITEM "Set as Back&ground",       IDM_SETWALLPAPER
        MENUITEM "Set as &Desktop Item...",  IDM_SETDESKTOPITEM
        MENUITEM SEPARATOR
        MENUITEM "Cu&t",                     IDM_CUT
        MENUITEM "&Copy",                    IDM_COPY
        MENUITEM "Copy Shor&tcut",           IDM_COPYSHORTCUT
        MENUITEM "&Paste",                   IDM_PASTE
        MENUITEM SEPARATOR
        MENUITEM "Add to &Favorites...",     IDM_ADDFAVORITES
        MENUITEM SEPARATOR
        MENUITEM "Play",                     IDM_IMGARTPLAY
        MENUITEM "Stop",                     IDM_IMGARTSTOP
        MENUITEM "Rewind",                   IDM_IMGARTREWIND
        MENUITEM SEPARATOR
        MENUITEM "P&roperties",              IDM_PROPERTIES
    }

    POPUP "" /* Debug */
    {
        MENUITEM "Trace Tags",         IDM_TRACETAGS
        MENUITEM "Resource Failures",  IDM_RESOURCEFAILURES
        MENUITEM "Dump Tracking Info", IDM_DUMPTRACKINGINFO
        MENUITEM "Debug Break",        IDM_DEBUGBREAK
        MENUITEM "Debug View",         IDM_DEBUGVIEW
        MENUITEM "Dump Tree",          IDM_DUMPTREE
        MENUITEM "Dump Lines",         IDM_DUMPLINES
        MENUITEM "Dump DisplayTree",   IDM_DUMPDISPLAYTREE
        MENUITEM "Dump FormatCaches",  IDM_DUMPFORMATCACHES
        MENUITEM "Dump LayoutRects",   IDM_DUMPLAYOUTRECTS
        MENUITEM "Memory Monitor",     IDM_MEMORYMONITOR
        MENUITEM "Performance Meters", IDM_PERFORMANCEMETERS
        MENUITEM "Save HTML",          IDM_SAVEHTML
        MENUITEM SEPARATOR
        MENUITEM "&Browse View",       IDM_BROWSEMODE
        MENUITEM "&Edit View",         IDM_EDITMODE
    }

    POPUP "" /* Vertical Scrollbar */
    {
        MENUITEM "Scroll Here",  IDM_SCROLL_HERE
        MENUITEM SEPARATOR
        MENUITEM "Top",          IDM_SCROLL_TOP
        MENUITEM "Bottom",       IDM_SCROLL_BOTTOM
        MENUITEM SEPARATOR
        MENUITEM "Page Up",      IDM_SCROLL_PAGEUP
        MENUITEM "Page Down",    IDM_SCROLL_PAGEDOWN
        MENUITEM SEPARATOR
        MENUITEM "Scroll Up",    IDM_SCROLL_UP
        MENUITEM "Scroll Down",  IDM_SCROLL_DOWN
    }

    POPUP "" /* Horizontal Scrollbar */
    {
        MENUITEM "Scroll Here",  IDM_SCROLL_HERE
        MENUITEM SEPARATOR
        MENUITEM "Left Edge",    IDM_SCROLL_LEFTEDGE
        MENUITEM "Right Edge",   IDM_SCROLL_RIGHTEDGE
        MENUITEM SEPARATOR
        MENUITEM "Page Left",    IDM_SCROLL_PAGELEFT
        MENUITEM "Page Right",   IDM_SCROLL_PAGERIGHT
        MENUITEM SEPARATOR
        MENUITEM "Scroll Left",  IDM_SCROLL_LEFT
        MENUITEM "Scroll Right", IDM_SCROLL_RIGHT
    }
}
