mirror of
https://github.com/reactos/reactos.git
synced 2025-04-25 08:00:24 +00:00
Bletch <npwoods@mess.org>
Partially implemented the treeview right-click menu on Regedit. Just supporting Expand and Collapse for now, and also started work on renaming keys. svn path=/trunk/; revision=17889
This commit is contained in:
parent
a5556fb1e4
commit
d7876f7981
6 changed files with 86 additions and 1 deletions
|
@ -123,6 +123,23 @@ BEGIN
|
|||
MENUITEM "&DWORD Value", ID_EDIT_NEW_DWORDVALUE
|
||||
END
|
||||
END
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Expand/Collapse", ID_TREE_EXPANDBRANCH
|
||||
POPUP "&New"
|
||||
BEGIN
|
||||
MENUITEM "&Key", ID_EDIT_NEW_KEY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&String Value", ID_EDIT_NEW_STRINGVALUE
|
||||
MENUITEM "&Binary Value", ID_EDIT_NEW_BINARYVALUE
|
||||
MENUITEM "&DWORD Value", ID_EDIT_NEW_DWORDVALUE
|
||||
END
|
||||
MENUITEM "&Find", ID_EDIT_FIND, GRAYED
|
||||
MENUITEM "&Delete", ID_TREE_DELETE
|
||||
MENUITEM "&Rename", ID_TREE_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME, GRAYED
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
|
@ -314,6 +331,12 @@ BEGIN
|
|||
IDS_INHERIT_SUBKEYSONLY "Subkeys only"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_EXPAND "&Expand"
|
||||
IDS_COLLAPSE "&Collapse"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
|
||||
|
|
|
@ -110,6 +110,16 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case ID_VIEW_REFRESH:
|
||||
/* TODO */
|
||||
break;
|
||||
case ID_TREE_EXPANDBRANCH:
|
||||
TreeView_Expand(pChildWnd->hTreeWnd, TreeView_GetSelection(pChildWnd->hTreeWnd), TVE_EXPAND);
|
||||
break;
|
||||
case ID_TREE_COLLAPSEBRANCH:
|
||||
TreeView_Expand(pChildWnd->hTreeWnd, TreeView_GetSelection(pChildWnd->hTreeWnd), TVE_COLLAPSE);
|
||||
break;
|
||||
case ID_TREE_RENAME:
|
||||
SetFocus(pChildWnd->hTreeWnd);
|
||||
TreeView_EditLabel(pChildWnd->hTreeWnd, TreeView_GetSelection(pChildWnd->hTreeWnd));
|
||||
break;
|
||||
case ID_SWITCH_PANELS:
|
||||
pChildWnd->nFocusPanel = !pChildWnd->nFocusPanel;
|
||||
SetFocus(pChildWnd->nFocusPanel? pChildWnd->hListWnd: pChildWnd->hTreeWnd);
|
||||
|
@ -296,6 +306,13 @@ ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case NM_SETFOCUS:
|
||||
pChildWnd->nFocusPanel = 0;
|
||||
break;
|
||||
case TVN_ENDLABELEDIT:
|
||||
{
|
||||
TCHAR msg[32];
|
||||
_stprintf(msg, _T("rename to %s"), ((NMTVDISPINFO *) lParam)->item.pszText);
|
||||
MessageBox(pChildWnd->hTreeWnd, msg, NULL, MB_OK);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -347,6 +364,45 @@ ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
TrackPopupMenu(mnu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hFrameWnd, NULL);
|
||||
}
|
||||
}
|
||||
else if ((HWND)wParam == pChildWnd->hTreeWnd)
|
||||
{
|
||||
TVHITTESTINFO hti;
|
||||
HMENU hContextMenu;
|
||||
TVITEM item;
|
||||
MENUITEMINFO mii;
|
||||
TCHAR buffer[256];
|
||||
LPTSTR s;
|
||||
|
||||
pt = MAKEPOINTS(lParam);
|
||||
hti.pt.x = pt.x;
|
||||
hti.pt.y = pt.y;
|
||||
ScreenToClient(pChildWnd->hTreeWnd, &hti.pt);
|
||||
TreeView_HitTest(pChildWnd->hTreeWnd, &hti);
|
||||
|
||||
if ((hti.flags & TVHT_ONITEM) != 0)
|
||||
{
|
||||
hContextMenu = GetSubMenu(hPopupMenus, PM_TREECONTEXT);
|
||||
TreeView_SelectItem(pChildWnd->hTreeWnd, hti.hItem);
|
||||
|
||||
memset(&item, 0, sizeof(item));
|
||||
item.mask = TVIF_STATE | TVIF_CHILDREN;
|
||||
item.hItem = hti.hItem;
|
||||
TreeView_GetItem(pChildWnd->hTreeWnd, &item);
|
||||
|
||||
LoadString(hInst, (item.state & TVIS_EXPANDED) ? IDS_COLLAPSE : IDS_EXPAND, buffer, sizeof(buffer) / sizeof(buffer[0]));
|
||||
|
||||
memset(&mii, 0, sizeof(mii));
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_STRING | MIIM_STATE | MIIM_ID;
|
||||
mii.fState = (item.cChildren > 0) ? MFS_DEFAULT : MFS_GRAYED;
|
||||
mii.wID = (item.state & TVIS_EXPANDED) ? ID_TREE_COLLAPSEBRANCH : ID_TREE_EXPANDBRANCH;
|
||||
s = buffer;
|
||||
memcpy(&mii.dwTypeData, &s, sizeof(mii.dwTypeData)); /* arg MinGW */
|
||||
SetMenuItemInfo(hContextMenu, 0, TRUE, &mii);
|
||||
|
||||
TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, pChildWnd->hWnd, NULL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
#include <zmouse.h>
|
||||
|
||||
#include "hexedit.h"
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
#define PM_MODIFYVALUE 0
|
||||
#define PM_NEW 1
|
||||
#define PM_TREECONTEXT 2
|
||||
|
||||
extern HINSTANCE hInst;
|
||||
|
||||
|
|
|
@ -128,6 +128,8 @@
|
|||
#define IDS_ERR_RENVAL_TOEMPTY 32857
|
||||
#define ID_SWITCH_PANELS 32871
|
||||
#define ID_EDIT_PERMISSIONS 32872
|
||||
#define ID_TREE_DELETE 32873
|
||||
#define ID_TREE_RENAME 32874
|
||||
|
||||
#define IDS_FLT_REGFILES 31001
|
||||
#define IDS_FLT_REGFILES_FLT 31002
|
||||
|
@ -152,6 +154,8 @@
|
|||
#define IDS_INHERIT_THISKEYONLY 31121
|
||||
#define IDS_INHERIT_THISKEYANDSUBKEYS 31122
|
||||
#define IDS_INHERIT_SUBKEYSONLY 31123
|
||||
#define IDS_EXPAND 31124
|
||||
#define IDS_COLLAPSE 31125
|
||||
|
||||
|
||||
#define IDD_EDIT_STRING 2000
|
||||
|
|
|
@ -273,7 +273,7 @@ HWND CreateTreeView(HWND hwndParent, LPTSTR pHostName, int id)
|
|||
/* Get the dimensions of the parent window's client area, and create the tree view control. */
|
||||
GetClientRect(hwndParent, &rcClient);
|
||||
hwndTV = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, NULL,
|
||||
WS_VISIBLE | WS_CHILD | WS_TABSTOP | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT,
|
||||
WS_VISIBLE | WS_CHILD | WS_TABSTOP | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_EDITLABELS,
|
||||
0, 0, rcClient.right, rcClient.bottom,
|
||||
hwndParent, (HMENU)id, hInst, NULL);
|
||||
/* Initialize the image list, and add items to the control. */
|
||||
|
|
Loading…
Reference in a new issue