]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bsddialog/lib/bsddialog.h
contrib/kyua: Merge vendor import
[FreeBSD/FreeBSD.git] / contrib / bsddialog / lib / bsddialog.h
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2021-2023 Alfonso Sabato Siciliano
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  */
27
28 #ifndef _LIBBSDDIALOG_H_
29 #define _LIBBSDDIALOG_H_
30
31 #include <stdbool.h>
32
33 #define LIBBSDDIALOG_VERSION     "1.0"
34
35 /* Return values */
36 #define BSDDIALOG_ERROR          -1
37 #define BSDDIALOG_OK              0
38 #define BSDDIALOG_YES             BSDDIALOG_OK
39 #define BSDDIALOG_CANCEL          1
40 #define BSDDIALOG_NO              BSDDIALOG_CANCEL
41 #define BSDDIALOG_HELP            2
42 #define BSDDIALOG_EXTRA           3
43 #define BSDDIALOG_TIMEOUT         4
44 #define BSDDIALOG_ESC             5
45 #define BSDDIALOG_LEFT1           6
46 #define BSDDIALOG_LEFT2           7
47 #define BSDDIALOG_LEFT3           8
48 #define BSDDIALOG_RIGHT1          9
49 #define BSDDIALOG_RIGHT2          10
50 #define BSDDIALOG_RIGHT3          11
51
52 /* Size and position */
53 #define BSDDIALOG_FULLSCREEN     -1
54 #define BSDDIALOG_AUTOSIZE        0
55 #define BSDDIALOG_CENTER         -1
56
57 /* Mixedgauge */
58 #define BSDDIALOG_MG_SUCCEEDED   -1
59 #define BSDDIALOG_MG_FAILED      -2
60 #define BSDDIALOG_MG_PASSED      -3
61 #define BSDDIALOG_MG_COMPLETED   -4
62 #define BSDDIALOG_MG_CHECKED     -5
63 #define BSDDIALOG_MG_DONE        -6
64 #define BSDDIALOG_MG_SKIPPED     -7
65 #define BSDDIALOG_MG_INPROGRESS  -8
66 #define BSDDIALOG_MG_BLANK       -9
67 #define BSDDIALOG_MG_NA          -10
68 #define BSDDIALOG_MG_PENDING     -11
69
70 /* Form */
71 #define BSDDIALOG_FIELDHIDDEN      1U
72 #define BSDDIALOG_FIELDREADONLY    2U
73 #define BSDDIALOG_FIELDNOCOLOR     4U
74 #define BSDDIALOG_FIELDCURSOREND   8U
75 #define BSDDIALOG_FIELDEXTEND      16U
76 #define BSDDIALOG_FIELDSINGLEBYTE  32U
77
78 struct bsddialog_conf {
79         bool ascii_lines;
80         unsigned int auto_minheight;
81         unsigned int auto_minwidth;
82         unsigned int auto_topmargin;
83         unsigned int auto_downmargin;
84         const char *bottomtitle;
85         bool clear;
86         int *get_height;
87         int *get_width;
88         bool no_lines;
89         bool shadow;
90         unsigned int sleep;
91         const char *title;
92         int y;
93         int x;
94         struct {
95                 bool enable_esc;
96                 const char *f1_file;
97                 const char *f1_message;
98         } key;
99         struct {
100                 unsigned int cols_per_row;
101                 bool escape;
102                 unsigned int tablen;
103         } text;
104         struct {
105                 bool align_left;
106                 bool no_desc;
107                 bool no_name;
108                 bool shortcut_buttons;
109         } menu;
110         struct {
111                 char securech;
112                 char *securembch;
113                 bool value_wchar;
114         } form;
115         struct {
116                 const char *format;
117         } date;
118         struct {
119                 bool always_active;
120                 const char *left1_label;
121                 const char *left2_label;
122                 const char *left3_label;
123                 bool without_ok;
124                 const char *ok_label;
125                 bool with_extra;
126                 const char *extra_label;
127                 bool without_cancel;
128                 const char *cancel_label;
129                 bool default_cancel;
130                 bool with_help;
131                 const char *help_label;
132                 const char *right1_label;
133                 const char *right2_label;
134                 const char *right3_label;
135                 const char *default_label;
136         } button;
137 };
138
139 struct bsddialog_menuitem {
140         const char *prefix;
141         bool on;
142         unsigned int depth;
143         const char *name;
144         const char *desc;
145         const char *bottomdesc;
146 };
147
148 enum bsddialog_menutype {
149         BSDDIALOG_CHECKLIST,
150         BSDDIALOG_RADIOLIST,
151         BSDDIALOG_SEPARATOR,
152 };
153
154 struct bsddialog_menugroup {
155         enum bsddialog_menutype type;
156         unsigned int nitems;
157         struct bsddialog_menuitem *items;
158         unsigned int min_on; /* unused for now */
159 };
160
161 struct bsddialog_formitem {
162         const char *label;
163         unsigned int ylabel;
164         unsigned int xlabel;
165
166         const char *init;
167         unsigned int yfield;
168         unsigned int xfield;
169         unsigned int fieldlen;
170         unsigned int maxvaluelen;
171         char *value;
172         unsigned int flags;
173
174         const char *bottomdesc;
175 };
176
177 int bsddialog_init(void);
178 int bsddialog_init_notheme(void);
179 bool bsddialog_inmode(void);
180 int bsddialog_end(void);
181 int bsddialog_backtitle(struct bsddialog_conf *conf, const char *backtitle);
182 int bsddialog_initconf(struct bsddialog_conf *conf);
183 void bsddialog_clear(unsigned int y);
184 void bsddialog_refresh(void);
185 const char *bsddialog_geterror(void);
186
187 /* Dialogs */
188 int
189 bsddialog_calendar(struct bsddialog_conf *conf, const char *text, int rows,
190     int cols, unsigned int *year, unsigned int *month, unsigned int *day);
191
192 int
193 bsddialog_checklist(struct bsddialog_conf *conf, const char *text, int rows,
194     int cols, unsigned int menurows, unsigned int nitems,
195     struct bsddialog_menuitem *items, int *focusitem);
196
197 int
198 bsddialog_datebox(struct bsddialog_conf *conf, const char *text, int rows,
199     int cols, unsigned int *year, unsigned int *month, unsigned int *day);
200
201 int
202 bsddialog_form(struct bsddialog_conf *conf, const char *text, int rows,
203     int cols, unsigned int formheight, unsigned int nitems,
204     struct bsddialog_formitem *items, int *focusitem);
205
206 int
207 bsddialog_gauge(struct bsddialog_conf *conf, const char *text, int rows,
208     int cols, unsigned int perc, int fd, const char *sep, const char *end);
209
210 int
211 bsddialog_infobox(struct bsddialog_conf *conf, const char *text, int rows,
212     int cols);
213
214 int
215 bsddialog_menu(struct bsddialog_conf *conf, const char *text, int rows,
216     int cols, unsigned int menurows, unsigned int nitems,
217     struct bsddialog_menuitem *items, int *focusitem);
218
219 int
220 bsddialog_mixedgauge(struct bsddialog_conf *conf, const char *text, int rows,
221     int cols, unsigned int mainperc, unsigned int nminibars,
222     const char **minilabels, int *minipercs);
223
224 int
225 bsddialog_mixedlist(struct bsddialog_conf *conf, const char *text, int rows,
226     int cols, unsigned int menurows, unsigned int ngroups,
227     struct bsddialog_menugroup *groups, int *focuslist, int *focusitem);
228
229 int
230 bsddialog_msgbox(struct bsddialog_conf *conf, const char *text, int rows,
231     int cols);
232
233 int
234 bsddialog_pause(struct bsddialog_conf *conf, const char *text, int rows,
235     int cols, unsigned int *seconds);
236
237 int
238 bsddialog_radiolist(struct bsddialog_conf *conf, const char *text, int rows,
239     int cols, unsigned int menurows, unsigned int nitems,
240     struct bsddialog_menuitem *items, int *focusitem);
241
242 int
243 bsddialog_rangebox(struct bsddialog_conf *conf, const char *text, int rows,
244     int cols, int min, int max, int *value);
245
246 int
247 bsddialog_textbox(struct bsddialog_conf *conf, const char *file, int rows,
248     int cols);
249
250 int
251 bsddialog_timebox(struct bsddialog_conf *conf, const char *text, int rows,
252     int cols, unsigned int *hh, unsigned int *mm, unsigned int *ss);
253
254 int
255 bsddialog_yesno(struct bsddialog_conf *conf, const char *text, int rows,
256     int cols);
257
258 #endif