/[winpt]/trunk/Src/wptKeyManagerDlg.cpp
ViewVC logotype

Diff of /trunk/Src/wptKeyManagerDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 164 by twoaday, Fri Jan 20 09:19:15 2006 UTC revision 193 by twoaday, Sat Apr 1 12:36:35 2006 UTC
# Line 97  struct mybuttons myb[] = { Line 97  struct mybuttons myb[] = {
97  };  };
98    
99    
100    static void km_gui_import (struct km_info_s *kmi, int cmd_id, void *param);
101    
102  /* Subclass the keylist listview control to allow extended commands. */  /* Subclass the keylist listview control to allow extended commands. */
103  static BOOL CALLBACK  static BOOL CALLBACK
104  keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
105  {  {
106      struct listview_ctrl_s lv;      struct listview_ctrl_s lv;
107        struct km_info_s *kmi;
108    
109      switch (msg) {      switch (msg) {
110        case WM_DROPFILES:
111            kmi = (km_info_s *)keylist_proc.opaque;
112            km_gui_import (kmi, WM_DROPFILES, (void*)wparam);
113            break;
114    
115      case WM_LBUTTONDBLCLK:      case WM_LBUTTONDBLCLK:
116          send_cmd_id (keylist_proc.dlg, ID_KEYMISC_PROPS);          send_cmd_id (keylist_proc.dlg, ID_KEYMISC_PROPS);
117          break;          break;
# Line 231  restore_column_info (listview_ctrl_t hd) Line 239  restore_column_info (listview_ctrl_t hd)
239              return -1;              return -1;
240          }          }
241      }      }
242      for (i=0; i < size/2; i++) {      for (i=0; i < size/2; i++)
243          LVCOLUMN lvc;          listview_set_column_width (hd, i, buf[i]);
   
         memset (&lvc, 0, sizeof (lvc));  
         lvc.mask = LVCF_WIDTH;  
         lvc.cx = buf[i];  
         ListView_SetColumn (hd->ctrl, i, &lvc);  
     }  
244      free_if_alloc (buf);      free_if_alloc (buf);
245      return 0;      return 0;
246  }  }
# Line 423  static void Line 425  static void
425  do_create_minpopup (HWND dlg)  do_create_minpopup (HWND dlg)
426  {  {
427      HMENU hm;      HMENU hm;
     MENUITEMINFO mi;  
     char * s;  
428      POINT p;      POINT p;
429            
430      if (gpg_read_only || !clip_contains_pgpkey ())      if (gpg_read_only || !clip_contains_pgpkey ())
431          return;          return;
432      hm = CreatePopupMenu ();      hm = CreatePopupMenu ();
433      if (!hm)      if (!hm)
434          BUG( NULL );          BUG (0);
435      memset (&mi, 0, sizeof mi);      insert_menu_item (hm, 0, ID_KEYCTX_PASTE, _("Paste Key from Clipboard"));
     mi.cbSize = sizeof mi;  
     s = (char *)_("Paste Key from Clipboard");  
     mi.fType = MF_STRING;  
     mi.dwTypeData = s;  
     mi.cch = strlen (s);  
     mi.fMask = MIIM_DATA | MIIM_ID | MIIM_TYPE;  
     mi.wID = ID_KEYCTX_PASTE;  
     InsertMenuItem (hm, 0, FALSE, &mi);  
436      GetCursorPos (&p);      GetCursorPos (&p);
437      TrackPopupMenu (hm, 0, p.x, p.y, 0, dlg, NULL);      TrackPopupMenu (hm, 0, p.x, p.y, 0, dlg, NULL);
438      DestroyMenu (hm);      DestroyMenu (hm);
# Line 454  update_default_key_str (HWND dlg) Line 446  update_default_key_str (HWND dlg)
446      const char *fmt;      const char *fmt;
447      char *keyid;      char *keyid;
448      char defkeyinf[128];      char defkeyinf[128];
449        
     /* XXX: also show the name? */  
450      keyid = get_gnupg_default_key ();      keyid = get_gnupg_default_key ();
451      if (!keyid)      if (!keyid)
452          return;          return;
# Line 467  update_default_key_str (HWND dlg) Line 458  update_default_key_str (HWND dlg)
458          fmt = _("Default Key: 0x%s");          fmt = _("Default Key: 0x%s");
459      _snprintf (defkeyinf, sizeof (defkeyinf) - 1, fmt, keyid);      _snprintf (defkeyinf, sizeof (defkeyinf) - 1, fmt, keyid);
460      SendMessage (dlg, SB_SETTEXT, 0, (LPARAM)defkeyinf);      SendMessage (dlg, SB_SETTEXT, 0, (LPARAM)defkeyinf);
461        gpg_keycache_set_default_key (keycache_get_ctx (0), keyid);
462      free_if_alloc (keyid);      free_if_alloc (keyid);
463  }  }
464    
# Line 858  modify_listview_columns (km_info_s *kmi, Line 850  modify_listview_columns (km_info_s *kmi,
850          0,          0,
851          0,          0,
852          ID_KEYMISC_VIEWCREAT,          ID_KEYMISC_VIEWCREAT,
853            ID_KEYMISC_VIEWDESC,
854          -1          -1
855      };      };
856      listview_column_s cols[] = {      listview_column_s cols[] = {
# Line 869  modify_listview_columns (km_info_s *kmi, Line 862  modify_listview_columns (km_info_s *kmi,
862      {5, 66, (char *)_("Validity")},      {5, 66, (char *)_("Validity")},
863      {6, 58, (char *)_("Trust")},      {6, 58, (char *)_("Trust")},
864      {7, 72, (char *)_("Creation")},      {7, 72, (char *)_("Creation")},
865        {8, 160,(char *)_("Description")},
866      {0, 0, NULL}      {0, 0, NULL}
867      };      };
868      UINT pos;      UINT pos;
# Line 1020  updated_keys_avail (void) Line 1014  updated_keys_avail (void)
1014  static int  static int
1015  find_keypos (listview_ctrl_t lv, gpgme_key_t key)  find_keypos (listview_ctrl_t lv, gpgme_key_t key)
1016  {  {
1017      gpgme_key_t src;      char keyid[16+1];
1018      int i;      int i;
1019    
1020      for (i=0; i < listview_count_items (lv, 0); i++) {      for (i=0; i < listview_count_items (lv, 0); i++) {
1021          src = (gpgme_key_t)listview_get_item2 (lv, i);          listview_get_item_text (lv, i, KM_COL_KEYID, keyid, sizeof (keyid)-1);
1022          if (src && src->subkeys->keyid == key->subkeys->keyid)          if (!strcmp (key->subkeys->keyid+8, keyid+2))
1023              return i;              return i;
1024      }      }
1025      return -1;      return -1;
# Line 1039  refresh_keylist (struct km_info_s *kmi) Line 1033  refresh_keylist (struct km_info_s *kmi)
1033  {  {
1034      struct keycache_s *ctx;      struct keycache_s *ctx;
1035      gpg_keycache_t kc;      gpg_keycache_t kc;
1036      int status=0;      int status=0, pos;
1037    
1038      kc = keycache_get_ctx (1);      kc = keycache_get_ctx (1);
1039      while (!gpg_keycache_next_updated_key (kc, &ctx, &status)) {      while (!gpg_keycache_next_updated_key (kc, &ctx, &status)) {
1040          if (status == KC_FLAG_ADD)          if (status == KC_FLAG_ADD)
1041              keylist_add_key (kmi->lv, KEYLIST_LIST, ctx->key);              keylist_add_key (kmi->lv, KEYLIST_LIST, ctx->key);
1042          else          else {
1043              keylist_upd_key (kmi->lv, find_keypos (kmi->lv, ctx->key), ctx->key);              pos = find_keypos (kmi->lv, ctx->key);
1044          /*log_box ("debug", 0, "(%d) %s", status, ctx->key->uids->name);*/              if (pos != -1)
1045                    keylist_upd_key (kmi->lv, pos, ctx->key);
1046            }
1047      }      }
1048      keylist_sort (kmi->lv, KEY_SORT_USERID);      keylist_sort (kmi->lv, KEY_SORT_USERID);
1049      update_status_bar (kmi->statbar, kmi->lv);      update_status_bar (kmi->statbar, kmi->lv);
# Line 1061  reload_keylist (struct km_info_s *kmi) Line 1057  reload_keylist (struct km_info_s *kmi)
1057      keycache_reload (kmi->dlg);      keycache_reload (kmi->dlg);
1058      keylist_reload (kmi->lv, keycache_get_ctx (1),      keylist_reload (kmi->lv, keycache_get_ctx (1),
1059                      KEYLIST_LIST, KEY_SORT_USERID);                      KEYLIST_LIST, KEY_SORT_USERID);
1060        update_status_bar (kmi->statbar, kmi->lv);
1061        keyring_check_last_access ();
1062    }
1063    
1064    
1065    /* Reload the entire key cache and update the listview. */
1066    static void
1067    reload_keycache (struct km_info_s *kmi)
1068    {
1069        refresh_cache_s rcs = {0};
1070        gpg_keycache_t c;
1071    
1072        rcs.kr_reload = rcs.kr_update = 1;
1073        rcs.tr_update = 0;
1074        DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, kmi->dlg,
1075                        keycache_dlg_proc, (LPARAM)&rcs);
1076        c = keycache_get_ctx (1);
1077        if (!c)
1078            BUG (0);
1079        keylist_reload (kmi->lv, c, KEYLIST_LIST, KEY_SORT_USERID);
1080        update_status_bar (kmi->statbar, kmi->lv);
1081        SetForegroundWindow (kmi->dlg);
1082    }
1083    
1084    
1085    /* Handle all import request. */
1086    static void
1087    km_gui_import (struct km_info_s *kmi, int cmd_id, void *param)
1088    {
1089        int newkeys=0, newsks=0;
1090        int err = 0;
1091    
1092        switch (cmd_id) {
1093        case ID_KEYMISC_PASTE:
1094            err = km_clip_import (kmi->dlg, &newkeys, &newsks);
1095            break;
1096    
1097        case ID_KEYMISC_IMPORT:
1098            err = km_file_import (kmi->dlg, NULL, &newkeys, &newsks);
1099            break;
1100    
1101        case WM_DROPFILES:
1102            err = km_dropped_file_import (kmi->dlg, (HDROP)param,
1103                                          &newkeys, &newsks);
1104            break;
1105    
1106        default:
1107            err = 1;
1108            break;
1109        }
1110    
1111        if (!err && !newsks && (newkeys > 0 && newkeys < KM_PRELOAD_KEYS))
1112            refresh_keylist (kmi);
1113        else if (!err) /* avoid to spawn too much processes. */
1114            reload_keylist (kmi);
1115    
1116        SetForegroundWindow (kmi->dlg);
1117        center_window (kmi->dlg, NULL);
1118  }  }
1119    
1120    
# Line 1068  reload_keylist (struct km_info_s *kmi) Line 1122  reload_keylist (struct km_info_s *kmi)
1122  BOOL CALLBACK  BOOL CALLBACK
1123  keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
1124  {  {
1125      struct km_info_s *kmi;      struct km_info_s *kmi = NULL;
     INITCOMMONCONTROLSEX icex;  
1126      HWND kl;      HWND kl;
1127      HMENU hm;      HMENU hm;
1128      gpg_keycache_t c;      gpg_keycache_t c;
# Line 1077  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1130  keymanager_dlg_proc (HWND dlg, UINT msg,
1130      struct genkey_s genkey;      struct genkey_s genkey;
1131      struct winpt_key_s k = {0};      struct winpt_key_s k = {0};
1132      struct URL_ctx_s *url;      struct URL_ctx_s *url;
     refresh_cache_s rcs = {0};  
1133      char type[32], *name;      char type[32], *name;
1134      const char *t, *host;      const char *t, *host;
1135      WORD port = 0;      WORD port = 0;
# Line 1086  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1138  keymanager_dlg_proc (HWND dlg, UINT msg,
1138      if ((msg != WM_INITDIALOG)      if ((msg != WM_INITDIALOG)
1139          && ((kmi = (struct km_info_s*)GetWindowLong (dlg, GWL_USERDATA)) == NULL))          && ((kmi = (struct km_info_s*)GetWindowLong (dlg, GWL_USERDATA)) == NULL))
1140          return FALSE;          return FALSE;
1141        
1142        /* handle dynamic popup items in the keyserver menu. */
1143        if (msg == WM_COMMAND && LOWORD (wparam) >= WM_APP &&
1144                                 LOWORD (wparam) <= WM_APP+MAX_KEYSERVERS) {
1145            l_idx = LOWORD (wparam)-WM_APP;
1146            if (l_idx < 0)
1147                return TRUE;
1148            host = kserver_get_hostname (l_idx, 0, &port);
1149            if (host != NULL)
1150                km_send_to_keyserver (kmi->lv, dlg, host, port);
1151            return TRUE;
1152        }
1153    
1154      switch (msg) {      switch (msg) {
1155      case WM_INITDIALOG:      case WM_INITDIALOG:
1156          kmi = new struct km_info_s;          kmi = new struct km_info_s;
1157          memset (kmi, 0, sizeof (struct km_info_s));          memset (kmi, 0, sizeof (struct km_info_s));
1158          kmi->lv_idx = -1;          kmi->lv_idx = -1;
         icex.dwSize = sizeof (INITCOMMONCONTROLSEX);  
         icex.dwICC  = ICC_BAR_CLASSES;  
         InitCommonControlsEx (&icex);  
1159          kmi->hwnd_sep = regist_sep_wnd (dlg, kmi);          kmi->hwnd_sep = regist_sep_wnd (dlg, kmi);
1160          imagelist_load (dlg);          imagelist_load (dlg);
1161          translate_menu_strings (dlg);          translate_menu_strings (dlg);
# Line 1108  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1169  keymanager_dlg_proc (HWND dlg, UINT msg,
1169          Header_SetImageList(ListView_GetHeader (kl), glob_imagelist);          Header_SetImageList(ListView_GetHeader (kl), glob_imagelist);
1170          kmi->lv = keylist_load (GetDlgItem (dlg, IDC_KEYMISC_KEYLIST), c,          kmi->lv = keylist_load (GetDlgItem (dlg, IDC_KEYMISC_KEYLIST), c,
1171                                  NULL, KEYLIST_LIST, kmi->keylist_sortby);                                  NULL, KEYLIST_LIST, kmi->keylist_sortby);
1172            if (check_ultimate_trusted_key ()) {
1173                msg_box (dlg, _("No ultimately trusted key found.\n"
1174                                "Please set at least one secret key to ultimate trust."),
1175                                _("Key Manager"), MB_WARN);
1176            }
1177          /* init subclassing for the listview */          /* init subclassing for the listview */
1178            keylist_proc.opaque = kmi;
1179          keylist_proc.dlg = dlg;          keylist_proc.dlg = dlg;
1180          keylist_proc.current = (WNDPROC)keylist_subclass_proc;          keylist_proc.current = (WNDPROC)keylist_subclass_proc;
1181          keylist_proc.old = (WNDPROC)GetWindowLong(kl, GWL_WNDPROC);          keylist_proc.old = (WNDPROC)GetWindowLong(kl, GWL_WNDPROC);
# Line 1148  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1215  keymanager_dlg_proc (HWND dlg, UINT msg,
1215          set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_X", type);          set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_X", type);
1216          ltoa (kmi->pos_y, type, 10);          ltoa (kmi->pos_y, type, 10);
1217          set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_Y", type);          set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_Y", type);
1218            /* XXX: store window size. */
1219                    
1220          /* Remove runtime information. This should be the last action taken here. */          /* Remove runtime information. This should be the last action taken here. */
1221          delete kmi; kmi = NULL;          delete kmi; kmi = NULL;
# Line 1155  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1223  keymanager_dlg_proc (HWND dlg, UINT msg,
1223          return FALSE;          return FALSE;
1224    
1225      case WM_SHOWWINDOW:      case WM_SHOWWINDOW:
         /*refresh_keylist (kmi);*/  
1226          break;          break;
1227    
1228      case WM_MOVE:      case WM_MOVE:
# Line 1318  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1385  keymanager_dlg_proc (HWND dlg, UINT msg,
1385                      set_menu_state (popup, ID_KEYCTX_PASTE, MF_DISABLED|MF_GRAYED);                      set_menu_state (popup, ID_KEYCTX_PASTE, MF_DISABLED|MF_GRAYED);
1386                  if (mapi_init ())                  if (mapi_init ())
1387                      set_menu_state (popup, ID_KEYCTX_SENDMAIL, MF_DISABLED|MF_GRAYED);                      set_menu_state (popup, ID_KEYCTX_SENDMAIL, MF_DISABLED|MF_GRAYED);
1388    
1389                  /* Override 'Default Keyserver' with the actual name. */                  /* Override 'Default Keyserver' with the actual name. */
1390                  host = kserver_get_hostname (0, -1, &port);                  host = kserver_get_hostname (0, -1, &port);
1391                    if (!host)
1392                        host = DEF_HKP_KEYSERVER;
1393                  set_menu_text (popup, ID_KEYCTX_KS_DEFAULT, host);                  set_menu_text (popup, ID_KEYCTX_KS_DEFAULT, host);
1394                    {
1395                        HMENU ks = GetSubMenu (popup, 19);
1396                        for (i=0; server[i].name != NULL; i++)                      
1397                            insert_menu_item (ks, i+2, WM_APP+i, server[i].name);
1398                    }
1399                  popup_gpg_readonly (dlg, popup);                  popup_gpg_readonly (dlg, popup);
1400                  if (listview_count_items (kmi->lv, 1) > 1)                  if (listview_count_items (kmi->lv, 1) > 1)
1401                      popup_multiple (dlg, popup);                      popup_multiple (dlg, popup);
# Line 1500  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1575  keymanager_dlg_proc (HWND dlg, UINT msg,
1575              k.keyid = k.tmp_keyid;              k.keyid = k.tmp_keyid;
1576              k.uid = key->uids->uid;              k.uid = key->uids->uid;
1577              k.ctx = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);              k.ctx = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);
1578              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG, dlg,              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG_TREE, dlg,
1579                                keysig_dlg_proc, (LPARAM)&k,                                sigtree_dlg_proc, (LPARAM)&k,
1580                                _("Key Signature List" ), IDS_WINPT_KEYSIG);                                _("Key Signature List"), IDS_WINPT_KEYSIG);
1581              if (k.update)              if (k.update)
1582                  update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, 0);                  update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, 0);
1583              return TRUE;              return TRUE;
1584                            
1585          case ID_KEYMISC_PROPS:                case ID_KEYMISC_PROPS:      
1586              if (kmi->lv_idx == -1) {              if (kmi->lv_idx == -1) {
1587                  msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR );                  msg_box (dlg, _("Please select a key."), _("Key Manager"), MB_ERR);
1588                  return TRUE;                  return TRUE;
1589              }              }
1590              key = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);              key = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);
1591              if (!key)              if (!key)
1592                  BUG (NULL);                  BUG (NULL);
1593              memset (&k, 0, sizeof (k));              memset (&k, 0, sizeof (k));
1594                strncpy (k.tmp_keyid, key->subkeys->keyid+8, 8);
1595                k.keyid = k.tmp_keyid;
1596              k.key_pair = km_check_for_seckey (kmi->lv, kmi->lv_idx, NULL)? 1 : 0;              k.key_pair = km_check_for_seckey (kmi->lv, kmi->lv_idx, NULL)? 1 : 0;
             k.keyid = key->subkeys->keyid+8;  
1597              k.callback.ctl = kmi->lv;              k.callback.ctl = kmi->lv;
1598              k.callback.idx = kmi->lv_idx;              k.callback.idx = kmi->lv_idx;
1599              k.is_v3 = km_key_is_v3 (kmi->lv, kmi->lv_idx);              k.is_v3 = km_key_is_v3 (kmi->lv, kmi->lv_idx);
1600              dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYPROPS, dlg,              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYPROPS, dlg,
1601                                keyprops_dlg_proc, (LPARAM)&k,                                keyprops_dlg_proc, (LPARAM)&k,
1602                                _("Key Properties"), IDS_WINPT_KEYPROPS );                                _("Key Properties"), IDS_WINPT_KEYPROPS);
             if (k.callback.new_val != 0) {  
                 t = get_key_trust_str (k.callback.new_val);  
                 listview_add_sub_item (kmi->lv, kmi->lv_idx, 6, t);  
             }  
1603              if (k.update)              if (k.update)
1604                  refresh_keylist (kmi);                  update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, k.key_pair);
1605              return TRUE;              return TRUE;
1606                            
1607          case ID_KEYMISC_RECACHE:          case ID_KEYMISC_RECACHE:
# Line 1543  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1615  keymanager_dlg_proc (HWND dlg, UINT msg,
1615                               "Do you really want to reload the keycache?"));                               "Do you really want to reload the keycache?"));
1616                  l_idx = msg_box (dlg, inf, _("Key Manager"), MB_YESNO);                  l_idx = msg_box (dlg, inf, _("Key Manager"), MB_YESNO);
1617              }              }
1618              if (l_idx == IDYES) {              if (l_idx == IDYES)
1619                  rcs.kr_reload = rcs.kr_update = 1;                  reload_keycache (kmi);
                 rcs.tr_update = 0;  
                 DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg,  
                                 keycache_dlg_proc, (LPARAM)&rcs);  
                 c = keycache_get_ctx (1);  
                 if (!c)  
                     BUG (dlg);  
                 keylist_reload (kmi->lv, c, KEYLIST_LIST, KEY_SORT_USERID);  
             }  
             SetForegroundWindow (dlg);  
1620              return TRUE;              return TRUE;
1621                            
1622          case ID_KEYMISC_REBUILD:          case ID_KEYMISC_REBUILD:
# Line 1607  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1670  keymanager_dlg_proc (HWND dlg, UINT msg,
1670              return TRUE;              return TRUE;
1671                            
1672          case ID_KEYMISC_GPGPREFS:          case ID_KEYMISC_GPGPREFS:
1673              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_GPGPREFS, dlg,              rc = dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_GPGPREFS,
1674                                gpgprefs_dlg_proc, 0, _("GnuPG Preferences"),                                     dlg, gpgprefs_dlg_proc, 0,
1675                                IDS_WINPT_GPGPREFS);                                     _("GnuPG Preferences"), IDS_WINPT_GPGPREFS);
1676                if (rc == TRUE) {
1677                    /* XXX: TRUE should indicate a value changed. */
1678                    reload_keycache (kmi);
1679                }
1680              return TRUE;              return TRUE;
1681                            
1682          case ID_KEYMISC_GPGOPT:          case ID_KEYMISC_GPGOPT:
# Line 1619  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1686  keymanager_dlg_proc (HWND dlg, UINT msg,
1686              return TRUE;              return TRUE;
1687                            
1688          case ID_KEYMISC_IMPORT:          case ID_KEYMISC_IMPORT:
1689              t = get_fileopen_dlg (dlg, _("Choose Name of the Key File"),              km_gui_import (kmi, LOWORD (wparam), NULL);
                                   NULL, NULL);  
             if (!t)  
                 break;  
             if (!km_file_import (dlg, t, &i)) {  
                 if (i < KM_PRELOAD_KEYS)  
                     refresh_keylist (kmi);  
                 else /* avoid to spawn too much processes. */  
                     reload_keylist (kmi);  
             }  
1690              return TRUE;              return TRUE;
1691    
1692          case ID_KEYMISC_IMPORT_HTTP:          case ID_KEYMISC_IMPORT_HTTP:
1693              url = (struct URL_ctx_s*)get_http_file_dlg (dlg);              url = (struct URL_ctx_s*)get_http_file_dlg (dlg);
1694              if (url->cancel == 0) {              if (url && url->cancel == 0) {
1695                  km_http_import (dlg, url->url);                  km_http_import (dlg, url->url);
1696                  refresh_keylist (kmi);                  refresh_keylist (kmi);
1697              }              }
# Line 1693  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1751  keymanager_dlg_proc (HWND dlg, UINT msg,
1751              return TRUE;              return TRUE;
1752    
1753          case ID_KEYMISC_INFO:          case ID_KEYMISC_INFO:
1754              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_ABOUT, glob_hwnd,              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_ABOUT, dlg,
1755                                about_winpt_dlg_proc, 0, _("About WinPT"),                                about_winpt_dlg_proc, 0, _("About WinPT"),
1756                                IDS_WINPT_ABOUT);                                IDS_WINPT_ABOUT);
1757              break;              break;
# Line 1709  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1767  keymanager_dlg_proc (HWND dlg, UINT msg,
1767    
1768          case ID_KEYMISC_OT:          case ID_KEYMISC_OT:
1769              dialog_box_param (glob_hinst, (LPCTSTR)IDD_WINPT_OWNERTRUST,              dialog_box_param (glob_hinst, (LPCTSTR)IDD_WINPT_OWNERTRUST,
1770                                glob_hwnd, ownertrust_dlg_proc, 0,                                dlg, ownertrust_dlg_proc, 0,
1771                                _("Ownertrust"), IDS_WINPT_OWNERTRUST);                                _("Ownertrust"), IDS_WINPT_OWNERTRUST);
1772              break;              break;
1773    
# Line 1743  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1801  keymanager_dlg_proc (HWND dlg, UINT msg,
1801              break;              break;
1802    
1803          case ID_KEYMISC_PASTE:          case ID_KEYMISC_PASTE:
1804              if (!km_clip_import (dlg, &i)) {              km_gui_import (kmi, LOWORD (wparam), NULL);
                 if (i < KM_PRELOAD_KEYS)  
                     refresh_keylist (kmi);  
                 else  
                     reload_keylist (kmi);  
             }  
1805              break;              break;
1806                            
1807          case ID_KEYCTX_SETPREFKS:          case ID_KEYCTX_SETPREFKS:
# Line 1756  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1809  keymanager_dlg_proc (HWND dlg, UINT msg,
1809              if (!key)              if (!key)
1810                  BUG (NULL);                  BUG (NULL);
1811              memset (&k, 0, sizeof (k));              memset (&k, 0, sizeof (k));
1812              k.keyid = key->subkeys->keyid+8;              strncpy (k.tmp_keyid, key->subkeys->keyid+8, 8);
1813                k.keyid = k.tmp_keyid;
1814                k.is_protected = km_check_if_protected (kmi->lv, kmi->lv_idx);
1815              keyedit_set_pref_keyserver (&k, dlg);              keyedit_set_pref_keyserver (&k, dlg);
1816              break;              break;
1817    
# Line 1859  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1914  keymanager_dlg_proc (HWND dlg, UINT msg,
1914                  update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, 1);                  update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, 1);
1915              break;              break;
1916    
         case ID_KEYCTX_KS_NL:  
         case ID_KEYCTX_KS_PL:  
         case ID_KEYCTX_KS_AT:  
         case ID_KEYCTX_KS_DE:  
         case ID_KEYCTX_KS_DK:  
         case ID_KEYCTX_KS_CZ:  
         case ID_KEYCTX_KS_ES:  
         case ID_KEYCTX_KS_UK:  
             host = kserver_get_hostname (LOWORD (wparam) - 40107, 0, &port);  
             km_send_to_keyserver (kmi->lv, dlg, host, port);  
             break;  
   
1917          case ID_KEYCTX_RECVFROM:          case ID_KEYCTX_RECVFROM:
1918              km_refresh_from_keyserver (kmi->lv, dlg);              km_refresh_from_keyserver (kmi->lv, dlg);
1919                if (updated_keys_avail ())
1920                    refresh_keylist (kmi);
1921              break;              break;
1922    
1923          case ID_KEYCTX_UID_COPY:          case ID_KEYCTX_UID_COPY:
1924              /* XXX: add generic function to support multiple selection              /* XXX: add generic function to support multiple selection
1925                      with a callback */                      with a callback */
1926              key = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);              key = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);
1927              name = utf8_to_wincp2 (key->uids->uid);              name = utf8_to_native (key->uids->uid);
1928              set_clip_text (NULL, name, strlen (name));              set_clip_text (NULL, name, strlen (name));
1929              safe_free (name);              safe_free (name);
1930              break;              break;
# Line 1951  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1996  keymanager_dlg_proc (HWND dlg, UINT msg,
1996          case ID_KEYMISC_VIEWCIPHER:          case ID_KEYMISC_VIEWCIPHER:
1997          case ID_KEYMISC_VIEWTYPE:          case ID_KEYMISC_VIEWTYPE:
1998          case ID_KEYMISC_VIEWCREAT:          case ID_KEYMISC_VIEWCREAT:
1999            case ID_KEYMISC_VIEWDESC:
2000              DWORD n;              DWORD n;
2001    
2002              hm = GetMenu (dlg);              hm = GetMenu (dlg);

Legend:
Removed from v.164  
changed lines
  Added in v.193

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26