📄 pkmenu.c
字号:
/*____________________________________________________________________________
Copyright (C) 1998 Network Associates, Inc.
All rights reserved.
PGPkeysMenu.c - handle menu enabling/disabling chores
$Id: PKMenu.c,v 1.59 1999/01/27 15:48:15 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "pgpkeysx.h"
// pgp header files
#include "pgpkeyserverprefs.h"
// constant definitions
#define SENDTOSERVERPOS 0
#define MENU_FILE 0
#define MENU_EDIT 1
#define MENU_VIEW 2
#define MENU_KEYS 3
#define MENU_SERVER 4
#define MENU_GROUPS 5
#define MENU_HELP 6
#define SUBMENU_ADD 2
// External globals
extern HINSTANCE g_hInst;
extern PGPBoolean g_bKeyGenEnabled;
extern PGPBoolean g_bX509CertRequestEnabled;
extern BOOL g_bReadOnly;
extern PGPContextRef g_Context;
// ___________________________________________________
//
// create popup menu which is list of keyservers
static HMENU
sCreateKeyserverMenu (VOID)
{
PGPUInt32 uNumServers = 0;
HMENU hmenu = NULL;
PGPKeyServerEntry* keyserverList;
PGPPrefRef prefref;
PGPUInt32 u, uID;
PGPError err;
CHAR sz[256];
err = PGPclOpenClientPrefs (PGPGetContextMemoryMgr (g_Context),
&prefref);
if (IsPGPError (err)) return NULL;
hmenu = CreatePopupMenu ();
err = PGPGetKeyServerPrefs (prefref, &keyserverList, &uNumServers);
if (IsntPGPError (err)) {
LoadString (g_hInst, IDS_DOMAINSERVER, sz, sizeof(sz));
AppendMenu (hmenu, MF_STRING, IDM_DOMAINKEYSERVERX, sz);
AppendMenu (hmenu, MF_SEPARATOR, 0, NULL);
uID = 1;
for (u=0; u<uNumServers; u++) {
if (IsKeyServerListed (keyserverList[u].flags)) {
PGPGetKeyServerURL (&(keyserverList[u]), sz);
AppendMenu (hmenu, MF_STRING, IDM_DOMAINKEYSERVERX +uID, sz);
++uID;
}
}
if (keyserverList) PGPDisposePrefData (prefref, keyserverList);
}
PGPclCloseClientPrefs (prefref, FALSE);
return hmenu;
}
// ___________________________________________________
//
// initialize the main window menu based on build flags
VOID
PKInitMenuKeyMan (HMENU hmenu)
{
HMENU hmenuServer;
if (PGPclIsClientInstall ())
{
// get "Servers" menu
hmenuServer = GetSubMenu (hmenu, MENU_SERVER);
// delete "Send Group Lists" item
DeleteMenu (hmenuServer, IDM_SENDGROUPLISTS, MF_BYCOMMAND);
#if !PGP_BUSINESS_SECURITY
// delete "Update" items
DeleteMenu (hmenuServer, IDM_UPDATEGROUPLISTS, MF_BYCOMMAND);
DeleteMenu (hmenuServer, IDM_UPDATEINTRODUCERS, MF_BYCOMMAND);
// delete separator
DeleteMenu (hmenuServer, (GetMenuItemCount (hmenuServer) -1),
MF_BYPOSITION);
#endif //!PGP_BUSINESS_SECURITY
}
}
// ___________________________________________________
//
// derive the keyserver string name from the menu ID
VOID
PKGetServerFromID (
UINT uID,
PGPKeyServerEntry* pkeyserver)
{
PGPUInt32 uNumServers = 0;
HMENU hmenu = NULL;
PGPKeyServerEntry* keyserverList = NULL;
PGPPrefRef prefref = kInvalidPGPPrefRef;
PGPUInt32 u1, u2;
PGPError err;
err = PGPclOpenClientPrefs (PGPGetContextMemoryMgr (g_Context),
&prefref);
if (IsPGPError (err)) return;
if (uID == IDM_DOMAINKEYSERVERX) {
err = PGPCreateKeyServerPath (prefref, "",
&keyserverList, &uNumServers);
if (IsntPGPError (err)) {
CopyMemory (pkeyserver, &(keyserverList[0]),
sizeof(PGPKeyServerEntry));
PGPDisposeKeyServerPath (keyserverList);
}
}
else {
PGPGetKeyServerPrefs (prefref, &keyserverList, &uNumServers);
if ((uID - IDM_DOMAINKEYSERVERX) <= uNumServers) {
u1 = IDM_DOMAINKEYSERVERX+1;
for (u2=0; u2<uNumServers; u2++) {
if (IsKeyServerListed (keyserverList[u2].flags)) {
if (uID == u1) {
CopyMemory (pkeyserver, &(keyserverList[u2]),
sizeof(PGPKeyServerEntry));
break;
}
u1++;
}
}
}
if (keyserverList) PGPDisposePrefData (prefref, keyserverList);
}
PGPclCloseClientPrefs (prefref, FALSE);
return;
}
// _____________________________________________________
//
// Set the Expand/Collapse items to "All" or "Selection"
static VOID
sSetMenuAllOrSelected (
HMENU hMenu,
BOOL bAll)
{
MENUITEMINFO mii;
CHAR sz[64];
mii.cbSize = sizeof (MENUITEMINFO);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_STRING;
if (bAll) {
LoadString (g_hInst, IDS_COLLAPSEALL, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_COLLAPSESEL, FALSE, &mii);
LoadString (g_hInst, IDS_EXPANDALL, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_EXPANDSEL, FALSE, &mii);
}
else {
LoadString (g_hInst, IDS_COLLAPSESEL, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_COLLAPSESEL, FALSE, &mii);
LoadString (g_hInst, IDS_EXPANDSEL, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_EXPANDSEL, FALSE, &mii);
}
}
// ______________________________________________
//
// Set the "Set As ..." to "Default" or "Primary"
static VOID
sSetMenuDefaultOrPrimary (
HMENU hMenu,
BOOL bDefault)
{
MENUITEMINFO mii;
CHAR sz[64];
mii.cbSize = sizeof (MENUITEMINFO);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_STRING;
if (bDefault) {
LoadString (g_hInst, IDS_SETASDEFAULT, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_SETASDEFAULT, FALSE, &mii);
}
else {
LoadString (g_hInst, IDS_SETASPRIMARY, sz, sizeof(sz));
mii.dwTypeData = sz;
mii.cch = lstrlen (sz);
SetMenuItemInfo (hMenu, IDM_SETASDEFAULT, FALSE, &mii);
}
}
// ____________________________________
//
// Enable/Disable menu items
static VOID
sSetItem (
HMENU hMenu,
INT iId,
BOOL bEnable)
{
if (bEnable)
EnableMenuItem (hMenu, iId, MF_BYCOMMAND|MF_ENABLED);
else
EnableMenuItem (hMenu, iId, MF_BYCOMMAND|MF_GRAYED);
}
// _______________________________________________
//
// Enable/Disable menu items on basis of currently
// focused key type
VOID
PKSetMainMenu (PGPKEYSSTRUCT* ppks)
{
HMENU hMP;
HKEYMAN hKM;
HGROUPMAN hGM;
ULONG ulColumns;
CHAR sz[64];
hKM = ppks->hKM;
hGM = ppks->hGM;
// "Edit" menu
hMP = GetSubMenu (ppks->hMenuKeyMan, MENU_EDIT);
sSetItem (hMP, IDM_COPYKEY, PGPkmIsActionEnabled (hKM, KM_COPY));
if (ppks->bGroupsFocused) {
sSetItem (hMP, IDM_PASTEKEY, PGPgmIsActionEnabled (hGM, GM_PASTE));
sSetItem (hMP, IDM_DELETEKEY, PGPgmIsActionEnabled (hGM, GM_DELETE));
sSetMenuAllOrSelected (hMP,
!PGPgmIsActionEnabled (hGM, GM_EXPANDSEL));
}
else {
sSetItem (hMP, IDM_PASTEKEY, PGPkmIsActionEnabled (hKM, KM_PASTE));
sSetItem (hMP, IDM_DELETEKEY, PGPkmIsActionEnabled (hKM, KM_DELETE));
sSetMenuAllOrSelected (hMP,
!PGPkmIsActionEnabled (hKM, KM_EXPANDSEL));
}
// "View" menu
hMP = GetSubMenu (ppks->hMenuKeyMan, MENU_VIEW);
PGPkmGetSelectedColumns (hKM, &ulColumns);
if (ulColumns & KM_VALIDITY)
CheckMenuItem (hMP, IDM_VIEWVALIDITY, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWVALIDITY, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_SIZE)
CheckMenuItem (hMP, IDM_VIEWSIZE, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWSIZE, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_DESCRIPTION)
CheckMenuItem (hMP, IDM_VIEWDESC, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWDESC, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_KEYID)
CheckMenuItem (hMP, IDM_VIEWKEYID, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWKEYID, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_TRUST)
CheckMenuItem (hMP, IDM_VIEWTRUST, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWTRUST, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_CREATION)
CheckMenuItem (hMP, IDM_VIEWCREATION, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWCREATION, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_EXPIRATION)
CheckMenuItem (hMP, IDM_VIEWEXPIRATION, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem (hMP, IDM_VIEWEXPIRATION, MF_BYCOMMAND|MF_UNCHECKED);
if (ulColumns & KM_ADK)
CheckMenuItem (hMP, IDM_VIEWADK, MF_BYCOMMAND|MF_CHECKED);
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -