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

Annotation of /trunk/Src/wptClipEditDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 174 - (hide annotations)
Thu Feb 2 08:20:50 2006 UTC (19 years ago) by twoaday
File size: 7067 byte(s)
2006-01-31  Timo Schulz  <ts@g10code.de>
 
        * wptMainProc.cpp (winpt_main_proc): Fix usage of the
        help system.
        * wptListView.cpp (listview_set_chkbox_style): New.
        (listview_get_item_state): Support new checkbox style.
        (listview_new): Reset flag var.
        * wptKeylist.cpp (keylist_build): Support new checkbox style.
         
2006-01-30  Timo Schulz  <ts@g10code.de>
 
        * WinPT.cpp (check_readonly_attr): New.
        (load_gpg_env): Use it here.
        (WinPT): Make the the default key is searched in the
        secret key cache.
        Change error message.
        * wptRegistry.cpp (regist_int_winpt): Make sure
        the register extension is only offered once to the user.
        * wptKeyPropsDlg.cpp (get_photo_tmpname): Always use
        temp directory. Fixed a privilege problem.


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 twoaday 167 open.lpstrFilter = (char *)"All Files (*.*)\0*.*\0\0";
103 werner 36 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 twoaday 167 save.lpstrFile = (char *)"All Files (*.*)\0*.*\0\0";
151 werner 36 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     switch (msg) {
193     case WM_INITDIALOG:
194     SetWindowText (dlg, _("Clipboard Editor"));
195     SetDlgItemText (dlg, IDC_CLIPEDIT_SEND, _("&Copy"));
196     SetDlgItemText (dlg, IDC_CLIPEDIT_CLEAR, _("Clea&r"));
197     SetDlgItemText (dlg, IDC_CLIPEDIT_LOAD, _("&Load"));
198     SetDlgItemText (dlg, IDC_CLIPEDIT_SAVE, _("&Save"));
199 twoaday 105 SetDlgItemText (dlg, IDC_CLIPEDIT_QUOTE, _("Add quotes"));
200 twoaday 121 SetDlgItemText (dlg, IDOK, _("&Close"));
201 twoaday 105
202 werner 36 load_clipboard (dlg);
203     center_window (dlg, NULL);
204     SetForegroundWindow (dlg);
205     return TRUE;
206    
207 twoaday 121 case WM_HELP:
208     html_help_dispatch (lparam, "winpt.chm::winpt_texts.txt", help_arr);
209     break;
210    
211 werner 36 case WM_SYSCOMMAND:
212     if (LOWORD (wparam) == SC_CLOSE)
213     EndDialog (dlg, TRUE);
214     return TRUE;
215    
216     case WM_COMMAND:
217     switch (LOWORD (wparam)) {
218     case IDOK:
219     EndDialog (dlg, TRUE);
220     return TRUE;
221    
222     case IDC_CLIPEDIT_SEND:
223     if (IsDlgButtonChecked (dlg, IDC_CLIPEDIT_QUOTE)) {
224     gpgme_data_t txt;
225     gpg_data_new_from_clipboard (&txt, 0);
226     gpg_data_mail_quote (&txt);
227     gpg_data_release_and_set_clipboard (txt, 0);
228     SendMessage (dlg, WM_INITDIALOG, 0, 0);
229     return TRUE;
230     }
231     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, 0, -1);
232     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_COPY, 0, 0);
233     return TRUE;
234    
235     case IDC_CLIPEDIT_CLEAR:
236     if (OpenClipboard (NULL) == FALSE) {
237     msg_box (dlg, winpt_strerror (WPTERR_CLIP_OPEN),
238     _("Clipboard"), MB_ERR);
239     return TRUE;
240     }
241     if (EmptyClipboard () == FALSE)
242     msg_box (dlg, winpt_strerror (WPTERR_CLIP_EMPTY),
243     _("Clipboard"), MB_ERR);
244     else
245     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, "");
246     CloseClipboard ();
247     return TRUE;
248    
249     case IDC_CLIPEDIT_LOAD:
250     if (!load_clipboard_from_file (dlg)) {
251     /* XXX: for some files the code produces a crash! */
252 twoaday 65 PostMessage (dlg, WM_COMMAND, MAKEWPARAM(IDC_CLIPEDIT_SEND, 0), 0);
253 werner 36 }
254     return TRUE;
255    
256     case IDC_CLIPEDIT_SAVE:
257     save_clipboard_to_file (dlg);
258     return TRUE;
259     }
260     break;
261     }
262    
263     return FALSE;
264     }

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26