1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
|
/*
* ========================================================================
* Copyright 2006-2007 University of Washington
* Copyright 2013-2021 Eduardo Chappa
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* ========================================================================
*/
#ifndef MSWIN_H
#define MSWIN_H
#define __far
#define _far
#define __export
/*
* Equivalent to a windows handle.
*/
typedef void *WINHAND;
/*
* Mouse input events.
*/
typedef struct {
int event;
int button;
int nRow;
int nColumn;
int keys;
int flags;
} MEvent;
/*
* These define how mouse events get queued.
*/
#define MSWIN_MF_REPLACING 0x1000
#define MSWIN_MF_REPEATING 0x2000
typedef struct {
int ch;
int rval;
LPTSTR name;
LPTSTR label;
int id;
} MDlgButton;
/*
* Struct to tell pico how to build and what to return when
* it's asked to build a popup menu.
*/
typedef struct _popup {
enum {tIndex, tQueue, tMessage, tSubMenu,
tSeparator, tTail} type;
struct { /* menu's label */
char *string;
enum {lNormal = 0, lChecked, lDisabled} style;
} label;
union {
UCS val; /* Queue: inserted into input queue */
UCS msg; /* Message: gets posted to ghTTYWnd */
struct _popup *submenu; /* Submenu: array of submenu entries */
} data;
struct { /* Internal data */
int id;
} internal;
} MPopup;
/*
* Type of function expected by mswin_allowcopy and mswin_allowcopycut
* and used in EditDoCopyData
*/
typedef int (*getc_t)(int pos);
/*
* Callback used to fetch text for display in alternate window. Text
* can be returned as either a pointer to a null terminated block of
* text (a string), with CRLF deliminating lines. OR as a pointer to
* an array of pointers to lines, each line being a null terminated
* string.
*/
typedef int (*gettext_t)(char *title, void **text, long *len, int *format);
/*
* Type used by line up/down event handlers to move the body of the
* displayed text, by sort callback to get/set sort order, by
* header mode to get/set header state...
*/
typedef int (*cbarg_t)(int action, long args);
/*
* Callback used for periodic callback.
*/
typedef void (*cbvoid_t)(void);
typedef char *(*cbstr_t)(char *);
#define GETTEXT_TITLELEN 128
#define GETTEXT_TEXT 1 /* 'text' is pointer to text. */
#define GETTEXT_LINES 2 /* 'text' is pointer to array of
* pointers to lines. */
#ifndef PATH_MAX
#define PATH_MAX 128 /* Max size of a directory path. */
#endif
/*
* Scroll callback values. Used to be mapped in the MSWIN_RANGE_START..END
* range, but now are mapped directly to keydefs.h values. Except two of
* them which don't have map values in keydefs.h so they're still in the
* MSWIN_RANGE_START..END 0x7000 range.
*/
#define MSWIN_KEY_SCROLLUPPAGE 0x7000
#define MSWIN_KEY_SCROLLDOWNPAGE 0x7001
#define MSWIN_KEY_SCROLLUPLINE KEY_SCRLUPL
#define MSWIN_KEY_SCROLLDOWNLINE KEY_SCRLDNL
#define MSWIN_KEY_SCROLLTO KEY_SCRLTO
#define MSWIN_PASTE_DISABLE 0
#define MSWIN_PASTE_FULL 1
#define MSWIN_PASTE_LINE 2
#define MSWIN_CURSOR_ARROW 0
#define MSWIN_CURSOR_BUSY 1
#define MSWIN_CURSOR_IBEAM 2
#define MSWIN_CURSOR_HAND 3
/*
* Flags for mswin_displaytext
*/
#define MSWIN_DT_NODELETE 0x0001 /* Don't delete text when
* window closes. */
#define MSWIN_DT_USEALTWINDOW 0x0002 /* Put text in alt window if already
* open. Open if not. */
#define MSWIN_DT_FILLFROMFILE 0x0004 /* pText_utf8 is a filename. */
/*
* functions from mswin.c
*/
WINHAND mswin_gethinstance();
WINHAND mswin_gethwnd ();
void mswin_killsplash();
void mswin_settitle(char *);
int mswin_getmouseevent (MEvent * pMouse);
void mswin_mousetrackcallback (cbarg_t cbfunc);
int mswin_popup(MPopup *members);
void mswin_keymenu_popup ();
void mswin_registericon(int row, int id, char *file);
void mswin_destroyicons();
void mswin_finishicons();
void mswin_show_icon (int x, int y, char *file);
void mswin_setdebug (int debug, FILE *debugfile);
void mswin_setnewmailwidth (int width);
int mswin_setdndcallback (int (*cb)());
int mswin_cleardndcallback (void);
int mswin_setresizecallback (int (*cb)());
int mswin_clearresizecallback (int (*cb)());
void mswin_setdebugoncallback (cbvoid_t cbfunc);
void mswin_setdebugoffcallback (cbvoid_t cbfunc);
int mswin_setconfigcallback (cbvoid_t cffunc);
int mswin_sethelpcallback (cbstr_t cbfunc);
int mswin_setgenhelpcallback (cbstr_t cbfunc);
void mswin_setclosetext (char *pCloseText);
int mswin_setwindow (char *fontName, char *fontSize,
char *fontStyle, char *windowPosition,
char *cursorStyle, char *fontCharSet);
int mswin_showwindow();
int mswin_getwindow (char *fontName, size_t nfontName,
char *fontSize, size_t nfontSize,
char *fontStyle, size_t nfontStyle,
char *windowPosition, size_t nwindowPosition,
char *foreColor, size_t nforeColor,
char *backColor, size_t nbackColor,
char *cursorStyle, size_t ncursorStyle,
char *fontCharSet, size_t nfontCharSet);
void mswin_noscrollupdate (int flag);
void mswin_setscrollrange (long page, long max);
void mswin_setscrollpos (long pos);
long mswin_getscrollpos (void);
long mswin_getscrollto (void);
void mswin_setscrollcallback (cbarg_t cbfunc);
void mswin_setsortcallback (cbarg_t cbfunc);
void mswin_setflagcallback (cbarg_t cbfunc);
void mswin_sethdrmodecallback (cbarg_t cbfunc);
void mswin_setselectedcallback (cbarg_t cbfunc);
void mswin_setzoomodecallback (cbarg_t cbfunc);
void mswin_setfkeymodecallback (cbarg_t cbfunc);
void mswin_setprintfont (char *fontName, char *fontSize,
char *fontStyle, char *fontCharSet);
void mswin_getprintfont (char *, size_t, char *, size_t,
char *, size_t, char *, size_t);
int mswin_yield (void);
int mswin_charavail (void);
UCS mswin_getc_fast (void);
void mswin_flush_input (void);
int mswin_showcursor (int show);
int mswin_showcaret (int show);
void mswin_trayicon (int show);
int mswin_move (int row, int column);
int mswin_getpos (int *row, int *column);
int mswin_getscreensize (int *row, int *column);
void mswin_minimize (void);
int mswin_putblock (char *utf8_str, int strLen);
int mswin_puts (char *utf8_str);
int mswin_puts_n (char *utf8_str, int n);
int mswin_putc (UCS c);
int mswin_outc (char c);
int mswin_rev (int state);
int mswin_getrevstate (void);
int mswin_bold (int state);
int mswin_uline (int state);
int mswin_eeol (void);
int mswin_eeop (void);
int mswin_beep (void);
void mswin_pause (int);
int mswin_flush (void);
void mswin_setcursor (int);
void mswin_messagebox (char *msg, int);
void mswin_allowpaste (int);
void mswin_allowcopycut (getc_t);
void mswin_allowcopy (getc_t);
void mswin_addclipboard (char *s);
void mswin_allowmousetrack (int);
int mswin_newmailicon (void);
void mswin_newmailtext (char *t);
void mswin_newmaildone (void);
void mswin_mclosedtext (char *t);
void mswin_menuitemclear (void);
void mswin_menuitemadd (UCS key, char *label, int menuitem,
int flags);
int mswin_setwindowmenu (int menu);
int mswin_print_ready (WINHAND hWnd, LPTSTR docDesc);
int mswin_print_done (void);
char * mswin_print_error (int errorcode);
int mswin_print_char (TCHAR c);
int mswin_print_char_utf8 (int c);
int mswin_print_text (LPTSTR text);
int mswin_print_text_utf8 (char *text);
int mswin_savefile (char *dir, int dirlen, char *fName, int nMaxFName);
int mswin_openfile (char *dir, int nMaxDName, char *fName, int nMaxFName, char *extlist);
int mswin_multopenfile (char *dir, int nMaxDName, char *fName, int nMaxFName, char *extlist);
char *mswin_rgbchoice(char *pOldRGB);
void mswin_killbuftoclip (getc_t copyfunc);
void pico_popup();
void mswin_paste_popup();
int mswin_fflush (FILE *f);
void mswin_setperiodiccallback (cbvoid_t periodiccb, long period);
WINHAND mswin_inst2task (WINHAND hInst);
int mswin_ontask_del (WINHAND hTask, char *path);
int mswin_exec_and_wait (char *whatsit, char *command,
char *infile, char *outfile,
int *exit_val,
unsigned mseaw_flags);
int mswin_shell_exec (char *command, WINHAND *childproc);
void mswin_exec_err_msg (char *what, int status, char *buf,
size_t buflen);
int mswin_onexit_del (char *path);
int mswin_set_quit_confirm (int);
void mswin_showhelpmsg (WINHAND hWnd, char **helplines);
typedef struct MSWIN_TEXTWINDOW MSWIN_TEXTWINDOW;
MSWIN_TEXTWINDOW *mswin_displaytext (char *title, char *pText, size_t textLen,
char **pLines, MSWIN_TEXTWINDOW *mswin_tw,
int flags);
int mswin_imaptelemetry(char *msg);
void mswin_enableimaptelemetry(int state);
int mswin_newmailwin(int is_us, char *from,
char *subject, char *folder);
int mswin_newmailwinon(void);
char *mswin_reg_default_browser(char *url);
int mswin_reg(int op, int tree, char *data, size_t size);
int mswin_is_def_client(int type);
int mswin_set_def_client(int type);
char **mswin_reg_dump(void);
int mswin_majorver();
int mswin_minorver();
char *mswin_compilation_date();
char *mswin_compilation_remarks();
char *mswin_specific_winver();
int mswin_usedialog (void);
int mswin_dialog(UCS *prompt, UCS *string, int field_len,
int append_current, int passwd,
MDlgButton *button_list, char **help, unsigned flags);
int mswin_select(char *utf8prompt, MDlgButton *button_list,
int dflt, int on_ctrl_C, char **help, unsigned flags);
int mswin_yesno(UCS *);
int mswin_yesno_utf8(char *);
BOOL MSWRShellCanOpen(LPTSTR key, char *cmdbuf, int clen, int allow_noreg);
BOOL MSWRPeek(HKEY hRootKey, LPTSTR subkey, LPTSTR valstr,
LPTSTR data, DWORD *dlen);
int mswin_store_pass_prompt(void);
void mswin_set_erasecreds_callback(cbvoid_t);
void mswin_setviewinwindcallback (cbvoid_t);
int mswin_setgenhelptextcallback(cbstr_t);
int mswin_caninput(void);
void mswin_beginupdate(void);
void mswin_endupdate(void);
int mswin_sethelptextcallback(cbstr_t);
int strucmp(char *, char *);
int struncmp(char *, char *, int);
#ifdef MSC_MALLOC
/*
* These definitions will disable the SEGHEAP allocation routines, in
* favor of the compiler libraries usual allocators. This is useful
* when external debugging tools and the SEGHEAP debugging routines step
* on each other...
*/
#define MemAlloc(X) malloc(X)
#define MemFree(X) free(X)
#define MemRealloc(X,Y) realloc(X,Y)
#define MemFreeAll()
#define MemDebug(X,Y)
#else
/*
* Memory management stuff, from msmem.c
*/
typedef unsigned long MemSize;
typedef void __far * MemPtr;
#define MemAlloc(s) _MemAlloc (s, __FILE__, __LINE__)
#define malloc(s) _MemAlloc (s, __FILE__, __LINE__)
#define MemFree(b) _MemFree (b, __FILE__, __LINE__)
#define free(b) _MemFree (b, __FILE__, __LINE__)
#define MemRealloc(b,s) _MemRealloc (b, s, __FILE__, __LINE__)
#define realloc(b,s) _MemRealloc (b, s, __FILE__, __LINE__)
#define MEM_BLOCK_SIZE_MAX 0xff00
void MemDebug (int debug, FILE *debugFile);
void __far * _MemAlloc (MemSize size, char __far * file, int line);
int _MemFree (void __far *block, char __far *file, int line);
void __far * _MemRealloc (void __far *block, MemSize size,
char __far * file, int line);
MemSize MemBlkSize (MemPtr block);
void MemFreeAll (void);
void MemFailSoon (MemSize);
#endif
/* functions from win moved to mswin.c */
int pico_scroll_callback (int, long);
#undef sleep
int sleep (int);
/*
* Signals that are not defined by MS C
*/
#define SIGHUP 1 /* Terminal hangup. */
#define SIGINT 2 /* Ctrl-C sequence */
#define SIGILL 4 /* illegal instruction - invalid function image */
#define SIGSEGV 11 /* segment violation */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* Software termination signal from kill */
#define SIGABRT 22 /* abnormal termination triggered by abort call */
#define SIGWINCH 28 /* Change in window size. */
#define fflush mswin_fflush
#define alarm mswin_alarm
/*
* Registry setting constants
*/
#define MSWR_PINE_RC 1
#define MSWR_PINE_DIR 2
#define MSWR_PINE_EXE 3
#define MSWR_PINE_AUX 4
#define MSWR_PINE_POS 5
#define MSWR_PINE_CONF 6
#define MSWR_SDC_MAIL 1
#define MSWR_SDC_NEWS 2
#define MSWR_SDC_NNTP 3
#define MSWR_SDC_IMAP 4
#define MSWR_NULL 0x00
#define MSWR_OP_SET 0x01
#define MSWR_OP_FORCE 0x02
#define MSWR_OP_GET 0x04
#define MSWR_OP_BLAST 0x08
#endif /* MSWIN_H */
|