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

Annotation of /trunk/Src/wptClipEditDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 121 - (hide annotations)
Mon Dec 12 11:19:56 2005 UTC (19 years, 2 months ago) by twoaday
File size: 7192 byte(s)
2005-12-11  Timo Schulz  <ts@g10code.com>
 
        * wptW32API.cpp (get_file_version): New.
        * wptGPGUtil.cpp (create_process): Always hide window.
        * wptClipEditDlg.cpp (clipedit_dlg_proc): Use 'Close'
        instead of 'Exit'.
        * wptKeyManager.cpp (km_http_import): New filename
        generation code.
        (km_send_to_mail_recipient): Cleanups.
        * wptKeyEditDlg.cpp (showpref_dlg_proc): Localize dialog.
        * wptKeyManagerDlg.cpp (update_ui_items): Handle the case
        when multiple keys are selected.
        (popup_multiple): New.
        * WinPT.cpp (WinMain): Check that the PTD.dll and WinPT.exe
        file versions are equal. Rewrote --keymanager code.
         
Removed temporary w32gpgme dirctory, all code is now in Src.
Changed configure files.


1 werner 36 /* wptClipEditDlg.cpp - Clipboard Editor dialog
2     * Copyright (C) 2000-2005 Timo Schulz
3     *
4     * This file is part of WinPT.
5     *
6     * 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
8     * the Free Software Foundation; either version 2 of the License, or
9     * (at your option) any later version.
10     *
11     * WinPT is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with WinPT; if not, write to the Free Software Foundation,
18     * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19     */
20     #ifdef HAVE_CONFIG_H
21     #include <config.h>
22     #endif
23    
24     #include <windows.h>
25     #include <stdio.h>
26    
27     #include "wptTypes.h"
28     #include "wptW32API.h"
29     #include "wptVersion.h"
30     #include "wptErrors.h"
31     #include "wptGPG.h"
32     #include "wptNLS.h"
33 werner 47 #include "resource.h"
34 werner 36
35 twoaday 120 #ifdef _MSC_VER
36     #include "winpt_header.h"
37 twoaday 121
38 twoaday 120 static DWORD help_arr[] = {
39 twoaday 121 IDC_CLIPEDIT_SEND, WPT_CLIPEDIT_COPY,
40     IDC_CLIPEDIT_CLEAR, WPT_CLIPEDIT_CLEAR,
41     IDC_CLIPEDIT_LOAD, WPT_CLIPEDIT_LOAD,
42     IDC_CLIPEDIT_SAVE, WPT_CLIPEDIT_SAVE,
43     IDC_CLIPEDIT_QUOTE, WPT_CLIPEDIT_QUOTE,
44     0, 0};
45 twoaday 120 #endif
46 werner 36
47     /* Load the clipboard contents into the text field in @dlg.
48     Return value: 0 on success. */
49     static int
50     load_clipboard (HWND dlg)
51     {
52     HANDLE clipmem;
53     char *cliptext;
54     char *p;
55    
56     CloseClipboard (); /* make sure it is closed. */
57     if (OpenClipboard (NULL) == FALSE) {
58     msg_box (dlg, winpt_strerror (WPTERR_CLIP_OPEN), _("Clipboard"), MB_ERR);
59     return -1;
60     }
61     clipmem = GetClipboardData (CF_TEXT);
62     if (clipmem == NULL) {
63     CloseClipboard ();
64     return -1;
65     }
66    
67     cliptext = (char *) GlobalLock (clipmem);
68     if (cliptext == NULL || !strlen (cliptext)) {
69     CloseClipboard ();
70     return -1;
71     }
72    
73     p = new char [strlen (cliptext)+2];
74     if (!p)
75     BUG (0);
76     strcpy (p, cliptext);
77    
78     GlobalUnlock (clipmem);
79     CloseClipboard ();
80     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);
81     free_if_alloc (p);
82    
83     return 0;
84     }
85    
86    
87     /* Load the clipboard from the selected file. */
88     static int
89     load_clipboard_from_file (HWND dlg)
90     {
91     OPENFILENAME open;
92     FILE *fp;
93     char *p;
94     char file[300] = "";
95     DWORD size;
96     int id;
97    
98     memset (&open, 0, sizeof (open));
99     open.lStructSize = sizeof (OPENFILENAME);
100     open.hInstance = glob_hinst;
101     open.lpstrTitle = _("File Open");
102     open.lpstrFilter = (char *)_("All Files (*.*)\0*.*\0\0");
103     open.hwndOwner = dlg;
104     open.lpstrFile = file;
105     open.nMaxFile = sizeof (file)-1;
106     open.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
107    
108     if (GetOpenFileName (&open)) {
109     if( (size=get_file_size (file)) > MAX_CLIPTEXT_SIZE) {
110     id = msg_box (dlg, _("The file you want to add is very large.\n"
111 twoaday 105 "Still proceed?"), _("Clipboard"),
112     MB_INFO|MB_YESNO);
113     if (id == IDNO)
114 werner 36 return -1;
115     }
116     fp = fopen (file, "rb");
117     if (!fp) {
118 twoaday 105 msg_box (dlg, winpt_strerror (WPTERR_FILE_OPEN),
119     _("Clipboard"), MB_ERR);
120 werner 36 return FALSE;
121     }
122     p = new char[size+1];
123     if (!p)
124     BUG (0);
125     fread (p, 1, size, fp);
126     p[size] = '\0';
127     fclose (fp);
128     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);
129     free_if_alloc (p);
130     }
131     return 0;
132     }
133    
134    
135     /* Save the contents of the clipboard to the selected file. */
136     static int
137     save_clipboard_to_file (HWND dlg)
138     {
139     OPENFILENAME save;
140     FILE *fp;
141 twoaday 65 char *p=NULL;
142 werner 36 char file[300] = "";
143     DWORD nbytes;
144     int id;
145    
146     memset (&save, 0, sizeof (save));
147     save.lStructSize = sizeof (OPENFILENAME);
148     save.hInstance = glob_hinst;
149     save.lpstrTitle = _("File Save");
150     save.lpstrFile = (char *)_("All Files (*.*)\0*.*\0\0");
151     save.hwndOwner = dlg;
152     save.lpstrFile = file;
153     save.nMaxFile = sizeof (file) - 1;
154     save.Flags = OFN_OVERWRITEPROMPT;
155    
156     if( GetSaveFileName( &save ) ) {
157     if( file_exist_check( file ) == 0 ) {
158     id = log_box (_("Clipboard"), MB_YESNO,
159     _("\"%s\" already exists.\n"
160     "Replace existing file?"), file);
161     if( id == IDNO )
162     return FALSE;
163     }
164     fp = fopen (file, "wb");
165     if (!fp) {
166 twoaday 105 msg_box (dlg, winpt_strerror (WPTERR_FILE_CREAT),
167     _("Clipboard"), MB_ERR);
168 werner 36 return FALSE;
169     }
170     /* XXX: there is a NUL-byte at the end. */
171 twoaday 105 nbytes = SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2,
172     WM_GETTEXTLENGTH, 0, 0);
173 werner 36 if (nbytes > 0) {
174     p = new char[nbytes+1];
175     if (!p)
176     BUG (NULL);
177     GetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p, nbytes);
178     fwrite (p, 1, nbytes, fp);
179 twoaday 105
180 werner 36 }
181     fclose (fp);
182     free_if_alloc (p);
183     }
184     return 0;
185     }
186    
187    
188     /* Dialog box procedure for the clipboard editor. */
189     BOOL CALLBACK
190     clip_edit_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
191     {
192 twoaday 121 static DWORD cookie = 0;
193    
194 werner 36 switch (msg) {
195     case WM_INITDIALOG:
196     SetWindowText (dlg, _("Clipboard Editor"));
197     SetDlgItemText (dlg, IDC_CLIPEDIT_SEND, _("&Copy"));
198     SetDlgItemText (dlg, IDC_CLIPEDIT_CLEAR, _("Clea&r"));
199     SetDlgItemText (dlg, IDC_CLIPEDIT_LOAD, _("&Load"));
200     SetDlgItemText (dlg, IDC_CLIPEDIT_SAVE, _("&Save"));
201 twoaday 105 SetDlgItemText (dlg, IDC_CLIPEDIT_QUOTE, _("Add quotes"));
202 twoaday 121 SetDlgItemText (dlg, IDOK, _("&Close"));
203 twoaday 105
204 twoaday 121 html_help_init (&cookie);
205 werner 36 load_clipboard (dlg);
206     center_window (dlg, NULL);
207     SetForegroundWindow (dlg);
208     return TRUE;
209    
210 twoaday 121 case WM_DESTROY:
211     html_help_deinit ();
212     break;
213    
214     case WM_HELP:
215     html_help_dispatch (lparam, "winpt.chm::winpt_texts.txt", help_arr);
216     break;
217    
218 werner 36 case WM_SYSCOMMAND:
219     if (LOWORD (wparam) == SC_CLOSE)
220     EndDialog (dlg, TRUE);
221     return TRUE;
222    
223     case WM_COMMAND:
224     switch (LOWORD (wparam)) {
225     case IDOK:
226     EndDialog (dlg, TRUE);
227     return TRUE;
228    
229     case IDC_CLIPEDIT_SEND:
230     if (IsDlgButtonChecked (dlg, IDC_CLIPEDIT_QUOTE)) {
231     gpgme_data_t txt;
232     gpg_data_new_from_clipboard (&txt, 0);
233     gpg_data_mail_quote (&txt);
234     gpg_data_release_and_set_clipboard (txt, 0);
235     SendMessage (dlg, WM_INITDIALOG, 0, 0);
236     return TRUE;
237     }
238     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, 0, -1);
239     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_COPY, 0, 0);
240     return TRUE;
241    
242     case IDC_CLIPEDIT_CLEAR:
243     if (OpenClipboard (NULL) == FALSE) {
244     msg_box (dlg, winpt_strerror (WPTERR_CLIP_OPEN),
245     _("Clipboard"), MB_ERR);
246     return TRUE;
247     }
248     if (EmptyClipboard () == FALSE)
249     msg_box (dlg, winpt_strerror (WPTERR_CLIP_EMPTY),
250     _("Clipboard"), MB_ERR);
251     else
252     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, "");
253     CloseClipboard ();
254     return TRUE;
255    
256     case IDC_CLIPEDIT_LOAD:
257     if (!load_clipboard_from_file (dlg)) {
258     /* XXX: for some files the code produces a crash! */
259 twoaday 65 PostMessage (dlg, WM_COMMAND, MAKEWPARAM(IDC_CLIPEDIT_SEND, 0), 0);
260 werner 36 }
261     return TRUE;
262    
263     case IDC_CLIPEDIT_SAVE:
264     save_clipboard_to_file (dlg);
265     return TRUE;
266     }
267     break;
268     }
269    
270     return FALSE;
271     }

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26