// Microsoft Visual C++ generated resource script.
//
#include "MiniBrowserLibResource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MINIBROWSER         ICON                    "MiniBrowser.ico"

IDI_SMALL               ICON                    "small.ico"


/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDC_MINIBROWSER MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "&Print\tCtrl-P",              IDM_PRINT
        MENUITEM "E&xit",                       IDM_EXIT
        MENUITEM "New WebKit Window",           IDM_NEW_WEBKIT_WINDOW
        MENUITEM "New WebKitLegacy Window",     IDM_NEW_WEBKITLEGACY_WINDOW
        MENUITEM "Close\tCtrl-W",               IDM_CLOSE_WINDOW
    END
    POPUP "&View"
    BEGIN
        MENUITEM "Reload\tCtrl-R",              IDM_RELOAD
        MENUITEM "Actual Size",                 IDM_ACTUAL_SIZE
        MENUITEM "Zoom In\tCtrl++",             IDM_ZOOM_IN
        MENUITEM "Zoom Out\tCtrl+-",            IDM_ZOOM_OUT
        MENUITEM "Invert Colors",               IDM_INVERT_COLORS
    END
    POPUP "&History"
    BEGIN
        MENUITEM "Back",                        IDM_HISTORY_BACKWARD
        MENUITEM "Forward",                     IDM_HISTORY_FORWARD
        MENUITEM SEPARATOR
        MENUITEM "Unused History 0",            IDM_HISTORY_LINK0
        MENUITEM "Unused History 1",            IDM_HISTORY_LINK1
        MENUITEM "Unused History 2",            IDM_HISTORY_LINK2
        MENUITEM "Unused History 3",            IDM_HISTORY_LINK3
        MENUITEM "Unused History 4",            IDM_HISTORY_LINK4
        MENUITEM "Unused History 5",            IDM_HISTORY_LINK5
        MENUITEM "Unused History 6",            IDM_HISTORY_LINK6
        MENUITEM "Unused History 7",            IDM_HISTORY_LINK7
        MENUITEM "Unused History 8",            IDM_HISTORY_LINK8
        MENUITEM "Unused History 9",            IDM_HISTORY_LINK9
    END
    POPUP "D&evelop"
    BEGIN
        MENUITEM "Show Web Inspector",          IDM_WEB_INSPECTOR
        POPUP "User Agent"
        BEGIN
            MENUITEM "Default (Automatically Chosen)", IDM_UA_DEFAULT
            MENUITEM SEPARATOR
            MENUITEM "Safari",                      IDM_UA_SAFARI
            MENUITEM SEPARATOR
            MENUITEM "Safari iOS - iPhone",         IDM_UA_SAFARI_IOS_IPHONE
            MENUITEM "Safari iOS - iPad",           IDM_UA_SAFARI_IOS_IPAD
            MENUITEM SEPARATOR
            MENUITEM "Microsoft Edge",              IDM_UA_EDGE
            MENUITEM "Internet Explorer 11.0",      IDM_UA_IE_11
            MENUITEM SEPARATOR
            MENUITEM "Google Chrome - Mac",         IDM_UA_CHROME_MAC
            MENUITEM "Google Chrome - Windows",     IDM_UA_CHROME_WIN
            MENUITEM SEPARATOR
            MENUITEM "Firefox - Mac",               IDM_UA_FIREFOX_MAC
            MENUITEM "Firefox - Windows",           IDM_UA_FIREFOX_WIN
            MENUITEM SEPARATOR
            MENUITEM "Other",                       IDM_UA_OTHER
        END
        MENUITEM "Proxy Settings...",           IDM_PROXY_SETTINGS
        MENUITEM SEPARATOR
        MENUITEM "Disable Images",              IDM_DISABLE_IMAGES
        MENUITEM "Disable Styles",              IDM_DISABLE_STYLES
        MENUITEM "Disable JavaScript",          IDM_DISABLE_JAVASCRIPT
        MENUITEM "Disable Local File Restrictions", IDM_DISABLE_LOCAL_FILE_RESTRICTIONS
    END
    POPUP "&Help"
    BEGIN
        MENUITEM "&About ...",                  IDM_ABOUT
    END
    POPUP "&Debug"
    BEGIN
        MENUITEM "Use AVFoundation",            IDM_AVFOUNDATION, CHECKED
        MENUITEM "Use Accelerated Compositing", IDM_ACC_COMPOSITING, CHECKED
        MENUITEM "Enable WebKit Full Screen",   IDM_WK_FULLSCREEN, CHECKED
        MENUITEM SEPARATOR
        MENUITEM "Show Compositing Borders",    IDM_COMPOSITING_BORDERS
        MENUITEM "Show Tiled Drawing indicator", IDM_DEBUG_INFO_LAYER
        MENUITEM SEPARATOR
        MENUITEM "Show Caches Window",          IDM_CACHES
        MENUITEM "Show Layer Tree",             IDM_SHOW_LAYER_TREE
    END
END


/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDC_MINIBROWSER ACCELERATORS
BEGIN
    "/",            IDM_ABOUT,              ASCII,  ALT, NOINVERT
    "?",            IDM_ABOUT,              ASCII,  ALT, NOINVERT
    VK_ADD,         IDM_ZOOM_IN,            VIRTKEY, CONTROL, NOINVERT
    VK_SUBTRACT,    IDM_ZOOM_OUT,           VIRTKEY, CONTROL, NOINVERT
    "W",            IDM_CLOSE_WINDOW,       VIRTKEY, CONTROL, NOINVERT
    "R",            IDM_RELOAD,             VIRTKEY, CONTROL, NOINVERT
END


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_ABOUTBOX DIALOGEX 22, 17, 230, 41
STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
    ICON            IDI_MINIBROWSER,IDC_MYICON,14,9,20,20
    LTEXT           "MiniBrowser Version 1.1",IDC_STATIC,49,10,119,8
    LTEXT           "Copyright (C) 2015-2019",IDC_STATIC,49,20,119,8
    DEFPUSHBUTTON   "OK",IDOK,186,10,30,11,WS_GROUP
END

IDD_CACHES DIALOGEX 0, 0, 401, 456
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,287,435,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,344,435,50,14
    GROUPBOX        "FastMalloc",IDC_STATIC,208,14,186,67
    GROUPBOX        "WebCore Cache",IDC_STATIC,17,83,376,105
    GROUPBOX        "JavaScript Heap",IDC_STATIC,18,193,376,168
    GROUPBOX        "Site Icon Database",IDC_STATIC,18,366,142,65
    GROUPBOX        "Font and Glyph Caches",IDC_STATIC,168,366,226,66
    GROUPBOX        "CFURLCache",IDC_STATIC,7,14,197,67
    PUSHBUTTON      "Empty URLCache",IDC_EMPTY_URL_CACHE,131,63,69,14,WS_DISABLED
    PUSHBUTTON      "Return Free Memory",IDC_RETURN_FREE_MEMORY,308,63,76,14,WS_DISABLED
    PUSHBUTTON      "Empty WebCore Cache",IDC_EMPTY_WEBCORE_CACHE,21,170,83,14,WS_DISABLED
    CONTROL         "Disable WebCore Cache",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,119,172,93,10
    PUSHBUTTON      "Garbage Collect JavaScript Objects",IDC_GC_JSC,253,343,135,14,WS_DISABLED
    RTEXT           "Reserved VM",IDC_STATIC,212,26,67,9
    RTEXT           "0",IDC_RESERVED_VM,290,26,94,8
    RTEXT           "Committed VM",IDC_STATIC,211,39,67,8
    RTEXT           "0",IDC_COMMITTED_VM,290,39,94,8
    RTEXT           "Free List Bytes",IDC_STATIC,211,52,67,8
    RTEXT           "0",IDC_FREE_LIST_BYTES,290,52,94,8
    RTEXT           "Images",IDC_STATIC,37,106,24,8
    RTEXT           "CSS",IDC_STATIC,47,116,14,8
    RTEXT           "XSL",IDC_STATIC,49,126,12,8
    RTEXT           "JavaScript",IDC_STATIC,27,135,34,8
    RTEXT           "Total",IDC_STATIC,43,146,17,8
    LTEXT           "Objects",IDC_STATIC,111,96,26,8
    LTEXT           "Bytes",IDC_STATIC,175,96,19,8
    LTEXT           "Live",IDC_STATIC,232,96,14,8
    LTEXT           "Decoded",IDC_STATIC,284,96,29,8
    LTEXT           "Purgeable",IDC_STATIC,351,96,33,8
    RTEXT           "0",IDC_IMAGES_OBJECT_COUNT,100,106,32,8
    RTEXT           "0",IDC_CSS_OBJECT_COUNT,100,116,32,8
    RTEXT           "0",IDC_XSL_OBJECT_COUNT,100,126,32,8
    RTEXT           "0",IDC_JSC_OBJECT_COUNT,100,135,32,8
    RTEXT           "0",IDC_TOTAL_OBJECT_COUNT,100,146,32,8
    RTEXT           "0",IDC_IMAGES_BYTES,162,106,32,8
    RTEXT           "0",IDC_CSS_BYTES,162,116,32,8
    RTEXT           "0",IDC_XSL_BYTES,162,126,32,8
    RTEXT           "0",IDC_JSC_BYTES,162,135,32,8
    RTEXT           "0",IDC_TOTAL_BYTES,162,146,32,8
    RTEXT           "0",IDC_IMAGES_LIVE_COUNT,221,106,32,8
    RTEXT           "0",IDC_CSS_LIVE_COUNT,221,116,32,8
    RTEXT           "0",IDC_XSL_LIVE_COUNT,221,126,32,8
    RTEXT           "0",IDC_JSC_LIVE_COUNT,221,135,32,8
    RTEXT           "0",IDC_TOTAL_LIVE_COUNT,221,146,32,8
    RTEXT           "0",IDC_IMAGES_DECODED_COUNT,284,106,32,8
    RTEXT           "0",IDC_CSS_DECODED_COUNT,284,116,32,8
    RTEXT           "0",IDC_XSL_DECODED_COUNT,284,126,32,8
    RTEXT           "0",IDC_JSC_DECODED_COUNT,284,135,32,8
    RTEXT           "0",IDC_TOTAL_DECODED,284,146,32,8
    RTEXT           "0",IDC_IMAGES_PURGEABLE_COUNT,354,106,32,8
    RTEXT           "0",IDC_CSS_PURGEABLE_COUNT,354,116,32,8
    RTEXT           "0",IDC_XSL_PURGEABLE_COUNT,354,126,32,8
    RTEXT           "0",IDC_JSC_PURGEABLE_COUNT,354,135,32,8
    RTEXT           "0",IDC_TOTAL_PURGEABLE,354,146,32,8
    RTEXT           "Total Objects",IDC_STATIC,63,207,44,8
    RTEXT           "Global Objects",IDC_STATIC,56,217,51,8
    RTEXT           "Protected Objects",IDC_STATIC,48,227,59,8
    RTEXT           "0",IDC_TOTAL_JSC_HEAP_OBJECTS,127,207,56,8
    RTEXT           "0",IDC_GLOBAL_JSC_HEAP_OBJECTS,127,217,56,8
    RTEXT           "0",IDC_PROTECTED_JSC_HEAP_OBJECTS,127,227,56,8
    RTEXT           "Size",IDC_STATIC56,223,207,14,8
    RTEXT           "Free",IDC_STATIC57,222,217,16,8
    RTEXT           "0",IDC_JSC_HEAP_SIZE,270,207,56,8
    RTEXT           "0",IDC_JSC_HEAP_FREE,270,217,56,8
    PUSHBUTTON      "Purge Inactive Font Data",IDC_BUTTON5,293,415,95,14,WS_DISABLED
    LTEXT           "Total Font Data Objects",IDC_STATIC,208,379,78,8
    LTEXT           "Inactive Font Data Objects",IDC_STATIC,198,390,88,8
    LTEXT           "Glyph Pages",IDC_STATIC,246,402,40,8
    RTEXT           "0",IDC_TOTAL_FONT_OBJECTS,329,379,56,8
    RTEXT           "0",IDC_INACTIVE_FONT_OBJECTS,329,390,56,8
    RTEXT           "0",IDC_GLYPH_PAGES,329,402,56,8
    LTEXT           "Page URL Mappings",IDC_STATIC,33,380,64,8
    LTEXT           "Retained Page URLs",IDC_STATIC,31,390,66,8
    LTEXT           "Site Icon Records",IDC_STATIC,40,400,57,8
    LTEXT           "Site Icons with Data",IDC_STATIC,32,410,65,8
    RTEXT           "0",IDC_PAGE_URL_MAPPINGS,101,380,52,8
    RTEXT           "0",IDC_RETAINED_PAGE_URLS,101,390,52,8
    RTEXT           "0",IDC_SITE_ICON_RECORDS,101,400,52,8
    RTEXT           "0",IDC_SITE_ICONS_WITH_DATA,101,410,52,8
END

IDD_USER_AGENT DIALOGEX 0, 0, 309, 176
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    LTEXT           "Type a custom user agent string for this page.",IDC_Message,7,7,295,19
    EDITTEXT        IDC_USER_AGENT_INPUT,7,34,295,117,ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,198,155,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,252,155,50,14
END

IDD_AUTH DIALOGEX 0, 0, 231, 119
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Authentication Required"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "Sign In",IDOK,116,98,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,174,98,50,14
    LTEXT           "Realm",IDC_REALM_TEXT,67,21,157,8
    RTEXT           "User Name:",IDC_STATIC,7,41,57,8
    EDITTEXT        IDC_AUTH_USER,67,39,157,14,ES_AUTOHSCROLL
    RTEXT           "Password:",IDC_STATIC,7,66,57,8
    EDITTEXT        IDC_AUTH_PASSWORD,67,64,157,14,ES_PASSWORD | ES_AUTOHSCROLL
END

IDD_PROXY DIALOGEX 0, 0, 310, 176
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Proxy Configuration"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,199,155,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,253,155,50,14
    CONTROL         "Use system default proxy configuration.",IDC_PROXY_DEFAULT,
                    "Button",BS_AUTORADIOBUTTON | WS_GROUP,22,15,226,10
    CONTROL         "Use custom proxy configuration:",IDC_PROXY_CUSTOM,
                    "Button",BS_AUTORADIOBUTTON,22,33,226,10
    CONTROL         "Don't use proxy.",IDC_PROXY_DISABLE,"Button",BS_AUTORADIOBUTTON,22,117,226,10
    EDITTEXT        IDC_PROXY_URL,76,52,193,14,ES_AUTOHSCROLL
    EDITTEXT        IDC_PROXY_EXCLUDE,76,85,193,14,ES_AUTOHSCROLL
    LTEXT           "URL:",IDC_STATIC,30,55,43,8,0,WS_EX_RIGHT
    LTEXT           "Excude list:",IDC_STATIC,30,88,43,8,0,WS_EX_RIGHT
    LTEXT           "Example: http://192.168.0.2:8000",IDC_STATIC,80,68,194,8
    LTEXT           "Comma separated hostnames.",IDC_STATIC,80,101,194,8
END

IDD_SERVER_TRUST DIALOGEX 0, 0, 319, 184
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Server Trust Evaluation Request"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "Yes",IDOK,197,163,50,14
    PUSHBUTTON      "No",IDCANCEL,262,163,50,14
    LTEXT           "Certificate information",IDC_STATIC,7,7,294,17
    EDITTEXT        IDC_SERVER_TRUST_TEXT,7,24,305,130,ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_HSCROLL | NOT WS_TABSTOP
END


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "MiniBrowserLibResource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""windows.h""\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_ABOUTBOX, DIALOG
    BEGIN
    END

    IDD_CACHES, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 394
        TOPMARGIN, 7
        BOTTOMMARGIN, 449
    END

    IDD_USER_AGENT, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 302
        TOPMARGIN, 7
        BOTTOMMARGIN, 169
    END

    IDD_AUTH, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 224
        VERTGUIDE, 64
        VERTGUIDE, 67
        TOPMARGIN, 7
        BOTTOMMARGIN, 92
        HORZGUIDE, 25
        HORZGUIDE, 50
    END

    IDD_PROXY, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 303
        VERTGUIDE, 22
        TOPMARGIN, 7
        BOTTOMMARGIN, 169
    END

    IDD_SERVER_TRUST, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 312
        TOPMARGIN, 7
        BOTTOMMARGIN, 177
    END
END
#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE
BEGIN
    IDS_APP_TITLE           "MiniBrowser"
    IDC_MINIBROWSER         "MINIBROWSER"
END

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

