/[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 105 by twoaday, Wed Nov 30 10:22:00 2005 UTC revision 176 by twoaday, Mon Feb 13 09:38:03 2006 UTC
# Line 94  enable_backup_items (HWND dlg, int val) Line 94  enable_backup_items (HWND dlg, int val)
94  }  }
95    
96    
 /* Initialize the combox in the dialog @dlg with the valid list modes. */  
 static void  
 init_keylist_modes (HWND dlg)  
 {  
     HWND cb = GetDlgItem (dlg, IDC_PREFS_LISTMODE);  
     combox_add_string (cb, (char *)"NORMAL");  
     combox_add_string (cb, (char *)"MINIMAL");  
     SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.keylist_mode, 0);  
 }  
   
   
97  /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */  /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */
98  static void  static void
99  init_wipe_modes (HWND dlg)  init_wipe_modes (HWND dlg)
# Line 117  init_wipe_modes (HWND dlg) Line 106  init_wipe_modes (HWND dlg)
106  }  }
107    
108    
109    /* Helper function to prepare dialog. */
110    static void
111    on_init_dialog (HWND dlg)
112    {
113        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            {IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)")},
118            {IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted")},
119            {IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes")},
120            {IDC_PREFS_BAKHOME, _("Backup to &keyring folder")},
121            {IDC_PREFS_BAKUSER, _("Backup to:")},
122            {IDC_PREFS_KEYLISTINF, _("Select &key list mode")},
123            {IDC_PREFS_WIPEINF, _("Select &wipe mode")},
124            {IDC_PREFS_KSINF, _("Keyserver &config")},
125            {IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds")},
126            {IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)")},
127            {IDC_PREFS_ALLOPTINF, _("General options")},
128            {IDC_PREFS_CLIPINF, _("Clipboard hotkeys")},
129            {IDC_PREFS_CURRINF, _("Current window hotkeys")},
130            {IDC_PREFS_KSELFILE, _("Browse...")},
131            {IDC_PREFS_BAKSELECT, _("Browse...")},
132            {IDCANCEL, _("&Cancel")},
133        {0, NULL}};
134        int i;
135    
136        gettext_localize_dialog (dlg, prefs, _("WinPT Preferences"));
137        SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE);
138            
139        SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
140        if (reg_prefs.backup.path)
141            SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
142    
143            
144        for (i=0; hotkeys[i]; i++)
145            SetDlgItemText (dlg, hotkeys[i], reg_hotkeys[i].key);    
146        CheckDlgButton (dlg, IDC_PREFS_DISABLE_HOTKEYS,
147                        reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED);
148        CheckDlgButton (dlg, IDC_PREFS_SECMODE,
149                        reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED);
150        CheckDlgButton (dlg, IDC_PREFS_VIEWER,
151                        reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED);
152        CheckDlgButton (dlg, IDC_PREFS_TRUST,
153                        reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED);
154        CheckDlgButton (dlg, IDC_PREFS_AUTOBACKUP,
155                        reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED);
156        CheckDlgButton (dlg, IDC_PREFS_BAKHOME,
157                        reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED);
158        CheckDlgButton (dlg, IDC_PREFS_BAKUSER,
159                        reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED);
160        if (reg_prefs.no_hotkeys)
161            disable_hotkey_items (dlg, 1);
162        if (!reg_prefs.auto_backup)
163            enable_backup_items (dlg, 0);
164        EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH),
165                          reg_prefs.backup.mode==1?FALSE : TRUE);
166        EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
167                          reg_prefs.backup.mode==1? FALSE : TRUE);
168        init_wipe_modes (dlg);
169        center_window (dlg, NULL);    
170        SetForegroundWindow (dlg);
171    }
172    
173    
174  /* Dialog box procedure for the WinPT preferences. */  /* Dialog box procedure for the WinPT preferences. */
175  BOOL CALLBACK  BOOL CALLBACK
176  prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
177  {  {
178      int rc;      int rc;
179      int i, id;      int i;
180      char t[2];      char t[2];
181      char path[256], * p;      char path[256], *p;
182      HWND cb;      HWND cb;
183            
184      switch (msg) {      switch (msg) {
185      case WM_INITDIALOG:      case WM_INITDIALOG:
186          SetWindowText (dlg, _("WinPT Preferences"));          on_init_dialog (dlg);
         SetDlgItemText (dlg, IDC_PREFS_SECMODE, _("Do not use any &temporary files"));  
         SetDlgItemText (dlg, IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext"));  
         SetDlgItemText (dlg, IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column"));  
         SetDlgItemText (dlg, IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)"));  
         SetDlgItemText (dlg, IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted"));  
         SetDlgItemText (dlg, IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes"));  
         SetDlgItemText (dlg, IDC_PREFS_BAKHOME, _("Backup to GPG &home folder"));  
         SetDlgItemText (dlg, IDC_PREFS_BAKUSER, _("Backup to:"));  
         SetDlgItemText (dlg, IDC_PREFS_KEYLISTINF, _("Select &key list mode"));  
         SetDlgItemText (dlg, IDC_PREFS_WIPEINF, _("Select &wipe mode"));  
         SetDlgItemText (dlg, IDC_PREFS_KSINF, _("Keyserver &config"));  
         SetDlgItemText (dlg, IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds"));  
         SetDlgItemText (dlg, IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)"));  
         SetDlgItemText (dlg, IDC_PREFS_ALLOPTINF, _("General options"));  
         SetDlgItemText (dlg, IDC_PREFS_CLIPINF, _("Clipboard hotkeys"));  
         SetDlgItemText (dlg, IDC_PREFS_CURRINF, _("Current window hotkeys"));  
         SetDlgItemText (dlg, IDCANCEL, _("&Cancel"));  
   
         SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE );  
         SetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE );  
         if (reg_prefs.backup.path)  
             SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);  
         if (reg_prefs.kserv_conf)  
             SetDlgItemText (dlg, IDC_PREFS_KSERVER, reg_prefs.kserv_conf);  
   
         for (i=0; (id=hotkeys[i]); i++)  
             SetDlgItemText (dlg, id, reg_hotkeys[i].key);  
         CheckDlgButton( dlg, IDC_PREFS_DISABLE_HOTKEYS,  
                         reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_SECMODE,  
                         reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_VIEWER,  
                         reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_TRUST,  
                         reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_AUTOBACKUP,  
                         reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_BAKHOME,  
                         reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED );  
         CheckDlgButton( dlg, IDC_PREFS_BAKUSER,  
                         reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED );  
         if( reg_prefs.no_hotkeys )  
             disable_hotkey_items( dlg, 1 );  
         if (!reg_prefs.auto_backup)  
             enable_backup_items (dlg, 0);  
         EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH),  
                       reg_prefs.backup.mode==1?FALSE : TRUE);  
         EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),  
                       reg_prefs.backup.mode==1? FALSE : TRUE);  
         init_keylist_modes (dlg);  
         init_wipe_modes (dlg);  
         center_window (dlg, NULL);  
         SetForegroundWindow (dlg);  
187          return TRUE;          return TRUE;
188                    
189      case WM_SYSCOMMAND:      case WM_SYSCOMMAND:
190          if (LOWORD (wparam) == SC_CLOSE)          if (LOWORD (wparam) == SC_CLOSE)
191              EndDialog (dlg, TRUE);              EndDialog (dlg, FALSE);
192          return FALSE;          return FALSE;
193                    
194      case WM_COMMAND:      case WM_COMMAND:
# Line 196  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 197  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
197              switch( (int)LOWORD( wparam ) ) {              switch( (int)LOWORD( wparam ) ) {
198              case IDC_PREFS_DISABLE_HOTKEYS:                          case IDC_PREFS_DISABLE_HOTKEYS:            
199                  reg_prefs.no_hotkeys ^= 1;                  reg_prefs.no_hotkeys ^= 1;
200                  disable_hotkey_items( dlg, reg_prefs.no_hotkeys );                  disable_hotkey_items (dlg, reg_prefs.no_hotkeys);
201                  break;                  break;
202    
203              case IDC_PREFS_TRUST:              case IDC_PREFS_TRUST:
204                  reg_prefs.always_trust ^= 1;                  reg_prefs.always_trust ^= 1;
205                  if( reg_prefs.always_trust ) {                  if (reg_prefs.always_trust) {
206                      msg_box (dlg,                      msg_box (dlg,
207                  _("In most cases it is not a good idea to enable this setting.\n"                  _("In most cases it is not a good idea to enable this setting.\n"
208                    "If you know what you are doing let this flag enabled, otherwise\n"                    "If you know what you are doing let this flag enabled, otherwise\n"
209                    "it is safe to leave this flag untouched."),                    "it is safe to leave this flag untouched."),
210                    _("Preferences"), MB_ICONWARNING|MB_OK );                    _("Preferences"), MB_ICONWARNING|MB_OK);
211                  }                  }
212                  break;                  break;
213    
# Line 218  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 219  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
219                          !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))                          !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
220                          CheckDlgButton (dlg, IDC_PREFS_BAKHOME, BST_CHECKED);                          CheckDlgButton (dlg, IDC_PREFS_BAKHOME, BST_CHECKED);
221                  }                  }
222                    if (IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME))
223                        EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), FALSE);
224                  break;                  break;
225    
226              case IDC_PREFS_BAKHOME:                          case IDC_PREFS_BAKHOME:            
# Line 240  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 243  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
243                  SetDlgItemText (dlg, IDC_PREFS_BAKPATH, bpath);                  SetDlgItemText (dlg, IDC_PREFS_BAKPATH, bpath);
244              break;              break;
245    
         case IDC_PREFS_KSELFILE: {  
             const char * name;  
             name = get_fileopen_dlg (dlg, _("Please select a keyserver.conf file"),  
                                      NULL, NULL);  
             if (name != NULL)  
                 SetDlgItemText (dlg, IDC_PREFS_KSERVER, name);  
             break; }  
   
246          case IDOK:          case IDOK:
247              rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );              rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );
248              if( !rc )              if (!rc)
249                  reg_prefs.cache_time = 0;                  reg_prefs.cache_time = 0;
250              else if( rc > 3600 ) {              else if (rc > 3600) {
251                  msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "                  msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "
252                                  "a good idea to cache the passphrase more than one hour."),                                  "a good idea to cache the passphrase more than one hour."),
253                                  _("Preferences"), MB_ERR );                                  _("Preferences"), MB_ERR);
254                  SetDlgItemInt( dlg, IDC_PREFS_CACHETIME, 0, FALSE );                  SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, 0, FALSE);
255                  return TRUE;                  return TRUE;
256              }              }
257              if (reg_prefs.cache_time != rc)              if (reg_prefs.cache_time != rc)
258                  agent_flush_cache ();                  agent_flush_cache ();
259              reg_prefs.cache_time = rc;              reg_prefs.cache_time = rc;
260              rc = GetDlgItemInt( dlg, IDC_PREFS_WORDWRAP, NULL, FALSE );              rc = GetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, NULL, FALSE);
261              if( !rc )              if (!rc)
262                  reg_prefs.word_wrap = 0;                  reg_prefs.word_wrap = 0;
263              else if( rc > 80 ) {              else if (rc > 80) {
264                  msg_box( dlg, _("Please enter a value between 1-80."), _("Preferences"), MB_ERR );                  msg_box (dlg, _("Please enter a value between 1-80."),
265                             _("Preferences"), MB_ERR);
266                  return TRUE;                  return TRUE;
267              }              }
268              reg_prefs.word_wrap = rc;              reg_prefs.word_wrap = rc;
# Line 286  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 282  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
282                  if (!p)                  if (!p)
283                      BUG (0);                      BUG (0);
284              }              }
             free_if_alloc (reg_prefs.kserv_conf);  
             if (!GetDlgItemText (dlg, IDC_PREFS_KSERVER, path, sizeof (path)-1)  
                 || file_exist_check (path)) {  
                 rc = msg_box (dlg, _("The specified keyserver config file is invalid.\n\n"  
                                      "Create new default config file?"),  
                          _("Preferences"), MB_ERR|MB_YESNO);  
                 if (rc == IDNO)  
                     return TRUE;  
                 else  
                 {  
                     char cwd[256], * fn;  
                     FILE * fp = fopen ("keyserver.conf", "wb");  
                     if (fp) {  
                         fprintf (fp, "%s\r\n", DEF_HKP_KEYSERVER);  
                         fclose (fp);  
                     }  
                     GetCurrentDirectory (DIM (cwd)-1, cwd);  
                     fn = make_filename (cwd, "keyserver", "conf");  
                     memset (path, 0, sizeof( path));  
                     strncpy (path, fn, DIM (path)-1);  
                     free_if_alloc (fn);  
                 }  
             }  
             p = reg_prefs.kserv_conf = m_strdup (path);  
             if (!p)  
                 BUG (0);  
   
             cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );  
             reg_prefs.keylist_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );  
285    
286              cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );              cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );
287              reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );              reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
# Line 325  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 292  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
292              }              }
293              else {              else {
294                  reg_prefs.no_hotkeys = 0;                  reg_prefs.no_hotkeys = 0;
295                  for( i = 0; (id = hotkeys[i]); i++ ) {                  for( i = 0; hotkeys[i]; i++ ) {
296                      rc = GetDlgItemText( dlg, id, t, 2 );                      rc = GetDlgItemText (dlg, hotkeys[i], t, 2);
297                      if( rc && check_hotkey( &t[0] ) )                      if( rc && check_hotkey( &t[0] ) )
298                          hotkey_enable( &reg_hotkeys[i], t );                          hotkey_enable( &reg_hotkeys[i], t );
299                      else                      else
# Line 349  prefs_dlg_proc (HWND dlg, UINT msg, WPAR Line 316  prefs_dlg_proc (HWND dlg, UINT msg, WPAR
316              return TRUE;              return TRUE;
317                            
318          case IDCANCEL:          case IDCANCEL:
319              EndDialog( dlg, FALSE );              /* Reset backup mode if no mode was chosen. */
320                if (reg_prefs.auto_backup == 1 &&
321                    !IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME) &&
322                    !IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER))
323                    reg_prefs.auto_backup = 0;
324                EndDialog (dlg, FALSE);
325              return FALSE;              return FALSE;
326          }          }
327          break;          break;

Legend:
Removed from v.105  
changed lines
  Added in v.176

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26