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. */ |
/* Text viewer dialog box procedure. */ |
76 |
BOOL CALLBACK |
BOOL CALLBACK |
77 |
viewer_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
viewer_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
78 |
{ |
{ |
79 |
static viewer_ctx_t viewer; |
static viewer_ctx_t viewer; |
80 |
char *p; |
char *p, *out; |
81 |
|
|
82 |
switch (msg) { |
switch (msg) { |
83 |
case WM_INITDIALOG: |
case WM_INITDIALOG: |
84 |
viewer = (viewer_ctx_t)lparam; |
viewer = (viewer_ctx_t)lparam; |
85 |
assert (viewer); |
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")); |
SetWindowText (dlg, _("Message Viewer")); |
90 |
SetDlgItemText (dlg, IDC_VIEWER_TEXT2, viewer->msg); |
SetDlgItemText (dlg, IDC_VIEWER_TEXT2, viewer->msg); |
91 |
SetForegroundWindow (dlg); |
SetForegroundWindow (dlg); |
105 |
|
|
106 |
case IDC_VIEWER_QUOTE: |
case IDC_VIEWER_QUOTE: |
107 |
p = get_item_text (dlg, IDC_VIEWER_TEXT2); |
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); |
free_if_alloc (p); |
113 |
|
free_if_alloc (out); |
114 |
return TRUE; |
return TRUE; |
115 |
|
|
116 |
case IDC_VIEWER_COPY: |
case IDC_VIEWER_COPY: |