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

📄 pkmenu.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		CheckMenuItem (hMP, IDM_VIEWADK, MF_BYCOMMAND|MF_UNCHECKED);

	if (ppks->iToolHeight > 0) 
		CheckMenuItem (hMP, IDM_VIEWTOOLBAR, MF_BYCOMMAND|MF_CHECKED);
	else
		CheckMenuItem (hMP, IDM_VIEWTOOLBAR, MF_BYCOMMAND|MF_UNCHECKED);


	// "Keys" menu
	hMP = GetSubMenu (ppks->hMenuKeyMan, MENU_KEYS);

	sSetItem (hMP, IDM_CERTIFYKEY, PGPkmIsActionEnabled (hKM, KM_CERTIFY));
	sSetItem (hMP, IDM_ENABLEKEY, PGPkmIsActionEnabled (hKM, KM_ENABLE));
	sSetItem (hMP, IDM_DISABLEKEY, PGPkmIsActionEnabled (hKM, KM_DISABLE));
	sSetItem (hMP, IDM_REVOKEKEY, PGPkmIsActionEnabled (hKM, KM_REVOKE));
	sSetItem (hMP, IDM_REVERIFY, 
							PGPkmIsActionEnabled (hKM, KM_REVERIFYSIGS));

	if (PGPkmIsActionEnabled (hKM, KM_SETASPRIMARY)) {
		sSetMenuDefaultOrPrimary (hMP, FALSE);
		EnableMenuItem (hMP, IDM_SETASDEFAULT, MF_BYCOMMAND|MF_ENABLED);
	}
	else {
		sSetMenuDefaultOrPrimary (hMP, TRUE);
		sSetItem (hMP, IDM_SETASDEFAULT, 
							PGPkmIsActionEnabled (hKM, KM_SETASDEFAULT));
	}

	sSetItem (hMP, IDM_CREATEKEY, (!g_bReadOnly) && g_bKeyGenEnabled);

	sSetItem (hMP, IDM_SPLITKEY, PGPkmIsActionEnabled (hKM, KM_SPLITKEY));

	sSetItem (hMP, IDM_IMPORTKEYS, PGPkmIsActionEnabled (hKM, KM_IMPORT));
	sSetItem (hMP, IDM_EXPORTKEYS, PGPkmIsActionEnabled (hKM, KM_EXPORT));

	sSetItem (hMP, IDM_PROPERTIES, 
							PGPkmIsActionEnabled (hKM, KM_PROPERTIES));

	// "Add" popup submenu
	hMP = GetSubMenu (hMP, SUBMENU_ADD);
	sSetItem (hMP, IDM_ADDUSERID, 
							PGPkmIsActionEnabled (hKM, KM_ADDUSERID));
	sSetItem (hMP, IDM_ADDPHOTOID, 
							PGPkmIsActionEnabled (hKM, KM_ADDPHOTOID));
	sSetItem (hMP, IDM_ADDREVOKER, 
							PGPkmIsActionEnabled (hKM, KM_ADDREVOKER));
	sSetItem (hMP, IDM_ADDCERTIFICATE, 
							g_bX509CertRequestEnabled &&
							PGPkmIsActionEnabled (hKM, KM_ADDCERTIFICATE));

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

	DeleteMenu (hMP, SENDTOSERVERPOS, MF_BYPOSITION);
	LoadString (g_hInst, IDS_SENDTOSERVERMENU, sz, sizeof(sz));
	if (PGPkmIsActionEnabled (hKM, KM_SENDTOSERVER)) {
		ppks->hMenuKeyserver = sCreateKeyserverMenu ();
		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, 
						PGPkmIsActionEnabled (hKM, KM_GETFROMSERVER));
	sSetItem (hMP, IDM_RETRIEVECERTIFICATE, 
						PGPkmIsActionEnabled (hKM, 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;
	HKEYMAN			hKM;
	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 {
		hKM = ppks->hKM;

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

		case PGPKM_KEYFLAG :
			if (ppks->bMainWindow) {
				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, 
							PGPkmIsActionEnabled (hKM, KM_ADDTOMAIN));
			}
  			hMenuTrackPopup = GetSubMenu (hMC, 0);

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

			sSetItem (hMC, IDM_SPLITKEY, 
							PGPkmIsActionEnabled (hKM, KM_SPLITKEY));

			sSetItem (hMC, IDM_REVOKEKEY, 
							PGPkmIsActionEnabled (hKM, KM_REVOKE));
			sSetItem (hMC, IDM_REVERIFY, 
							PGPkmIsActionEnabled (hKM, KM_REVERIFYSIGS));
			sSetItem (hMC, IDM_SETASDEFAULT, 
							PGPkmIsActionEnabled (hKM, KM_SETASDEFAULT));
			sSetItem (hMC, IDM_EXPORTKEYS, 
							PGPkmIsActionEnabled (hKM, KM_EXPORT));

			LoadString (g_hInst, IDS_SENDTOSERVERMENU, sz, sizeof(sz));
			if (PGPkmIsActionEnabled (hKM, KM_SENDTOSERVER)) {
				ppks->hMenuKeyserver = sCreateKeyserverMenu ();
				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, 
							PGPkmIsActionEnabled (hKM, KM_GETFROMSERVER));
			sSetItem (hMC, IDM_PROPERTIES, 
							PGPkmIsActionEnabled (hKM, KM_PROPERTIES));

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

		case PGPKM_UIDFLAG :
			hMC = LoadMenu (g_hInst, MAKEINTRESOURCE (IDR_MENUUID));
			sSetItem (hMC, IDM_DELETEKEY, 
							PGPkmIsActionEnabled (hKM, KM_DELETE));
			sSetItem (hMC, IDM_CERTIFYKEY, 
							PGPkmIsActionEnabled (hKM, KM_CERTIFY));
			sSetItem (hMC, IDM_SETASDEFAULT, 
							PGPkmIsActionEnabled (hKM, KM_SETASPRIMARY));
			sSetItem (hMC, IDM_PROPERTIES, 
							PGPkmIsActionEnabled (hKM, KM_PROPERTIES));
	  		hMenuTrackPopup = GetSubMenu (hMC, 0);

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

		case PGPKM_CERTFLAG :
			hMC = LoadMenu (g_hInst, MAKEINTRESOURCE (IDR_MENUCERT));
			sSetItem (hMC, IDM_DELETEKEY, 
							PGPkmIsActionEnabled (hKM, KM_DELETE));
			sSetItem (hMC, IDM_REVOKEKEY, 
							PGPkmIsActionEnabled (hKM, KM_REVOKE));
			sSetItem (hMC, IDM_GETFROMSERVER, 
							PGPkmIsActionEnabled (hKM, KM_GETFROMSERVER));
			sSetItem (hMC, IDM_PROPERTIES, 
							PGPkmIsActionEnabled (hKM, KM_PROPERTIES));
  			hMenuTrackPopup = GetSubMenu (hMC, 0);
			break;

		default :
			hMC = LoadMenu (g_hInst, MAKEINTRESOURCE (IDR_MENUPROMISCUOUS));
			sSetItem (hMC, IDM_DELETEKEY, 
							PGPkmIsActionEnabled (hKM, KM_DELETE));
			sSetItem (hMC, IDM_CERTIFYKEY, 
							PGPkmIsActionEnabled (hKM, KM_CERTIFY));
			sSetItem (hMC, IDM_PROPERTIES, 
							PGPkmIsActionEnabled (hKM, 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 (
		HWND			hWnd,
		LPRECT			lprect) 
{
	HMENU		hMenuKeyserver;
	POINT		pt;

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

	DestroyMenu (hMenuKeyserver);
}

⌨️ 快捷键说明

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