Instead of MAXNAMELEN, use NAME_MAX for now. This should be revisited
[dragonfly.git] / gnu / lib / libdialog / ui_objects.h
1 /*
2  * Author: Marc van Kempen
3  * Desc:   include file for UI-objects
4  *
5  * Copyright (c) 1995, Marc van Kempen
6  *
7  * All rights reserved.
8  *
9  * This software may be used, modified, copied, distributed, and
10  * sold, in both source and binary form provided that the above
11  * copyright and these terms are retained, verbatim, as the first
12  * lines of this file.  Under no circumstances is the author
13  * responsible for the proper functioning of this software, nor does
14  * the author assume any responsibility for damages incurred with
15  * its use.
16  *
17  */
18
19 #include "dialog.h"
20 #include <ncurses.h>
21
22 /***********************************************************************
23  *
24  * Defines
25  *
26  ***********************************************************************/
27
28 #define ctrl(a)         ((a) - 'a' + 1)
29
30 /* the Object types */
31 #define STRINGOBJ       1
32 #define LISTOBJ         2
33 #define BUTTONOBJ       3
34
35 /* the return signals from the selection routines */
36 /* 1000 and higher should avoid conflicts with keys pressed */
37 #define SEL_CR          1001    /* return was pressed */
38 #define SEL_ESC         1002    /* ESC pressed */
39 #define SEL_TAB         1003    /* TAB pressed */
40 #define SEL_BACKTAB     1004    /* SHIFT-TAB pressed */
41 #define SEL_BUTTON      1005    /* a button was pressed */
42
43 /***********************************************************************
44  *
45  * Typedefs
46  *
47  ***********************************************************************/
48
49 typedef struct {
50     WINDOW      *win;           /* the window it's contained in */
51     char        *title;         /* the prompt for the input field */
52     char        *s;             /* initial value of the input field */
53     int         x, y, w, len;   /* the (y, x) position of the upperleft */
54                                 /* corner and the width <w> of the display */
55                                 /* and length <len> of the field */
56     int         attr_mask;      /* special attributes */
57 } StringObj;
58
59 typedef struct {
60     WINDOW      *win;           /* the windows it's contained in */
61     char        *title;         /* the title of the list */
62     char        **name;         /* the names of the list */
63     int         *seld;          /* the currently selected names */
64     char        *elt;           /* the current element in the list list[sel] */
65     int         x, y, w, h, n;  /* dimensions of list and # of elements (n) */
66     int         scroll, sel;    /* current position in the list */
67 } ListObj;
68
69 typedef struct {
70     WINDOW      *win;           /* the window it's contained in */
71     char        *title;         /* title for the button */
72     int         x, y, w, h;     /* its dimensions */
73     int         *pushed;        /* boolean that determines wether button was pushed */
74 } ButtonObj;
75
76 typedef struct ComposeObj {
77     int                 objtype;
78     void                *obj;
79     struct ComposeObj   *next, *prev;
80 } ComposeObj;
81
82 /**********************************************************************
83  *
84  * Prototypes
85  *
86  **********************************************************************/
87
88 void            RefreshStringObj(StringObj *so);
89 StringObj       *NewStringObj(WINDOW *win, char *title, char *s,
90                               int y, int x, int w, int len);
91 int             SelectStringObj(StringObj *so);
92 void            DelStringObj(StringObj *so);
93
94 void            RefreshListObj(ListObj *lo);
95 ListObj         *NewListObj(WINDOW *win, char *title, char **list,
96                             char *listelt, int y, int x, int h, int w, int n);
97 void            UpdateListObj(ListObj *lo, char **list, int n);
98 int             SelectListObj(ListObj *lo);
99 void            DelListObj(ListObj *obj);
100 void            MarkCurrentListObj(ListObj *lo);
101 void            MarkAllListObj(ListObj *lo);
102 void            UnMarkAllListObj(ListObj *lo);
103
104 void            RefreshButtonObj(ButtonObj *bo);
105 ButtonObj       *NewButtonObj(WINDOW *win, char *title, int *pushed,
106                               int y, int x);
107 int             SelectButtonObj(ButtonObj *bo);
108 void            DelButtonObj(ButtonObj *bo);
109 void            AddObj(ComposeObj **Obj, int objtype, void *obj);
110 void            FreeObj(ComposeObj *Obj);
111 int             ReadObj(ComposeObj *Obj);
112 int             PollObj(ComposeObj **Obj);
113 void            DelObj(ComposeObj *Obj);
114