/*
 * Regedit resource definitions
 *
 * Copyright 2002 Robert Dickenson
 *
 * 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 ID_REGISTRY_MENU                0
#define ID_EDIT_MENU                    1
#define ID_VIEW_MENU                    2
#define ID_FAVORITES_MENU               3
#define ID_HELP_MENU                    4
#define ID_EDIT_NEW_MENU                5
#define IDS_LIST_COLUMN_FIRST           91
#define IDS_LIST_COLUMN_NAME            91
#define IDS_LIST_COLUMN_TYPE            92
#define IDS_LIST_COLUMN_DATA            93
#define IDS_LIST_COLUMN_LAST            93
#define IDS_APP_TITLE                   103
#define IDI_REGEDIT                     100
#define IDI_SMALL                       108
#define IDC_REGEDIT                     109
#define IDC_REGEDIT_FRAME               110
#define IDR_REGEDIT_MENU                130
#define IDD_EXPORT_TEMPLATE             131
#define IDI_OPEN_FILE                   132
#define IDI_CLOSED_FILE                 133
#define IDD_ADDFAVORITE                 133
#define IDI_ROOT                        134
#define IDD_DELFAVORITE                 134
#define IDI_STRING                      135
#define IDD_FIND                        135
#define IDI_BIN                         136
#define IDR_POPUP_MENUS                 137
#define IDS_FILEDIALOG_IMPORT_TITLE     144
#define IDS_FILEDIALOG_EXPORT_TITLE     145
#define IDS_FILEDIALOG_FILTER           146
#define IDS_REGISTRY_ROOT_NAME          160
#define IDS_REGISTRY_DEFAULT_VALUE      161
#define IDS_REGISTRY_VALUE_NOT_SET      162
#define IDS_REGISTRY_VALUE_CANT_DISPLAY 164
#define IDS_REGISTRY_UNKNOWN_TYPE       165
#define IDC_LICENSE_EDIT                1029
#define ID_REGISTRY_EXIT                32770
#define ID_FAVORITES_ADDTOFAVORITES     32772
#define ID_FAVORITES_REMOVEFAVORITE     32773
#define ID_VIEW_STATUSBAR               32774
#define ID_VIEW_SPLIT                   32775
#define ID_VIEW_REFRESH                 32776
#define ID_EDIT_DELETE                  32778
#define ID_EDIT_RENAME                  32779
#define ID_EDIT_COPYKEYNAME             32781
#define ID_EDIT_FIND                    32782
#define ID_EDIT_FINDNEXT                32783
#define ID_EDIT_MODIFY                  32784
#define ID_EDIT_NEW_KEY                 32785
#define ID_EDIT_NEW_STRINGVALUE         32786
#define ID_EDIT_NEW_BINARYVALUE         32787
#define ID_EDIT_NEW_DWORDVALUE          32788
#define ID_REGISTRY_IMPORTREGISTRYFILE  32789
#define ID_REGISTRY_EXPORTREGISTRYFILE  32790
#define ID_REGISTRY_CONNECTNETWORKREGISTRY 32791
#define ID_REGISTRY_DISCONNECTNETWORKREGISTRY 32792
#define ID_REGISTRY_PRINT               32793
#define ID_HELP_HELPTOPICS              32794
#define ID_HELP_ABOUT                   32795
#define ID_WINDOW_CASCADE               32797
#define ID_WINDOW_TILE                  32798
#define ID_WINDOW_ARRANGEICONS          32799
#define ID_OPTIONS_FONT                 32800
#define ID_OPTIONS_AUTOREFRESH          32801
#define ID_OPTIONS_READONLYMODE         32802
#define ID_OPTIONS_CONFIRMONDELETE      32803
#define ID_OPTIONS_SAVESETTINGSONEXIT   32804
#define ID_SECURITY_PERMISSIONS         32805
#define ID_VIEW_TREEANDDATA             32806
#define ID_VIEW_TREEONLY                32807
#define ID_VIEW_DATAONLY                32808
#define ID_VIEW_DISPLAYBINARYDATA       32810
#define ID_VIEW_REFRESHALL              32811
#define ID_VIEW_REFRESHACTIVE           32812
#define ID_VIEW_FINDKEY                 32813
#define ID_TREE_EXPANDONELEVEL          32814
#define ID_TREE_EXPANDBRANCH            32815
#define ID_TREE_EXPANDALL               32816
#define ID_TREE_COLLAPSEBRANCH          32817
#define ID_EDIT_ADDKEY                  32818
#define ID_EDIT_ADDVALUE                32819
#define ID_EDIT_BINARY                  32821
#define ID_EDIT_STRING                  32822
#define ID_EDIT_DWORD                   32823
#define ID_EDIT_MULTISTRING             32824
#define ID_REGISTRY_OPENLOCAL           32825
#define ID_REGISTRY_CLOSE               32826
#define ID_REGISTRY_LOADHIVE            32827
#define ID_REGISTRY_UNLOADHIVE          32828
#define ID_REGISTRY_RESTORE             32829
#define ID_REGISTRY_SAVEKEY             32830
#define ID_REGISTRY_SELECTCOMPUTER      32831
#define ID_REGISTRY_PRINTSUBTREE        32832
#define ID_REGISTRY_PRINTERSETUP        32833
#define ID_REGISTRY_SAVESUBTREEAS       32834
#define IDS_LICENSE                     32835
#define IDS_ERROR                       32836
#define IDS_BAD_VALUE			32837
#define IDS_UNSUPPORTED_TYPE		32838
#define IDS_TOO_BIG_VALUE		32839
#define IDS_DELETE_BOX_TITLE		32840
#define IDS_DELETE_BOX_TEXT		32841
#define IDS_NOTFOUND    		32842
#define IDS_DELETE_BOX_TEXT_MULTIPLE	32843
#define IDD_EDIT_DWORD			32850
#define IDC_DWORD_BASE			32852
#define IDC_DWORD_HEX			32853
#define IDC_DWORD_DEC			32854
#define IDS_NEWKEY			32860
#define IDS_NEWVALUE			32861
#define IDS_BAD_KEY			32862
#define ID_EDIT_MODIFY_BIN		32870
#define ID_SWITCH_PANELS                32871
#define ID_FAVORITE_FIRST               33000
#define ID_FAVORITE_LAST                33099
#define ID_EDIT_NEW_MULTI_STRINGVALUE   33100
#define ID_EDIT_EXPORT                  33101

#define IDD_EDIT_STRING			2000
#define IDC_VALUE_NAME			2001
#define IDC_VALUE_DATA			2002
#define IDD_EDIT_BINARY                 2003
#define IDC_NAME_LIST                   2004
#define IDC_FIND_KEYS                   2005
#define IDC_FIND_VALUES                 2006
#define IDC_FIND_CONTENT                2007
#define IDC_FIND_WHOLE                  2008
#define IDD_EDIT_MULTI_STRING           2009

#define IDC_EXPORT_BASE                 100
#define IDC_EXPORT_ALL                  101
#define IDC_EXPORT_SELECTED             102
#define IDC_EXPORT_PATH                 103

#define IDC_STATIC                      -1
