|
|
1.1 root 1: /* UIFC.H */
2:
3: #include <dos.h>
4: #include <time.h>
5: #include <bios.h>
6: #include <alloc.h>
7: #include <ctype.h>
8: #include <conio.h>
9: #include <stdio.h>
10: #include <string.h>
11: #include <stdarg.h>
12: #include <stdlib.h>
13:
14: #define MAX_OPTS 128 /* Maximum number of options per menu call */
15: #define MAX_OPLN 81 /* Maximum length of each option per menu call */
16: #define MAX_BUFS 8 /* Maximum number of screen buffers to save */
17: #define MAX_BFLN 8000 /* Maximum size of screen buffers - 80x50 */
18:
19: #ifndef uint
20: #define uint unsigned int
21: #endif
22:
23: #define UIFC_INMSG (1<<0) /* Currently in Message Routine non-recursive */
24:
25: #define WIN_ORG (1<<0) /* Original menu - destroy valid screen area */
26: #define WIN_SAV (1<<1) /* Save existing text and replace when finished */
27: #define WIN_ACT (1<<2) /* Menu remains active after a selection */
28: #define WIN_L2R (1<<3) /* Center the window based on 'width' */
29: #define WIN_T2B (1<<4) /* Center the window based on 'height' */
30: #define WIN_INS (1<<5) /* Allows user to user insert key */
31: #define WIN_INSACT (1<<6) /* Remains active after insert key */
32: #define WIN_DEL (1<<7) /* Allows user to use delete key */
33: #define WIN_DELACT (1<<8) /* Remains active after delete key */
34: #define WIN_ESC (1<<9) /* Screen is active when escape is hit */
35: #define WIN_EDT (1<<10) /* Edit mode for input() function */
36: #define WIN_RHT (1<<11) /* Place window against right side of screen */
37: #define WIN_BOT (1<<12) /* Place window against botton of screen */
38: #define WIN_GET (1<<13) /* Allows F5 to Get a menu item */
39: #define WIN_PUT (1<<14) /* Allows F6 to Put a menu item */
40: #define WIN_CHE (1<<15) /* Stay active after escape if changes */
41:
42: #define WIN_MID WIN_L2R|WIN_T2B /* Place window in middle of screen */
43:
44: #define MSK_INS 0x0100
45: #define MSK_DEL 0x0200
46: #define MSK_GET 0x0300
47: #define MSK_PUT 0x0400
48:
49: #define SCRN_TOP 3
50: #define SCRN_LEFT 5
51: #define SCRN_RIGHT 76
52:
53: #define NO_CURSOR 0x2100
54: #define BIG_CURSOR 0x000f
55:
56: /* Bits in 'mode' for getkey and getstr */
57: #define K_UPPER (1<<0) /* Converts all letters to upper case */
58: #define K_UPRLWR (1<<1) /* Upper/Lower case automatically */
59: #define K_NUMBER (1<<2) /* Allow numbers only */
60: #define K_WRAP (1<<3) /* Allows word wrap */
61: #define K_MSG (1<<4) /* Allows ANSI, ^N ^A ^G */
62: #define K_SPIN (1<<5) /* Spinning cursor (same as SPIN) */
63: #define K_LINE (1<<6) /* Input line (inverse color) */
64: #define K_EDIT (1<<7) /* Edit string passed */
65: #define K_CHAT (1<<8) /* In chat multi-chat */
66: #define K_NOCRLF (1<<9) /* Don't print CRLF after string input */
67: #define K_ALPHA (1<<10) /* Only allow alphabetic characters */
68:
69:
70:
71: #define BS 8
72: #define FF 12
73: #define LF 10
74: #define CR 13
75: #define ESC 27
76: #define SP 32
77:
78: #define CLREOL 256
79:
80: typedef struct {
81: char left,top,right,bot,*buf;
82: } win_t;
83:
84: /* LCLOLL.ASM */
85: int lclini(int);
86: void lclxy(int,int);
87: int lclwx(void);
88: int lclwy(void);
89: int lclatr(int);
90: void lputc(int);
91: long lputs(char far *);
92:
93:
94: extern char scrn_len,lclr,hclr,bclr,cclr,blk_scrn[MAX_BFLN],savdepth
95: ,changes,savnum,uifc_status;
96: extern win_t sav[MAX_BUFS];
97: extern uint cursor;
98:
99: void uifcini(void);
100: void uscrn(char *str);
101: int ulist(int mode, char left, char top, char width, int *dflt
102: ,char *title, char option[][MAX_OPLN]);
103: char uinput(int imode, char left, char top, char *prompt, char *str, char len
104: ,int kmode);
105: void umsg(char *str);
106: int getstr(char *str, int maxlen, int mode);
107: uint getcursortype();
108: void setcursortype(uint cursor);
109: void timedisplay();
110: void puttextinfo(struct text_info txt);
111: int lprintf(char *fmt,...);
112: char *timestr(time_t *intime);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.