~ubuntu-branches/ubuntu/dapper/cmake/dapper

« back to all changes in this revision

Viewing changes to Source/CursesDialog/form/form.h

  • Committer: Bazaar Package Importer
  • Author(s): A. Maitland Bottoms
  • Date: 2006-01-08 10:48:14 UTC
  • mfrom: (1.3.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060108104814-jmy1r2fydpohpc1g
Tags: 2.2.3-1
* New upstream release (Closes: #338324)
* support GNU/kFreeBSD in cmake (Closes: #340764)

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
typedef int Form_Options;
49
49
typedef int Field_Options;
50
50
 
51
 
        /**********
52
 
        *  _PAGE  *
53
 
        **********/
 
51
        /**********
 
52
        *  _PAGE  *
 
53
        **********/
54
54
 
55
55
typedef struct {
56
 
  short pmin;     /* index of first field on page            */
57
 
  short pmax;     /* index of last field on page             */
58
 
  short smin;     /* index of top leftmost field on page     */
59
 
  short smax;     /* index of bottom rightmost field on page */
 
56
  short pmin;     /* index of first field on page            */
 
57
  short pmax;     /* index of last field on page             */
 
58
  short smin;     /* index of top leftmost field on page     */
 
59
  short smax;     /* index of bottom rightmost field on page */
60
60
} _PAGE;
61
61
 
62
 
        /**********
63
 
        *  FIELD  *
64
 
        **********/
 
62
        /**********
 
63
        *  FIELD  *
 
64
        **********/
65
65
 
66
66
typedef struct fieldnode {
67
 
  unsigned short        status;   /* flags                      */
68
 
  short                 rows;     /* size in rows               */
69
 
  short                 cols;     /* size in cols               */
70
 
  short                 frow;     /* first row                  */
71
 
  short                 fcol;     /* first col                  */
 
67
  unsigned short        status;   /* flags                      */
 
68
  short                 rows;     /* size in rows               */
 
69
  short                 cols;     /* size in cols               */
 
70
  short                 frow;     /* first row                  */
 
71
  short                 fcol;     /* first col                  */
72
72
  int                   drows;    /* dynamic rows               */
73
73
  int                   dcols;    /* dynamic cols               */
74
74
  int                   maxgrow;  /* maximum field growth       */
75
 
  int                   nrow;     /* offscreen rows             */
76
 
  short                 nbuf;     /* additional buffers         */
77
 
  short                 just;     /* justification              */
78
 
  short                 page;     /* page on form               */
79
 
  short                 index;    /* into form -> field         */
80
 
  int                   pad;      /* pad character              */
81
 
  chtype                fore;     /* foreground attribute       */
82
 
  chtype                back;     /* background attribute       */
83
 
  Field_Options         opts;     /* options                    */
84
 
  struct fieldnode *    snext;    /* sorted order pointer       */
85
 
  struct fieldnode *    sprev;    /* sorted order pointer       */
86
 
  struct fieldnode *    link;     /* linked field chain         */
87
 
  struct formnode *     form;     /* containing form            */
88
 
  struct typenode *     type;     /* field type                 */
89
 
  void *                arg;      /* argument for type          */
90
 
  char *                buf;      /* field buffers              */
91
 
  void *                usrptr;   /* user pointer               */
 
75
  int                   nrow;     /* offscreen rows             */
 
76
  short                 nbuf;     /* additional buffers         */
 
77
  short                 just;     /* justification              */
 
78
  short                 page;     /* page on form               */
 
79
  short                 index;    /* into form -> field         */
 
80
  int                   pad;      /* pad character              */
 
81
  chtype                fore;     /* foreground attribute       */
 
82
  chtype                back;     /* background attribute       */
 
83
  Field_Options         opts;     /* options                    */
 
84
  struct fieldnode *    snext;    /* sorted order pointer       */
 
85
  struct fieldnode *    sprev;    /* sorted order pointer       */
 
86
  struct fieldnode *    link;     /* linked field chain         */
 
87
  struct formnode *     form;     /* containing form            */
 
88
  struct typenode *     type;     /* field type                 */
 
89
  void *                arg;      /* argument for type          */
 
90
  char *                buf;      /* field buffers              */
 
91
  void *                usrptr;   /* user pointer               */
92
92
} FIELD;
93
93
 
94
 
        /**************
95
 
        *  FIELDTYPE  *
96
 
        **************/
 
94
        /**************
 
95
        *  FIELDTYPE  *
 
96
        **************/
97
97
 
98
98
typedef struct typenode {
99
 
  unsigned short        status;                /* flags                */
100
 
  long                  ref;                   /* reference count      */
101
 
  struct typenode *     left;                  /* ptr to operand for | */
102
 
  struct typenode *     right;                 /* ptr to operand for | */
 
99
  unsigned short        status;                /* flags                */
 
100
  long                  ref;                   /* reference count      */
 
101
  struct typenode *     left;                  /* ptr to operand for | */
 
102
  struct typenode *     right;                 /* ptr to operand for | */
103
103
 
104
104
  void* (*makearg)(va_list *);                 /* make fieldtype arg   */
105
105
  void* (*copyarg)(const void *);              /* copy fieldtype arg   */
106
106
  void  (*freearg)(void *);                    /* free fieldtype arg   */
107
107
 
108
 
  bool  (*fcheck)(FIELD *,const void *);       /* field validation     */
109
 
  bool  (*ccheck)(int,const void *);           /* character validation */
 
108
  bool  (*fcheck)(FIELD *,const void *);       /* field validation     */
 
109
  bool  (*ccheck)(int,const void *);           /* character validation */
110
110
 
111
 
  bool  (*next)(FIELD *,const void *);         /* enumerate next value */
112
 
  bool  (*prev)(FIELD *,const void *);         /* enumerate prev value */
 
111
  bool  (*next)(FIELD *,const void *);         /* enumerate next value */
 
112
  bool  (*prev)(FIELD *,const void *);         /* enumerate prev value */
113
113
 
114
114
} FIELDTYPE;
115
115
 
116
 
        /*********
117
 
        *  FORM  *
118
 
        *********/
 
116
        /*********
 
117
        *  FORM  *
 
118
        *********/
119
119
 
120
120
typedef struct formnode {
121
 
  unsigned short        status;   /* flags                      */
122
 
  short                 rows;     /* size in rows               */
123
 
  short                 cols;     /* size in cols               */
124
 
  int                   currow;   /* current row in field window*/
125
 
  int                   curcol;   /* current col in field window*/
126
 
  int                   toprow;   /* in scrollable field window */
 
121
  unsigned short        status;   /* flags                      */
 
122
  short                 rows;     /* size in rows               */
 
123
  short                 cols;     /* size in cols               */
 
124
  int                   currow;   /* current row in field window*/
 
125
  int                   curcol;   /* current col in field window*/
 
126
  int                   toprow;   /* in scrollable field window */
127
127
  int                   begincol; /* in horiz. scrollable field */
128
 
  short                 maxfield; /* number of fields           */
129
 
  short                 maxpage;  /* number of pages            */
130
 
  short                 curpage;  /* index into page            */
131
 
  Form_Options          opts;     /* options                    */
132
 
  WINDOW *              win;      /* window                     */
133
 
  WINDOW *              sub;      /* subwindow                  */
134
 
  WINDOW *              w;        /* window for current field   */
135
 
  FIELD **              field;    /* field [maxfield]           */
136
 
  FIELD *               current;  /* current field              */
137
 
  _PAGE *               page;     /* page [maxpage]             */
138
 
  void *                usrptr;   /* user pointer               */
 
128
  short                 maxfield; /* number of fields           */
 
129
  short                 maxpage;  /* number of pages            */
 
130
  short                 curpage;  /* index into page            */
 
131
  Form_Options          opts;     /* options                    */
 
132
  WINDOW *              win;      /* window                     */
 
133
  WINDOW *              sub;      /* subwindow                  */
 
134
  WINDOW *              w;        /* window for current field   */
 
135
  FIELD **              field;    /* field [maxfield]           */
 
136
  FIELD *               current;  /* current field              */
 
137
  _PAGE *               page;     /* page [maxpage]             */
 
138
  void *                usrptr;   /* user pointer               */
139
139
 
140
140
  void                  (*forminit)(struct formnode *);
141
141
  void                  (*formterm)(struct formnode *);
146
146
 
147
147
typedef void (*Form_Hook)(FORM *);
148
148
 
149
 
        /***************************
150
 
        *  miscellaneous #defines  *
151
 
        ***************************/
 
149
        /***************************
 
150
        *  miscellaneous #defines  *
 
151
        ***************************/
152
152
 
153
153
/* field justification */
154
 
#define NO_JUSTIFICATION        (0)
155
 
#define JUSTIFY_LEFT            (1)
156
 
#define JUSTIFY_CENTER          (2)
157
 
#define JUSTIFY_RIGHT           (3)
 
154
#define NO_JUSTIFICATION        (0)
 
155
#define JUSTIFY_LEFT            (1)
 
156
#define JUSTIFY_CENTER          (2)
 
157
#define JUSTIFY_RIGHT           (3)
158
158
 
159
159
/* field options */
160
 
#define O_VISIBLE               (0x0001)
161
 
#define O_ACTIVE                (0x0002)
162
 
#define O_PUBLIC                (0x0004)
163
 
#define O_EDIT                  (0x0008)
164
 
#define O_WRAP                  (0x0010)
165
 
#define O_BLANK                 (0x0020)
166
 
#define O_AUTOSKIP              (0x0040)
167
 
#define O_NULLOK                (0x0080)
168
 
#define O_PASSOK                (0x0100)
 
160
#define O_VISIBLE               (0x0001)
 
161
#define O_ACTIVE                (0x0002)
 
162
#define O_PUBLIC                (0x0004)
 
163
#define O_EDIT                  (0x0008)
 
164
#define O_WRAP                  (0x0010)
 
165
#define O_BLANK                 (0x0020)
 
166
#define O_AUTOSKIP              (0x0040)
 
167
#define O_NULLOK                (0x0080)
 
168
#define O_PASSOK                (0x0100)
169
169
#define O_STATIC                (0x0200)
170
170
 
171
171
/* form options */
172
 
#define O_NL_OVERLOAD           (0x0001)
173
 
#define O_BS_OVERLOAD           (0x0002)
 
172
#define O_NL_OVERLOAD           (0x0001)
 
173
#define O_BS_OVERLOAD           (0x0002)
174
174
 
175
175
/* form driver commands */
176
 
#define REQ_NEXT_PAGE    (KEY_MAX + 1)  /* move to next page            */
177
 
#define REQ_PREV_PAGE    (KEY_MAX + 2)  /* move to previous page        */
178
 
#define REQ_FIRST_PAGE   (KEY_MAX + 3)  /* move to first page           */
179
 
#define REQ_LAST_PAGE    (KEY_MAX + 4)  /* move to last page            */
180
 
 
181
 
#define REQ_NEXT_FIELD   (KEY_MAX + 5)  /* move to next field           */
182
 
#define REQ_PREV_FIELD   (KEY_MAX + 6)  /* move to previous field       */
183
 
#define REQ_FIRST_FIELD  (KEY_MAX + 7)  /* move to first field          */
184
 
#define REQ_LAST_FIELD   (KEY_MAX + 8)  /* move to last field           */
185
 
#define REQ_SNEXT_FIELD  (KEY_MAX + 9)  /* move to sorted next field    */
186
 
#define REQ_SPREV_FIELD  (KEY_MAX + 10) /* move to sorted prev field    */
187
 
#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field   */
188
 
#define REQ_SLAST_FIELD  (KEY_MAX + 12) /* move to sorted last field    */
189
 
#define REQ_LEFT_FIELD   (KEY_MAX + 13) /* move to left to field        */
190
 
#define REQ_RIGHT_FIELD  (KEY_MAX + 14) /* move to right to field       */
191
 
#define REQ_UP_FIELD     (KEY_MAX + 15) /* move to up to field          */
192
 
#define REQ_DOWN_FIELD   (KEY_MAX + 16) /* move to down to field        */
193
 
 
194
 
#define REQ_NEXT_CHAR    (KEY_MAX + 17) /* move to next char in field   */
195
 
#define REQ_PREV_CHAR    (KEY_MAX + 18) /* move to prev char in field   */
196
 
#define REQ_NEXT_LINE    (KEY_MAX + 19) /* move to next line in field   */
197
 
#define REQ_PREV_LINE    (KEY_MAX + 20) /* move to prev line in field   */
198
 
#define REQ_NEXT_WORD    (KEY_MAX + 21) /* move to next word in field   */
199
 
#define REQ_PREV_WORD    (KEY_MAX + 22) /* move to prev word in field   */
200
 
#define REQ_BEG_FIELD    (KEY_MAX + 23) /* move to first char in field  */
201
 
#define REQ_END_FIELD    (KEY_MAX + 24) /* move after last char in fld  */
202
 
#define REQ_BEG_LINE     (KEY_MAX + 25) /* move to beginning of line    */
203
 
#define REQ_END_LINE     (KEY_MAX + 26) /* move after last char in line */
204
 
#define REQ_LEFT_CHAR    (KEY_MAX + 27) /* move left in field           */
205
 
#define REQ_RIGHT_CHAR   (KEY_MAX + 28) /* move right in field          */
206
 
#define REQ_UP_CHAR      (KEY_MAX + 29) /* move up in field             */
207
 
#define REQ_DOWN_CHAR    (KEY_MAX + 30) /* move down in field           */
208
 
 
209
 
#define REQ_NEW_LINE     (KEY_MAX + 31) /* insert/overlay new line      */
210
 
#define REQ_INS_CHAR     (KEY_MAX + 32) /* insert blank char at cursor  */
211
 
#define REQ_INS_LINE     (KEY_MAX + 33) /* insert blank line at cursor  */
212
 
#define REQ_DEL_CHAR     (KEY_MAX + 34) /* delete char at cursor        */
213
 
#define REQ_DEL_PREV     (KEY_MAX + 35) /* delete char before cursor    */
214
 
#define REQ_DEL_LINE     (KEY_MAX + 36) /* delete line at cursor        */
215
 
#define REQ_DEL_WORD     (KEY_MAX + 37) /* delete line at cursor        */
216
 
#define REQ_CLR_EOL      (KEY_MAX + 38) /* clear to end of line         */
217
 
#define REQ_CLR_EOF      (KEY_MAX + 39) /* clear to end of field        */
218
 
#define REQ_CLR_FIELD    (KEY_MAX + 40) /* clear entire field           */
219
 
#define REQ_OVL_MODE     (KEY_MAX + 41) /* begin overlay mode           */
220
 
#define REQ_INS_MODE     (KEY_MAX + 42) /* begin insert mode            */
221
 
#define REQ_SCR_FLINE    (KEY_MAX + 43) /* scroll field forward a line  */
222
 
#define REQ_SCR_BLINE    (KEY_MAX + 44) /* scroll field backward a line */
223
 
#define REQ_SCR_FPAGE    (KEY_MAX + 45) /* scroll field forward a page  */
224
 
#define REQ_SCR_BPAGE    (KEY_MAX + 46) /* scroll field backward a page */
 
176
#define REQ_NEXT_PAGE    (KEY_MAX + 1)  /* move to next page            */
 
177
#define REQ_PREV_PAGE    (KEY_MAX + 2)  /* move to previous page        */
 
178
#define REQ_FIRST_PAGE   (KEY_MAX + 3)  /* move to first page           */
 
179
#define REQ_LAST_PAGE    (KEY_MAX + 4)  /* move to last page            */
 
180
 
 
181
#define REQ_NEXT_FIELD   (KEY_MAX + 5)  /* move to next field           */
 
182
#define REQ_PREV_FIELD   (KEY_MAX + 6)  /* move to previous field       */
 
183
#define REQ_FIRST_FIELD  (KEY_MAX + 7)  /* move to first field          */
 
184
#define REQ_LAST_FIELD   (KEY_MAX + 8)  /* move to last field           */
 
185
#define REQ_SNEXT_FIELD  (KEY_MAX + 9)  /* move to sorted next field    */
 
186
#define REQ_SPREV_FIELD  (KEY_MAX + 10) /* move to sorted prev field    */
 
187
#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field   */
 
188
#define REQ_SLAST_FIELD  (KEY_MAX + 12) /* move to sorted last field    */
 
189
#define REQ_LEFT_FIELD   (KEY_MAX + 13) /* move to left to field        */
 
190
#define REQ_RIGHT_FIELD  (KEY_MAX + 14) /* move to right to field       */
 
191
#define REQ_UP_FIELD     (KEY_MAX + 15) /* move to up to field          */
 
192
#define REQ_DOWN_FIELD   (KEY_MAX + 16) /* move to down to field        */
 
193
 
 
194
#define REQ_NEXT_CHAR    (KEY_MAX + 17) /* move to next char in field   */
 
195
#define REQ_PREV_CHAR    (KEY_MAX + 18) /* move to prev char in field   */
 
196
#define REQ_NEXT_LINE    (KEY_MAX + 19) /* move to next line in field   */
 
197
#define REQ_PREV_LINE    (KEY_MAX + 20) /* move to prev line in field   */
 
198
#define REQ_NEXT_WORD    (KEY_MAX + 21) /* move to next word in field   */
 
199
#define REQ_PREV_WORD    (KEY_MAX + 22) /* move to prev word in field   */
 
200
#define REQ_BEG_FIELD    (KEY_MAX + 23) /* move to first char in field  */
 
201
#define REQ_END_FIELD    (KEY_MAX + 24) /* move after last char in fld  */
 
202
#define REQ_BEG_LINE     (KEY_MAX + 25) /* move to beginning of line    */
 
203
#define REQ_END_LINE     (KEY_MAX + 26) /* move after last char in line */
 
204
#define REQ_LEFT_CHAR    (KEY_MAX + 27) /* move left in field           */
 
205
#define REQ_RIGHT_CHAR   (KEY_MAX + 28) /* move right in field          */
 
206
#define REQ_UP_CHAR      (KEY_MAX + 29) /* move up in field             */
 
207
#define REQ_DOWN_CHAR    (KEY_MAX + 30) /* move down in field           */
 
208
 
 
209
#define REQ_NEW_LINE     (KEY_MAX + 31) /* insert/overlay new line      */
 
210
#define REQ_INS_CHAR     (KEY_MAX + 32) /* insert blank char at cursor  */
 
211
#define REQ_INS_LINE     (KEY_MAX + 33) /* insert blank line at cursor  */
 
212
#define REQ_DEL_CHAR     (KEY_MAX + 34) /* delete char at cursor        */
 
213
#define REQ_DEL_PREV     (KEY_MAX + 35) /* delete char before cursor    */
 
214
#define REQ_DEL_LINE     (KEY_MAX + 36) /* delete line at cursor        */
 
215
#define REQ_DEL_WORD     (KEY_MAX + 37) /* delete line at cursor        */
 
216
#define REQ_CLR_EOL      (KEY_MAX + 38) /* clear to end of line         */
 
217
#define REQ_CLR_EOF      (KEY_MAX + 39) /* clear to end of field        */
 
218
#define REQ_CLR_FIELD    (KEY_MAX + 40) /* clear entire field           */
 
219
#define REQ_OVL_MODE     (KEY_MAX + 41) /* begin overlay mode           */
 
220
#define REQ_INS_MODE     (KEY_MAX + 42) /* begin insert mode            */
 
221
#define REQ_SCR_FLINE    (KEY_MAX + 43) /* scroll field forward a line  */
 
222
#define REQ_SCR_BLINE    (KEY_MAX + 44) /* scroll field backward a line */
 
223
#define REQ_SCR_FPAGE    (KEY_MAX + 45) /* scroll field forward a page  */
 
224
#define REQ_SCR_BPAGE    (KEY_MAX + 46) /* scroll field backward a page */
225
225
#define REQ_SCR_FHPAGE   (KEY_MAX + 47) /* scroll field forward  half page */
226
226
#define REQ_SCR_BHPAGE   (KEY_MAX + 48) /* scroll field backward half page */
227
227
#define REQ_SCR_FCHAR    (KEY_MAX + 49) /* horizontal scroll char          */
231
231
#define REQ_SCR_HFHALF   (KEY_MAX + 53) /* horizontal scroll half line     */
232
232
#define REQ_SCR_HBHALF   (KEY_MAX + 54) /* horizontal scroll half line     */
233
233
 
234
 
#define REQ_VALIDATION   (KEY_MAX + 55) /* validate field               */
235
 
#define REQ_NEXT_CHOICE  (KEY_MAX + 56) /* display next field choice    */
236
 
#define REQ_PREV_CHOICE  (KEY_MAX + 57) /* display prev field choice    */
 
234
#define REQ_VALIDATION   (KEY_MAX + 55) /* validate field               */
 
235
#define REQ_NEXT_CHOICE  (KEY_MAX + 56) /* display next field choice    */
 
236
#define REQ_PREV_CHOICE  (KEY_MAX + 57) /* display prev field choice    */
237
237
 
238
 
#define MIN_FORM_COMMAND (KEY_MAX + 1)  /* used by form_driver          */
239
 
#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver          */
 
238
#define MIN_FORM_COMMAND (KEY_MAX + 1)  /* used by form_driver          */
 
239
#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver          */
240
240
 
241
241
#if defined(MAX_COMMAND)
242
242
#  if (MAX_FORM_COMMAND > MAX_COMMAND)
248
248
#  define MAX_COMMAND (KEY_MAX + 128)
249
249
#endif
250
250
 
251
 
        /*************************
252
 
        *  standard field types  *
253
 
        *************************/
 
251
        /*************************
 
252
        *  standard field types  *
 
253
        *************************/
254
254
extern FIELDTYPE *TYPE_ALPHA,
255
255
                 *TYPE_ALNUM,
256
256
                 *TYPE_ENUM,
259
259
                 *TYPE_REGEXP;
260
260
 
261
261
        /************************************
262
 
        *  built-in additional field types  *
 
262
        *  built-in additional field types  *
263
263
        *  They are not defined in SVr4     *
264
 
        ************************************/
 
264
        ************************************/
265
265
extern FIELDTYPE *TYPE_IPV4;      /* Internet IP Version 4 address */
266
266
 
267
267
        /*********************** 
271
271
extern FIELD *_nc_Default_Field;
272
272
 
273
273
 
274
 
        /***********************
275
 
        *  FIELDTYPE routines  *
276
 
        ***********************/
 
274
        /***********************
 
275
        *  FIELDTYPE routines  *
 
276
        ***********************/
277
277
extern FIELDTYPE 
278
278
                *new_fieldtype(
279
 
                    bool (* const field_check)(FIELD *,const void *),
280
 
                    bool (* const char_check)(int,const void *)),
 
279
                    bool (* const field_check)(FIELD *,const void *),
 
280
                    bool (* const char_check)(int,const void *)),
281
281
                *link_fieldtype(FIELDTYPE *,FIELDTYPE *);
282
282
 
283
283
extern int      free_fieldtype(FIELDTYPE *),
284
284
                set_fieldtype_choice (FIELDTYPE *,
285
 
                    bool (* const next_choice)(FIELD *,const void *),
286
 
                    bool (* const prev_choice)(FIELD *,const void *));
 
285
                    bool (* const next_choice)(FIELD *,const void *),
 
286
                    bool (* const prev_choice)(FIELD *,const void *));
287
287
 
288
 
        /*******************
289
 
        *  FIELD routines  *
290
 
        *******************/
 
288
        /*******************
 
289
        *  FIELD routines  *
 
290
        *******************/
291
291
extern FIELD    *new_field(int,int,int,int,int,int),
292
292
                *dup_field(FIELD *,int,int),
293
293
                *link_field(FIELD *,int,int);
330
330
extern Field_Options  
331
331
                field_opts(const FIELD *);
332
332
 
333
 
        /******************
334
 
        *  FORM routines  *
335
 
        ******************/
 
333
        /******************
 
334
        *  FORM routines  *
 
335
        ******************/
336
336
extern FORM     *new_form(FIELD **);
337
337
 
338
338
extern FIELD    **form_fields(const FORM *),
386
386
  }
387
387
#endif
388
388
 
389
 
#endif  /* FORM_H */
 
389
#endif  /* FORM_H */