⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkmenu.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
📖 第 1 页 / 共 4 页
字号:
			g_bX509CertRequestEnabled &&
			PKIsActionEnabled (ppks, KM_ADDCERTIFICATE));

	// "Servers" menu
	hMP = GetSubMenu (ppks->hmenuKeyMan, MENU_SERVER);

	DeleteMenu (hMP, SENDTOSERVERPOS, MF_BYPOSITION);
	LoadString (g_hinst, IDS_SENDTOSERVERMENU, sz, sizeof(sz));
	if (PKIsActionEnabled (ppks, KM_SENDTOSERVER))
	{
		ppks->hmenuKeyserver = sCreateKeyserverMenu (ppks);
		InsertMenu (hMP, SENDTOSERVERPOS, MF_BYPOSITION|MF_POPUP|MF_STRING,
				(UINT)ppks->hmenuKeyserver, sz);
	}
	else
	{
		InsertMenu (hMP, SENDTOSERVERPOS, MF_BYPOSITION|MF_STRING,
				IDM_SENDTOSERVERPOPUP, sz);
		sSetItem (hMP, IDM_SENDTOSERVERPOPUP, FALSE);
	}

	sSetItem (hMP, IDM_GETFROMSERVER,
			PKIsActionEnabled (ppks, KM_GETFROMSERVER));
	sSetItem (hMP, IDM_RETRIEVECERTIFICATE,
			PKIsActionEnabled (ppks, KM_RETRIEVECERTIFICATE));

	// "Groups" menu
	hMP = GetSubMenu (ppks->hmenuKeyMan, MENU_GROUPS);

	if (ppks->bGroupsVisible)
	{
		sSetItem (hMP, IDM_GROUPPROPERTIES,
				PGPgmIsActionEnabled (hGM, GM_PROPERTIES));
	}
	else
		sSetItem (hMP, IDM_GROUPPROPERTIES, FALSE);

}

//	______________________________________________________
//
//  Put up appropriate context menu on basis of key idx
//  of currently focused item.  Called in response to right
//  mouse click.
//
//	hWnd		= handle of parent window
//	uSelFlags	= bits indicate what types of objects are selected
//	x, y		= mouse position when right button clicked (screen coords)

VOID
PKContextMenu (
		PGPKEYSSTRUCT*	ppks,
		HWND			hWnd,
		INT				x,
		INT				y)
{
	HMENU			hMC;
	HMENU			hMCS;
	HMENU			hMenuTrackPopup;
	HKEYLIST		hKL;
	HGROUPMAN		hGM;
	UINT			uAddIndex;
	CHAR			sz[64];

	if (ppks->bGroupsFocused)
	{
		hGM = ppks->hGM;
		switch (ppks->uGroupSelectionFlags) {
		case 0 :
			hMC = NULL;
			break;

		case PGPGM_GROUPFLAG :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUGROUP));
			sSetItem (hMC, IDM_PASTEKEY,
							PGPgmIsActionEnabled (hGM, GM_PASTE));
			sSetItem (hMC, IDM_DELETEKEY,
							PGPgmIsActionEnabled (hGM, GM_DELETE));
			sSetItem (hMC, IDM_GETFROMSERVER,
							PGPgmIsActionEnabled (hGM, GM_GETFROMSERVER));
			sSetItem (hMC, IDM_GROUPPROPERTIES,
							PGPgmIsActionEnabled (hGM, GM_PROPERTIES));
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;

		case PGPGM_KEYFLAG :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUGROUPKEY));
			sSetItem (hMC, IDM_PASTEKEY,
							PGPgmIsActionEnabled (hGM, GM_PASTE));
			sSetItem (hMC, IDM_DELETEKEY,
							PGPgmIsActionEnabled (hGM, GM_DELETE));
			sSetItem (hMC, IDM_FINDKEY,
							PGPgmIsActionEnabled (hGM, GM_LOCATEKEYS));
			sSetItem (hMC, IDM_GETFROMSERVER,
							PGPgmIsActionEnabled (hGM, GM_GETFROMSERVER));
			sSetItem (hMC, IDM_PROPERTIES,
							PGPgmIsActionEnabled (hGM, GM_LOCATEKEYS));
			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;

		default :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUGROUP));
			sSetItem (hMC, IDM_PASTEKEY, FALSE);
			sSetItem (hMC, IDM_DELETEKEY,
							PGPgmIsActionEnabled (hGM, GM_DELETE));
			sSetItem (hMC, IDM_GETFROMSERVER,
							PGPgmIsActionEnabled (hGM, GM_GETFROMSERVER));
			sSetItem (hMC, IDM_GROUPPROPERTIES, FALSE);
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;
		}
	}
	else
	{
		hKL = ppks->hKL;

		switch (ppks->uKeySelectionFlags) {
		case 0 :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUNONE));
			sSetItem (hMC, IDM_PASTEKEY,
					PKIsActionEnabled (ppks, KM_PASTE));
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;

		case kPGPclKeyList_Key :
			if (ppks->uFlags & PK_KEYWINDOW)
			{
				hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUKEY));
				uAddIndex = 6;
			}
			else
			{
				if (ppks->bLocalKeySet)
				{
					hMC = LoadMenu (g_hinst,
							MAKEINTRESOURCE (IDR_MENUKEYSEARCHLOCAL));
					uAddIndex = 6;
				}
				else
				{
					hMC = LoadMenu (g_hinst,
							MAKEINTRESOURCE (IDR_MENUKEYSEARCHSERVER));
					uAddIndex = 7;
				}
				sSetItem (hMC, IDM_ADDTOMAIN,
						PKIsActionEnabled (ppks, KM_ADDTOMAIN));
			}
  			hMenuTrackPopup = GetSubMenu (hMC, 0);

			sSetItem (hMC, IDM_COPYKEY,
					PKIsActionEnabled (ppks, KM_COPY));
			sSetItem (hMC, IDM_PASTEKEY,
					PKIsActionEnabled (ppks, KM_PASTE));
			sSetItem (hMC, IDM_DELETEKEY,
					PKIsActionEnabled (ppks, KM_DELETE));
			sSetItem (hMC, IDM_DELETESERVER,
					PKIsActionEnabled (ppks, KM_DELETEFROMSERVER));
			sSetItem (hMC, IDM_CERTIFYKEY,
					PKIsActionEnabled (ppks, KM_CERTIFY));
			sSetItem (hMC, IDM_ENABLEKEY,
					PKIsActionEnabled (ppks, KM_ENABLE));
			if (ppks->bLocalKeySet)
				sSetItem (hMC, IDM_DISABLEKEY,
						PKIsActionEnabled (ppks, KM_DISABLE));
			else
				sSetItem (hMC, IDM_DISABLEKEY,
						PKIsActionEnabled (ppks, KM_DISABLEONSERVER));

			sSetItem (hMC, IDM_SPLITKEY,
					PKIsActionEnabled (ppks, KM_SPLITKEY));

			sSetItem (hMC, IDM_REVOKEKEY,
					PKIsActionEnabled (ppks, KM_REVOKE));
			sSetItem (hMC, IDM_REVERIFY,
					PKIsActionEnabled (ppks, KM_REVERIFYSIGS));
			sSetItem (hMC, IDM_SETASDEFAULT,
					PKIsActionEnabled (ppks, KM_SETASDEFAULT));
			sSetItem (hMC, IDM_EXPORTKEYS,
					PKIsActionEnabled (ppks, KM_EXPORT));

			LoadString (g_hinst, IDS_SENDTOSERVERMENU, sz, sizeof(sz));
			if (PKIsActionEnabled (ppks, KM_SENDTOSERVER))
			{
				ppks->hmenuKeyserver = sCreateKeyserverMenu (ppks);
				InsertMenu (hMenuTrackPopup, 13,
						MF_BYPOSITION|MF_POPUP|MF_STRING,
						(UINT)ppks->hmenuKeyserver, sz);
			}
			else
			{
				InsertMenu (hMC, 13, MF_BYPOSITION|MF_STRING,
						IDM_SENDTOSERVERPOPUP, sz);
				sSetItem (hMenuTrackPopup, IDM_SENDTOSERVERPOPUP, FALSE);
			}

			sSetItem (hMC, IDM_GETFROMSERVER,
					PKIsActionEnabled (ppks, KM_GETFROMSERVER));
			sSetItem (hMC, IDM_RETRIEVECERTIFICATE,
					PKIsActionEnabled (ppks, KM_RETRIEVECERTIFICATE));
			sSetItem (hMC, IDM_PROPERTIES,
					PKIsActionEnabled (ppks, KM_PROPERTIES));

			// take care of "Add" popup submenu
			hMCS = GetSubMenu (hMenuTrackPopup, uAddIndex);
			sSetItem (hMCS, IDM_ADDUSERID,
					PKIsActionEnabled (ppks, KM_ADDUSERID));
			sSetItem (hMCS, IDM_ADDPHOTOID,
					PKIsActionEnabled (ppks, KM_ADDPHOTOID));
			sSetItem (hMCS, IDM_ADDREVOKER,
					PKIsActionEnabled (ppks, KM_ADDREVOKER));
			sSetItem (hMCS, IDM_ADDCERTIFICATE,
					g_bX509CertRequestEnabled &&
					PKIsActionEnabled (ppks, KM_ADDCERTIFICATE));
			break;

		case kPGPclKeyList_UserID :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUUID));
			sSetItem (hMC, IDM_DELETEKEY,
					PKIsActionEnabled (ppks, KM_DELETE));
			sSetItem (hMC, IDM_CERTIFYKEY,
					PKIsActionEnabled (ppks, KM_CERTIFY));
			sSetItem (hMC, IDM_SETASDEFAULT,
					PKIsActionEnabled (ppks, KM_SETASPRIMARY));
			sSetItem (hMC, IDM_PROPERTIES,
					PKIsActionEnabled (ppks, KM_PROPERTIES));
	  		hMenuTrackPopup = GetSubMenu (hMC, 0);

			// take care of "Add" popup submenu
			uAddIndex = 4;
			hMCS = GetSubMenu (hMenuTrackPopup, uAddIndex);
			sSetItem (hMCS, IDM_ADDCERTIFICATE,
					g_bX509CertRequestEnabled &&
					PKIsActionEnabled (ppks, KM_ADDCERTIFICATE));
			break;

		case kPGPclKeyList_Signature :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUCERT));
			sSetItem (hMC, IDM_COPYKEY,
					PKIsActionEnabled (ppks, KM_COPY));
			sSetItem (hMC, IDM_DELETEKEY,
					PKIsActionEnabled (ppks, KM_DELETE));
			sSetItem (hMC, IDM_REVOKEKEY,
					PKIsActionEnabled (ppks, KM_REVOKE));
			sSetItem (hMC, IDM_GETFROMSERVER,
					PKIsActionEnabled (ppks, KM_GETFROMSERVER));
			sSetItem (hMC, IDM_EXPORTKEYS,
					PKIsActionEnabled (ppks, KM_EXPORT));
			sSetItem (hMC, IDM_PROPERTIES,
					PKIsActionEnabled (ppks, KM_PROPERTIES));
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;

		default :
			hMC = LoadMenu (g_hinst, MAKEINTRESOURCE (IDR_MENUPROMISCUOUS));
			sSetItem (hMC, IDM_DELETEKEY,
					PKIsActionEnabled (ppks, KM_DELETE));
			sSetItem (hMC, IDM_CERTIFYKEY,
					PKIsActionEnabled (ppks, KM_CERTIFY));
			sSetItem (hMC, IDM_PROPERTIES,
					PKIsActionEnabled (ppks, KM_PROPERTIES));
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;
		}
	}

	if (!hMC) return;

	TrackPopupMenu (hMenuTrackPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON,
			x, y, 0, hWnd, NULL);

	DestroyMenu (hMC);
}


//	______________________________________________________
//
//  Put up keyserver menu for send to server button in toolbar
//
//	hWnd		= handle of parent window

VOID
PKToolbarKeyserverMenu (
		PGPKEYSSTRUCT*	ppks,
		HWND			hWnd,
		LPRECT			lprect)
{
	HMENU		hMenuKeyserver;

	hMenuKeyserver = sCreateKeyserverMenu (ppks);
	TrackPopupMenu (hMenuKeyserver,
			TPM_LEFTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON,
			lprect->left +2, lprect->bottom +4, 0, hWnd, NULL);

	DestroyMenu (hMenuKeyserver);
}


//	___________________________________________________
//
//	perform the specified action

PGPError
PKPerformAction (
		PGPKEYSSTRUCT*	ppks,
		ULONG			ulAction)
{
	if (!ppks)
		return kPGPError_BadParams;
	if (!PKIsActionEnabled (ppks, ulAction))
		return kPGPError_UnknownRequest;

	switch (ulAction) {

	case KM_COPY :
		PKCopyKeys (ppks, NULL);
		break;

	case KM_PASTE :
		PKPasteKeys (ppks);
		break;

	case KM_DELETE :
		PKDeleteObject (ppks);
		break;

	case KM_SELECTALL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclSelectAll, NULL);
		break;

	case KM_UNSELECTALL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclDeselectAll, NULL);
		break;

	case KM_COLLAPSEALL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclSelectAll, NULL);
		PGPclKeyListSetTree (ppks->hKL, kPGPclCollapse, NULL);
		PGPclKeyListSetTree (ppks->hKL, kPGPclDeselectAll, NULL);
		break;

	case KM_COLLAPSESEL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclCollapse, NULL);
		break;

	case KM_EXPANDALL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclSelectAll, NULL);
		PGPclKeyListSetTree (ppks->hKL, kPGPclExpand, NULL);
		PGPclKeyListSetTree (ppks->hKL, kPGPclDeselectAll, NULL);
		break;

	case KM_EXPANDSEL :
		PGPclKeyListSetTree (ppks->hKL, kPGPclExpand, NULL);
		break;

	case KM_CERTIFY :
		PKCertifyKeyOrUserID (ppks);
		break;

	case KM_ENABLE :
		PKEnableKey (ppks);
		break;

	case KM_DISABLE :
		PKDisableKey (ppks);
		break;

	case KM_ADDUSERID :
		PKAddUserToKey (ppks);
		break;

	case KM_ADDPHOTOID :
		PKAddPhotoToKey (ppks);
		break;

	case KM_ADDREVOKER :
		PKAddRevoker (ppks);
		break;

	case KM_ADDCERTIFICATE :
		PKAddCertificate (ppks);
		break;

	case KM_REVOKE :
	{
		PGPUInt32	uSel;

		PGPclKeyListGetSelectionInfo (ppks->hKL, NULL, NULL, NULL, &uSel);
		if (uSel == kPGPclKeyList_Signature)
			PKRevokeCert (ppks);
		else
			PKRevokeKey (ppks);
		break;
	}

	case KM_SETASDEFAULT :
		PKSetDefaultKey (ppks);
		break;

	case KM_SETASPRIMARY :
		PKSetPrimaryUserID (ppks);
		break;

	case KM_IMPORT :
		PKInputFile (ppks, NULL);
		break;

	case KM_EXPORT :
		PKExportKeys (ppks, NULL);
		break;

	case KM_PROPERTIES :
		PKObjectProperties (ppks);
		break;

	case KM_SENDTOSERVER :
		PKSendToServer (ppks, kPGPclSpecifiedServer);
		break;

	case KM_GETFROMSERVER :
		PKGetFromServer (ppks);
		break;

	case KM_RETRIEVECERTIFICATE :
		PKRetrieveCertificate (ppks);
		break;

	case KM_DELETEFROMSERVER :
		PKDeleteFromServer (ppks);
		break;

	case KM_DISABLEONSERVER :
		PKDisableOnServer (ppks);
		break;

	case KM_ADDTOMAIN :
		PKAddSelectedToMain (ppks);
		break;

	case KM_REVERIFYSIGS :
		PKReverifySigs (ppks);
		break;

	case KM_SPLITKEY :
		PKSplitKey (ppks);
		break;

	case KM_RECONSTRUCTKEY :
		PKReconstructKey (ppks);
		break;

	case KM_SENDTORECONSERVER :
		PKSendToReconServer (ppks);
		break;

	case KM_SENDTOTOKEN :
		PKSendToToken (ppks);
		break;

	case KM_SENDVIAEMAIL :
		PKSendViaEmail (ppks);
		break;
	}

	return kPGPError_NoErr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -