regedit - delete key patch
Zimler Attila
hijaszu at hlfslinux.hu
Sun Feb 15 05:07:45 CST 2004
Hi List,
This is my work for adding delete key support for the regedit program.
(RefreshTreeView should be implemented I need help to do that).
Attila
-------------- next part --------------
Index: programs/regedit/En.rc
===================================================================
RCS file: /home/wine/wine/programs/regedit/En.rc,v
retrieving revision 1.9
diff -u -r1.9 En.rc
--- programs/regedit/En.rc 18 Jan 2004 23:18:33 -0000 1.9
+++ programs/regedit/En.rc 15 Feb 2004 09:55:17 -0000
@@ -228,6 +228,7 @@
STRINGTABLE DISCARDABLE
BEGIN
IDS_ERROR "Error"
+ IDS_BAD_KEY "Can't query key '%s'"
IDS_BAD_VALUE "Can't query value '%s'"
IDS_UNSUPPORTED_TYPE "Can't edit keys of this type (%ld)"
IDS_TOO_BIG_VALUE "Value is too big (%ld)"
Index: programs/regedit/edit.c
===================================================================
RCS file: /home/wine/wine/programs/regedit/edit.c,v
retrieving revision 1.11
diff -u -r1.11 edit.c
--- programs/regedit/edit.c 6 Feb 2004 05:16:56 -0000 1.11
+++ programs/regedit/edit.c 15 Feb 2004 09:55:18 -0000
@@ -228,6 +228,30 @@
return result;
}
+BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath)
+{
+ BOOL result = FALSE;
+ LONG lRet;
+ HKEY hKey;
+
+ lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_SET_VALUE, &hKey);
+ if (lRet != ERROR_SUCCESS) return FALSE;
+
+ if (messagebox(hwnd, MB_YESNO | MB_ICONEXCLAMATION, IDS_DELETE_BOX_TITLE, IDS_DELETE_BOX_TEXT, keyPath) != IDYES)
+ goto done;
+
+ lRet = RegDeleteKey(hKeyRoot, keyPath);
+ if (lRet != ERROR_SUCCESS) {
+ error(hwnd, IDS_BAD_KEY, keyPath);
+ goto done;
+ }
+ result = TRUE;
+
+done:
+ RegCloseKey(hKey);
+ return result;
+}
+
BOOL DeleteValue(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath, LPCTSTR valueName)
{
BOOL result = FALSE;
Index: programs/regedit/framewnd.c
===================================================================
RCS file: /home/wine/wine/programs/regedit/framewnd.c,v
retrieving revision 1.12
diff -u -r1.12 framewnd.c
--- programs/regedit/framewnd.c 16 Jan 2004 23:02:44 -0000 1.12
+++ programs/regedit/framewnd.c 15 Feb 2004 09:55:19 -0000
@@ -442,7 +442,7 @@
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
valueName = GetValueName(g_pChildWnd->hListWnd);
switch (LOWORD(wParam)) {
case ID_REGISTRY_IMPORTREGISTRYFILE:
ImportRegistryFile(hWnd);
@@ -458,8 +458,13 @@
PrintRegistryHive(hWnd, _T(""));
break;
case ID_EDIT_DELETE:
- if (DeleteValue(hWnd, hKeyRoot, keyPath, valueName))
- RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
+ if (GetFocus() == g_pChildWnd->hTreeWnd) {
+ if (DeleteKey(hWnd, hKeyRoot, keyPath))
+ ;/* FIXME: TreeView should be refreshed */
+ } else if (GetFocus() == g_pChildWnd->hListWnd) {
+ if (DeleteValue(hWnd, hKeyRoot, keyPath, valueName))
+ RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
+ }
break;
case ID_EDIT_MODIFY:
if (ModifyValue(hWnd, hKeyRoot, keyPath, valueName))
@@ -470,6 +475,7 @@
break;
case ID_EDIT_NEW_KEY:
CreateKey(hWnd, hKeyRoot, keyPath);
+ /* FIXME: TreeView should be refreshed */
break;
case ID_EDIT_NEW_STRINGVALUE:
valueType = REG_SZ;
Index: programs/regedit/main.h
===================================================================
RCS file: /home/wine/wine/programs/regedit/main.h,v
retrieving revision 1.15
diff -u -r1.15 main.h
--- programs/regedit/main.h 16 Jan 2004 23:02:44 -0000 1.15
+++ programs/regedit/main.h 15 Feb 2004 09:55:19 -0000
@@ -101,6 +101,7 @@
extern BOOL CreateKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath);
extern BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath, DWORD valueType);
extern BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath, LPCTSTR valueName);
+extern BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath);
extern BOOL DeleteValue(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath, LPCTSTR valueName);
extern BOOL RenameValue(HWND hwnd, HKEY hRootKey, LPCTSTR keyPath, LPCTSTR oldName, LPCTSTR newName);
Index: programs/regedit/resource.h
===================================================================
RCS file: /home/wine/wine/programs/regedit/resource.h,v
retrieving revision 1.7
diff -u -r1.7 resource.h
--- programs/regedit/resource.h 20 Jan 2004 01:33:02 -0000 1.7
+++ programs/regedit/resource.h 15 Feb 2004 09:55:20 -0000
@@ -117,6 +117,7 @@
#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 IDD_EDIT_STRING 2000
More information about the wine-patches
mailing list