Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/bx-conf/ds_cell.h
1069 views
1
/*
2
* Program source is Copyright 1993 Colten Edwards.
3
* Central Data Services is granted the right to use this source
4
* in thier product known as Quote Menu. They are also granted the right
5
* to modify this source in the advent of problems and or new features
6
* which they may want to add to the program.
7
*/
8
9
#include <stdlib.h>
10
#include <dirent.h>
11
#include <ncurses.h>
12
#define MAXPATH MAXNAMLEN
13
/* Defines for shadows. Used in the Box rountine. */
14
15
#define NO_SHADOW 0
16
#define SINGLER_SHADOW 1
17
#define DOUBLER_SHADOW 2
18
#define SINGLEL_SHADOW 3
19
#define DOUBLEL_SHADOW 4
20
21
#define NO_LINE 0
22
#define SINGLE_LINE 1
23
#define DOUBLE_LINE 2
24
#define SINGLE_TOP 3
25
#define SINGLE_SIDE 4
26
#define SOLID_LINES 5
27
#define TOP_BOT_SLINE 6
28
#define TOP_BOT_DLINE 7
29
#define TOP_BOT_SOLID 8
30
31
#define NUM_KEYS 80
32
/* Number of color table entries */
33
#define MAXC_TABLE 6
34
35
/* Number of User Defined Functions */
36
#define MAXU_FUNCS 10
37
38
#define CURCOL 24 /* Starting edit cursor column */
39
40
41
#define WRITE_FILE 0
42
#define READ_FILE 1
43
44
45
46
#define CURSOROFF 0x2000
47
48
/* A define used for the CONFIG entries on the max. path allowed.*/
49
50
#define WILDCARD 0x01
51
#define EXTENSION 0x02
52
#define FILENAME 0x04
53
#define DIRECTORY 0x08
54
#define DRIVE 0x10
55
56
57
typedef struct {
58
char letter;
59
int return_answer;
60
} _default;
61
62
63
#define LOC_YN_Y 18
64
#define LOC_YN_X 24
65
66
67
extern struct _VIDEO {
68
unsigned char winleft;
69
unsigned char wintop;
70
unsigned char winright;
71
unsigned char winbottom;
72
unsigned char attribute;
73
unsigned char normattr;
74
unsigned char currmode;
75
unsigned char screenheight;
76
unsigned char screenwidth;
77
unsigned char graphics;
78
unsigned char needcgasync;
79
char *videobuffer;
80
} _video;
81
82
typedef struct dlistmem *dlistptr;
83
84
struct datainforec {
85
char *option;
86
char *help;
87
88
int other;
89
char *save;
90
int (*func)();
91
int integer;
92
int type;
93
#if 0
94
long act_size;
95
int volume;
96
long pos_in_archive;
97
dev_t dev;
98
uid_t uid;
99
gid_t gid;
100
umode_t mode;
101
umode_t org_mode;
102
long size;
103
time_t atime;
104
time_t mtime;
105
time_t ctime;
106
time_t backup_time;
107
char name_len;
108
char compressed;
109
long checksum;
110
#endif
111
int mark;
112
};
113
114
struct dlistmem {
115
struct datainforec datainfo;
116
dlistptr nextlistptr;
117
dlistptr prevlistptr;
118
};
119
120
typedef struct cell
121
{
122
/*
123
* Possible Startup and Exit Procedures to use
124
*/
125
int (*ListEntryProc)(struct cell *cell );
126
int (*ListExitProc)(struct cell *cell);
127
/*
128
* What to do on a key and the screen paint routine
129
* What to do on a special key
130
*/
131
int (*ListEventProc)(struct cell *cell);
132
int (*ListPaintProc)(struct cell *cell);
133
int (*OtherGetKeyProc)(struct cell *cell);
134
135
/* Possible actions to take with a keystroke. */
136
/*
137
* The current line we are at.
138
*/
139
int (*current_event)(struct cell *cell);
140
141
int (*event1)(struct cell *cell);
142
int (*event2)(struct cell *cell);
143
144
int (*UpdateStatusProc)(struct cell *cell);
145
146
struct KeyTable *keytable;
147
struct FuncTable *func_table;
148
149
/* These are what start everything off. */
150
/* start is the start of the list.*/
151
/* end is the end of the list. */
152
/* current is the current highlighted line on the screen*/
153
154
dlistptr start;
155
dlistptr current;
156
dlistptr end;
157
/*
158
* Begin and end of the current display list. current should be somewhere
159
* between these.
160
*/
161
dlistptr list_start;
162
dlistptr list_end;
163
164
WINDOW *window; /* WINDOW from ncurses */
165
166
int redraw; /* screen needs attention */
167
int srow; /* window start row cordinate */
168
int scol; /* Window start Column */
169
int erow; /* Window Ending Row */
170
int ecol; /* Window ending column */
171
int max_cols; /* Max Columns on the screen */
172
int max_rows; /* Max Rows on the screen */
173
int save_row; /* save the cursor pos row */
174
int save_col; /* save the cursor pos col */
175
int cur_pos; /* current cursor column when using edit*/
176
int cur_row; /* current cursor row when using edit */
177
int desc_start; /* Used when editing large fields. */
178
179
unsigned int termkey; /* this is cleared on enter, setting it to
180
* any value other than zero causes the
181
* function to return. Usually set to the
182
* key we terminate with.
183
*/
184
unsigned int special; /* Holds value for the current item function
185
* number
186
*/
187
188
189
unsigned int key; /* Current Keystroke */
190
unsigned int other_getkey; /* set this to use other get_char routine */
191
/* if supplied */
192
193
unsigned int normcolor; /* Normal Text Screen Color*/
194
unsigned int barcolor; /* Bar text Screen Color */
195
196
int insert_mode; /* Insert/OverWrite Cursor Mode */
197
198
int menu_bar; /* Set this if a menu at the bottom
199
* of the screen is needed
200
*/
201
int dest_src;
202
char *filename;
203
char **argv;
204
int argc;
205
} CELL;
206
207
208
typedef struct KeyTable
209
{
210
int key;
211
int func_num;
212
char desc[40];
213
} KEYTABLE;
214
215
typedef struct UKeyTable
216
{
217
int key;
218
char desc[40];
219
char program[MAXPATH+1];
220
char params[40];
221
} USERKEYTABLE;
222
223
typedef struct FuncTable
224
{
225
int key;
226
int (*func)(struct cell *c);
227
} FUNC_TABLE ;
228
229
struct COLOR {
230
unsigned char dosborder ;
231
unsigned char dostext ;
232
unsigned char background;
233
unsigned char back_text;
234
unsigned char menuborder ;
235
unsigned char menuback ;
236
unsigned char menutext ;
237
unsigned char menucursor ;
238
unsigned char menushadow ;
239
unsigned char fileborder;
240
unsigned char filebar;
241
unsigned char filetext;
242
};
243
244
245
#define LS_END 0
246
#define LS_HOME 1
247
#define LS_PGUP 2
248
#define LS_PGDN 3
249
#define CURSOR_UP 4
250
#define CURSOR_DN 5
251
#define LS_QUIT 6
252
#define WRAP_CURSOR_DN 7
253
#define WRAP_CURSOR_UP 8
254
#define DO_SHELL 9
255
#define LS_ENTER 10
256
#define UPFUNC 11
257
#define TOGGLE 12
258
#define PLUS_IT 13
259
#define MINUS_IT 14
260
#define LS_CLEAR 15
261
#define LS_TOGGLE 16
262
#define RENAME_FILE 17
263
#define CHANGE_SRC 18
264
#define CHANGE_DEST 19
265
#define LS_PLAY 20
266
267