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

Annotation of /trunk/Src/wptClipEditDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 47 - (hide annotations)
Mon Oct 31 14:04:59 2005 UTC (19 years, 4 months ago) by werner
File size: 6569 byte(s)
Minor changes; compiles now but gettext is still missing.

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 twoaday 24
21 werner 36 #ifdef HAVE_CONFIG_H
22     #include <config.h>
23     #endif
24    
25     #include <windows.h>
26     #include <windows.h>
27     #include <stdio.h>
28    
29     #include "wptTypes.h"
30     #include "wptW32API.h"
31     #include "wptVersion.h"
32     #include "wptErrors.h"
33     #include "wptGPG.h"
34     #include "wptNLS.h"
35 werner 47 #include "resource.h"
36 werner 36
37    
38     /* Load the clipboard contents into the text field in @dlg.
39     Return value: 0 on success. */
40     static int
41     load_clipboard (HWND dlg)
42     {
43     HANDLE clipmem;
44     char *cliptext;
45     char *p;
46    
47     CloseClipboard (); /* make sure it is closed. */
48     if (OpenClipboard (NULL) == FALSE) {
49     msg_box (dlg, winpt_strerror (WPTERR_CLIP_OPEN), _("Clipboard"), MB_ERR);
50     return -1;
51     }
52     clipmem = GetClipboardData (CF_TEXT);
53     if (clipmem == NULL) {
54     CloseClipboard ();
55     return -1;
56     }
57    
58     cliptext = (char *) GlobalLock (clipmem);
59     if (cliptext == NULL || !strlen (cliptext)) {
60     CloseClipboard ();
61     return -1;
62     }
63    
64     p = new char [strlen (cliptext)+2];
65     if (!p)
66     BUG (0);
67     strcpy (p, cliptext);
68    
69     GlobalUnlock (clipmem);
70     CloseClipboard ();
71     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);
72     free_if_alloc (p);
73    
74     return 0;
75     }
76    
77    
78     /* Load the clipboard from the selected file. */
79     static int
80     load_clipboard_from_file (HWND dlg)
81     {
82     OPENFILENAME open;
83     FILE *fp;
84     char *p;
85     char file[300] = "";
86     DWORD size;
87     int id;
88    
89     memset (&open, 0, sizeof (open));
90     open.lStructSize = sizeof (OPENFILENAME);
91     open.hInstance = glob_hinst;
92     open.lpstrTitle = _("File Open");
93     open.lpstrFilter = (char *)_("All Files (*.*)\0*.*\0\0");
94     open.hwndOwner = dlg;
95     open.lpstrFile = file;
96     open.nMaxFile = sizeof (file)-1;
97     open.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
98    
99     if (GetOpenFileName (&open)) {
100     if( (size=get_file_size (file)) > MAX_CLIPTEXT_SIZE) {
101     id = msg_box (dlg, _("The file you want to add is very large.\n"
102     "Still proceed?"), _("Clipboard"), MB_INFO|MB_YESNO);
103     if (id == IDNO)
104     return -1;
105     }
106     fp = fopen (file, "rb");
107     if (!fp) {
108     msg_box (dlg, winpt_strerror (WPTERR_FILE_OPEN), _("Clipboard"), MB_ERR);
109     return FALSE;
110     }
111     p = new char[size+1];
112     if (!p)
113     BUG (0);
114     fread (p, 1, size, fp);
115     p[size] = '\0';
116     fclose (fp);
117     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p);
118     free_if_alloc (p);
119     }
120     return 0;
121     }
122    
123    
124     /* Save the contents of the clipboard to the selected file. */
125     static int
126     save_clipboard_to_file (HWND dlg)
127     {
128     OPENFILENAME save;
129     FILE *fp;
130     char *p;
131     char file[300] = "";
132     DWORD nbytes;
133     int id;
134    
135     memset (&save, 0, sizeof (save));
136     save.lStructSize = sizeof (OPENFILENAME);
137     save.hInstance = glob_hinst;
138     save.lpstrTitle = _("File Save");
139     save.lpstrFile = (char *)_("All Files (*.*)\0*.*\0\0");
140     save.hwndOwner = dlg;
141     save.lpstrFile = file;
142     save.nMaxFile = sizeof (file) - 1;
143     save.Flags = OFN_OVERWRITEPROMPT;
144    
145     if( GetSaveFileName( &save ) ) {
146     if( file_exist_check( file ) == 0 ) {
147     id = log_box (_("Clipboard"), MB_YESNO,
148     _("\"%s\" already exists.\n"
149     "Replace existing file?"), file);
150     if( id == IDNO )
151     return FALSE;
152     }
153     fp = fopen (file, "wb");
154     if (!fp) {
155     msg_box (dlg, winpt_strerror (WPTERR_FILE_CREAT), _("Clipboard"), MB_ERR);
156     return FALSE;
157     }
158     /* XXX: there is a NUL-byte at the end. */
159     nbytes = SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_GETTEXTLENGTH, 0, 0);
160     if (nbytes > 0) {
161     p = new char[nbytes+1];
162     if (!p)
163     BUG (NULL);
164     GetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, p, nbytes);
165     fwrite (p, 1, nbytes, fp);
166     }
167     fclose (fp);
168     free_if_alloc (p);
169     }
170     return 0;
171     }
172    
173    
174     /* Dialog box procedure for the clipboard editor. */
175     BOOL CALLBACK
176     clip_edit_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
177     {
178     switch (msg) {
179     case WM_INITDIALOG:
180     SetWindowText (dlg, _("Clipboard Editor"));
181     SetDlgItemText (dlg, IDC_CLIPEDIT_SEND, _("&Copy"));
182     SetDlgItemText (dlg, IDC_CLIPEDIT_CLEAR, _("Clea&r"));
183     SetDlgItemText (dlg, IDC_CLIPEDIT_LOAD, _("&Load"));
184     SetDlgItemText (dlg, IDC_CLIPEDIT_SAVE, _("&Save"));
185    
186     load_clipboard (dlg);
187     center_window (dlg, NULL);
188     SetForegroundWindow (dlg);
189     return TRUE;
190    
191     case WM_SYSCOMMAND:
192     if (LOWORD (wparam) == SC_CLOSE)
193     EndDialog (dlg, TRUE);
194     return TRUE;
195    
196     case WM_COMMAND:
197     switch (LOWORD (wparam)) {
198     case IDOK:
199     EndDialog (dlg, TRUE);
200     return TRUE;
201    
202     case IDC_CLIPEDIT_SEND:
203     if (IsDlgButtonChecked (dlg, IDC_CLIPEDIT_QUOTE)) {
204     gpgme_data_t txt;
205     gpg_data_new_from_clipboard (&txt, 0);
206     gpg_data_mail_quote (&txt);
207     gpg_data_release_and_set_clipboard (txt, 0);
208     SendMessage (dlg, WM_INITDIALOG, 0, 0);
209     return TRUE;
210     }
211     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, EM_SETSEL, 0, -1);
212     SendDlgItemMessage (dlg, IDC_CLIPEDIT_CLIPTEXT2, WM_COPY, 0, 0);
213     return TRUE;
214    
215     case IDC_CLIPEDIT_CLEAR:
216     if (OpenClipboard (NULL) == FALSE) {
217     msg_box (dlg, winpt_strerror (WPTERR_CLIP_OPEN),
218     _("Clipboard"), MB_ERR);
219     return TRUE;
220     }
221     if (EmptyClipboard () == FALSE)
222     msg_box (dlg, winpt_strerror (WPTERR_CLIP_EMPTY),
223     _("Clipboard"), MB_ERR);
224     else
225     SetDlgItemText (dlg, IDC_CLIPEDIT_CLIPTEXT2, "");
226     CloseClipboard ();
227     return TRUE;
228    
229     case IDC_CLIPEDIT_LOAD:
230     if (!load_clipboard_from_file (dlg)) {
231     /* XXX: for some files the code produces a crash! */
232     PostMessage (dlg, WM_COMMAND, MAKEWPARAM(IDC_CLIPEDIT_SEND, 0), NULL);
233     }
234     return TRUE;
235    
236     case IDC_CLIPEDIT_SAVE:
237     save_clipboard_to_file (dlg);
238     return TRUE;
239     }
240     break;
241     }
242    
243     return FALSE;
244     }
245    

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26