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

Diff of /trunk/Src/wptPreferencesDlg.cpp

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

revision 2 by twoaday, Mon Jan 31 11:02:21 2005 UTC revision 147 by twoaday, Fri Jan 13 14:21:16 2006 UTC
# Line 1  Line 1 
1  /* wptPreferencesDlg.cpp - Dialog for the preferences  /* wptPreferencesDlg.cpp - Dialog for the preferences
2   *      Copyright (C) 2001, 2002, 2003 Timo Schulz   *      Copyright (C) 2001, 2002, 2003, 2005 Timo Schulz
3   *   *
4   * This file is part of WinPT.   * This file is part of WinPT.
5   *   *
6   * WinPT is free software; you can redistribute it and/or modify   * WinPT is free software; you can redistribute it and/or modify
7   * it under the terms of the GNU General Public License as published by   * it under the terms of the GNU General Public License as published by
8   * the Free Software Foundation; either version 2 of the License, or   * the Free Software Foundation; either version 2 of the License, or
9   * (at your option) any later version.   * (at your option) any later version.
10   *   *
11   * WinPT is distributed in the hope that it will be useful,   * WinPT is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.   * GNU General Public License for more details.
15   *   *
16   * You should have received a copy of the GNU General Public License   * You should have received a copy of the GNU General Public License
17   * along with WinPT; if not, write to the Free Software Foundation,   * along with WinPT; if not, write to the Free Software Foundation,
18   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19   */   */
20    #ifdef HAVE_CONFIG_H
21  #include <windows.h>  #include <config.h>
22  #include <shlobj.h>  #endif
23    
24  #include "wptNLS.h"  #include <windows.h>
25  #include "wptGPG.h"  #include <shlobj.h>
26  #include "wptCommonCtl.h"  
27  #include "wptDlgs.h"  #include "wptNLS.h"
28  #include "wptTypes.h"  #include "wptGPG.h"
29  #include "wptErrors.h"  #include "wptCommonCtl.h"
30  #include "wptRegistry.h"  #include "wptDlgs.h"
31  #include "wptHotkey.h"  #include "wptTypes.h"
32  #include "wptW32API.h"  #include "wptErrors.h"
33  #include "wptVersion.h"  #include "wptRegistry.h"
34  #include "wptAgent.h"  #include "wptHotkey.h"
35  #include "wptKeyserver.h"  #include "wptW32API.h"
36  #include "../resource.h"  #include "wptVersion.h"
37    #include "wptAgent.h"
38    #include "wptKeyserver.h"
39  static int hotkeys[] = {  #include "resource.h"
40      IDC_PREFS_CLIP_ENCRYPT,  
41      IDC_PREFS_CLIP_DECRYPT_VERIFY,  
42      IDC_PREFS_CLIP_SIGN,  /* Dialog IDs of all hotkeys. */
43      IDC_PREFS_CLIP_SIGNENC,  static int hotkeys[] = {
44      IDC_PREFS_CWS_ENCRYPT,      IDC_PREFS_CLIP_ENCRYPT,
45      IDC_PREFS_CWS_DECRYPT_VERIFY,      IDC_PREFS_CLIP_DECRYPT_VERIFY,
46      IDC_PREFS_CWS_SIGN,      IDC_PREFS_CLIP_SIGN,
47      IDC_PREFS_CWS_SIGNENC,      IDC_PREFS_CLIP_SIGNENC,
48      0      IDC_PREFS_CWS_ENCRYPT,
49  };      IDC_PREFS_CWS_DECRYPT_VERIFY,
50        IDC_PREFS_CWS_SIGN,
51        IDC_PREFS_CWS_SIGNENC,
52  static int      0
53  check_hotkey( char * key )  };
54  {  
55      if( *key >= 'A' && *key <= 'Z' )  
56          return 1;  /* Check that the given hotkey is in A..Z or a..z. */
57      else if( *key >= 'a' && *key <= 'z' ) {  static int
58          *key = *key - 32;  check_hotkey (char * key)
59          return 1;  {
60      }          if (*key >= 'A' && *key <= 'Z')
61      return 0;          return 1;
62  } /* check_hotkey */      else if (*key >= 'a' && *key <= 'z') {
63            *key = *key - 32;
64            return 1;
65  static void      }
66  disable_hotkey_items( HWND dlg, int yes )      return 0;
67  {  }
68      int mode = yes ? FALSE : TRUE;  
69      int i, id;  
70        /* Disable all hotkey controls in the dialog @dlg if val is 1. */
71      for( i=0; (id = hotkeys[i]); i++ )  static void
72          EnableWindow( GetDlgItem( dlg, id ), mode );  disable_hotkey_items (HWND dlg, int val)
73  } /* disable_hotkey_items */  {
74        int mode = val? FALSE : TRUE;
75        int i, id;
76  static void      
77  enable_backup_items( HWND dlg, int yes )      for (i=0; (id = hotkeys[i]); i++)
78  {          EnableWindow (GetDlgItem (dlg, id), mode);
79      int mode = yes ? TRUE : FALSE;  }
80    
81      EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKHOME ), mode );  
82      EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKUSER ), mode );  
83      EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKSELECT ), mode );  /* En- or disable the backup items in the dialog @dlg.
84      EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKPATH ), mode );     If val != 0 activate them, disable them otherwise. */
85  } /* enable_backup_items */  static void
86    enable_backup_items (HWND dlg, int val)
87    {
88  static void      int mode = val? TRUE : FALSE;
89  set_keylist_mode( HWND dlg )  
90  {      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKHOME), mode);
91      HWND cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKUSER), mode);
92      combox_add_string( cb, (char *)"NORMAL" );      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), mode);
93      combox_add_string( cb, (char *)"MINIMAL" );      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), mode);
94      SendMessage( cb, CB_SETCURSEL, (WPARAM)reg_prefs.keylist_mode, 0 );  }
95  } /* set_keylist_mode */  
96    
97    /* Initialize the combox in the dialog @dlg with the valid list modes. */
98  static void  static void
99  set_wipe_mode( HWND dlg )  init_keylist_modes (HWND dlg)
100  {  {
101      HWND cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );      HWND cb = GetDlgItem (dlg, IDC_PREFS_LISTMODE);
102      combox_add_string( cb, (char *)"Simple" );      combox_add_string (cb, (char *)"NORMAL");
103      combox_add_string( cb, (char *)"DoD" );      combox_add_string (cb, (char *)"MINIMAL");
104      combox_add_string( cb, (char *)"Gutmann" );      SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.keylist_mode, 0);
105      SendMessage( cb, CB_SETCURSEL, (WPARAM)reg_prefs.wipe_mode, 0 );  }
106  } /* set_wipe_mode */  
107    
108    /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */
109  BOOL CALLBACK  static void
110  prefs_dlg_proc( HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam )  init_wipe_modes (HWND dlg)
111  {  {
112      int rc;      HWND cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
113      int i, id;      combox_add_string (cb, (char *)"Simple");
114      char t[2];      combox_add_string (cb, (char *)"DoD");
115      char path[256], * p;      combox_add_string (cb, (char *)"Gutmann");
116      HWND cb;      SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.wipe_mode, 0);
117        }
118      switch ( msg ) {  
119      case WM_INITDIALOG:  
120  #ifndef LANG_DE  /* Dialog box procedure for the WinPT preferences. */
121          SetWindowText( dlg, _("WinPT Preferences") );  BOOL CALLBACK
122          SetDlgItemText( dlg, IDC_PREFS_SECMODE, _("Do not use any &temporary files") );  prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
123          SetDlgItemText( dlg, IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext") );  {
124          SetDlgItemText( dlg, IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column") );      int rc;
125          SetDlgItemText( dlg, IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)") );      int i, id;
126  #endif      char t[2];
127          SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE );      char path[256], * p;
128          SetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE );      HWND cb;
129          if (reg_prefs.backup.path)      
130              SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);      switch (msg) {
131          if (reg_prefs.kserv_conf)      case WM_INITDIALOG:
132              SetDlgItemText (dlg, IDC_PREFS_KSERVER, reg_prefs.kserv_conf);          SetWindowText (dlg, _("WinPT Preferences"));
133            SetDlgItemText (dlg, IDC_PREFS_SECMODE, _("Do not use any &temporary files"));
134          for( i=0; (id=hotkeys[i]); i++ )          SetDlgItemText (dlg, IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext"));
135              SetDlgItemText( dlg, id, reg_hotkeys[i].key );          SetDlgItemText (dlg, IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column"));
136          CheckDlgButton( dlg, IDC_PREFS_DISABLE_HOTKEYS,          SetDlgItemText (dlg, IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)"));
137                          reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted"));
138          CheckDlgButton( dlg, IDC_PREFS_SECMODE,          SetDlgItemText (dlg, IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes"));
139                          reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED );          SetDlgItemText (dlg, IDC_PREFS_BAKHOME, _("Backup to &keyring folder"));
140          CheckDlgButton( dlg, IDC_PREFS_VIEWER,          SetDlgItemText (dlg, IDC_PREFS_BAKUSER, _("Backup to:"));
141                          reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_KEYLISTINF, _("Select &key list mode"));
142          CheckDlgButton( dlg, IDC_PREFS_TRUST,          SetDlgItemText (dlg, IDC_PREFS_WIPEINF, _("Select &wipe mode"));
143                          reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_KSINF, _("Keyserver &config"));
144          CheckDlgButton( dlg, IDC_PREFS_AUTOBACKUP,          SetDlgItemText (dlg, IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds"));
145                          reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)"));
146          CheckDlgButton( dlg, IDC_PREFS_BAKHOME,          SetDlgItemText (dlg, IDC_PREFS_ALLOPTINF, _("General options"));
147                          reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_CLIPINF, _("Clipboard hotkeys"));
148          CheckDlgButton( dlg, IDC_PREFS_BAKUSER,          SetDlgItemText (dlg, IDC_PREFS_CURRINF, _("Current window hotkeys"));
149                          reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED );          SetDlgItemText (dlg, IDC_PREFS_KSELFILE, _("Browse..."));
150          if( reg_prefs.no_hotkeys )          SetDlgItemText (dlg, IDC_PREFS_BAKSELECT, _("Browse..."));
151              disable_hotkey_items( dlg, 1 );          SetDlgItemText (dlg, IDCANCEL, _("&Cancel"));
152          if( !reg_prefs.auto_backup )  
153              enable_backup_items( dlg, 0 );          SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE);
154          EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKPATH ),          SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
155                        reg_prefs.backup.mode==1?FALSE : TRUE );          if (reg_prefs.backup.path)
156          EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKSELECT ),              SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
157                        reg_prefs.backup.mode==1? FALSE : TRUE );          if (reg_prefs.kserv_conf)
158          set_keylist_mode( dlg );              SetDlgItemText (dlg, IDC_PREFS_KSERVER, reg_prefs.kserv_conf);
159          set_wipe_mode( dlg );  
160          center_window( dlg );          for (i=0; (id=hotkeys[i]); i++)
161          SetForegroundWindow( dlg );              SetDlgItemText (dlg, id, reg_hotkeys[i].key);
162          return TRUE;          CheckDlgButton( dlg, IDC_PREFS_DISABLE_HOTKEYS,
163                                    reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED );
164      case WM_SYSCOMMAND:          CheckDlgButton( dlg, IDC_PREFS_SECMODE,
165          if( LOWORD( wparam ) == SC_CLOSE )                          reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED );
166              EndDialog( dlg, TRUE );          CheckDlgButton( dlg, IDC_PREFS_VIEWER,
167          return FALSE;                          reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED );
168                    CheckDlgButton( dlg, IDC_PREFS_TRUST,
169      case WM_COMMAND:                          reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED );
170          switch( HIWORD(wparam) ) {          CheckDlgButton( dlg, IDC_PREFS_AUTOBACKUP,
171          case BN_CLICKED:                          reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED );
172              switch( (int)LOWORD( wparam ) ) {          CheckDlgButton( dlg, IDC_PREFS_BAKHOME,
173              case IDC_PREFS_DISABLE_HOTKEYS:                                      reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED );
174                  reg_prefs.no_hotkeys ^= 1;          CheckDlgButton( dlg, IDC_PREFS_BAKUSER,
175                  disable_hotkey_items( dlg, reg_prefs.no_hotkeys );                          reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED );
176                  break;          if (reg_prefs.no_hotkeys)
177                disable_hotkey_items (dlg, 1);
178              case IDC_PREFS_TRUST:                    if (!reg_prefs.auto_backup)
179                  reg_prefs.always_trust ^= 1;              enable_backup_items (dlg, 0);
180                  if( reg_prefs.always_trust ) {          EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH),
181                      msg_box( NULL,                        reg_prefs.backup.mode==1?FALSE : TRUE);
182                  _("In most cases it is not a good idea to enable this setting.\n"          EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
183                    "If you know what you are doing let this flag enabled, otherwise\n"                        reg_prefs.backup.mode==1? FALSE : TRUE);
184                    "it is safe to leave this flag untouched."),          init_keylist_modes (dlg);
185                    _("Preferences"), MB_ICONWARNING|MB_OK );          init_wipe_modes (dlg);
186                  }          center_window (dlg, NULL);
187                  break;          SetForegroundWindow (dlg);
188            return TRUE;
189              case IDC_PREFS_AUTOBACKUP:          
190                  reg_prefs.auto_backup ^= 1;                      case WM_SYSCOMMAND:
191                  enable_backup_items( dlg, reg_prefs.auto_backup );          if (LOWORD (wparam) == SC_CLOSE)
192                  break;              EndDialog (dlg, TRUE);
193            return FALSE;
194              case IDC_PREFS_BAKHOME:                      
195                  EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKSELECT ), FALSE );      case WM_COMMAND:
196                  EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKPATH ), FALSE );          switch( HIWORD(wparam) ) {
197                  break;          case BN_CLICKED:
198                switch( (int)LOWORD( wparam ) ) {
199              case IDC_PREFS_BAKUSER:              case IDC_PREFS_DISABLE_HOTKEYS:            
200                  EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKSELECT ), TRUE );                  reg_prefs.no_hotkeys ^= 1;
201                  EnableWindow( GetDlgItem( dlg, IDC_PREFS_BAKPATH ), TRUE );                  disable_hotkey_items (dlg, reg_prefs.no_hotkeys);
202                  break;                  break;
203              }  
204              break;              case IDC_PREFS_TRUST:
205          }                  reg_prefs.always_trust ^= 1;
206          switch( LOWORD( wparam ) ) {                  if (reg_prefs.always_trust) {
207          case IDC_PREFS_BAKSELECT:                      msg_box (dlg,
208              BROWSEINFO bi;                  _("In most cases it is not a good idea to enable this setting.\n"
209              ITEMIDLIST * item;                    "If you know what you are doing let this flag enabled, otherwise\n"
210                      "it is safe to leave this flag untouched."),
211              memset( &bi, 0, sizeof (bi) );                    _("Preferences"), MB_ICONWARNING|MB_OK);
212              item = SHBrowseForFolder( &bi );                  }
213              if( item ) {                  break;
214                  SHGetPathFromIDList( item, path );  
215                  SetDlgItemText( dlg, IDC_PREFS_BAKPATH, path );              case IDC_PREFS_AUTOBACKUP:
216              }                  reg_prefs.auto_backup ^= 1;                
217              break;                  enable_backup_items (dlg, reg_prefs.auto_backup);
218                    if (reg_prefs.auto_backup == 1) {
219          case IDC_PREFS_KSELFILE: {                      if (!IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&
220              const char * name;                          !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
221              name = get_filename_dlg (dlg, 0, _("Please select a keyserver.conf file"),                          CheckDlgButton (dlg, IDC_PREFS_BAKHOME, BST_CHECKED);
222                                       NULL, NULL);                  }
223              if (name && file_exist_check (name) == 0)                  if (IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME))
224                  SetDlgItemText (dlg, IDC_PREFS_KSERVER, name);                      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);
225              break; }                  break;
226    
227          case IDOK:              case IDC_PREFS_BAKHOME:            
228              rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), FALSE);
229              if( !rc )                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);
230                  reg_prefs.cache_time = 0;                  break;
231              else if( rc > 3600 ) {  
232                  msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "              case IDC_PREFS_BAKUSER:
233                                  "a good idea to cache the passphrase more than one hour."),                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), TRUE);
234                                  _("Preferences"), MB_ERR );                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), TRUE);
235                  SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, 0, FALSE );                  break;
236                  return FALSE;              }
237              }              break;
238              if (reg_prefs.cache_time != rc)          }
239                  agent_flush_cache ();          switch( LOWORD( wparam ) ) {
240              reg_prefs.cache_time = rc;          case IDC_PREFS_BAKSELECT:
241              rc = GetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, NULL, FALSE );              const char *bpath;
242              if( !rc )              bpath = get_folder_dlg (dlg, _("Select GPG backup path"), NULL);
243                  reg_prefs.word_wrap = 0;              if (bpath)
244              else if( rc > 80 ) {                  SetDlgItemText (dlg, IDC_PREFS_BAKPATH, bpath);
245                  msg_box( dlg, _("Please enter a value between 1-80."), _("Preferences"), MB_ERR );              break;
246                  return FALSE;  
247              }          case IDC_PREFS_KSELFILE: {
248              reg_prefs.word_wrap = rc;              const char * name;
249              reg_prefs.use_tmpfiles = IsDlgButtonChecked( dlg, IDC_PREFS_SECMODE )? 0 : 1;              name = get_fileopen_dlg (dlg, _("Please select a keyserver.conf file"),
250              reg_prefs.use_viewer = IsDlgButtonChecked( dlg, IDC_PREFS_VIEWER )? 1 : 0;                                       NULL, NULL);
251              reg_prefs.backup.mode = IsDlgButtonChecked( dlg, IDC_PREFS_BAKHOME ) ? 1 :              if (name != NULL)
252                                      IsDlgButtonChecked( dlg, IDC_PREFS_BAKUSER )? 2 : 0;                  SetDlgItemText (dlg, IDC_PREFS_KSERVER, name);
253              if( reg_prefs.backup.mode == 2 ) {              break; }
254                  if( !GetDlgItemText( dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1 )  
255                      || dir_exist_check( path ) ) {          case IDOK:
256                      msg_box( dlg, _("The specified backup folder is invalid."),              rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );
257                               _("Preferences"), MB_ERR );              if (!rc)
258                      return FALSE;                  reg_prefs.cache_time = 0;
259                  }              else if (rc > 3600) {
260                  free_if_alloc (reg_prefs.backup.path);                  msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "
261                  p = reg_prefs.backup.path = m_strdup (path);                                  "a good idea to cache the passphrase more than one hour."),
262                  if (!p)                                  _("Preferences"), MB_ERR);
263                      BUG (0);                  SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, 0, FALSE);
264              }                  return TRUE;
265              free_if_alloc (reg_prefs.kserv_conf);              }
266              if (!GetDlgItemText (dlg, IDC_PREFS_KSERVER, path, sizeof (path)-1)              if (reg_prefs.cache_time != rc)
267                  || file_exist_check (path)) {                  agent_flush_cache ();
268                  rc = msg_box (dlg, _("The specified keyserver config file is invalid.\n\n"              reg_prefs.cache_time = rc;
269                                       "Create new default config file?"),              rc = GetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, NULL, FALSE);
270                           _("Preferences"), MB_ERR|MB_YESNO);              if (!rc)
271                  if (rc == IDNO)                  reg_prefs.word_wrap = 0;
272                      return FALSE;              else if (rc > 80) {
273                  else                  msg_box (dlg, _("Please enter a value between 1-80."), _("Preferences"), MB_ERR);
274                  {                  return TRUE;
275                      char cwd[256], * fn;              }
276                      FILE * fp = fopen ("keyserver.conf", "wb");              reg_prefs.word_wrap = rc;
277                      if (fp)              reg_prefs.use_tmpfiles = IsDlgButtonChecked( dlg, IDC_PREFS_SECMODE )? 0 : 1;
278                      {              reg_prefs.use_viewer = IsDlgButtonChecked( dlg, IDC_PREFS_VIEWER )? 1 : 0;
279                          fprintf (fp, "%s\r\n", DEF_HKP_KEYSERVER);              reg_prefs.backup.mode = IsDlgButtonChecked( dlg, IDC_PREFS_BAKHOME ) ? 1 :
280                          fclose (fp);                                      IsDlgButtonChecked( dlg, IDC_PREFS_BAKUSER )? 2 : 0;
281                      }              if( reg_prefs.backup.mode == 2 ) {
282                      GetCurrentDirectory (DIM (cwd)-1, cwd);                  if( !GetDlgItemText( dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1 )
283                      fn = make_filename (cwd, "keyserver", "conf");                      || dir_exist_check( path ) ) {
284                      memset (path, 0, sizeof( path));                      msg_box( dlg, _("The specified backup folder is invalid."),
285                      strncpy (path, fn, DIM (path)-1);                               _("Preferences"), MB_ERR );
286                      free_if_alloc (fn);                      return TRUE;
287                  }                  }
288              }                  free_if_alloc (reg_prefs.backup.path);
289              p = reg_prefs.kserv_conf = m_strdup (path);                  p = reg_prefs.backup.path = m_strdup (path);
290              if (!p)                  if (!p)
291                  BUG (0);                      BUG (0);
292                }
293              cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );              free_if_alloc (reg_prefs.kserv_conf);
294              reg_prefs.keylist_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );              if (!GetDlgItemText (dlg, IDC_PREFS_KSERVER, path, sizeof (path)-1)
295                    || file_exist_check (path)) {
296              cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );                  rc = msg_box (dlg, _("The specified keyserver config file is invalid.\n\n"
297              reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );                                       "Create new default config file?"),
298                                         _("Preferences"), MB_ERR|MB_YESNO);
299              if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {                  if (rc == IDNO)
300                  hotkeys_unregister (glob_hwnd);                      return TRUE;
301                  reg_prefs.no_hotkeys = 1;                  else
302              }                  {
303              else {                      char cwd[256], * fn;
304                  reg_prefs.no_hotkeys = 0;                      FILE * fp = fopen ("keyserver.conf", "wb");
305                  for( i = 0; (id = hotkeys[i]); i++ ) {                      if (fp) {
306                      rc = GetDlgItemText( dlg, id, t, 2 );                          fprintf (fp, "%s\r\n", DEF_HKP_KEYSERVER);
307                      if( rc && check_hotkey( &t[0] ) )                          fclose (fp);
308                          hotkey_enable( &reg_hotkeys[i], t );                      }
309                      else                      GetCurrentDirectory (DIM (cwd)-1, cwd);
310                          hotkey_disable( &reg_hotkeys[i] );                      fn = make_filename (cwd, "keyserver", "conf");
311                  }                      memset (path, 0, sizeof( path));
312                  set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "DisableHotkeys", "0");                      strncpy (path, fn, DIM (path)-1);
313                  reg_prefs.no_hotkeys = 0;                      free_if_alloc (fn);
314              }                  }
315                }
316              if ((rc = set_reg_winpt_prefs (&reg_prefs)))              p = reg_prefs.kserv_conf = m_strdup (path);
317                  msg_box (dlg, winpt_strerror (rc), _("Preferences"), MB_ERR);              if (!p)
318                                BUG (0);
319              if (reg_prefs.no_hotkeys == 0) {  
320                  hotkeys_unregister (glob_hwnd);              cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );
321                  hotkeys_modify ();              reg_prefs.keylist_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
322                  if ((rc = hotkeys_register (glob_hwnd)))  
323                      msg_box (NULL, winpt_strerror (rc), _("Hotkeys"), MB_ERR);              cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );
324              }              reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
325              EndDialog (dlg, TRUE);              
326              return TRUE;              if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {
327                                hotkeys_unregister (glob_hwnd);
328          case IDCANCEL:                  reg_prefs.no_hotkeys = 1;
329              EndDialog( dlg, FALSE );              }
330              return FALSE;              else {
331          }                  reg_prefs.no_hotkeys = 0;
332          break;                  for( i = 0; (id = hotkeys[i]); i++ ) {
333      }                      rc = GetDlgItemText( dlg, id, t, 2 );
334                            if( rc && check_hotkey( &t[0] ) )
335      return FALSE;                          hotkey_enable( &reg_hotkeys[i], t );
336  } /* prefs_dlg_proc */                      else
337                            hotkey_disable( &reg_hotkeys[i] );
338                    }
339                    set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "DisableHotkeys", "0");
340                    reg_prefs.no_hotkeys = 0;
341                }
342    
343                if ((rc = set_reg_winpt_prefs (&reg_prefs)))
344                    msg_box (dlg, winpt_strerror (rc), _("Preferences"), MB_ERR);
345                
346                if (reg_prefs.no_hotkeys == 0) {
347                    hotkeys_unregister (glob_hwnd);
348                    hotkeys_modify ();
349                    if ((rc = hotkeys_register (glob_hwnd)))
350                        msg_box (NULL, winpt_strerror (rc), _("Hotkeys"), MB_ERR);
351                }
352                EndDialog (dlg, TRUE);
353                return TRUE;
354                
355            case IDCANCEL:
356                /* Reset backup mode if no mode was chosen. */
357                if (reg_prefs.auto_backup == 1 &&
358                    !IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&
359                    !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
360                    reg_prefs.auto_backup = 0;
361                EndDialog (dlg, FALSE);
362                return FALSE;
363            }
364            break;
365        }
366        
367        return FALSE;
368    }

Legend:
Removed from v.2  
changed lines
  Added in v.147

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26