/[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 32 by twoaday, Mon Oct 24 08:03:48 2005 UTC revision 181 by twoaday, Tue Mar 14 11:01:22 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, 2005 Timo Schulz   *      Copyright (C) 2001, 2002, 2003, 2005, 2006 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  /* Dialog IDs of all hotkeys. */  #include "resource.h"
40  static int hotkeys[] = {  
41      IDC_PREFS_CLIP_ENCRYPT,  
42      IDC_PREFS_CLIP_DECRYPT_VERIFY,  /* Dialog IDs of all hotkeys. */
43      IDC_PREFS_CLIP_SIGN,  static int hotkeys[] = {
44      IDC_PREFS_CLIP_SIGNENC,      IDC_PREFS_CLIP_ENCRYPT,
45      IDC_PREFS_CWS_ENCRYPT,      IDC_PREFS_CLIP_DECRYPT_VERIFY,
46      IDC_PREFS_CWS_DECRYPT_VERIFY,      IDC_PREFS_CLIP_SIGNENC,
47      IDC_PREFS_CWS_SIGN,      IDC_PREFS_CLIP_SIGN,    
48      IDC_PREFS_CWS_SIGNENC,      IDC_PREFS_CWS_ENCRYPT,
49      0      IDC_PREFS_CWS_DECRYPT_VERIFY,
50  };      IDC_PREFS_CWS_SIGN,
51        IDC_PREFS_CWS_SIGNENC,
52        0
53  /* Check that the given hotkey is in A..Z or a..z. */  };
54  static int  
55  check_hotkey (char * key)  
56  {  /* Check that the given hotkey is in A..Z or a..z. */
57      if (*key >= 'A' && *key <= 'Z')  static int
58          return 1;  check_hotkey (char *key)
59      else if (*key >= 'a' && *key <= 'z') {  {
60          *key = *key - 32;      if (*key >= 'A' && *key <= 'Z')
61          return 1;          return 1;
62      }      else if (*key >= 'a' && *key <= 'z') {
63      return 0;          *key = *key - 32;
64  }          return 1;
65        }
66        return 0;
67  /* Disable all hotkey controls in the dialog @dlg if val is 1. */  }
68  static void  
69  disable_hotkey_items (HWND dlg, int val)  
70  {  /* Disable all hotkey controls in the dialog @dlg if val is 1. */
71      int mode = val? FALSE : TRUE;  static void
72      int i, id;  disable_hotkey_items (HWND dlg, int val)
73        {
74      for (i=0; (id = hotkeys[i]); i++)      int mode = val? FALSE : TRUE;
75          EnableWindow (GetDlgItem (dlg, id), mode);      int i, id;
76  }      
77        for (i=0; (id = hotkeys[i]); i++)
78            EnableWindow (GetDlgItem (dlg, id), mode);
79    }
80  /* En- or disable the backup items in the dialog @dlg.  
81     If val != 0 activate them, disable them otherwise. */  
82  static void  
83  enable_backup_items (HWND dlg, int val)  /* En- or disable the backup items in the dialog @dlg.
84  {     If val != 0 activate them, disable them otherwise. */
85      int mode = val? TRUE : FALSE;  static void
86    enable_backup_items (HWND dlg, int val)
87      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKHOME), mode);  {
88      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKUSER), mode);      int mode = val? TRUE : FALSE;
89      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), mode);  
90      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), mode);      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKHOME), mode);
91  }      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKUSER), mode);
92        EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), mode);
93        EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), mode);
94  /* Initialize the combox in the dialog @dlg with the valid list modes. */  }
95  static void  
96  init_keylist_modes (HWND dlg)  
97  {  /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */
98      HWND cb = GetDlgItem (dlg, IDC_PREFS_LISTMODE);  static void
99      combox_add_string (cb, (char *)"NORMAL");  init_wipe_modes (HWND dlg)
100      combox_add_string (cb, (char *)"MINIMAL");  {
101      SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.keylist_mode, 0);      HWND cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
102  }      combox_add_string (cb, (char *)"Simple");
103        combox_add_string (cb, (char *)"DoD");
104        combox_add_string (cb, (char *)"Gutmann");
105  /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */      SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.wipe_mode, 0);
106  static void  }
107  init_wipe_modes (HWND dlg)  
108  {  
109      HWND cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);  /* Helper function to prepare dialog. */
110      combox_add_string (cb, (char *)"Simple");  static void
111      combox_add_string (cb, (char *)"DoD");  on_init_dialog (HWND dlg)
112      combox_add_string (cb, (char *)"Gutmann");  {
113      SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.wipe_mode, 0);      struct gettext_tab_s prefs[] = {
114  }          {IDC_PREFS_SECMODE, _("Do not use any &temporary files")},
115            {IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext")},
116            {IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column")},
117  /* Dialog box procedure for the WinPT preferences. */          {IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)")},
118  BOOL CALLBACK          {IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted")},
119  prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)          {IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes")},
120  {          {IDC_PREFS_BAKHOME, _("Backup to &keyring folder")},
121      int rc;          {IDC_PREFS_BAKUSER, _("Backup to:")},
122      int i, id;          {IDC_PREFS_KEYLISTINF, _("Select &key list mode")},
123      char t[2];          {IDC_PREFS_WIPEINF, _("Select &wipe mode")},
124      char path[256], * p;          {IDC_PREFS_KSINF, _("Keyserver &config")},
125      HWND cb;          {IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' minutes")},
126                {IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)")},
127      switch ( msg ) {          {IDC_PREFS_ALLOPTINF, _("General options")},
128      case WM_INITDIALOG:          {IDC_PREFS_CLIPINF, _("Clipboard hotkeys")},
129      #ifndef LANG_DE          {IDC_PREFS_CURRINF, _("Current window hotkeys")},
130          SetWindowText (dlg, _("WinPT Preferences"));          {IDC_PREFS_KSELFILE, _("Browse...")},
131          SetDlgItemText (dlg, IDC_PREFS_SECMODE, _("Do not use any &temporary files"));          {IDC_PREFS_BAKSELECT, _("Browse...")},
132          SetDlgItemText (dlg, IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext"));          {IDCANCEL, _("&Cancel")},
133          SetDlgItemText (dlg, IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column"));      {0, NULL}};
134          SetDlgItemText (dlg, IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)"));      int i;
135          SetDlgItemText (dlg, IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted"));  
136          SetDlgItemText (dlg, IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes"));      gettext_localize_dialog (dlg, prefs, _("WinPT Preferences"));
137          SetDlgItemText (dlg, IDC_PREFS_BAKHOME, _("Backup to GPG &home folder"));  
138          SetDlgItemText (dlg, IDC_PREFS_BAKUSER, _("Backup to:"));      SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time/60, TRUE);
139      #endif      SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
140          SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE );      if (reg_prefs.backup.path)
141          SetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE );          SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
142          if (reg_prefs.backup.path)          
143              SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);      for (i=0; hotkeys[i]; i++) {
144          if (reg_prefs.kserv_conf)          if (!wpt_hotkeys[i].enabled)
145              SetDlgItemText (dlg, IDC_PREFS_KSERVER, reg_prefs.kserv_conf);              continue;
146            char key[2];
147          for (i=0; (id=hotkeys[i]); i++)          key[0] = wpt_hotkeys[i].key;
148              SetDlgItemText (dlg, id, reg_hotkeys[i].key);          key[1] = 0;
149          CheckDlgButton( dlg, IDC_PREFS_DISABLE_HOTKEYS,          SetDlgItemText (dlg, hotkeys[i], key);
150                          reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED );      }
151          CheckDlgButton( dlg, IDC_PREFS_SECMODE,      CheckDlgButton (dlg, IDC_PREFS_DISABLE_HOTKEYS,
152                          reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED );                      reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED);
153          CheckDlgButton( dlg, IDC_PREFS_VIEWER,      CheckDlgButton (dlg, IDC_PREFS_SECMODE,
154                          reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED );                      reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED);
155          CheckDlgButton( dlg, IDC_PREFS_TRUST,      CheckDlgButton (dlg, IDC_PREFS_VIEWER,
156                          reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED );                      reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED);
157          CheckDlgButton( dlg, IDC_PREFS_AUTOBACKUP,      CheckDlgButton (dlg, IDC_PREFS_TRUST,
158                          reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED );                      reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED);
159          CheckDlgButton( dlg, IDC_PREFS_BAKHOME,      CheckDlgButton (dlg, IDC_PREFS_AUTOBACKUP,
160                          reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED );                      reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED);
161          CheckDlgButton( dlg, IDC_PREFS_BAKUSER,      CheckDlgButton (dlg, IDC_PREFS_BAKHOME,
162                          reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED );                      reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED);
163          if( reg_prefs.no_hotkeys )      CheckDlgButton (dlg, IDC_PREFS_BAKUSER,
164              disable_hotkey_items( dlg, 1 );                      reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED);
165          if (!reg_prefs.auto_backup)      if (reg_prefs.no_hotkeys)
166              enable_backup_items (dlg, 0);          disable_hotkey_items (dlg, 1);
167          EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH),      if (!reg_prefs.auto_backup)
168                        reg_prefs.backup.mode==1?FALSE : TRUE);          enable_backup_items (dlg, 0);
169          EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH),
170                        reg_prefs.backup.mode==1? FALSE : TRUE);                        reg_prefs.backup.mode==1?FALSE : TRUE);
171          init_keylist_modes (dlg);      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
172          init_wipe_modes (dlg);                        reg_prefs.backup.mode==1? FALSE : TRUE);
173          center_window (dlg, NULL);      init_wipe_modes (dlg);
174          SetForegroundWindow (dlg);      center_window (dlg, NULL);    
175          return TRUE;      SetForegroundWindow (dlg);
176            }
177      case WM_SYSCOMMAND:  
178          if (LOWORD (wparam) == SC_CLOSE)  
179              EndDialog (dlg, TRUE);  /* Dialog box procedure for the WinPT preferences. */
180          return FALSE;  BOOL CALLBACK
181            prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
182      case WM_COMMAND:  {
183          switch( HIWORD(wparam) ) {      int rc;
184          case BN_CLICKED:      int i;
185              switch( (int)LOWORD( wparam ) ) {      char t[3];
186              case IDC_PREFS_DISABLE_HOTKEYS:                  char path[256], *p;
187                  reg_prefs.no_hotkeys ^= 1;      HWND cb;
188                  disable_hotkey_items( dlg, reg_prefs.no_hotkeys );      
189                  break;      switch (msg) {
190        case WM_INITDIALOG:
191              case IDC_PREFS_TRUST:          on_init_dialog (dlg);
192                  reg_prefs.always_trust ^= 1;          return TRUE;
193                  if( reg_prefs.always_trust ) {          
194                      msg_box (dlg,      case WM_SYSCOMMAND:
195                  _("In most cases it is not a good idea to enable this setting.\n"          if (LOWORD (wparam) == SC_CLOSE)
196                    "If you know what you are doing let this flag enabled, otherwise\n"              EndDialog (dlg, FALSE);
197                    "it is safe to leave this flag untouched."),          return FALSE;
198                    _("Preferences"), MB_ICONWARNING|MB_OK );          
199                  }      case WM_COMMAND:
200                  break;          switch (HIWORD (wparam)) {
201            case BN_CLICKED:
202              case IDC_PREFS_AUTOBACKUP:              switch ((int)LOWORD (wparam)) {
203                  reg_prefs.auto_backup ^= 1;                              case IDC_PREFS_DISABLE_HOTKEYS:            
204                  enable_backup_items (dlg, reg_prefs.auto_backup);                  reg_prefs.no_hotkeys ^= 1;
205                  if (reg_prefs.auto_backup == 1) {                  disable_hotkey_items (dlg, reg_prefs.no_hotkeys);
206                      if (!IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&                  break;
207                          !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))  
208                          CheckDlgButton (dlg, IDC_PREFS_BAKHOME, BST_CHECKED);              case IDC_PREFS_TRUST:
209                  }                  reg_prefs.always_trust ^= 1;
210                  break;                  if (reg_prefs.always_trust) {
211                        msg_box (dlg,
212              case IDC_PREFS_BAKHOME:                              _("In most cases it is not a good idea to enable this setting.\n"
213                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), FALSE);                    "If you know what you are doing let this flag enabled, otherwise\n"
214                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);                    "it is safe to leave this flag untouched."),
215                  break;                    _("Preferences"), MB_ICONWARNING|MB_OK);
216                    }
217              case IDC_PREFS_BAKUSER:                  break;
218                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), TRUE);  
219                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), TRUE);              case IDC_PREFS_AUTOBACKUP:
220                  break;                  reg_prefs.auto_backup ^= 1;                
221              }                  enable_backup_items (dlg, reg_prefs.auto_backup);
222              break;                  if (reg_prefs.auto_backup == 1) {
223          }                      if (!IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&
224          switch( LOWORD( wparam ) ) {                          !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
225          case IDC_PREFS_BAKSELECT:                          CheckDlgButton (dlg, IDC_PREFS_BAKHOME, BST_CHECKED);
226              const char *bpath;                  }
227              bpath = get_folder_dlg (dlg, _("Select GPG backup path"), NULL);                  if (IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME))
228              if (bpath)                      EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);
229                  SetDlgItemText (dlg, IDC_PREFS_BAKPATH, bpath);                  break;
230              break;  
231                case IDC_PREFS_BAKHOME:            
232          case IDC_PREFS_KSELFILE: {                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), FALSE);
233              const char * name;                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);
234              name = get_filename_dlg (dlg, FILE_OPEN, _("Please select a keyserver.conf file"),                  break;
235                                       NULL, NULL);  
236              if (name != NULL)              case IDC_PREFS_BAKUSER:
237                  SetDlgItemText (dlg, IDC_PREFS_KSERVER, name);                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT), TRUE);
238              break; }                  EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), TRUE);
239                    break;
240          case IDOK:              }
241              rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );              break;
242              if( !rc )          }
243                  reg_prefs.cache_time = 0;          switch (LOWORD (wparam)) {
244              else if( rc > 3600 ) {          case IDC_PREFS_BAKSELECT:
245                  msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "              const char *bpath;
246                                  "a good idea to cache the passphrase more than one hour."),              bpath = get_folder_dlg (dlg, _("Select GPG backup path"), NULL);
247                                  _("Preferences"), MB_ERR );              if (bpath)
248                  SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, 0, FALSE );                  SetDlgItemText (dlg, IDC_PREFS_BAKPATH, bpath);
249                  return TRUE;              break;
250              }  
251              if (reg_prefs.cache_time != rc)          case IDOK:
252                  agent_flush_cache ();              rc = GetDlgItemInt (dlg, IDC_PREFS_CACHETIME, NULL, FALSE);
253              reg_prefs.cache_time = rc;              if (rc <= 0) {
254              rc = GetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, NULL, FALSE );                  reg_prefs.cache_time = 0;
255              if( !rc )                  agent_flush_cache ();
256                  reg_prefs.word_wrap = 0;              }
257              else if( rc > 80 ) {              else if (rc > 720) {
258                  msg_box( dlg, _("Please enter a value between 1-80."), _("Preferences"), MB_ERR );                  msg_box( dlg, _("Please enter a value that is between 1-720.\nIt is not "
259                  return TRUE;                                  "a good idea to cache the passphrase more than 12 hours."),
260              }                                  _("Preferences"), MB_ERR);
261              reg_prefs.word_wrap = rc;                  SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, 0, FALSE);
262              reg_prefs.use_tmpfiles = IsDlgButtonChecked( dlg, IDC_PREFS_SECMODE )? 0 : 1;                  return TRUE;
263              reg_prefs.use_viewer = IsDlgButtonChecked( dlg, IDC_PREFS_VIEWER )? 1 : 0;              }
264              reg_prefs.backup.mode = IsDlgButtonChecked( dlg, IDC_PREFS_BAKHOME ) ? 1 :              if (reg_prefs.cache_time != rc)
265                                      IsDlgButtonChecked( dlg, IDC_PREFS_BAKUSER )? 2 : 0;                  agent_flush_cache ();
266              if( reg_prefs.backup.mode == 2 ) {              reg_prefs.cache_time = rc*60;
267                  if( !GetDlgItemText( dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1 )              rc = GetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, NULL, FALSE);
268                      || dir_exist_check( path ) ) {              if (rc <= 0)
269                      msg_box( dlg, _("The specified backup folder is invalid."),                  reg_prefs.word_wrap = 0;
270                               _("Preferences"), MB_ERR );              else if (rc > 80) {
271                      return TRUE;                  msg_box (dlg, _("Please enter a value between 1-80."),
272                  }                           _("Preferences"), MB_ERR);
273                  free_if_alloc (reg_prefs.backup.path);                  return TRUE;
274                  p = reg_prefs.backup.path = m_strdup (path);              }
275                  if (!p)              reg_prefs.word_wrap = rc;
276                      BUG (0);              reg_prefs.use_tmpfiles = IsDlgButtonChecked (dlg, IDC_PREFS_SECMODE)? 0 : 1;
277              }              reg_prefs.use_viewer = IsDlgButtonChecked (dlg, IDC_PREFS_VIEWER)? 1 : 0;
278              free_if_alloc (reg_prefs.kserv_conf);              reg_prefs.backup.mode = IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME ) ? 1 :
279              if (!GetDlgItemText (dlg, IDC_PREFS_KSERVER, path, sizeof (path)-1)                                      IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER)? 2 : 0;
280                  || file_exist_check (path)) {              if (reg_prefs.backup.mode == 2) {
281                  rc = msg_box (dlg, _("The specified keyserver config file is invalid.\n\n"                  if (!GetDlgItemText (dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1)
282                                       "Create new default config file?"),                      || dir_exist_check (path)) {
283                           _("Preferences"), MB_ERR|MB_YESNO);                      msg_box (dlg, _("The specified backup folder is invalid."),
284                  if (rc == IDNO)                               _("Preferences"), MB_ERR);
285                      return TRUE;                      return TRUE;
286                  else                  }
287                  {                  free_if_alloc (reg_prefs.backup.path);
288                      char cwd[256], * fn;                  p = reg_prefs.backup.path = m_strdup (path);
289                      FILE * fp = fopen ("keyserver.conf", "wb");                  if (!p)
290                      if (fp) {                      BUG (0);
291                          fprintf (fp, "%s\r\n", DEF_HKP_KEYSERVER);              }
292                          fclose (fp);  
293                      }              cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
294                      GetCurrentDirectory (DIM (cwd)-1, cwd);              reg_prefs.wipe_mode = SendMessage (cb, CB_GETCURSEL, 0, 0);
295                      fn = make_filename (cwd, "keyserver", "conf");              
296                      memset (path, 0, sizeof( path));              if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {
297                      strncpy (path, fn, DIM (path)-1);                  hotkeys_unregister (glob_hwnd);
298                      free_if_alloc (fn);                  reg_prefs.no_hotkeys = 1;
299                  }              }
300              }              else {
301              p = reg_prefs.kserv_conf = m_strdup (path);                  reg_prefs.no_hotkeys = 0;
302              if (!p)                  for (i = 0; hotkeys[i]; i++) {
303                  BUG (0);                      rc = GetDlgItemText (dlg, hotkeys[i], t, sizeof (t)-1);
304                        if (rc > 0 && check_hotkey (&t[0]))
305              cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );                          hotkey_enable (&wpt_hotkeys[i], t);
306              reg_prefs.keylist_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );                      else
307                            hotkey_disable (&wpt_hotkeys[i]);
308              cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );                  }
309              reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );                  set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "DisableHotkeys", "0");
310                                reg_prefs.no_hotkeys = 0;
311              if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {              }
312                  hotkeys_unregister (glob_hwnd);  
313                  reg_prefs.no_hotkeys = 1;              rc = set_reg_winpt_prefs (&reg_prefs);
314              }              if (rc)
315              else {                  msg_box (dlg, winpt_strerror (rc), _("Preferences"), MB_ERR);
316                  reg_prefs.no_hotkeys = 0;              
317                  for( i = 0; (id = hotkeys[i]); i++ ) {              if (reg_prefs.no_hotkeys == 0) {
318                      rc = GetDlgItemText( dlg, id, t, 2 );                  hotkeys_unregister (glob_hwnd);
319                      if( rc && check_hotkey( &t[0] ) )                  rc = hotkeys_register (glob_hwnd);
320                          hotkey_enable( &reg_hotkeys[i], t );                  if (rc)
321                      else                      msg_box (NULL, winpt_strerror (rc), _("Hotkeys"), MB_ERR);
322                          hotkey_disable( &reg_hotkeys[i] );              }
323                  }              EndDialog (dlg, TRUE);
324                  set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "DisableHotkeys", "0");              return TRUE;
325                  reg_prefs.no_hotkeys = 0;              
326              }          case IDCANCEL:
327                /* Reset backup mode if no mode was chosen. */
328              if ((rc = set_reg_winpt_prefs (&reg_prefs)))              if (reg_prefs.auto_backup == 1 &&
329                  msg_box (dlg, winpt_strerror (rc), _("Preferences"), MB_ERR);                  !IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&
330                                !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
331              if (reg_prefs.no_hotkeys == 0) {                  reg_prefs.auto_backup = 0;
332                  hotkeys_unregister (glob_hwnd);              EndDialog (dlg, FALSE);
333                  hotkeys_modify ();              return FALSE;
334                  if ((rc = hotkeys_register (glob_hwnd)))          }
335                      msg_box (NULL, winpt_strerror (rc), _("Hotkeys"), MB_ERR);          break;
336              }      }
337              EndDialog (dlg, TRUE);      
338              return TRUE;      return FALSE;
               
         case IDCANCEL:  
             EndDialog( dlg, FALSE );  
             return FALSE;  
         }  
         break;  
     }  
       
     return FALSE;  
339  }  }

Legend:
Removed from v.32  
changed lines
  Added in v.181

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26