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

Contents of /trunk/Src/wptClipEditDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 121 - (show 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 /* 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 #include "resource.h"
34
35 #ifdef _MSC_VER
36 #include "winpt_header.h"
37
38 static DWORD help_arr[] = {
39 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 #endif
46
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 "Still proceed?"), _("Clipboard"),
112 MB_INFO|MB_YESNO);
113 if (id == IDNO)
114 return -1;
115 }
116 fp = fopen (file, "rb");
117 if (!fp) {
118 msg_box (dlg, winpt_strerror (WPTERR_FILE_OPEN),
119 _("Clipboard"), MB_ERR);
120 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 char *p=NULL;
142 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 msg_box (dlg, winpt_strerror (WPTERR_FILE_CREAT),
167 _("Clipboard"), MB_ERR);
168 return FALSE;
169 }
170 /* XXX: there is a NUL-byte at the end. */
171 nbytes = SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2,
172 WM_GETTEXTLENGTH, 0, 0);
173 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
180 }
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 static DWORD cookie = 0;
193
194 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 SetDlgItemText (dlg, IDC_CLIPEDIT_QUOTE, _("Add quotes"));
202 SetDlgItemText (dlg, IDOK, _("&Close"));
203
204 html_help_init (&cookie);
205 load_clipboard (dlg);
206 center_window (dlg, NULL);
207 SetForegroundWindow (dlg);
208 return TRUE;
209
210 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 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 PostMessage (dlg, WM_COMMAND, MAKEWPARAM(IDC_CLIPEDIT_SEND, 0), 0);
260 }
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