xref: /freebsd/contrib/bsddialog/lib/bsddialog.3 (revision d93b4d32034df7cd70e80b496e8fe8c1bc57c629)
1*d93b4d32SBaptiste Daroussin.\"
2*d93b4d32SBaptiste Daroussin.\" Copyright (c) 2021 Alfonso Sabato Siciliano
3*d93b4d32SBaptiste Daroussin.\"
4*d93b4d32SBaptiste Daroussin.\" Redistribution and use in source and binary forms, with or without
5*d93b4d32SBaptiste Daroussin.\" modification, are permitted provided that the following conditions
6*d93b4d32SBaptiste Daroussin.\" are met:
7*d93b4d32SBaptiste Daroussin.\" 1. Redistributions of source code must retain the above copyright
8*d93b4d32SBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer.
9*d93b4d32SBaptiste Daroussin.\" 2. Redistributions in binary form must reproduce the above copyright
10*d93b4d32SBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer in the
11*d93b4d32SBaptiste Daroussin.\"    documentation and/or other materials provided with the distribution.
12*d93b4d32SBaptiste Daroussin.\"
13*d93b4d32SBaptiste Daroussin.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14*d93b4d32SBaptiste Daroussin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15*d93b4d32SBaptiste Daroussin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16*d93b4d32SBaptiste Daroussin.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17*d93b4d32SBaptiste Daroussin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18*d93b4d32SBaptiste Daroussin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19*d93b4d32SBaptiste Daroussin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20*d93b4d32SBaptiste Daroussin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21*d93b4d32SBaptiste Daroussin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22*d93b4d32SBaptiste Daroussin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23*d93b4d32SBaptiste Daroussin.\" SUCH DAMAGE.
24*d93b4d32SBaptiste Daroussin.\"
25*d93b4d32SBaptiste Daroussin.Dd December 16, 2021
26*d93b4d32SBaptiste Daroussin.Dt BSDDIALOG 3
27f499134dSBaptiste Daroussin.Os
28f499134dSBaptiste Daroussin.Sh NAME
29*d93b4d32SBaptiste Daroussin.Nm bsddialog_backtitle ,
30*d93b4d32SBaptiste Daroussin.Nm bsddialog_clearterminal ,
31*d93b4d32SBaptiste Daroussin.Nm bsddialog_color ,
32*d93b4d32SBaptiste Daroussin.Nm bsddialog_buildlist ,
33*d93b4d32SBaptiste Daroussin.Nm bsddialog_checklist ,
34*d93b4d32SBaptiste Daroussin.Nm bsddialog_datebox ,
35*d93b4d32SBaptiste Daroussin.Nm bsddialog_end ,
36*d93b4d32SBaptiste Daroussin.Nm bsddialog_form ,
37*d93b4d32SBaptiste Daroussin.Nm bsddialog_gauge ,
38*d93b4d32SBaptiste Daroussin.Nm bsddialog_geterror ,
39*d93b4d32SBaptiste Daroussin.Nm bsddialog_get_theme
40*d93b4d32SBaptiste Daroussin.Nm bsddialog_infobox ,
41*d93b4d32SBaptiste Daroussin.Nm bsddialog_init ,
42*d93b4d32SBaptiste Daroussin.Nm bsddialog_initconf ,
43*d93b4d32SBaptiste Daroussin.Nm bsddialog_menu ,
44*d93b4d32SBaptiste Daroussin.Nm bsddialog_mixedgauge ,
45*d93b4d32SBaptiste Daroussin.Nm bsddialog_mixedlist ,
46*d93b4d32SBaptiste Daroussin.Nm bsddialog_msgbox ,
47*d93b4d32SBaptiste Daroussin.Nm bsddialog_pause ,
48*d93b4d32SBaptiste Daroussin.Nm bsddialog_radiolist ,
49*d93b4d32SBaptiste Daroussin.Nm bsddialog_rangebox ,
50*d93b4d32SBaptiste Daroussin.Nm bsddialog_set_theme ,
51*d93b4d32SBaptiste Daroussin.Nm bsddialog_set_default_theme ,
52*d93b4d32SBaptiste Daroussin.Nm bsddialog_textbox ,
53*d93b4d32SBaptiste Daroussin.Nm bsddialog_timebox ,
54*d93b4d32SBaptiste Daroussin.Nm bsddialog_yesno
55*d93b4d32SBaptiste Daroussin.Nd terminal dialogs and widgets
56*d93b4d32SBaptiste Daroussin.Sh LIBRARY
57*d93b4d32SBaptiste Daroussin.Lb libbsddialog
58f499134dSBaptiste Daroussin.Sh SYNOPSIS
59*d93b4d32SBaptiste Daroussin.In bsddialog.h
60*d93b4d32SBaptiste Daroussin
61*d93b4d32SBaptiste Daroussin.Fd #define LIBBSDDIALOG_VERSION
62*d93b4d32SBaptiste Daroussin
63*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_ERROR
64*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_OK
65*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_YES
66*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_CANCEL
67*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_NO
68*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_HELP
69*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_EXTRA
70*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_ITEM_HELP
71*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_TIMEOUT
72*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_ESC
73*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_GENERIC1
74*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_GENERIC2
75*d93b4d32SBaptiste Daroussin
76*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_FULLSCREEN
77*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_AUTOSIZE
78*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_CENTER
79*d93b4d32SBaptiste Daroussin
80*d93b4d32SBaptiste Daroussin.Fd struct bsddialog_conf
81*d93b4d32SBaptiste Daroussin.Fd struct bsddialog_menuitem
82*d93b4d32SBaptiste Daroussin.Fd enum bsddialog_grouptype
83*d93b4d32SBaptiste Daroussin.Fd struct bsddialog_menugroup
84*d93b4d32SBaptiste Daroussin.Fd struct bsddialog_formitem
85*d93b4d32SBaptiste Daroussin
86*d93b4d32SBaptiste Daroussin.Ft int
87*d93b4d32SBaptiste Daroussin.Fn bsddialog_backtitle "struct bsddialog_conf *conf" "char *backtitle"
88*d93b4d32SBaptiste Daroussin.Ft int
89*d93b4d32SBaptiste Daroussin.Fo bsddialog_buildlist
90*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
91*d93b4d32SBaptiste Daroussin.Fa "char* text"
92*d93b4d32SBaptiste Daroussin.Fa "int rows"
93*d93b4d32SBaptiste Daroussin.Fa "int cols"
94*d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
95*d93b4d32SBaptiste Daroussin.Fa "int nitems"
96*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
97*d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
98*d93b4d32SBaptiste Daroussin.Fc
99*d93b4d32SBaptiste Daroussin.Ft int
100*d93b4d32SBaptiste Daroussin.Fo bsddialog_checklist
101*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
102*d93b4d32SBaptiste Daroussin.Fa "char* text"
103*d93b4d32SBaptiste Daroussin.Fa "int rows"
104*d93b4d32SBaptiste Daroussin.Fa "int cols"
105*d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
106*d93b4d32SBaptiste Daroussin.Fa "int nitems"
107*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
108*d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
109*d93b4d32SBaptiste Daroussin.Fc
110*d93b4d32SBaptiste Daroussin.Ft int
111*d93b4d32SBaptiste Daroussin.Fn bsddialog_clearterminal "void"
112*d93b4d32SBaptiste Daroussin.Ft int
113*d93b4d32SBaptiste Daroussin.Fo bsddialog_datebox"
114*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
115*d93b4d32SBaptiste Daroussin.Fa "char* text"
116*d93b4d32SBaptiste Daroussin.Fa "int rows"
117*d93b4d32SBaptiste Daroussin.Fa "int cols"
118*d93b4d32SBaptiste Daroussin.Fa "unsigned int *yy"
119*d93b4d32SBaptiste Daroussin.Fa "unsigned int *mm"
120*d93b4d32SBaptiste Daroussin.Fa "unsigned int *dd"
121*d93b4d32SBaptiste Daroussin.Fc
122*d93b4d32SBaptiste Daroussin.Ft int
123*d93b4d32SBaptiste Daroussin.Fn bsddialog_end "void"
124*d93b4d32SBaptiste Daroussin.Ft int
125*d93b4d32SBaptiste Daroussin.Fo bsddialog_form
126*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
127*d93b4d32SBaptiste Daroussin.Fa "char* text"
128*d93b4d32SBaptiste Daroussin.Fa "int rows"
129*d93b4d32SBaptiste Daroussin.Fa "int cols"
130*d93b4d32SBaptiste Daroussin.Fa "unsigned int formheight"
131*d93b4d32SBaptiste Daroussin.Fa "unsigned int nitems"
132*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_formitem *items"
133*d93b4d32SBaptiste Daroussin.Fc
134*d93b4d32SBaptiste Daroussin.Ft int
135*d93b4d32SBaptiste Daroussin.Fo bsddialog_gauge
136*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
137*d93b4d32SBaptiste Daroussin.Fa "char* text"
138*d93b4d32SBaptiste Daroussin.Fa "int rows"
139*d93b4d32SBaptiste Daroussin.Fa "int cols"
140*d93b4d32SBaptiste Daroussin.Fa "unsigned int perc"
141*d93b4d32SBaptiste Daroussin.Fc
142*d93b4d32SBaptiste Daroussin.Ft const char *
143*d93b4d32SBaptiste Daroussin.Fn bsddialog_geterror "void"
144*d93b4d32SBaptiste Daroussin.Ft int
145*d93b4d32SBaptiste Daroussin.Fo bsddialog_infobox
146*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
147*d93b4d32SBaptiste Daroussin.Fa "char* text"
148*d93b4d32SBaptiste Daroussin.Fa "int rows"
149*d93b4d32SBaptiste Daroussin.Fa "int cols"
150*d93b4d32SBaptiste Daroussin.Fc
151*d93b4d32SBaptiste Daroussin.Ft int
152*d93b4d32SBaptiste Daroussin.Fn bsddialog_init "void"
153*d93b4d32SBaptiste Daroussin.Ft int
154*d93b4d32SBaptiste Daroussin.Fn bsddialog_initconf "struct bsddialog_conf *conf"
155*d93b4d32SBaptiste Daroussin.Ft int
156*d93b4d32SBaptiste Daroussin.Fo bsddialog_menu
157*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
158*d93b4d32SBaptiste Daroussin.Fa "char* text"
159*d93b4d32SBaptiste Daroussin.Fa "int rows"
160*d93b4d32SBaptiste Daroussin.Fa "int cols"
161*d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
162*d93b4d32SBaptiste Daroussin.Fa "int nitems"
163*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
164*d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
165*d93b4d32SBaptiste Daroussin.Fc
166*d93b4d32SBaptiste Daroussin.Ft int
167*d93b4d32SBaptiste Daroussin.Fo bsddialog_mixedgauge
168*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
169*d93b4d32SBaptiste Daroussin.Fa "char* text"
170*d93b4d32SBaptiste Daroussin.Fa "int rows"
171*d93b4d32SBaptiste Daroussin.Fa "int cols"
172*d93b4d32SBaptiste Daroussin.Fa "unsigned int mainperc"
173*d93b4d32SBaptiste Daroussin.Fa "unsigned int nminibars"
174*d93b4d32SBaptiste Daroussin.Fa "char **minilabels"
175*d93b4d32SBaptiste Daroussin.Fa "int *minipercs"
176*d93b4d32SBaptiste Daroussin.Fc
177*d93b4d32SBaptiste Daroussin.Ft int
178*d93b4d32SBaptiste Daroussin.Fo bsddialog_mixedlist
179*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
180*d93b4d32SBaptiste Daroussin.Fa "char* text"
181*d93b4d32SBaptiste Daroussin.Fa "int rows"
182*d93b4d32SBaptiste Daroussin.Fa "int cols"
183*d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
184*d93b4d32SBaptiste Daroussin.Fa "int ngroups"
185*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menugroup *groups"
186*d93b4d32SBaptiste Daroussin.Fa "int *focuslist"
187*d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
188*d93b4d32SBaptiste Daroussin.Fc
189*d93b4d32SBaptiste Daroussin.Ft int
190*d93b4d32SBaptiste Daroussin.Fo bsddialog_msgbox
191*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
192*d93b4d32SBaptiste Daroussin.Fa "char* text"
193*d93b4d32SBaptiste Daroussin.Fa "int rows"
194*d93b4d32SBaptiste Daroussin.Fa "int cols"
195*d93b4d32SBaptiste Daroussin.Fc
196*d93b4d32SBaptiste Daroussin.Ft int
197*d93b4d32SBaptiste Daroussin.Fo bsddialog_pause
198*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
199*d93b4d32SBaptiste Daroussin.Fa "char* text"
200*d93b4d32SBaptiste Daroussin.Fa "int rows"
201*d93b4d32SBaptiste Daroussin.Fa "int cols"
202*d93b4d32SBaptiste Daroussin.Fa "unsigned int sec"
203*d93b4d32SBaptiste Daroussin.Fc
204*d93b4d32SBaptiste Daroussin.Ft int
205*d93b4d32SBaptiste Daroussin.Fo bsddialog_radiolist
206*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
207*d93b4d32SBaptiste Daroussin.Fa "char* text"
208*d93b4d32SBaptiste Daroussin.Fa "int rows"
209*d93b4d32SBaptiste Daroussin.Fa "int cols"
210*d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
211*d93b4d32SBaptiste Daroussin.Fa "int nitems"
212*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
213*d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
214*d93b4d32SBaptiste Daroussin.Fc
215*d93b4d32SBaptiste Daroussin.Ft int
216*d93b4d32SBaptiste Daroussin.Fo bsddialog_rangebox
217*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
218*d93b4d32SBaptiste Daroussin.Fa "char* text"
219*d93b4d32SBaptiste Daroussin.Fa "int rows"
220*d93b4d32SBaptiste Daroussin.Fa "int cols"
221*d93b4d32SBaptiste Daroussin.Fa "int min"
222*d93b4d32SBaptiste Daroussin.Fa "int max"
223*d93b4d32SBaptiste Daroussin.Fa "int *value"
224*d93b4d32SBaptiste Daroussin.Fc
225*d93b4d32SBaptiste Daroussin.Ft int
226*d93b4d32SBaptiste Daroussin.Fo bsddialog_textbox
227*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
228*d93b4d32SBaptiste Daroussin.Fa "char* file"
229*d93b4d32SBaptiste Daroussin.Fa "int rows"
230*d93b4d32SBaptiste Daroussin.Fa "int cols"
231*d93b4d32SBaptiste Daroussin.Fc
232*d93b4d32SBaptiste Daroussin.Ft int
233*d93b4d32SBaptiste Daroussin.Fo bsddialog_timebox
234*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
235*d93b4d32SBaptiste Daroussin.Fa "char* text"
236*d93b4d32SBaptiste Daroussin.Fa "int rows"
237*d93b4d32SBaptiste Daroussin.Fa "int cols"
238*d93b4d32SBaptiste Daroussin.Fa "unsigned int *hh"
239*d93b4d32SBaptiste Daroussin.Fa "unsigned int *mm"
240*d93b4d32SBaptiste Daroussin.Fa "unsigned int *ss"
241*d93b4d32SBaptiste Daroussin.Fc
242*d93b4d32SBaptiste Daroussin.Ft int
243*d93b4d32SBaptiste Daroussin.Fo bsddialog_yesno
244*d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
245*d93b4d32SBaptiste Daroussin.Fa "char* text"
246*d93b4d32SBaptiste Daroussin.Fa "int rows"
247*d93b4d32SBaptiste Daroussin.Fa "int cols"
248*d93b4d32SBaptiste Daroussin.Fc
249*d93b4d32SBaptiste Daroussin
250*d93b4d32SBaptiste Daroussin.In bsddialog_theme.h
251*d93b4d32SBaptiste Daroussin
252*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_BOLD
253*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_REVERSE
254*d93b4d32SBaptiste Daroussin.Fd #define BSDDIALOG_UNDERLINE
255*d93b4d32SBaptiste Daroussin
256*d93b4d32SBaptiste Daroussin.Fd enum bsddialog_color
257*d93b4d32SBaptiste Daroussin.Fd enum bsddialog_default_theme
258*d93b4d32SBaptiste Daroussin.Fd struct bsddialog_theme
259*d93b4d32SBaptiste Daroussin
260*d93b4d32SBaptiste Daroussin.Ft int
261*d93b4d32SBaptiste Daroussin.Fo bsddialog_color
262*d93b4d32SBaptiste Daroussin.Fa "enum bsddialog_color background"
263*d93b4d32SBaptiste Daroussin.Fa "enum bsddialog_color foreground"
264*d93b4d32SBaptiste Daroussin.Fa "unsigned int flags"
265*d93b4d32SBaptiste Daroussin.Fc
266*d93b4d32SBaptiste Daroussin.Ft int
267*d93b4d32SBaptiste Daroussin.Fn bsddialog_get_theme "struct bsddialog_theme *theme"
268*d93b4d32SBaptiste Daroussin.Ft int
269*d93b4d32SBaptiste Daroussin.Fn bsddialog_set_default_theme "enum bsddialog_default_theme theme"
270*d93b4d32SBaptiste Daroussin.Ft int
271*d93b4d32SBaptiste Daroussin.Fn bsddialog_set_theme "struct bsddialog_theme *theme"
272f499134dSBaptiste Daroussin.Sh DESCRIPTION
273f499134dSBaptiste DaroussinThe
274*d93b4d32SBaptiste Daroussin.Nm BSDDialog
275*d93b4d32SBaptiste Daroussinlibrary is an API to write a tools with a Text User Interface. It can build
276*d93b4d32SBaptiste Daroussindialogs and widgets: to show messages, to get input and to inform about a
277*d93b4d32SBaptiste Daroussincomputation status.
278*d93b4d32SBaptiste Daroussin.Pp
279*d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
280*d93b4d32SBaptiste Daroussin/* size and position */
281*d93b4d32SBaptiste Daroussin#define BSDDIALOG_FULLSCREEN	-1
282*d93b4d32SBaptiste Daroussin#define BSDDIALOG_AUTOSIZE	 0
283*d93b4d32SBaptiste Daroussin#define BSDDIALOG_CENTER	-1
284*d93b4d32SBaptiste Daroussin
285*d93b4d32SBaptiste Daroussinstruct bsddialog_conf {
286*d93b4d32SBaptiste Daroussin	bool ascii_lines;
287*d93b4d32SBaptiste Daroussin	unsigned int aspect_ratio;
288*d93b4d32SBaptiste Daroussin	unsigned int auto_minheight;
289*d93b4d32SBaptiste Daroussin	unsigned int auto_minwidth;
290*d93b4d32SBaptiste Daroussin	char *bottomtitle;
291*d93b4d32SBaptiste Daroussin	bool clear;
292*d93b4d32SBaptiste Daroussin	char *f1_file;
293*d93b4d32SBaptiste Daroussin	char *f1_message;
294*d93b4d32SBaptiste Daroussin	int  *get_height;
295*d93b4d32SBaptiste Daroussin	int  *get_width;
296*d93b4d32SBaptiste Daroussin	bool no_lines;
297*d93b4d32SBaptiste Daroussin	bool shadow;
298*d93b4d32SBaptiste Daroussin	unsigned int sleep;
299*d93b4d32SBaptiste Daroussin	char *title;
300*d93b4d32SBaptiste Daroussin	int  y;
301*d93b4d32SBaptiste Daroussin	int  x;
302*d93b4d32SBaptiste Daroussin	struct {
303*d93b4d32SBaptiste Daroussin		bool colors;
304*d93b4d32SBaptiste Daroussin	} text;
305*d93b4d32SBaptiste Daroussin	struct {
306*d93b4d32SBaptiste Daroussin		bool align_left;
307*d93b4d32SBaptiste Daroussin		char *default_item;
308*d93b4d32SBaptiste Daroussin		bool no_desc;
309*d93b4d32SBaptiste Daroussin		bool no_name;
310*d93b4d32SBaptiste Daroussin		bool shortcut_buttons;
311*d93b4d32SBaptiste Daroussin	} menu;
312*d93b4d32SBaptiste Daroussin	struct {
313*d93b4d32SBaptiste Daroussin		int  securech;
314*d93b4d32SBaptiste Daroussin		bool value_withcancel;
315*d93b4d32SBaptiste Daroussin		bool value_withextra;
316*d93b4d32SBaptiste Daroussin		bool value_withhelp;
317*d93b4d32SBaptiste Daroussin	} form;
318*d93b4d32SBaptiste Daroussin	struct {
319*d93b4d32SBaptiste Daroussin		bool without_ok;
320*d93b4d32SBaptiste Daroussin		char *ok_label;
321*d93b4d32SBaptiste Daroussin		bool with_extra;
322*d93b4d32SBaptiste Daroussin		char *extra_label;
323*d93b4d32SBaptiste Daroussin		bool without_cancel;
324*d93b4d32SBaptiste Daroussin		char *cancel_label;
325*d93b4d32SBaptiste Daroussin		bool default_cancel;
326*d93b4d32SBaptiste Daroussin		bool with_help;
327*d93b4d32SBaptiste Daroussin		char *help_label;
328*d93b4d32SBaptiste Daroussin		char *exit_label;
329*d93b4d32SBaptiste Daroussin		char *generic1_label;
330*d93b4d32SBaptiste Daroussin		char *generic2_label;
331*d93b4d32SBaptiste Daroussin		char *default_label;
332*d93b4d32SBaptiste Daroussin	} button;
333*d93b4d32SBaptiste Daroussin};
334*d93b4d32SBaptiste Daroussin.Ed
335*d93b4d32SBaptiste Daroussin.Pp
336*d93b4d32SBaptiste Daroussin
337*d93b4d32SBaptiste Daroussin.Ss Dialogs
338*d93b4d32SBaptiste Daroussin.Pp
339*d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
340*d93b4d32SBaptiste Daroussinstruct bsddialog_menuitem {
341*d93b4d32SBaptiste Daroussin	char *prefix;
342*d93b4d32SBaptiste Daroussin	bool on;
343*d93b4d32SBaptiste Daroussin	unsigned int depth;
344*d93b4d32SBaptiste Daroussin	char *name;
345*d93b4d32SBaptiste Daroussin	char *desc;
346*d93b4d32SBaptiste Daroussin	char *bottomdesc;
347*d93b4d32SBaptiste Daroussin};
348*d93b4d32SBaptiste Daroussin
349*d93b4d32SBaptiste Daroussinenum bsddialog_grouptype {
350*d93b4d32SBaptiste Daroussin	BSDDIALOG_CHECKLIST,
351*d93b4d32SBaptiste Daroussin	BSDDIALOG_RADIOLIST,
352*d93b4d32SBaptiste Daroussin	BSDDIALOG_SEPARATOR,
353*d93b4d32SBaptiste Daroussin};
354*d93b4d32SBaptiste Daroussin
355*d93b4d32SBaptiste Daroussinstruct bsddialog_menugroup {
356*d93b4d32SBaptiste Daroussin	enum bsddialog_grouptype type;
357*d93b4d32SBaptiste Daroussin	unsigned int nitems;
358*d93b4d32SBaptiste Daroussin	struct bsddialog_menuitem *items;
359*d93b4d32SBaptiste Daroussin};
360*d93b4d32SBaptiste Daroussin
361*d93b4d32SBaptiste Daroussinstruct bsddialog_formitem {
362*d93b4d32SBaptiste Daroussin	char *label;
363*d93b4d32SBaptiste Daroussin	unsigned int ylabel;
364*d93b4d32SBaptiste Daroussin	unsigned int xlabel;
365*d93b4d32SBaptiste Daroussin
366*d93b4d32SBaptiste Daroussin	char *init;
367*d93b4d32SBaptiste Daroussin	unsigned int yfield;
368*d93b4d32SBaptiste Daroussin	unsigned int xfield;
369*d93b4d32SBaptiste Daroussin	unsigned int fieldlen;
370*d93b4d32SBaptiste Daroussin	unsigned int maxvaluelen;
371*d93b4d32SBaptiste Daroussin	char *value; /* allocated memory */
372*d93b4d32SBaptiste Daroussin#define BSDDIALOG_FIELDHIDDEN    1U
373*d93b4d32SBaptiste Daroussin#define BSDDIALOG_FIELDREADONLY  2U
374*d93b4d32SBaptiste Daroussin	unsigned int flags;
375*d93b4d32SBaptiste Daroussin
376*d93b4d32SBaptiste Daroussin	char *bottomdesc;
377*d93b4d32SBaptiste Daroussin};
378*d93b4d32SBaptiste Daroussin.Ed
379*d93b4d32SBaptiste Daroussin.Pp
380*d93b4d32SBaptiste Daroussin
381*d93b4d32SBaptiste Daroussin.Ss Theme
382*d93b4d32SBaptiste Daroussin.Pp
383*d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
384*d93b4d32SBaptiste Daroussin/* f_ focus/active element */
385*d93b4d32SBaptiste Daroussinstruct bsddialog_theme {
386*d93b4d32SBaptiste Daroussin	struct {
387*d93b4d32SBaptiste Daroussin		int color;
388*d93b4d32SBaptiste Daroussin	} terminal;
389*d93b4d32SBaptiste Daroussin	struct {
390*d93b4d32SBaptiste Daroussin		int color;
391*d93b4d32SBaptiste Daroussin		unsigned int h;
392*d93b4d32SBaptiste Daroussin		unsigned int w;
393*d93b4d32SBaptiste Daroussin	} shadow;
394*d93b4d32SBaptiste Daroussin	struct {
395*d93b4d32SBaptiste Daroussin		int  color;
396*d93b4d32SBaptiste Daroussin		bool delimtitle;
397*d93b4d32SBaptiste Daroussin		int  titlecolor;
398*d93b4d32SBaptiste Daroussin		int  lineraisecolor;
399*d93b4d32SBaptiste Daroussin		int  linelowercolor;
400*d93b4d32SBaptiste Daroussin		int  bottomtitlecolor;
401*d93b4d32SBaptiste Daroussin	} dialog;
402*d93b4d32SBaptiste Daroussin	struct {
403*d93b4d32SBaptiste Daroussin		unsigned int hmargin;
404*d93b4d32SBaptiste Daroussin	} text;
405*d93b4d32SBaptiste Daroussin	struct {
406*d93b4d32SBaptiste Daroussin		int arrowcolor;
407*d93b4d32SBaptiste Daroussin		int selectorcolor;
408*d93b4d32SBaptiste Daroussin		int f_namecolor;
409*d93b4d32SBaptiste Daroussin		int namecolor;
410*d93b4d32SBaptiste Daroussin		int f_desccolor;
411*d93b4d32SBaptiste Daroussin		int desccolor;
412*d93b4d32SBaptiste Daroussin		int namesepcolor;
413*d93b4d32SBaptiste Daroussin		int descsepcolor;
414*d93b4d32SBaptiste Daroussin		int f_shortcutcolor;
415*d93b4d32SBaptiste Daroussin		int shortcutcolor;
416*d93b4d32SBaptiste Daroussin	} menu;
417*d93b4d32SBaptiste Daroussin	struct {
418*d93b4d32SBaptiste Daroussin		int f_fieldcolor;
419*d93b4d32SBaptiste Daroussin		int fieldcolor;
420*d93b4d32SBaptiste Daroussin		int readonlycolor;
421*d93b4d32SBaptiste Daroussin	} form;
422*d93b4d32SBaptiste Daroussin	struct {
423*d93b4d32SBaptiste Daroussin		int f_color;
424*d93b4d32SBaptiste Daroussin		int color;
425*d93b4d32SBaptiste Daroussin	} bar;
426*d93b4d32SBaptiste Daroussin	struct {
427*d93b4d32SBaptiste Daroussin		unsigned int space;
428*d93b4d32SBaptiste Daroussin		int leftch;
429*d93b4d32SBaptiste Daroussin		int rightch;
430*d93b4d32SBaptiste Daroussin		int delimcolor;
431*d93b4d32SBaptiste Daroussin		int f_delimcolor;
432*d93b4d32SBaptiste Daroussin		int color;
433*d93b4d32SBaptiste Daroussin		int f_color;
434*d93b4d32SBaptiste Daroussin		int shortcutcolor;
435*d93b4d32SBaptiste Daroussin		int f_shortcutcolor;
436*d93b4d32SBaptiste Daroussin	} button;
437*d93b4d32SBaptiste Daroussin};
438*d93b4d32SBaptiste Daroussin
439*d93b4d32SBaptiste Daroussinenum bsddialog_default_theme {
440*d93b4d32SBaptiste Daroussin	BSDDIALOG_THEME_BLACKWHITE,
441*d93b4d32SBaptiste Daroussin	BSDDIALOG_THEME_BSDDIALOG,
442*d93b4d32SBaptiste Daroussin	BSDDIALOG_THEME_DEFAULT,
443*d93b4d32SBaptiste Daroussin	BSDDIALOG_THEME_DIALOG,
444*d93b4d32SBaptiste Daroussin};
445*d93b4d32SBaptiste Daroussin
446*d93b4d32SBaptiste Daroussinenum bsddialog_color {
447*d93b4d32SBaptiste Daroussin	BSDDIALOG_BLACK = 0,
448*d93b4d32SBaptiste Daroussin	BSDDIALOG_RED,
449*d93b4d32SBaptiste Daroussin	BSDDIALOG_GREEN,
450*d93b4d32SBaptiste Daroussin	BSDDIALOG_YELLOW,
451*d93b4d32SBaptiste Daroussin	BSDDIALOG_BLUE,
452*d93b4d32SBaptiste Daroussin	BSDDIALOG_MAGENTA,
453*d93b4d32SBaptiste Daroussin	BSDDIALOG_CYAN,
454*d93b4d32SBaptiste Daroussin	BSDDIALOG_WHITE,
455*d93b4d32SBaptiste Daroussin};
456*d93b4d32SBaptiste Daroussin
457*d93b4d32SBaptiste Daroussin#define BSDDIALOG_BOLD         1U
458*d93b4d32SBaptiste Daroussin#define BSDDIALOG_REVERSE      2U
459*d93b4d32SBaptiste Daroussin#define BSDDIALOG_UNDERLINE    4U
460*d93b4d32SBaptiste Daroussin.Ed
461*d93b4d32SBaptiste Daroussin.Pp
462*d93b4d32SBaptiste Daroussin
463*d93b4d32SBaptiste Daroussin.Sh RETURN VALUES
464*d93b4d32SBaptiste DaroussinThe sysctlmif_oidbyname(),	sysctlmif_oidextendedbyname(),
465*d93b4d32SBaptiste Daroussin     sysctlmif_name(), sysctlmif_desc(), sysctlmif_descbyname(),
466*d93b4d32SBaptiste Daroussin     sysctlmif_label(),	sysctlmif_labelbyname(), sysctlmif_fmt(),
467*d93b4d32SBaptiste Daroussin     sysctlmif_fmtbyname(), sysctlmif_oidbyname0(), sysctlmif_oidbyname1(),
468*d93b4d32SBaptiste Daroussin     sysctlmif_oidbyname2(), sysctlmif_oidbyname3(), sysctlmif_oidbyname4(),
469*d93b4d32SBaptiste Daroussin     sysctlmif_oidbyname5(), sysctlmif_oidbyname6(), and
470*d93b4d32SBaptiste Daroussin     sysctlmif_oidbyname7() functions return the value 0 if successful;	other-
471*d93b4d32SBaptiste Daroussin     wise the value -1 is returned and the global variable errno is set	to in-
472*d93b4d32SBaptiste Daroussin     dicate the	error.
473*d93b4d32SBaptiste Daroussin
474*d93b4d32SBaptiste Daroussin
475*d93b4d32SBaptiste Daroussinfunctions return NULL upon	error or a pointer to allo-
476*d93b4d32SBaptiste Daroussin     cated memory for success.
477*d93b4d32SBaptiste Daroussin
478*d93b4d32SBaptiste Daroussin.Sh EXAMPLES
479*d93b4d32SBaptiste DaroussinComplete set of examples:
480*d93b4d32SBaptiste Daroussin.Lk https://gitlab.com/alfix/bsddialog/-/blob/main/examples_library/
481*d93b4d32SBaptiste Daroussin.Pp
482*d93b4d32SBaptiste DaroussinIf installed:
483*d93b4d32SBaptiste Daroussin.Dl /usr/local/share/examples/libbsddialog
484*d93b4d32SBaptiste Daroussin.Pp
485*d93b4d32SBaptiste Daroussin"Yes-No Question" Example:
486*d93b4d32SBaptiste Daroussin.Pp
487*d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
488*d93b4d32SBaptiste Daroussinint output;
489*d93b4d32SBaptiste Daroussinstruct bsddialog_conf conf;
490*d93b4d32SBaptiste Daroussin
491*d93b4d32SBaptiste Daroussinbsddialog_initconf(&conf);
492*d93b4d32SBaptiste Daroussinconf.title = "yesno";
493*d93b4d32SBaptiste Daroussinif (bsddialog_init() == BSDDIALOG_ERROR)
494*d93b4d32SBaptiste Daroussin	return (1);
495*d93b4d32SBaptiste Daroussin
496*d93b4d32SBaptiste Daroussinoutput = bsddialog_yesno(&conf, "Example", 7, 25);
497*d93b4d32SBaptiste Daroussin
498*d93b4d32SBaptiste Daroussinbsddialog_end();
499*d93b4d32SBaptiste Daroussin
500*d93b4d32SBaptiste Daroussinswitch (output) {
501*d93b4d32SBaptiste Daroussincase BSDDIALOG_YES:
502*d93b4d32SBaptiste Daroussin	printf("OK\\n");
503*d93b4d32SBaptiste Daroussin	break;
504*d93b4d32SBaptiste Daroussincase BSDDIALOG_NO
505*d93b4d32SBaptiste Daroussin	printf("NO\\n");
506*d93b4d32SBaptiste Daroussin	break;
507*d93b4d32SBaptiste Daroussincase BSDDIALOG_ESC;
508*d93b4d32SBaptiste Daroussin	printf("ESC\\n");
509*d93b4d32SBaptiste Daroussin	break;
510*d93b4d32SBaptiste Daroussincase BSDDIALOG_ERROR:
511*d93b4d32SBaptiste Daroussin	printf("Error: %s\\n", bsddialog_geterror());
512*d93b4d32SBaptiste Daroussin}
513*d93b4d32SBaptiste Daroussin.Ed
514*d93b4d32SBaptiste Daroussin.Sh SEE ALSO
515*d93b4d32SBaptiste Daroussin.Xr bsddialog 1
516*d93b4d32SBaptiste Daroussin.Sh HISTORY
517*d93b4d32SBaptiste DaroussinThe
518*d93b4d32SBaptiste Daroussin.Nm bsddialog
519*d93b4d32SBaptiste Daroussinlibrary first appeared in
520*d93b4d32SBaptiste Daroussin.Fx 14.0 .
521*d93b4d32SBaptiste Daroussin.Sh AUTHORS
522*d93b4d32SBaptiste Daroussin.Nm bsddialog
523*d93b4d32SBaptiste Daroussinwas written by
524*d93b4d32SBaptiste Daroussin.An Alfonso Sabato Siciliano Aq Mt alf.siciliano@gmail.com .
525*d93b4d32SBaptiste Daroussin.Sh CAVEATS
526*d93b4d32SBaptiste DaroussinSee
527*d93b4d32SBaptiste Daroussin.Xr bsddialog
528*d93b4d32SBaptiste Daroussin.Sh BUGS
529*d93b4d32SBaptiste DaroussinSee
530*d93b4d32SBaptiste Daroussin.Xr bsddialog 1
531