7f8bb70cff
input forms. It has the following simple fields: Text fields: Just titles, labels etc. Input fields: An editable text field that may or may not have an initial default value. Labelled input field: This is an input field that has an initial informative entry in it but it vanishes when you start editing the field. Toggle fields: These are fields with a pre-defined list of options which you cycle through using the space bar. Action fields: These are button type fields that call functions when they are selected. A simple demo is included in examples.
96 lines
1.6 KiB
C
96 lines
1.6 KiB
C
/*
|
|
* 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.
|
|
*/
|
|
|
|
#include <ncurses.h>
|
|
|
|
#define F_END 0
|
|
#define F_TEXT 1
|
|
#define F_ACTION 2
|
|
#define F_INPUT 3
|
|
#define F_MENU 4
|
|
|
|
#define F_DEFATTR 0
|
|
#define F_SELATTR A_REVERSE
|
|
|
|
#define F_DONE 1
|
|
#define F_CANCEL -1
|
|
|
|
struct form {
|
|
int no_fields;
|
|
int current_field;
|
|
struct field *field;
|
|
int nlines;
|
|
int ncols;
|
|
int y;
|
|
int x;
|
|
WINDOW *window;
|
|
};
|
|
|
|
struct text_field {
|
|
char *text;
|
|
};
|
|
|
|
struct action_field {
|
|
char *text;
|
|
void (* fn)();
|
|
};
|
|
|
|
struct input_field {
|
|
int lbl_flag;
|
|
char *label;
|
|
char *input;
|
|
};
|
|
|
|
struct menu_field {
|
|
int no_options;
|
|
int selected;
|
|
char **options;
|
|
};
|
|
|
|
struct help_link {
|
|
};
|
|
|
|
struct field {
|
|
int type;
|
|
int y;
|
|
int x;
|
|
int disp_width;
|
|
int width;
|
|
int attr;
|
|
int next;
|
|
int up;
|
|
int down;
|
|
int left;
|
|
int right;
|
|
union {
|
|
struct text_field *text;
|
|
struct action_field *action;
|
|
struct input_field *input;
|
|
struct menu_field *menu;
|
|
}field;
|
|
/*
|
|
struct help_link help;
|
|
*/
|
|
};
|
|
|
|
/* Externally visible keymap table for user-definable keymaps */
|
|
extern unsigned int keymap[];
|
|
|
|
/* 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);
|