626 |
} |
} |
627 |
|
|
628 |
|
|
629 |
#define enable_button(hwnd, cid) \ |
#define enable_button(hwnd, cid, item_selected) \ |
630 |
SendMessage ((hwnd), TB_ENABLEBUTTON, (cid), MAKELONG (key_selected, 0)) |
SendMessage ((hwnd), TB_ENABLEBUTTON, (cid), MAKELONG ((item_selected), 0)) |
631 |
|
|
632 |
|
|
633 |
/* Interactive modification of the dialog item which depend if an item |
/* Interactive modification of the dialog item which depend if an item |
636 |
void |
void |
637 |
update_ui_items (HWND hwnd, listview_ctrl_t lv) |
update_ui_items (HWND hwnd, listview_ctrl_t lv) |
638 |
{ |
{ |
639 |
HWND hwnd_child; |
HWND tb_hwnd; |
640 |
HMENU hmenu; |
HMENU hmenu; |
641 |
|
int mult_resids[] = {ID_KEYMISC_PROPS, ID_KEYMISC_SIGN, ID_KEYMISC_EDITKEY, |
642 |
|
ID_KEYMISC_CHECKSIGS, ID_KEYMISC_REVCERT, 0}; |
643 |
int key_selected = 0; |
int key_selected = 0; |
644 |
int key_has_sec = 0; |
int key_has_sec = 0; |
645 |
int key_inv = 0; |
int key_inv = 0; |
|
int mult_resids[] = {ID_KEYMISC_PROPS, ID_KEYMISC_SIGN, ID_KEYMISC_EDITKEY, |
|
|
ID_KEYMISC_CHECKSIGS, ID_KEYMISC_REVCERT, 0}; |
|
646 |
int i, state=0; |
int i, state=0; |
647 |
|
|
648 |
/* Get some states */ |
/* Get some states */ |
649 |
key_selected = SendMessage (GetDlgItem (hwnd, IDC_KEYMISC_KEYLIST), |
key_selected = SendMessage (GetDlgItem (hwnd, IDC_KEYMISC_KEYLIST), |
650 |
LVM_GETSELECTEDCOUNT, 0, 0) |
LVM_GETSELECTEDCOUNT, 0, 0) |
658 |
} |
} |
659 |
|
|
660 |
/* Enable / disable toolbar buttons */ |
/* Enable / disable toolbar buttons */ |
661 |
hwnd_child = GetDlgItem (hwnd, IDR_WINPT_KMTB); |
tb_hwnd = GetDlgItem (hwnd, IDR_WINPT_KMTB); |
662 |
enable_button (hwnd_child, ID_KEYMISC_DELETE); |
enable_button (tb_hwnd, ID_KEYMISC_DELETE, key_selected); |
663 |
enable_button (hwnd_child, ID_KEYMISC_PROPS); |
enable_button (tb_hwnd, ID_KEYMISC_PROPS, key_selected); |
664 |
enable_button (hwnd_child, ID_KEYMISC_SIGN); |
enable_button (tb_hwnd, ID_KEYMISC_SIGN, key_selected && !key_inv); |
665 |
enable_button (hwnd_child, ID_KEYMISC_EXPORT); |
enable_button (tb_hwnd, ID_KEYMISC_EXPORT, key_selected); |
666 |
|
|
667 |
/* Enable / disable menu items */ |
/* Enable / disable menu items */ |
668 |
state = key_selected? MF_ENABLED : MF_DISABLED|MF_GRAYED; |
state = key_selected? MF_ENABLED : MF_DISABLED|MF_GRAYED; |
684 |
for (i=0; mult_resids[i] != 0; i++) |
for (i=0; mult_resids[i] != 0; i++) |
685 |
set_menu_state (hmenu, mult_resids[i], MF_GRAYED); |
set_menu_state (hmenu, mult_resids[i], MF_GRAYED); |
686 |
} |
} |
687 |
|
|
688 |
|
/* Disable all secret-key functions when no secret key is available. */ |
689 |
|
{ |
690 |
|
gpg_keycache_t sec = keycache_get_ctx (0); |
691 |
|
if (gpg_keycache_get_size (sec) == 0) { |
692 |
|
enable_button (tb_hwnd, ID_KEYMISC_SIGN, FALSE); |
693 |
|
set_menu_state (hmenu, ID_KEYMISC_SIGN, MF_GRAYED); |
694 |
|
} |
695 |
|
} |
696 |
} |
} |
697 |
|
|
698 |
|
|
894 |
} |
} |
895 |
|
|
896 |
|
|
897 |
|
/* Helper to handle the help file. If @check is 1 |
898 |
|
the existence of the file is checked. |
899 |
|
Otherwise the help file will be loaded. */ |
900 |
|
static bool |
901 |
|
start_help (HWND dlg, int check) |
902 |
|
{ |
903 |
|
DWORD n; |
904 |
|
char path[MAX_PATH+1+32]; |
905 |
|
|
906 |
|
n = GetModuleFileName (NULL, path, sizeof (path)-1-32); |
907 |
|
if (!n) |
908 |
|
return false; |
909 |
|
path[n] = 0; |
910 |
|
while (n-- && path[n] != '\\') |
911 |
|
; |
912 |
|
path[n+1] = 0; |
913 |
|
strcat (path, "winpt.chm"); |
914 |
|
if (!check) |
915 |
|
ShellExecute (dlg, "open", path, NULL, NULL, SW_SHOW); |
916 |
|
return file_exist_check (path) == 0? true : false; |
917 |
|
} |
918 |
|
|
919 |
/* Translate all menu strings. */ |
/* Translate all menu strings. */ |
920 |
static void |
static void |
921 |
translate_menu_strings (HWND dlg) |
translate_menu_strings (HWND dlg) |
965 |
set_menu_text (menu, ID_KEYMISC_VIEWTYPE, _("Type")); |
set_menu_text (menu, ID_KEYMISC_VIEWTYPE, _("Type")); |
966 |
set_menu_text (menu, ID_KEYMISC_VIEWCREAT, _("Creation")); |
set_menu_text (menu, ID_KEYMISC_VIEWCREAT, _("Creation")); |
967 |
|
|
968 |
/* XXX: implement help code. */ |
if (!start_help (NULL, 1)) |
969 |
set_menu_state (menu, ID_KEYMISC_HELP, MF_GRAYED); |
set_menu_state (menu, ID_KEYMISC_HELP, MF_GRAYED); |
970 |
|
|
971 |
SetMenu (dlg, menu); |
SetMenu (dlg, menu); |
972 |
} |
} |
1009 |
} |
} |
1010 |
|
|
1011 |
|
|
1012 |
|
|
1013 |
/* Dialog box procedure for the Key Manager. */ |
/* Dialog box procedure for the Key Manager. */ |
1014 |
BOOL CALLBACK |
BOOL CALLBACK |
1015 |
keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
1222 |
set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED); |
set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED); |
1223 |
if (i == 0) |
if (i == 0) |
1224 |
set_menu_state (popup, ID_KEYCTX_MAXTRUST, MF_ENABLED); |
set_menu_state (popup, ID_KEYCTX_MAXTRUST, MF_ENABLED); |
1225 |
if (!km_check_for_seckey (kmi->lv, l_idx, NULL)) { |
if (!km_check_for_seckey (kmi->lv, l_idx, NULL) || |
1226 |
|
(km_get_key_status (kmi->lv, l_idx) & KM_FLAG_REVOKED)) { |
1227 |
set_menu_state (popup, ID_KEYCTX_REV, MF_DISABLED|MF_GRAYED); |
set_menu_state (popup, ID_KEYCTX_REV, MF_DISABLED|MF_GRAYED); |
1228 |
set_menu_state (popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED); |
set_menu_state (popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED); |
1229 |
set_menu_state (popup, ID_KEYCTX_ADDUID, MF_DISABLED|MF_GRAYED); |
set_menu_state (popup, ID_KEYCTX_ADDUID, MF_DISABLED|MF_GRAYED); |
1462 |
case ID_KEYMISC_RECACHE: |
case ID_KEYMISC_RECACHE: |
1463 |
/* If there is already a reload request, |
/* If there is already a reload request, |
1464 |
don't bother the user with a message. */ |
don't bother the user with a message. */ |
1465 |
if (keycache_get_reload() == 1) |
if (keycache_get_reload () == 1) |
1466 |
l_idx = IDYES; |
l_idx = IDYES; |
1467 |
else { |
else { |
1468 |
char inf[256]; |
char inf[256]; |
1627 |
IDS_WINPT_ABOUT); |
IDS_WINPT_ABOUT); |
1628 |
break; |
break; |
1629 |
|
|
1630 |
|
case ID_KEYMISC_WEBSITE: |
1631 |
|
ShellExecute (dlg, "open", "http://www.winpt.org", |
1632 |
|
NULL, NULL, SW_SHOW); |
1633 |
|
break; |
1634 |
|
|
1635 |
case ID_KEYMISC_HELP: |
case ID_KEYMISC_HELP: |
1636 |
ShellExecute (dlg, "open", "winpt.chm", NULL, NULL, SW_SHOW); |
start_help (dlg, 0); |
1637 |
break; |
break; |
1638 |
|
|
1639 |
case ID_KEYMISC_OT: |
case ID_KEYMISC_OT: |
1790 |
km_send_to_keyserver (kmi->lv, dlg, host, port); |
km_send_to_keyserver (kmi->lv, dlg, host, port); |
1791 |
break; |
break; |
1792 |
|
|
1793 |
case ID_KEYCTX_RECVFROM: |
case ID_KEYCTX_RECVFROM: |
1794 |
km_refresh_from_keyserver (kmi->lv, dlg); |
km_refresh_from_keyserver (kmi->lv, dlg); |
1795 |
break; |
break; |
1796 |
|
|
1811 |
|
|
1812 |
case ID_KEYCTX_FPR_COPY: |
case ID_KEYCTX_FPR_COPY: |
1813 |
key = (gpgme_key_t) listview_get_item2 (kmi->lv, kmi->lv_idx); |
key = (gpgme_key_t) listview_get_item2 (kmi->lv, kmi->lv_idx); |
|
//t = get_key_fpr (key); |
|
1814 |
t = key->subkeys->fpr; |
t = key->subkeys->fpr; |
1815 |
set_clip_text (NULL, t? t : "", t? strlen (t): 0); |
set_clip_text (NULL, t? t : "", t? strlen (t): 0); |
1816 |
break; |
break; |
1884 |
case ID_GROUP_DELETE: |
case ID_GROUP_DELETE: |
1885 |
/* XXX: Implement group manager. */ |
/* XXX: Implement group manager. */ |
1886 |
return TRUE; |
return TRUE; |
1887 |
|
|
1888 |
|
case IDCANCEL: |
1889 |
|
EndDialog (dlg, TRUE); |
1890 |
|
return TRUE; |
1891 |
} |
} |
1892 |
|
|
1893 |
break; |
break; |