/*
 * Resource identifiers for shdocvw.dll
 *
 * Copyright 2010 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 <windef.h>
#include <winuser.h>

#define IDR_BROWSE_MAIN_MENU           1000
#define IDD_BROWSE_OPEN                1001
#define IDC_BROWSE_OPEN_URL            1002
#define IDC_BROWSE_REBAR               1003
#define IDC_BROWSE_ADDRESSBAR          1004
#define IDC_BROWSE_STATUSBAR           1005
#define IDC_BROWSE_TOOLBAR             1006
#define IDB_IETOOLBAR                  1007

#define ID_BROWSE_NEW_WINDOW           275
#define ID_BROWSE_OPEN                 256
#define ID_BROWSE_SAVE                 257
#define ID_BROWSE_SAVE_AS              258
#define ID_BROWSE_PRINT_FORMAT         259
#define ID_BROWSE_PRINT                260
#define ID_BROWSE_PRINT_PREVIEW        277
#define ID_BROWSE_PROPERTIES           262
#define ID_BROWSE_QUIT                 278
#define ID_BROWSE_ABOUT                336

#define ID_BROWSE_ADDFAV               1200
#define ID_BROWSE_HOME                 1201

#define ID_BROWSE_BAR_STD              1300
#define ID_BROWSE_BAR_ADDR             1301

#define ID_BROWSE_GOTOFAV_FIRST        2000
#define ID_BROWSE_GOTOFAV_MAX          65000

#define IDS_TB_BACK                    1100
#define IDS_TB_FORWARD                 1101
#define IDS_TB_STOP                    1102
#define IDS_TB_REFRESH                 1103
#define IDS_TB_HOME                    1104
#define IDS_TB_PRINT                   1105

#define IDS_ADDRESS                    1106
