1995-01-10 05:00:37 +01:00
|
|
|
/*
|
|
|
|
* Copyright (c) 1995 Paul Richards.
|
|
|
|
*
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This software may be used, modified, copied, distributed, and
|
|
|
|
* sold, in both source and binary form provided that the above
|
|
|
|
* copyright and these terms are retained, verbatim, as the first
|
|
|
|
* lines of this file. Under no circumstances is the author
|
|
|
|
* responsible for the proper functioning of this software, nor does
|
|
|
|
* the author assume any responsibility for damages incurred with
|
|
|
|
* its use.
|
|
|
|
*/
|
1994-11-13 07:45:44 +01:00
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
#include <ncurses.h>
|
1994-11-13 07:45:44 +01:00
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
#define F_END 0
|
|
|
|
#define F_TEXT 1
|
|
|
|
#define F_ACTION 2
|
|
|
|
#define F_INPUT 3
|
|
|
|
#define F_MENU 4
|
1994-11-13 07:45:44 +01:00
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
#define F_DEFATTR 0
|
|
|
|
#define F_SELATTR A_REVERSE
|
1994-11-13 07:45:44 +01:00
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
#define F_DONE 1
|
|
|
|
#define F_CANCEL -1
|
1994-11-13 08:43:43 +01:00
|
|
|
|
1994-11-13 07:45:44 +01:00
|
|
|
struct form {
|
1995-01-10 05:00:37 +01:00
|
|
|
int no_fields;
|
|
|
|
int current_field;
|
|
|
|
struct field *field;
|
1995-01-24 14:27:46 +01:00
|
|
|
int height;
|
|
|
|
int width;
|
1994-11-13 07:45:44 +01:00
|
|
|
int y;
|
1995-01-10 05:00:37 +01:00
|
|
|
int x;
|
|
|
|
WINDOW *window;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct text_field {
|
|
|
|
char *text;
|
1994-11-13 07:45:44 +01:00
|
|
|
};
|
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
struct action_field {
|
|
|
|
char *text;
|
|
|
|
void (* fn)();
|
|
|
|
};
|
1994-11-13 08:43:43 +01:00
|
|
|
|
1994-11-13 07:45:44 +01:00
|
|
|
struct input_field {
|
1995-01-10 05:00:37 +01:00
|
|
|
int lbl_flag;
|
|
|
|
char *label;
|
|
|
|
char *input;
|
1994-11-13 07:45:44 +01:00
|
|
|
};
|
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
struct menu_field {
|
|
|
|
int no_options;
|
|
|
|
int selected;
|
|
|
|
char **options;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct help_link {
|
1994-11-13 07:45:44 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
struct field {
|
|
|
|
int type;
|
1995-01-10 05:00:37 +01:00
|
|
|
int y;
|
|
|
|
int x;
|
|
|
|
int disp_width;
|
|
|
|
int width;
|
|
|
|
int attr;
|
|
|
|
int next;
|
|
|
|
int up;
|
|
|
|
int down;
|
|
|
|
int left;
|
|
|
|
int right;
|
1994-11-13 07:45:44 +01:00
|
|
|
union {
|
1995-01-10 05:00:37 +01:00
|
|
|
struct text_field *text;
|
|
|
|
struct action_field *action;
|
|
|
|
struct input_field *input;
|
|
|
|
struct menu_field *menu;
|
|
|
|
}field;
|
|
|
|
/*
|
|
|
|
struct help_link help;
|
|
|
|
*/
|
1994-11-13 07:45:44 +01:00
|
|
|
};
|
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
/* Externally visible keymap table for user-definable keymaps */
|
|
|
|
extern unsigned int keymap[];
|
1994-11-13 07:45:44 +01:00
|
|
|
|
1995-01-10 05:00:37 +01:00
|
|
|
/* Externally visible function declarations */
|
|
|
|
int update_form(struct form *);
|
|
|
|
int initfrm(struct form *);
|
|
|
|
void endfrm(struct form *);
|
|
|
|
void exit_form(void);
|
|
|
|
void cancel_form(void);
|