/*
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#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 IDD_ABOUTBOX                    103
#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_DIALOG1                     131
#define IDI_OPEN_FILE                   132
#define IDD_DIALOG2                     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 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 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 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 IDC_STATIC                      -1
