/[gpgoe]/trunk/src/OEDlgViewer.c
ViewVC logotype

Contents of /trunk/src/OEDlgViewer.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (show annotations)
Fri Apr 7 10:46:41 2006 UTC (19 years, 1 month ago) by twoaday
File MIME type: text/plain
File size: 3122 byte(s)


1 /* OEDlgViewer.c - OE text viewer
2 * Copyright (C) 2001, 2002, 2003, 2006 Timo Schulz
3 *
4 * This file is part of GPGOE.
5 *
6 * GPGOE is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
10 *
11 * GPGOE 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 Lesser General Public License
17 * along with GPGOE; if not, write to the Free Software Foundation,
18 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 */
20
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24 #include <windows.h>
25 #include <assert.h>
26 #include "resource.h"
27 #include "gpgme.h"
28 #include "GPGOE.h"
29
30
31 /* Read all text from the dialog item @id and
32 return it as a string. */
33 char*
34 get_item_text (HWND dlg, int id)
35 {
36 char *p;
37 int n;
38
39 n = SendDlgItemMessage (dlg, id, WM_GETTEXTLENGTH, 0, 0);
40 if (n < 1)
41 return NULL;
42 p = xcalloc (1, n+1);
43 n = GetDlgItemText (dlg, IDC_VIEWER_TEXT2, p, n);
44 return p;
45 }
46
47
48 /* Prepend '> ' to line line in the buffer @inp
49 and store the result in @r_outp. */
50 static void
51 quote_msg_text (const char *inp, char **r_outp)
52 {
53 size_t i, n=0;
54 char *p;
55 char *outp;
56
57 for (i=0; i < strlen (inp); i++) {
58 if (inp[i] == '\r')
59 n += 4;
60 }
61 outp = xcalloc (1, strlen (inp) + 1 + n + 1);
62 p = strtok ((char *)inp, "\r");
63 while (p != NULL) {
64 if (*p == '\n')
65 p++;
66 strcat (outp, "> ");
67 strcat (outp, p);
68 strcat (outp, "\r\n");
69 p = strtok (NULL, "\r");
70 }
71 *r_outp = outp;
72 }
73
74
75 /* Text viewer dialog box procedure. */
76 BOOL CALLBACK
77 viewer_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
78 {
79 static viewer_ctx_t viewer;
80 char *p, *out;
81
82 switch (msg) {
83 case WM_INITDIALOG:
84 viewer = (viewer_ctx_t)lparam;
85 assert (viewer);
86 SetDlgItemText (dlg, IDC_VIEWER_COPY, _("&Copy"));
87 SetDlgItemText (dlg, IDC_VIEWER_QUOTE, _("&Quote"));
88 SetDlgItemText (dlg, IDOK, _("&OK"));
89 SetWindowText (dlg, _("Message Viewer"));
90 SetDlgItemText (dlg, IDC_VIEWER_TEXT2, viewer->msg);
91 SetForegroundWindow (dlg);
92 SetFocus (GetDlgItem (dlg, IDOK));
93 return FALSE;
94
95 case WM_SYSCOMMAND:
96 if (LOWORD (wparam) == SC_CLOSE)
97 EndDialog (dlg, 0);
98 return FALSE;
99
100 case WM_COMMAND:
101 switch (LOWORD (wparam)) {
102 case IDOK:
103 EndDialog (dlg, 0);
104 return TRUE;
105
106 case IDC_VIEWER_QUOTE:
107 p = get_item_text (dlg, IDC_VIEWER_TEXT2);
108 if (!p)
109 return TRUE;
110 quote_msg_text (p, &out);
111 SetDlgItemText (dlg, IDC_VIEWER_TEXT2, out);
112 free_if_alloc (p);
113 free_if_alloc (out);
114 return TRUE;
115
116 case IDC_VIEWER_COPY:
117 p = get_item_text (dlg, IDC_VIEWER_TEXT2);
118 if (p != NULL)
119 set_clip_text (NULL, p, strlen (p));
120 free_if_alloc (p);
121 return TRUE;
122 }
123 break;
124 }
125 return FALSE;
126 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26