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

Diff of /trunk/Src/wptClipEditDlg.cpp

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

revision 201 by twoaday, Sat Apr 22 18:30:24 2006 UTC revision 328 by twoaday, Fri Sep 25 16:07:38 2009 UTC
# Line 1  Line 1 
1  /* wptClipEditDlg.cpp - Clipboard Editor dialog  /* wptClipEditDlg.cpp - Clipboard Editor dialog
2   *      Copyright (C) 2000-2005 Timo Schulz   *      Copyright (C) 2000-2006 Timo Schulz
3   *   *
4   * This file is part of WinPT.   * This file is part of WinPT.
5   *   *
# Line 12  Line 12 
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.
  *  
  * You should have received a copy of the GNU General Public License  
  * along with WinPT; if not, write to the Free Software Foundation,  
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA  
15   */   */
16  #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
17  #include <config.h>  #include <config.h>
# Line 31  Line 27 
27  #include "wptGPG.h"  #include "wptGPG.h"
28  #include "wptNLS.h"  #include "wptNLS.h"
29  #include "resource.h"  #include "resource.h"
30    #include "wptCommonCtl.h"
31    #include "wptContext.h"
32    #include "wptKeylist.h"
33    
 #ifdef _MSC_VER  
 #include "winpt_header.h"  
34    
35  static DWORD help_arr[] = {  /* XXX: it would be really nice to have tempest prevention fonts. */
36      IDC_CLIPEDIT_SEND,  WPT_CLIPEDIT_COPY,  
37      IDC_CLIPEDIT_CLEAR, WPT_CLIPEDIT_CLEAR,  void verify_get_clip_info (gpgme_signature_t sig,
38      IDC_CLIPEDIT_LOAD,  WPT_CLIPEDIT_LOAD,                             char **r_header, char **r_footer);
39      IDC_CLIPEDIT_SAVE,  WPT_CLIPEDIT_SAVE,  
     IDC_CLIPEDIT_QUOTE, WPT_CLIPEDIT_QUOTE,  
     0, 0};  
 #endif  
40    
41  /* Load the clipboard contents into the text field in @dlg.  /* Load the clipboard contents into the text field in @dlg.
42       Optinally @header and @footer can be used to set a header and footer.
43     Return value: 0 on success. */     Return value: 0 on success. */
44  static int  static int
45  load_clipboard (HWND dlg)  load_clipboard (HWND dlg, const char *header, const char *footer)
46  {  {
47      HANDLE clipmem;      HANDLE clipmem;
48      char *cliptext;      char *cliptext;
49      char *p;      char *p, *pp;
50    
51      CloseClipboard (); /* make sure it is closed. */      CloseClipboard (); /* make sure it is closed. */
52      if (OpenClipboard (NULL) == FALSE) {      if (OpenClipboard (NULL) == FALSE) {
# Line 76  load_clipboard (HWND dlg) Line 71  load_clipboard (HWND dlg)
71      strcpy (p, cliptext);      strcpy (p, cliptext);
72            
73      GlobalUnlock (clipmem);      GlobalUnlock (clipmem);
74      CloseClipboard ();        CloseClipboard ();
75      SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);      
76        if (header && footer) {
77            const char *fmt = "%s\r\n%s\r\n%s";
78            int len;
79    
80            len = strlen (header) + strlen (footer) + strlen (fmt) + strlen (p);
81            pp = new char[len + 1];
82            if (!pp)
83                BUG (0);
84            _snprintf (pp, len, fmt, header, p, footer);
85            SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, pp);
86            free_if_alloc (pp);
87        }
88        else
89            SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);
90      free_if_alloc (p);      free_if_alloc (p);
       
91      return 0;      return 0;
92  }  }
93    
# Line 91  load_clipboard_from_file (HWND dlg) Line 99  load_clipboard_from_file (HWND dlg)
99      OPENFILENAME open;      OPENFILENAME open;
100      FILE *fp;      FILE *fp;
101      char *p;      char *p;
102      char file[300] = "";      char file[MAX_PATH+64] = "";
103      DWORD size;      DWORD size;
104      int id;      int id;
105    
106      memset (&open, 0, sizeof (open));      memset (&open, 0, sizeof (open));
107      open.lStructSize = sizeof (OPENFILENAME);            open.lStructSize = sizeof (OPENFILENAME);
108      open.hInstance = glob_hinst;                  open.hInstance = glob_hinst;
109      open.lpstrTitle = _("File Open");            open.lpstrTitle = _("File Open");
110      open.lpstrFilter = (char *)"All Files (*.*)\0*.*\0\0";      open.lpstrFilter = "All Files (*.*)\0*.*\0\0";
111      open.hwndOwner = dlg;                open.hwndOwner = dlg;          
112      open.lpstrFile = file;                        open.lpstrFile = file;                  
113      open.nMaxFile = sizeof (file)-1;                      open.nMaxFile = DIM (file)-1;                  
114      open.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;      open.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
115                            
116      if (GetOpenFileName (&open)) {      if (GetOpenFileName (&open)) {
117          if( (size=get_file_size (file)) > MAX_CLIPTEXT_SIZE) {                if( (size=get_file_size (file)) > MAX_CLIPTEXT_SIZE) {
118              id = msg_box (dlg, _("The file you want to add is very large.\n"              id = msg_box (dlg, _("The file you want to add is very large.\n"
119                                   "Still proceed?"), _("Clipboard"),                                   "Continue?"), _("Clipboard"),
120                            MB_INFO|MB_YESNO);                            MB_INFO|MB_YESNO);
121              if (id == IDNO)              if (id == IDNO)
122                  return -1;                  return -1;
# Line 117  load_clipboard_from_file (HWND dlg) Line 125  load_clipboard_from_file (HWND dlg)
125          if (!fp) {          if (!fp) {
126              msg_box (dlg, winpt_strerror (WPTERR_FILE_OPEN),              msg_box (dlg, winpt_strerror (WPTERR_FILE_OPEN),
127                       _("Clipboard"), MB_ERR);                       _("Clipboard"), MB_ERR);
128              return FALSE;              return -1;
129          }          }
130          p = new char[size+1];          p = new char[size+1];
131          if (!p)          if (!p)
132              BUG (0);              BUG (0);
133          fread (p, 1, size, fp);          memset (p, 0, size+1);
134          p[size] = '\0';          size = fread (p, 1, size, fp);
135          fclose (fp);          fclose (fp);
136          SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);                  SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);        
137          free_if_alloc (p);          free_if_alloc (p);
# Line 141  save_clipboard_to_file (HWND dlg) Line 149  save_clipboard_to_file (HWND dlg)
149      char *p=NULL;      char *p=NULL;
150      char file[300] = "";      char file[300] = "";
151      DWORD nbytes;      DWORD nbytes;
     int id;  
152    
153      memset (&save, 0, sizeof (save));            memset (&save, 0, sizeof (save));      
154      save.lStructSize = sizeof (OPENFILENAME);            save.lStructSize = sizeof (OPENFILENAME);      
155      save.hInstance = glob_hinst;                  save.hInstance = glob_hinst;            
156      save.lpstrTitle = _("File Save");            save.lpstrTitle = _("File Save");      
157      save.lpstrFile = (char *)"All Files (*.*)\0*.*\0\0";      save.lpstrFile = (char*)"All Files (*.*)\0*.*\0\0";
158      save.hwndOwner = dlg;                        save.hwndOwner = dlg;
159      save.lpstrFile = file;                        save.lpstrFile = file;
160      save.nMaxFile = sizeof (file) - 1;      save.nMaxFile = DIM (file) - 1;
161      save.Flags = OFN_OVERWRITEPROMPT;      save.Flags = OFN_OVERWRITEPROMPT;
162                        
163      if( GetSaveFileName( &save ) ) {      if (GetSaveFileName (&save)) {
         if( file_exist_check( file ) == 0 ) {        
             id = log_box (_("Clipboard"), MB_YESNO,  
                           _("\"%s\" already exists.\n"  
                             "Replace existing file?"), file);        
             if( id == IDNO )      
                 return FALSE;  
         }  
164          fp = fopen (file, "wb");          fp = fopen (file, "wb");
165          if (!fp) {          if (!fp) {
166              msg_box (dlg, winpt_strerror (WPTERR_FILE_CREAT),              msg_box (dlg, winpt_strerror (WPTERR_FILE_CREAT),
167                       _("Clipboard"), MB_ERR);                       _("Clipboard"), MB_ERR);
168              return FALSE;              return -1;
169          }          }
         /* XXX: there is a NUL-byte at the end. */  
170          nbytes = SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2,          nbytes = SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2,
171                                       WM_GETTEXTLENGTH, 0, 0);                                       WM_GETTEXTLENGTH, 0, 0);
172          if (nbytes > 0) {          if (nbytes > 0) {
# Line 180  save_clipboard_to_file (HWND dlg) Line 179  save_clipboard_to_file (HWND dlg)
179          }                    }          
180          fclose (fp);          fclose (fp);
181          free_if_alloc (p);          free_if_alloc (p);
182            msg_box (dlg, _("Data successfully written to file."),
183                     _("Clipboard"), MB_OK);
184      }      }
185      return 0;      return 0;
186  }  }
# Line 189  save_clipboard_to_file (HWND dlg) Line 190  save_clipboard_to_file (HWND dlg)
190  BOOL CALLBACK  BOOL CALLBACK
191  clip_edit_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  clip_edit_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
192  {  {
193        HMENU menu;
194        char *head=NULL, *foot=NULL;
195        gpgme_data_t txt;
196    
197      switch (msg)  {      switch (msg)  {
198      case WM_INITDIALOG:      case WM_INITDIALOG:        
199            /* If there is a param, we expect a signature and initialize
200               the header and footer variable accordingly. */
201            if (lparam)
202                verify_get_clip_info ((gpgme_signature_t)lparam, &head, &foot);
203            load_clipboard (dlg, head, foot);
204            free_if_alloc (head);
205            free_if_alloc (foot);
206    
207            menu = LoadMenu (glob_hinst, (LPCTSTR)IDR_WINPT_CLIPEDIT);
208          
209            set_menu_text_bypos (menu, 0, _("&File"));
210            set_menu_text_bypos (menu, 1, _("&Edit"));
211                                
212            set_menu_text (menu, ID_CLIPEDIT_COPY, _("&Copy"));
213            set_menu_text (menu, ID_CLIPEDIT_CLEAR, _("Clea&r"));
214            set_menu_text (menu, ID_CLIPEDIT_QUOTE, _("&Quote"));
215            set_menu_text (menu, ID_CLIPEDIT_OPEN, _("&Open..."));  
216            set_menu_text (menu, ID_CLIPEDIT_SAVE, _("&Save..."));
217            set_menu_text (menu, ID_CLIPEDIT_PASTE, _("&Paste"));
218            set_menu_text (menu, ID_CLIPEDIT_ENC, _("&Encrypt"));
219            set_menu_text (menu, ID_CLIPEDIT_DEC, _("&Decrypt"));
220            set_menu_text (menu, ID_CLIPEDIT_QUIT, _("&Exit"));
221            SetMenu (dlg, menu);
222          SetWindowText (dlg, _("Clipboard Editor"));          SetWindowText (dlg, _("Clipboard Editor"));
223          SetDlgItemText (dlg, IDC_CLIPEDIT_SEND, _("&Copy"));          SetDlgItemText (dlg, IDC_CLIPEDIT_SEND, _("&Copy"));
         SetDlgItemText (dlg, IDC_CLIPEDIT_CLEAR, _("Clea&r"));  
         SetDlgItemText (dlg, IDC_CLIPEDIT_LOAD, _("&Load"));      
         SetDlgItemText (dlg, IDC_CLIPEDIT_SAVE, _("&Save"));  
         SetDlgItemText (dlg, IDC_CLIPEDIT_QUOTE, _("Add quotes"));  
         SetDlgItemText (dlg, IDOK, _("&Close"));  
   
         load_clipboard (dlg);  
224          center_window (dlg, NULL);          center_window (dlg, NULL);
225          SetForegroundWindow (dlg);          SetForegroundWindow (dlg);
226          return TRUE;          return TRUE;
   
     case WM_HELP:  
         html_help_dispatch (lparam, "winpt.chm::winpt_texts.txt", help_arr);  
         break;  
   
     case WM_SYSCOMMAND:  
         if (LOWORD (wparam) == SC_CLOSE)  
             EndDialog (dlg, TRUE);  
         return TRUE;  
227                    
228      case WM_COMMAND:      case WM_COMMAND:
229          switch (LOWORD (wparam)) {          switch (LOWORD (wparam)) {
# Line 219  clip_edit_dlg_proc (HWND dlg, UINT msg, Line 231  clip_edit_dlg_proc (HWND dlg, UINT msg,
231              EndDialog (dlg, FALSE);              EndDialog (dlg, FALSE);
232              return TRUE;              return TRUE;
233    
234          case IDOK:                        case IDOK:
235            case ID_CLIPEDIT_QUIT:
236              EndDialog (dlg, TRUE);              EndDialog (dlg, TRUE);
237              return TRUE;              return TRUE;
238                            
239          case IDC_CLIPEDIT_SEND:          case ID_CLIPEDIT_QUOTE:
240              if (IsDlgButtonChecked (dlg, IDC_CLIPEDIT_QUOTE)) {              SendMessage (dlg, WM_COMMAND, ID_CLIPEDIT_COPY, 0);
241                  gpgme_data_t txt;              if (gpg_data_new_from_clipboard (&txt, 0))
                 gpg_data_new_from_clipboard (&txt, 0);  
                 gpg_data_mail_quote (&txt);  
                 gpg_data_release_and_set_clipboard (txt, 0);  
                 SendMessage (dlg, WM_INITDIALOG, 0, 0);  
242                  return TRUE;                  return TRUE;
243              }              gpg_data_mail_quote (&txt);
244                gpg_data_release_to_clipboard (txt, 0);
245                load_clipboard (dlg, head, foot);
246                return TRUE;
247    
248            case ID_CLIPEDIT_COPY:
249            case IDC_CLIPEDIT_SEND:
250              SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, 0, -1);              SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, 0, -1);
251              SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_COPY, 0, 0);              SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_COPY, 0, 0);
252                SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, -1, 0);
253              return TRUE;              return TRUE;
254                            
255          case IDC_CLIPEDIT_CLEAR:          case ID_CLIPEDIT_CLEAR:
256              if (OpenClipboard (NULL) == FALSE) {              if (OpenClipboard (NULL) == FALSE) {
257                  msg_box (dlg,  winpt_strerror (WPTERR_CLIP_OPEN),                  msg_box (dlg,  winpt_strerror (WPTERR_CLIP_OPEN),
258                           _("Clipboard"), MB_ERR);                           _("Clipboard"), MB_ERR);
# Line 249  clip_edit_dlg_proc (HWND dlg, UINT msg, Line 265  clip_edit_dlg_proc (HWND dlg, UINT msg,
265                  SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, "");                  SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, "");
266              CloseClipboard ();              CloseClipboard ();
267              return TRUE;              return TRUE;
268    
269            case ID_CLIPEDIT_PASTE:
270                load_clipboard (dlg, NULL, NULL);
271                break;
272                            
273          case IDC_CLIPEDIT_LOAD:          case ID_CLIPEDIT_OPEN:
274              if (!load_clipboard_from_file (dlg)) {              if (!load_clipboard_from_file (dlg))
275                  /* XXX: for some files the code produces a crash! */                  PostMessage (dlg, WM_COMMAND, MAKEWPARAM (IDC_CLIPEDIT_SEND, 0), 0);
                 PostMessage (dlg, WM_COMMAND, MAKEWPARAM(IDC_CLIPEDIT_SEND, 0), 0);  
             }  
276              return TRUE;              return TRUE;
277                            
278          case IDC_CLIPEDIT_SAVE:          case ID_CLIPEDIT_SAVE:
279              save_clipboard_to_file (dlg);                        save_clipboard_to_file (dlg);          
280              return TRUE;              return TRUE;
281    
282            case ID_CLIPEDIT_ENC:
283                SendMessage (dlg, WM_COMMAND, ID_CLIPEDIT_COPY, 0);
284                SendMessage (glob_hwnd, WM_COMMAND, ID_WINPT_ENCRYPT, 0);
285                load_clipboard (dlg, NULL, NULL);
286                SetForegroundWindow (dlg);
287                break;
288    
289            case ID_CLIPEDIT_DEC:
290                SendMessage (glob_hwnd, WM_COMMAND, ID_WINPT_DECRYPT_VERIFY, 0);
291                load_clipboard (dlg, NULL, NULL);
292                SetForegroundWindow (dlg);
293                break;
294          }          }
295          break;          break;
296      }      }

Legend:
Removed from v.201  
changed lines
  Added in v.328

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26