xref: /freebsd/contrib/bsddialog/lib/bsddialog.3 (revision 263660c061ac76d449cbca7bdd0db2ecdfad76d9)
1d93b4d32SBaptiste Daroussin.\"
2*263660c0SAlfonso Siciliano.\" Copyright (c) 2021-2022 Alfonso Sabato Siciliano
3d93b4d32SBaptiste Daroussin.\"
4d93b4d32SBaptiste Daroussin.\" Redistribution and use in source and binary forms, with or without
5d93b4d32SBaptiste Daroussin.\" modification, are permitted provided that the following conditions
6d93b4d32SBaptiste Daroussin.\" are met:
7d93b4d32SBaptiste Daroussin.\" 1. Redistributions of source code must retain the above copyright
8d93b4d32SBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer.
9d93b4d32SBaptiste Daroussin.\" 2. Redistributions in binary form must reproduce the above copyright
10d93b4d32SBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer in the
11d93b4d32SBaptiste Daroussin.\"    documentation and/or other materials provided with the distribution.
12d93b4d32SBaptiste Daroussin.\"
13d93b4d32SBaptiste Daroussin.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14d93b4d32SBaptiste Daroussin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15d93b4d32SBaptiste Daroussin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16d93b4d32SBaptiste Daroussin.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17d93b4d32SBaptiste Daroussin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18d93b4d32SBaptiste Daroussin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19d93b4d32SBaptiste Daroussin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20d93b4d32SBaptiste Daroussin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21d93b4d32SBaptiste Daroussin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22d93b4d32SBaptiste Daroussin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23d93b4d32SBaptiste Daroussin.\" SUCH DAMAGE.
24d93b4d32SBaptiste Daroussin.\"
25*263660c0SAlfonso Siciliano.Dd January 23, 2022
26d93b4d32SBaptiste Daroussin.Dt BSDDIALOG 3
27f499134dSBaptiste Daroussin.Os
28f499134dSBaptiste Daroussin.Sh NAME
29d93b4d32SBaptiste Daroussin.Nm bsddialog_backtitle ,
30d93b4d32SBaptiste Daroussin.Nm bsddialog_clearterminal ,
31d93b4d32SBaptiste Daroussin.Nm bsddialog_color ,
32d93b4d32SBaptiste Daroussin.Nm bsddialog_checklist ,
33d93b4d32SBaptiste Daroussin.Nm bsddialog_datebox ,
34d93b4d32SBaptiste Daroussin.Nm bsddialog_end ,
35d93b4d32SBaptiste Daroussin.Nm bsddialog_form ,
36d93b4d32SBaptiste Daroussin.Nm bsddialog_gauge ,
37d93b4d32SBaptiste Daroussin.Nm bsddialog_geterror ,
38*263660c0SAlfonso Siciliano.Nm bsddialog_get_theme ,
39d93b4d32SBaptiste Daroussin.Nm bsddialog_infobox ,
40d93b4d32SBaptiste Daroussin.Nm bsddialog_init ,
41d93b4d32SBaptiste Daroussin.Nm bsddialog_initconf ,
42d93b4d32SBaptiste Daroussin.Nm bsddialog_menu ,
43d93b4d32SBaptiste Daroussin.Nm bsddialog_mixedgauge ,
44d93b4d32SBaptiste Daroussin.Nm bsddialog_mixedlist ,
45d93b4d32SBaptiste Daroussin.Nm bsddialog_msgbox ,
46d93b4d32SBaptiste Daroussin.Nm bsddialog_pause ,
47d93b4d32SBaptiste Daroussin.Nm bsddialog_radiolist ,
48d93b4d32SBaptiste Daroussin.Nm bsddialog_rangebox ,
49d93b4d32SBaptiste Daroussin.Nm bsddialog_set_theme ,
50d93b4d32SBaptiste Daroussin.Nm bsddialog_set_default_theme ,
51d93b4d32SBaptiste Daroussin.Nm bsddialog_textbox ,
52d93b4d32SBaptiste Daroussin.Nm bsddialog_timebox ,
53d93b4d32SBaptiste Daroussin.Nm bsddialog_yesno
54*263660c0SAlfonso Siciliano.Nd TUI dialogs
55d93b4d32SBaptiste Daroussin.Sh LIBRARY
56d93b4d32SBaptiste Daroussin.Lb libbsddialog
57f499134dSBaptiste Daroussin.Sh SYNOPSIS
58d93b4d32SBaptiste Daroussin.In bsddialog.h
59d93b4d32SBaptiste Daroussin.Ft int
60*263660c0SAlfonso Siciliano.Fn bsddialog_backtitle "struct bsddialog_conf *conf" "const char *backtitle"
61d93b4d32SBaptiste Daroussin.Ft int
62d93b4d32SBaptiste Daroussin.Fo bsddialog_checklist
63d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
64*263660c0SAlfonso Siciliano.Fa "const char *text"
65d93b4d32SBaptiste Daroussin.Fa "int rows"
66d93b4d32SBaptiste Daroussin.Fa "int cols"
67d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
68*263660c0SAlfonso Siciliano.Fa "unsigned int nitems"
69d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
70d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
71d93b4d32SBaptiste Daroussin.Fc
72d93b4d32SBaptiste Daroussin.Ft int
73d93b4d32SBaptiste Daroussin.Fn bsddialog_clearterminal "void"
74d93b4d32SBaptiste Daroussin.Ft int
75d93b4d32SBaptiste Daroussin.Fo bsddialog_datebox"
76d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
77*263660c0SAlfonso Siciliano.Fa "const char *text"
78d93b4d32SBaptiste Daroussin.Fa "int rows"
79d93b4d32SBaptiste Daroussin.Fa "int cols"
80d93b4d32SBaptiste Daroussin.Fa "unsigned int *yy"
81d93b4d32SBaptiste Daroussin.Fa "unsigned int *mm"
82d93b4d32SBaptiste Daroussin.Fa "unsigned int *dd"
83d93b4d32SBaptiste Daroussin.Fc
84d93b4d32SBaptiste Daroussin.Ft int
85d93b4d32SBaptiste Daroussin.Fn bsddialog_end "void"
86d93b4d32SBaptiste Daroussin.Ft int
87d93b4d32SBaptiste Daroussin.Fo bsddialog_form
88d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
89*263660c0SAlfonso Siciliano.Fa "const char *text"
90d93b4d32SBaptiste Daroussin.Fa "int rows"
91d93b4d32SBaptiste Daroussin.Fa "int cols"
92*263660c0SAlfonso Siciliano.Fa "unsigned int formrows"
93d93b4d32SBaptiste Daroussin.Fa "unsigned int nitems"
94d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_formitem *items"
95d93b4d32SBaptiste Daroussin.Fc
96d93b4d32SBaptiste Daroussin.Ft int
97d93b4d32SBaptiste Daroussin.Fo bsddialog_gauge
98d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
99*263660c0SAlfonso Siciliano.Fa "const char *text"
100d93b4d32SBaptiste Daroussin.Fa "int rows"
101d93b4d32SBaptiste Daroussin.Fa "int cols"
102d93b4d32SBaptiste Daroussin.Fa "unsigned int perc"
103*263660c0SAlfonso Siciliano.Fa "int fd"
104*263660c0SAlfonso Siciliano.Fa "const char *sep"
105d93b4d32SBaptiste Daroussin.Fc
106d93b4d32SBaptiste Daroussin.Ft const char *
107d93b4d32SBaptiste Daroussin.Fn bsddialog_geterror "void"
108d93b4d32SBaptiste Daroussin.Ft int
109d93b4d32SBaptiste Daroussin.Fo bsddialog_infobox
110d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
111*263660c0SAlfonso Siciliano.Fa "const char *text"
112d93b4d32SBaptiste Daroussin.Fa "int rows"
113d93b4d32SBaptiste Daroussin.Fa "int cols"
114d93b4d32SBaptiste Daroussin.Fc
115d93b4d32SBaptiste Daroussin.Ft int
116d93b4d32SBaptiste Daroussin.Fn bsddialog_init "void"
117d93b4d32SBaptiste Daroussin.Ft int
118d93b4d32SBaptiste Daroussin.Fn bsddialog_initconf "struct bsddialog_conf *conf"
119d93b4d32SBaptiste Daroussin.Ft int
120d93b4d32SBaptiste Daroussin.Fo bsddialog_menu
121d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
122*263660c0SAlfonso Siciliano.Fa "const char *text"
123d93b4d32SBaptiste Daroussin.Fa "int rows"
124d93b4d32SBaptiste Daroussin.Fa "int cols"
125d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
126*263660c0SAlfonso Siciliano.Fa "unsigned int nitems"
127d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
128d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
129d93b4d32SBaptiste Daroussin.Fc
130d93b4d32SBaptiste Daroussin.Ft int
131d93b4d32SBaptiste Daroussin.Fo bsddialog_mixedgauge
132d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
133*263660c0SAlfonso Siciliano.Fa "const char *text"
134d93b4d32SBaptiste Daroussin.Fa "int rows"
135d93b4d32SBaptiste Daroussin.Fa "int cols"
136d93b4d32SBaptiste Daroussin.Fa "unsigned int mainperc"
137d93b4d32SBaptiste Daroussin.Fa "unsigned int nminibars"
138d93b4d32SBaptiste Daroussin.Fa "char **minilabels"
139d93b4d32SBaptiste Daroussin.Fa "int *minipercs"
140d93b4d32SBaptiste Daroussin.Fc
141d93b4d32SBaptiste Daroussin.Ft int
142d93b4d32SBaptiste Daroussin.Fo bsddialog_mixedlist
143d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
144*263660c0SAlfonso Siciliano.Fa "const char *text"
145d93b4d32SBaptiste Daroussin.Fa "int rows"
146d93b4d32SBaptiste Daroussin.Fa "int cols"
147d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
148*263660c0SAlfonso Siciliano.Fa "unsigned int ngroups"
149d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menugroup *groups"
150d93b4d32SBaptiste Daroussin.Fa "int *focuslist"
151d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
152d93b4d32SBaptiste Daroussin.Fc
153d93b4d32SBaptiste Daroussin.Ft int
154d93b4d32SBaptiste Daroussin.Fo bsddialog_msgbox
155d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
156*263660c0SAlfonso Siciliano.Fa "const char *text"
157d93b4d32SBaptiste Daroussin.Fa "int rows"
158d93b4d32SBaptiste Daroussin.Fa "int cols"
159d93b4d32SBaptiste Daroussin.Fc
160d93b4d32SBaptiste Daroussin.Ft int
161d93b4d32SBaptiste Daroussin.Fo bsddialog_pause
162d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
163*263660c0SAlfonso Siciliano.Fa "const char *text"
164d93b4d32SBaptiste Daroussin.Fa "int rows"
165d93b4d32SBaptiste Daroussin.Fa "int cols"
166*263660c0SAlfonso Siciliano.Fa "unsigned int seconds"
167d93b4d32SBaptiste Daroussin.Fc
168d93b4d32SBaptiste Daroussin.Ft int
169d93b4d32SBaptiste Daroussin.Fo bsddialog_radiolist
170d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
171*263660c0SAlfonso Siciliano.Fa "const char *text"
172d93b4d32SBaptiste Daroussin.Fa "int rows"
173d93b4d32SBaptiste Daroussin.Fa "int cols"
174d93b4d32SBaptiste Daroussin.Fa "unsigned int menurows"
175*263660c0SAlfonso Siciliano.Fa "unsigned int nitems"
176d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_menuitem *items"
177d93b4d32SBaptiste Daroussin.Fa "int *focusitem"
178d93b4d32SBaptiste Daroussin.Fc
179d93b4d32SBaptiste Daroussin.Ft int
180d93b4d32SBaptiste Daroussin.Fo bsddialog_rangebox
181d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
182*263660c0SAlfonso Siciliano.Fa "const char *text"
183d93b4d32SBaptiste Daroussin.Fa "int rows"
184d93b4d32SBaptiste Daroussin.Fa "int cols"
185d93b4d32SBaptiste Daroussin.Fa "int min"
186d93b4d32SBaptiste Daroussin.Fa "int max"
187d93b4d32SBaptiste Daroussin.Fa "int *value"
188d93b4d32SBaptiste Daroussin.Fc
189d93b4d32SBaptiste Daroussin.Ft int
190d93b4d32SBaptiste Daroussin.Fo bsddialog_textbox
191d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
192*263660c0SAlfonso Siciliano.Fa "const char *file"
193d93b4d32SBaptiste Daroussin.Fa "int rows"
194d93b4d32SBaptiste Daroussin.Fa "int cols"
195d93b4d32SBaptiste Daroussin.Fc
196d93b4d32SBaptiste Daroussin.Ft int
197d93b4d32SBaptiste Daroussin.Fo bsddialog_timebox
198d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
199*263660c0SAlfonso Siciliano.Fa "const char *text"
200d93b4d32SBaptiste Daroussin.Fa "int rows"
201d93b4d32SBaptiste Daroussin.Fa "int cols"
202d93b4d32SBaptiste Daroussin.Fa "unsigned int *hh"
203d93b4d32SBaptiste Daroussin.Fa "unsigned int *mm"
204d93b4d32SBaptiste Daroussin.Fa "unsigned int *ss"
205d93b4d32SBaptiste Daroussin.Fc
206d93b4d32SBaptiste Daroussin.Ft int
207d93b4d32SBaptiste Daroussin.Fo bsddialog_yesno
208d93b4d32SBaptiste Daroussin.Fa "struct bsddialog_conf *conf"
209*263660c0SAlfonso Siciliano.Fa "const char *text"
210d93b4d32SBaptiste Daroussin.Fa "int rows"
211d93b4d32SBaptiste Daroussin.Fa "int cols"
212d93b4d32SBaptiste Daroussin.Fc
213d93b4d32SBaptiste Daroussin.In bsddialog_theme.h
214d93b4d32SBaptiste Daroussin.Ft int
215d93b4d32SBaptiste Daroussin.Fo bsddialog_color
216d93b4d32SBaptiste Daroussin.Fa "enum bsddialog_color foreground"
217*263660c0SAlfonso Siciliano.Fa "enum bsddialog_color background"
218d93b4d32SBaptiste Daroussin.Fa "unsigned int flags"
219d93b4d32SBaptiste Daroussin.Fc
220d93b4d32SBaptiste Daroussin.Ft int
221d93b4d32SBaptiste Daroussin.Fn bsddialog_get_theme "struct bsddialog_theme *theme"
222d93b4d32SBaptiste Daroussin.Ft int
223d93b4d32SBaptiste Daroussin.Fn bsddialog_set_default_theme "enum bsddialog_default_theme theme"
224d93b4d32SBaptiste Daroussin.Ft int
225d93b4d32SBaptiste Daroussin.Fn bsddialog_set_theme "struct bsddialog_theme *theme"
226f499134dSBaptiste Daroussin.Sh DESCRIPTION
227f499134dSBaptiste DaroussinThe
228*263660c0SAlfonso Siciliano.Nm bsddialog
229*263660c0SAlfonso Sicilianolibrary provides an API to build Text User Interface dialogs and widgets: to
230*263660c0SAlfonso Sicilianodisplay messages, to get input and to inform about a computation status.
231*263660c0SAlfonso Siciliano.Pp
232*263660c0SAlfonso Siciliano.Fn bsddialog_init
233*263660c0SAlfonso Sicilianoinitializes the library, the only functions that can be called before is
234*263660c0SAlfonso Siciliano.Fn bsddialog_initconf
235*263660c0SAlfonso Sicilianodescribed later.
236*263660c0SAlfonso SicilianoAfter the initialization the input and output should be handled via the library
237*263660c0SAlfonso SicilianoAPI.
238*263660c0SAlfonso Siciliano.Fn bsddialog_end
239*263660c0SAlfonso Sicilianorestores the screen like before
240*263660c0SAlfonso Siciliano.Fn bsddialog_init ,
241*263660c0SAlfonso Sicilianothen it is not possible to use the library functions.
242*263660c0SAlfonso Siciliano.Pp
243*263660c0SAlfonso Siciliano.Fn bsddialog_error
244*263660c0SAlfonso Sicilianoreturns a string to describe the last error, it should be called after a
245*263660c0SAlfonso Siciliano.Dv BSDDIALOG_ERROR
246*263660c0SAlfonso Sicilianoreturned value.
247*263660c0SAlfonso Siciliano.Fn bsddialog_clearterminal
248*263660c0SAlfonso Sicilianoclears the screen.
249*263660c0SAlfonso Siciliano.Fn bsddialog_backtitle
250*263660c0SAlfonso Sicilianoprints
251*263660c0SAlfonso Siciliano.Fa backtitle
252*263660c0SAlfonso Sicilianoon the top of the screen, it is possible to set
253*263660c0SAlfonso Siciliano.Fa conf.ascii_lines
254*263660c0SAlfonso Sicilianoand
255*263660c0SAlfonso Siciliano.Fa conf.no_lines ;
256*263660c0SAlfonso Siciliano.Fa conf
257*263660c0SAlfonso Sicilianois described later.
258*263660c0SAlfonso Siciliano.Pp
259*263660c0SAlfonso SicilianoEach
260*263660c0SAlfonso Siciliano.Fa char*
261*263660c0SAlfonso Sicilianoargument has to be a well terminated string, can be empty
262*263660c0SAlfonso Siciliano.Pq Dq
263*263660c0SAlfonso Sicilianobut not
264*263660c0SAlfonso Siciliano.Dv NULL .
265*263660c0SAlfonso Siciliano.Ss Dialogs
266*263660c0SAlfonso SicilianoThe dialogs have common arguments.
267*263660c0SAlfonso Siciliano.Fa text
268*263660c0SAlfonso Sicilianois a string printed inside the dialog.
269*263660c0SAlfonso Siciliano.Fa rows
270*263660c0SAlfonso Sicilianoand
271*263660c0SAlfonso Siciliano.Fa cols
272*263660c0SAlfonso Sicilianoare height and width, their value can be between 2 and the screen size,
273*263660c0SAlfonso Siciliano.Dv BSDDIALOG_AUTOSIZE
274*263660c0SAlfonso Sicilianoor
275*263660c0SAlfonso Siciliano.Dv BSDDIALOG_FULLSCREEN .
276*263660c0SAlfonso Siciliano.Fa conf
277*263660c0SAlfonso Sicilianois a struct to customize the dialog, it does not set global properties to the
278*263660c0SAlfonso Sicilianolibrary.
279d93b4d32SBaptiste Daroussin.Pp
280d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
281d93b4d32SBaptiste Daroussinstruct bsddialog_conf {
282d93b4d32SBaptiste Daroussin	bool ascii_lines;
283d93b4d32SBaptiste Daroussin	unsigned int auto_minheight;
284d93b4d32SBaptiste Daroussin	unsigned int auto_minwidth;
285*263660c0SAlfonso Siciliano	const char *bottomtitle;
286d93b4d32SBaptiste Daroussin	bool clear;
287*263660c0SAlfonso Siciliano	const char *f1_file;
288*263660c0SAlfonso Siciliano	const char *f1_message;
289d93b4d32SBaptiste Daroussin	int *get_height;
290d93b4d32SBaptiste Daroussin	int *get_width;
291d93b4d32SBaptiste Daroussin	bool no_lines;
292d93b4d32SBaptiste Daroussin	bool shadow;
293d93b4d32SBaptiste Daroussin	unsigned int sleep;
294*263660c0SAlfonso Siciliano	const char *title;
295d93b4d32SBaptiste Daroussin	int y;
296d93b4d32SBaptiste Daroussin	int x;
297d93b4d32SBaptiste Daroussin	struct {
298*263660c0SAlfonso Siciliano		bool enable_esc;
299*263660c0SAlfonso Siciliano	} key;
300*263660c0SAlfonso Siciliano	struct {
301*263660c0SAlfonso Siciliano		bool highlight;
302*263660c0SAlfonso Siciliano		unsigned int tablen;
303d93b4d32SBaptiste Daroussin	} text;
304d93b4d32SBaptiste Daroussin	struct {
305d93b4d32SBaptiste Daroussin		bool align_left;
306d93b4d32SBaptiste Daroussin		bool no_desc;
307d93b4d32SBaptiste Daroussin		bool no_name;
308d93b4d32SBaptiste Daroussin		bool shortcut_buttons;
309d93b4d32SBaptiste Daroussin	} menu;
310d93b4d32SBaptiste Daroussin	struct {
311d93b4d32SBaptiste Daroussin		int  securech;
312d93b4d32SBaptiste Daroussin		bool value_withcancel;
313d93b4d32SBaptiste Daroussin		bool value_withextra;
314d93b4d32SBaptiste Daroussin		bool value_withhelp;
315d93b4d32SBaptiste Daroussin	} form;
316d93b4d32SBaptiste Daroussin	struct {
317d93b4d32SBaptiste Daroussin		bool without_ok;
318*263660c0SAlfonso Siciliano		const char *ok_label;
319d93b4d32SBaptiste Daroussin		bool with_extra;
320*263660c0SAlfonso Siciliano		const char *extra_label;
321d93b4d32SBaptiste Daroussin		bool without_cancel;
322*263660c0SAlfonso Siciliano		const char *cancel_label;
323d93b4d32SBaptiste Daroussin		bool default_cancel;
324d93b4d32SBaptiste Daroussin		bool with_help;
325*263660c0SAlfonso Siciliano		const char *help_label;
326*263660c0SAlfonso Siciliano		const char *generic1_label;
327*263660c0SAlfonso Siciliano		const char *generic2_label;
328*263660c0SAlfonso Siciliano		const char *default_label;
329d93b4d32SBaptiste Daroussin	} button;
330d93b4d32SBaptiste Daroussin};
331d93b4d32SBaptiste Daroussin.Ed
332d93b4d32SBaptiste Daroussin.Pp
333*263660c0SAlfonso Siciliano.Bl -column -compact
334*263660c0SAlfonso Siciliano.It Fa conf.ascii_lines
335*263660c0SAlfonso Sicilianoascii characters to draw lines, default wide characters.
336*263660c0SAlfonso Siciliano.It Fa conf.auto_minheight
337*263660c0SAlfonso Sicilianominimum height if
338*263660c0SAlfonso Siciliano.Fa rows
339*263660c0SAlfonso Sicilianois
340*263660c0SAlfonso Siciliano.Dv BSDDIALOG_AUTOSIZE .
341*263660c0SAlfonso Siciliano.It Fa conf.auto_minwidth
342*263660c0SAlfonso Sicilianominimum width if
343*263660c0SAlfonso Siciliano.Fa cols
344*263660c0SAlfonso Sicilianois
345*263660c0SAlfonso Siciliano.Dv BSDDIALOG_AUTOSIZE .
346*263660c0SAlfonso Siciliano.It Fa conf.bottomtitle
347*263660c0SAlfonso Sicilianosubtitle at the dialog bottom side.
348*263660c0SAlfonso Siciliano.It Fa conf.clear
349*263660c0SAlfonso Sicilianohide the dialog at exit.
350*263660c0SAlfonso Siciliano.It Fa conf.f1_file
351*263660c0SAlfonso Sicilianofile to open if F1 is pressed.
352*263660c0SAlfonso Siciliano.It Fa conf.f1_message
353*263660c0SAlfonso Sicilianomessage to display if F1 is pressed.
354*263660c0SAlfonso Siciliano.It Fa conf.get_height
355*263660c0SAlfonso Sicilianoif not
356*263660c0SAlfonso Siciliano.Dv NULL
357*263660c0SAlfonso Sicilianois set like the dialog height.
358*263660c0SAlfonso Siciliano.It Fa conf.get_width
359*263660c0SAlfonso Sicilianoif not
360*263660c0SAlfonso Siciliano.Dv NULL
361*263660c0SAlfonso Sicilianois set like the dialog width.
362*263660c0SAlfonso Siciliano.It Fa conf.no_lines
363*263660c0SAlfonso Sicilianonot draw lines.
364*263660c0SAlfonso Siciliano.It Fa conf.shadow
365*263660c0SAlfonso Sicilianodraw shadow.
366*263660c0SAlfonso Siciliano.It Fa conf.sleep
367*263660c0SAlfonso Sicilianowait before to return, the value is in seconds.
368*263660c0SAlfonso Siciliano.It Fa conf.title
369*263660c0SAlfonso Sicilianotitle at the top dialog side.
370*263660c0SAlfonso Siciliano.It Fa conf.y
371*263660c0SAlfonso Sicilianovertical position, 0 is top screen size, can be
372*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CENTER .
373*263660c0SAlfonso Siciliano.It Fa conf.x
374*263660c0SAlfonso Sicilianohorizontal position, 0 is left screen side, can be
375*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CENTER .
376*263660c0SAlfonso Siciliano.El
377*263660c0SAlfonso Siciliano.Pp
378*263660c0SAlfonso Siciliano.Fa conf.key.enable_esc
379*263660c0SAlfonso Sicilianoenables
380*263660c0SAlfonso Siciliano.Dv ESC
381*263660c0SAlfonso Sicilianokey to close the dialog.
382*263660c0SAlfonso Siciliano.Pp
383*263660c0SAlfonso Siciliano.Fa conf.text.highlight
384*263660c0SAlfonso Sicilianoenables highlights for
385*263660c0SAlfonso Siciliano.Fa text ,
386*263660c0SAlfonso Sicilianoproperly the following sequences are considered escapes:
387*263660c0SAlfonso Siciliano.Bl -column -compact
388*263660c0SAlfonso Siciliano.It Dq \eZ0
389*263660c0SAlfonso Sicilianoblack.
390*263660c0SAlfonso Siciliano.It Dq \eZ1
391*263660c0SAlfonso Sicilianored.
392*263660c0SAlfonso Siciliano.It Dq \eZ2
393*263660c0SAlfonso Sicilianogreen.
394*263660c0SAlfonso Siciliano.It Dq \eZ3
395*263660c0SAlfonso Sicilianoyellow.
396*263660c0SAlfonso Siciliano.It Dq \eZ4
397*263660c0SAlfonso Sicilianoblue.
398*263660c0SAlfonso Siciliano.It Dq \eZ5
399*263660c0SAlfonso Sicilianomagenta.
400*263660c0SAlfonso Siciliano.It Dq \eZ6
401*263660c0SAlfonso Sicilianocyan.
402*263660c0SAlfonso Siciliano.It Dq \eZ7
403*263660c0SAlfonso Sicilianowhite.
404*263660c0SAlfonso Siciliano.It Dq \eZr
405*263660c0SAlfonso Sicilianoreverse colors between foreground and background.
406*263660c0SAlfonso Siciliano.It Dq \eZR
407*263660c0SAlfonso Sicilianodisable reverse.
408*263660c0SAlfonso Siciliano.It Dq \eZb
409*263660c0SAlfonso Sicilianobold.
410*263660c0SAlfonso Siciliano.It Dq \eZB
411*263660c0SAlfonso Sicilianodisable bold.
412*263660c0SAlfonso Siciliano.It Dq \eZu
413*263660c0SAlfonso Sicilianounderline.
414*263660c0SAlfonso Siciliano.It Dq \eZU
415*263660c0SAlfonso Sicilianodisable underline.
416*263660c0SAlfonso Siciliano.It Dq \eZn
417*263660c0SAlfonso Sicilianodisable each customization.
418*263660c0SAlfonso Siciliano.El
419*263660c0SAlfonso Siciliano.Fa conf.text.tablen
420*263660c0SAlfonso Sicilianotab length.
421*263660c0SAlfonso Siciliano.Pp
422*263660c0SAlfonso Siciliano.Bl -column -compact
423*263660c0SAlfonso Siciliano.It Fa conf.button.without_ok
424*263660c0SAlfonso Sicilianodisable OK button.
425*263660c0SAlfonso Siciliano.It Fa conf.button.ok_label
426*263660c0SAlfonso Sicilianoset label for OK button.
427*263660c0SAlfonso Siciliano.It Fa conf.button.with_extra
428*263660c0SAlfonso Sicilianoadd Extra button.
429*263660c0SAlfonso Siciliano.It Fa conf.button.extra_label
430*263660c0SAlfonso Sicilianoset a label for Extra button.
431*263660c0SAlfonso Siciliano.It Fa conf.button.without_cancel
432*263660c0SAlfonso Sicilianodisable Cancel button.
433*263660c0SAlfonso Siciliano.It Fa conf.button.cancel_label
434*263660c0SAlfonso Sicilianosets a label for Cancel button.
435*263660c0SAlfonso Siciliano.It Fa conf.button.default_cancel
436*263660c0SAlfonso Sicilianoon startup focus on the Cancel button.
437*263660c0SAlfonso Siciliano.It Fa conf.button.with_help
438*263660c0SAlfonso Sicilianoadd Help button.
439*263660c0SAlfonso Siciliano.It Fa conf.button.help_label
440*263660c0SAlfonso Sicilianoset a label for Help button.
441*263660c0SAlfonso Siciliano.It Fa conf.button.generic1_label
442*263660c0SAlfonso Sicilianoadd a button with the specified label.
443*263660c0SAlfonso Siciliano.It Fa conf.button.generic2_label
444*263660c0SAlfonso Sicilianoadd a button with the specified label.
445*263660c0SAlfonso Siciliano.It Fa conf.button.default_label
446*263660c0SAlfonso Sicilianofocus on the button with the specified label.
447*263660c0SAlfonso Siciliano.El
448*263660c0SAlfonso Siciliano.Pp
449*263660c0SAlfonso Siciliano.Fn bsddialog_initconf
450*263660c0SAlfonso Sicilianoinitializes
451*263660c0SAlfonso Siciliano.Fa conf
452*263660c0SAlfonso Sicilianodisabling each property, except
453*263660c0SAlfonso Siciliano.Fa conf.shadow
454*263660c0SAlfonso Sicilianoto true,
455*263660c0SAlfonso Siciliano.Fa conf.y
456*263660c0SAlfonso Sicilianoand
457*263660c0SAlfonso Siciliano.Fa conf.x
458*263660c0SAlfonso Sicilianoto
459*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CENTER .
460*263660c0SAlfonso Siciliano.Pp
461*263660c0SAlfonso Siciliano.Fn bsddialog_infobox
462*263660c0SAlfonso Sicilianobuilds a dialog without buttons and returns instantly.
463*263660c0SAlfonso Siciliano.Fn bsddialog_msgbox
464*263660c0SAlfonso Sicilianobuilds a dialog with OK button.
465*263660c0SAlfonso Siciliano.Fn bsddialog_yesno
466*263660c0SAlfonso Sicilianoprovides a dialog for a
467*263660c0SAlfonso Siciliano.Dq Yes-No Question ,
468*263660c0SAlfonso Sicilianothe labels on buttons are Yes and No.
469*263660c0SAlfonso Siciliano.Pp
470*263660c0SAlfonso Siciliano.Fn bsddialog_pause
471*263660c0SAlfonso Sicilianobuilds a dialog waiting until the timeout in
472*263660c0SAlfonso Siciliano.Fa seconds
473*263660c0SAlfonso Sicilianoexpires or a button is pressed.
474*263660c0SAlfonso Siciliano.Pp
475*263660c0SAlfonso Siciliano.Fn bsddialog_datebox
476*263660c0SAlfonso Sicilianobuilds a dialog to select a date,
477*263660c0SAlfonso Siciliano.Fa yy ,
478*263660c0SAlfonso Siciliano.Fa mm ,
479*263660c0SAlfonso Sicilianoand
480*263660c0SAlfonso Siciliano.Fa dd
481*263660c0SAlfonso Sicilianoare default values on startup, selected date at exit.
482*263660c0SAlfonso Siciliano.Fn bsddialog_timebox
483*263660c0SAlfonso Sicilianobuilds a dialog to choose a time,
484*263660c0SAlfonso Siciliano.Fa hh ,
485*263660c0SAlfonso Siciliano.Fa mm ,
486*263660c0SAlfonso Sicilianoand
487*263660c0SAlfonso Siciliano.Fa ss
488*263660c0SAlfonso Sicilianoare default values on startup, selected time at exit.
489*263660c0SAlfonso Siciliano.Pp
490*263660c0SAlfonso Siciliano.Fn bsddialog_checklist ,
491*263660c0SAlfonso Siciliano.Fn bsddialog_menu
492*263660c0SAlfonso Sicilianoand
493*263660c0SAlfonso Siciliano.Fn bsddialog_radiolist
494*263660c0SAlfonso Sicilianobuild dialogs to select some item from a list via the SPACE key, an item is
495*263660c0SAlfonso Sicilianodefined like:
496d93b4d32SBaptiste Daroussin.Pp
497d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
498d93b4d32SBaptiste Daroussinstruct bsddialog_menuitem {
499*263660c0SAlfonso Siciliano	const char *prefix;
500d93b4d32SBaptiste Daroussin	bool on;
501d93b4d32SBaptiste Daroussin	unsigned int depth;
502*263660c0SAlfonso Siciliano	const char *name;
503*263660c0SAlfonso Siciliano	const char *desc;
504*263660c0SAlfonso Siciliano	const char *bottomdesc;
505d93b4d32SBaptiste Daroussin};
506*263660c0SAlfonso Siciliano.Ed
507*263660c0SAlfonso Siciliano.Pp
508*263660c0SAlfonso Siciliano.Fa prefix ,
509*263660c0SAlfonso Siciliano.Fa name
510*263660c0SAlfonso Sicilianoand
511*263660c0SAlfonso Siciliano.Fa desc
512*263660c0SAlfonso Sicilianoare strings to describe the item and are printed on its row,
513*263660c0SAlfonso Siciliano.Fa bottomdesc
514*263660c0SAlfonso Sicilianois printed on the bottom side of the screen,
515*263660c0SAlfonso Siciliano.Fa depth
516*263660c0SAlfonso Sicilianois a margin between the
517*263660c0SAlfonso Siciliano.Fa prefix
518*263660c0SAlfonso Sicilianoand
519*263660c0SAlfonso Siciliano.Fa name
520*263660c0SAlfonso Sicilianouseful to implement a
521*263660c0SAlfonso Siciliano.Dq treeview,
522*263660c0SAlfonso Siciliano.Fa on
523*263660c0SAlfonso Sicilianois set to
524*263660c0SAlfonso Siciliano.Dv true
525*263660c0SAlfonso Sicilianoif the item is selected,
526*263660c0SAlfonso Siciliano.Dv false
527*263660c0SAlfonso Sicilianootherwise.
528*263660c0SAlfonso Siciliano.Fa items
529*263660c0SAlfonso Sicilianois an array of items of
530*263660c0SAlfonso Siciliano.Fa nitem
531*263660c0SAlfonso Sicilianoelements,
532*263660c0SAlfonso Siciliano.Fa menurows
533*263660c0SAlfonso Sicilianospecifies the graphical fixed height of the list, if
534*263660c0SAlfonso Siciliano.Fa cols
535*263660c0SAlfonso Sicilianois set to
536*263660c0SAlfonso Siciliano.Dv BSDDIALOG_AUTOSIZE
537*263660c0SAlfonso Siciliano.Fa menurows
538*263660c0SAlfonso Sicilianospecifies a maximum value.
539*263660c0SAlfonso SicilianoFinally, if not
540*263660c0SAlfonso Siciliano.Dv NULL ,
541*263660c0SAlfonso Siciliano.Fa focusitem
542*263660c0SAlfonso Sicilianospecifies the default item on startup and the last focused item at exit, could
543*263660c0SAlfonso Sicilianobe a negative value if no item is focused.
544*263660c0SAlfonso Siciliano.Pp
545*263660c0SAlfonso Siciliano.Fn bsddialog_mixedlist
546*263660c0SAlfonso Sicilianobuilds a dialog with collections of checklists, radiolists and separators.
547*263660c0SAlfonso SicilianoA collection is a set defined like:
548*263660c0SAlfonso Siciliano.Pp
549*263660c0SAlfonso Siciliano.Bd -literal -offset indent -compact
550d93b4d32SBaptiste Daroussinenum bsddialog_grouptype {
551d93b4d32SBaptiste Daroussin	BSDDIALOG_CHECKLIST,
552d93b4d32SBaptiste Daroussin	BSDDIALOG_RADIOLIST,
553d93b4d32SBaptiste Daroussin	BSDDIALOG_SEPARATOR,
554d93b4d32SBaptiste Daroussin};
555d93b4d32SBaptiste Daroussin
556d93b4d32SBaptiste Daroussinstruct bsddialog_menugroup {
557d93b4d32SBaptiste Daroussin	enum bsddialog_grouptype type;
558d93b4d32SBaptiste Daroussin	unsigned int nitems;
559d93b4d32SBaptiste Daroussin	struct bsddialog_menuitem *items;
560d93b4d32SBaptiste Daroussin};
561*263660c0SAlfonso Siciliano.Ed
562*263660c0SAlfonso Siciliano.Pp
563*263660c0SAlfonso Siciliano.Fa groups
564*263660c0SAlfonso Sicilianois an array of sets of
565*263660c0SAlfonso Siciliano.Fa ngroups
566*263660c0SAlfonso Sicilianoelements.
567*263660c0SAlfonso Siciliano.Fa menurows
568*263660c0SAlfonso Sicilianois the graphical height size for the list.
569*263660c0SAlfonso SicilianoIf not
570*263660c0SAlfonso Siciliano.Dv NULL ,
571*263660c0SAlfonso Siciliano.Fa focuslist
572*263660c0SAlfonso Sicilianoand
573*263660c0SAlfonso Siciliano.Fa focusitem
574*263660c0SAlfonso Sicilianospecify the default item on startup and the last focused item at exit, could be
575*263660c0SAlfonso Sicilianoa negative value if no item is focused.
576*263660c0SAlfonso Siciliano.Pp
577*263660c0SAlfonso Siciliano.Fn bsddialog_checklist ,
578*263660c0SAlfonso Siciliano.Fn bsddialog_menu ,
579*263660c0SAlfonso Siciliano.Fn bsddialog_mixedlist
580*263660c0SAlfonso Sicilianoand
581*263660c0SAlfonso Siciliano.Fn bsddialog_radiolist
582*263660c0SAlfonso Sicilianocan be costomizated by:
583*263660c0SAlfonso Siciliano.Bl -column -compact
584*263660c0SAlfonso Siciliano.It Fa conf.menu.align_left
585*263660c0SAlfonso Sicilianoaligns items to left, default center.
586*263660c0SAlfonso Siciliano.It Fa conf.menu.no_desc
587*263660c0SAlfonso Sicilianohide description.
588*263660c0SAlfonso Siciliano.It Fa conf.menu.no_name
589*263660c0SAlfonso Sicilianohide names.
590*263660c0SAlfonso Siciliano.It Fa conf.menu.on_without_ok
591*263660c0SAlfonso Sicilianoset items
592*263660c0SAlfonso Siciliano.Fa on
593*263660c0SAlfonso Sicilianoalso if the OK button is not pressed.
594*263660c0SAlfonso Siciliano.It Fa conf.menu.shortcut_buttons
595*263660c0SAlfonso Sicilianoenable shortcut keys on buttons, default on items.
596*263660c0SAlfonso Siciliano.El
597*263660c0SAlfonso Siciliano.Pp
598*263660c0SAlfonso Siciliano.Fn bsddialog_form
599*263660c0SAlfonso Sicilianobuilds a dialog to display a list of items to get strings in input, an item is
600*263660c0SAlfonso Sicilianodefined like:
601*263660c0SAlfonso Siciliano.Pp
602*263660c0SAlfonso Siciliano.Bd -literal -offset indent -compact
603d93b4d32SBaptiste Daroussinstruct bsddialog_formitem {
604*263660c0SAlfonso Siciliano	const char *label;
605d93b4d32SBaptiste Daroussin	unsigned int ylabel;
606d93b4d32SBaptiste Daroussin	unsigned int xlabel;
607d93b4d32SBaptiste Daroussin
608*263660c0SAlfonso Siciliano	const char *init;
609d93b4d32SBaptiste Daroussin	unsigned int yfield;
610d93b4d32SBaptiste Daroussin	unsigned int xfield;
611d93b4d32SBaptiste Daroussin	unsigned int fieldlen;
612d93b4d32SBaptiste Daroussin	unsigned int maxvaluelen;
613*263660c0SAlfonso Siciliano	char *value;
614*263660c0SAlfonso Siciliano
615d93b4d32SBaptiste Daroussin	unsigned int flags;
616d93b4d32SBaptiste Daroussin
617*263660c0SAlfonso Siciliano	const char *bottomdesc;
618d93b4d32SBaptiste Daroussin};
619d93b4d32SBaptiste Daroussin.Ed
620d93b4d32SBaptiste Daroussin.Pp
621*263660c0SAlfonso Siciliano.Fa label
622*263660c0SAlfonso Sicilianodescribes the request, it is printed at the position
623*263660c0SAlfonso Siciliano.Fa ylabel
624*263660c0SAlfonso Sicilianoand
625*263660c0SAlfonso Siciliano.Fa xlabel .
626*263660c0SAlfonso SicilianoThe field for the input is at the position
627*263660c0SAlfonso Siciliano.Fa yfield
628*263660c0SAlfonso Sicilianoand
629*263660c0SAlfonso Siciliano.Fa xfield ,
630*263660c0SAlfonso Siciliano.Fa fieldlen
631*263660c0SAlfonso Sicilianois its graphical width, while
632*263660c0SAlfonso Siciliano.Fa maxvalelen
633*263660c0SAlfonso Sicilianois the maximum length of the input string,
634*263660c0SAlfonso Siciliano.Fa init
635*263660c0SAlfonso Sicilianois the default value.
636*263660c0SAlfonso SicilianoIf the OK button is pressed
637*263660c0SAlfonso Siciliano.Fa value
638*263660c0SAlfonso Sicilianois the allocated memory with the current field string.
639*263660c0SAlfonso Siciliano.Fa flags
640*263660c0SAlfonso Sicilianois an OR value to set the
641*263660c0SAlfonso Siciliano.Dv BSDDIALOG_FIELDHIDDEN
642*263660c0SAlfonso Sicilianoand
643*263660c0SAlfonso Siciliano.Dv BSDDIALOG_FIELDREADONLY
644*263660c0SAlfonso Sicilianoflags for the field.
645*263660c0SAlfonso Siciliano.Fa bottomdesc
646*263660c0SAlfonso Sicilianois printed on the bottom side of the screen if the item is focused.
647*263660c0SAlfonso Siciliano.Fa items
648*263660c0SAlfonso Sicilianois an array of items of
649*263660c0SAlfonso Siciliano.Fa nitems
650*263660c0SAlfonso Sicilianoelements,
651*263660c0SAlfonso Siciliano.Fa formrows
652*263660c0SAlfonso Sicilianospecifies the graphical fixed height for the items list;
653*263660c0SAlfonso Siciliano.Fa ylabel
654*263660c0SAlfonso Sicilianoand
655*263660c0SAlfonso Siciliano.Fa yfield
656*263660c0SAlfonso Sicilianohave to be between 1 and
657*263660c0SAlfonso Siciliano.Fa formrows .
658*263660c0SAlfonso Siciliano.Pp
659*263660c0SAlfonso Siciliano.Fn bsddialog_form
660*263660c0SAlfonso Sicilianocan be customized by:
661*263660c0SAlfonso Siciliano.Bl -column -compact
662*263660c0SAlfonso Siciliano.It Fa conf.form.securech
663*263660c0SAlfonso Sicilianocharachter to hide the input
664*263660c0SAlfonso Sicilianowith
665*263660c0SAlfonso Siciliano.Dv BSDDIALOG_FIELDHIDDEN .
666*263660c0SAlfonso Siciliano.It Fa conf.form.value_without_ok
667*263660c0SAlfonso Sicilianoallocate memory and set
668*263660c0SAlfonso Siciliano.Fa value
669*263660c0SAlfonso Sicilianoalso if the OK button is not pressed.
670*263660c0SAlfonso Siciliano.El
671*263660c0SAlfonso Siciliano.Pp
672*263660c0SAlfonso Siciliano.Fn bsddialog_gauge
673*263660c0SAlfonso Sicilianobuilds a dialog with a bar to shows
674*263660c0SAlfonso Siciliano.Fa perc ,
675*263660c0SAlfonso Sicilianoif the file descriptor
676*263660c0SAlfonso Siciliano.Fa fd
677*263660c0SAlfonso Sicilianois greater or equal to 0 the dialog waits to read
678*263660c0SAlfonso Siciliano.Fa separator
679*263660c0SAlfonso Sicilianofrom it, then the first string replaces
680*263660c0SAlfonso Siciliano.Fa perc
681*263660c0SAlfonso Sicilianoand the following strings replace
682*263660c0SAlfonso Siciliano.Fa text
683*263660c0SAlfonso Sicilianountil the next
684*263660c0SAlfonso Siciliano.Fa separator ,
685*263660c0SAlfonso Sicilianothe loop ends reading
686*263660c0SAlfonso Siciliano.Dv EOF .
687*263660c0SAlfonso Siciliano.Pp
688*263660c0SAlfonso Siciliano.Fn bsddialog_mixedgauge
689*263660c0SAlfonso Sicilianodraws a main bar with the
690*263660c0SAlfonso Siciliano.Fa mainperc
691*263660c0SAlfonso Sicilianopercentage and
692*263660c0SAlfonso Siciliano.Fa nminibars
693*263660c0SAlfonso Sicilianoeach one with a
694*263660c0SAlfonso Siciliano.Fa minilabel
695*263660c0SAlfonso Sicilianoand a
696*263660c0SAlfonso Siciliano.Fa miniperc
697*263660c0SAlfonso Sicilianowith a value between 0 and 100 or
698*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_SUCCEEDED ,
699*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_FAILED ,
700*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_PASSED ,
701*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_COMPLETED ,
702*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_CHECKED ,
703*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_DONE ,
704*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_SKIPPED ,
705*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_INPROGRESS ,
706*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_BLANK ,
707*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_NA
708*263660c0SAlfonso Sicilianoor
709*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MG_PENDING
710*263660c0SAlfonso Sicilianoto print a descriptive string.
711*263660c0SAlfonso Siciliano.Pp
712*263660c0SAlfonso Siciliano.Fn bsddialog_rangebox
713*263660c0SAlfonso Sicilianoto select a value between
714*263660c0SAlfonso Siciliano.Fa min
715*263660c0SAlfonso Sicilianoand
716*263660c0SAlfonso Siciliano.Fa max .
717*263660c0SAlfonso Siciliano.Fa value
718*263660c0SAlfonso Sicilianois the default value on startup and the selected value at exit.
719*263660c0SAlfonso SicilianoThe current value is printed inside a bar, the keys UP, DOWN, HOME, END, PAGEUP
720*263660c0SAlfonso Sicilianoand PAGEDOWN can change it.
721*263660c0SAlfonso Siciliano.Pp
722*263660c0SAlfonso Siciliano.Fn bsddialog_textbox
723*263660c0SAlfonso Sicilianoopens and prints
724*263660c0SAlfonso Siciliano.Fa file
725*263660c0SAlfonso Sicilianoin a dialog, the UP, DOWN, HOME, END, PAGEUP and PAGEDOWN keys are availble to
726*263660c0SAlfonso Sicilianonavigate the file.
727*263660c0SAlfonso SicilianoOK button is renamed EXIT.
728d93b4d32SBaptiste Daroussin.Ss Theme
729*263660c0SAlfonso SicilianoThe graphical properties are global to the library, they are represented by
730*263660c0SAlfonso Siciliano.Fa struct bsddialog_theme
731*263660c0SAlfonso Sicilianoand can be customized at runtime via the
732*263660c0SAlfonso Siciliano.In bsddialog_theme.h
733*263660c0SAlfonso SicilianoAPI.
734d93b4d32SBaptiste Daroussin.Pp
735d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
736d93b4d32SBaptiste Daroussinstruct bsddialog_theme {
737d93b4d32SBaptiste Daroussin	struct {
738d93b4d32SBaptiste Daroussin		int color;
739*263660c0SAlfonso Siciliano	} screen;
740d93b4d32SBaptiste Daroussin	struct {
741d93b4d32SBaptiste Daroussin		int color;
742d93b4d32SBaptiste Daroussin		unsigned int h;
743d93b4d32SBaptiste Daroussin		unsigned int w;
744d93b4d32SBaptiste Daroussin	} shadow;
745d93b4d32SBaptiste Daroussin	struct {
746d93b4d32SBaptiste Daroussin		int  color;
747d93b4d32SBaptiste Daroussin		bool delimtitle;
748d93b4d32SBaptiste Daroussin		int  titlecolor;
749d93b4d32SBaptiste Daroussin		int  lineraisecolor;
750d93b4d32SBaptiste Daroussin		int  linelowercolor;
751d93b4d32SBaptiste Daroussin		int  bottomtitlecolor;
752d93b4d32SBaptiste Daroussin	} dialog;
753d93b4d32SBaptiste Daroussin	struct {
754d93b4d32SBaptiste Daroussin		int arrowcolor;
755d93b4d32SBaptiste Daroussin		int selectorcolor;
756d93b4d32SBaptiste Daroussin		int f_namecolor;
757d93b4d32SBaptiste Daroussin		int namecolor;
758d93b4d32SBaptiste Daroussin		int f_desccolor;
759d93b4d32SBaptiste Daroussin		int desccolor;
760d93b4d32SBaptiste Daroussin		int namesepcolor;
761d93b4d32SBaptiste Daroussin		int descsepcolor;
762d93b4d32SBaptiste Daroussin		int f_shortcutcolor;
763d93b4d32SBaptiste Daroussin		int shortcutcolor;
764d93b4d32SBaptiste Daroussin	} menu;
765d93b4d32SBaptiste Daroussin	struct {
766d93b4d32SBaptiste Daroussin		int f_fieldcolor;
767d93b4d32SBaptiste Daroussin		int fieldcolor;
768d93b4d32SBaptiste Daroussin		int readonlycolor;
769d93b4d32SBaptiste Daroussin	} form;
770d93b4d32SBaptiste Daroussin	struct {
771d93b4d32SBaptiste Daroussin		int f_color;
772d93b4d32SBaptiste Daroussin		int color;
773d93b4d32SBaptiste Daroussin	} bar;
774d93b4d32SBaptiste Daroussin	struct {
775d93b4d32SBaptiste Daroussin		unsigned int space;
776d93b4d32SBaptiste Daroussin		int leftch;
777d93b4d32SBaptiste Daroussin		int rightch;
778d93b4d32SBaptiste Daroussin		int delimcolor;
779d93b4d32SBaptiste Daroussin		int f_delimcolor;
780d93b4d32SBaptiste Daroussin		int color;
781d93b4d32SBaptiste Daroussin		int f_color;
782d93b4d32SBaptiste Daroussin		int shortcutcolor;
783d93b4d32SBaptiste Daroussin		int f_shortcutcolor;
784d93b4d32SBaptiste Daroussin	} button;
785d93b4d32SBaptiste Daroussin};
786d93b4d32SBaptiste Daroussin.Ed
787d93b4d32SBaptiste Daroussin.Pp
788*263660c0SAlfonso SicilianoA member with the
789*263660c0SAlfonso Siciliano.Dq f_
790*263660c0SAlfonso Sicilianoprefix refers to an element with focus.
791*263660c0SAlfonso Siciliano.Pp
792*263660c0SAlfonso Siciliano.Fn bsddialog_get_theme
793*263660c0SAlfonso Sicilianosets
794*263660c0SAlfonso Siciliano.Fa theme
795*263660c0SAlfonso Sicilianolike the current theme.
796*263660c0SAlfonso Siciliano.Pp
797*263660c0SAlfonso SicilianoA color can be set by the value returned by
798*263660c0SAlfonso Siciliano.Fn bsddialog_color ,
799*263660c0SAlfonso SicilianoPossible values for
800*263660c0SAlfonso Siciliano.Fa background
801*263660c0SAlfonso Sicilianoand
802*263660c0SAlfonso Siciliano.Fa foreground
803*263660c0SAlfonso Sicilianoare:
804*263660c0SAlfonso Siciliano.Dv BSDDIALOG_BLACK ,
805*263660c0SAlfonso Siciliano.Dv BSDDIALOG_RED ,
806*263660c0SAlfonso Siciliano.Dv BSDDIALOG_GREEN ,
807*263660c0SAlfonso Siciliano.Dv BSDDIALOG_YELLOW ,
808*263660c0SAlfonso Siciliano.Dv BSDDIALOG_BLUE ,
809*263660c0SAlfonso Siciliano.Dv BSDDIALOG_MAGENTA ,
810*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CYAN ,
811*263660c0SAlfonso Sicilianoand
812*263660c0SAlfonso Siciliano.Dv BSDDIALOG_WHITE ,
813*263660c0SAlfonso Siciliano.Fa flags
814*263660c0SAlfonso Sicilianospecifies OR-flags, possible values:
815*263660c0SAlfonso Siciliano.Dv BSDDIALOG_BOLD ,
816*263660c0SAlfonso Siciliano.Dv BSDDIALOG_REVERSE
817*263660c0SAlfonso Sicilianoand
818*263660c0SAlfonso Siciliano.Dv BSDDIALOG_UNDERLINE .
819*263660c0SAlfonso Siciliano.Pp
820*263660c0SAlfonso Siciliano.Fn bsddialog_set_theme
821*263660c0SAlfonso Sicilianosets
822*263660c0SAlfonso Siciliano.Fa theme
823*263660c0SAlfonso Sicilianolike current theme, the changes takes effect only for dialogs built after the
824*263660c0SAlfonso Sicilianocall.
825*263660c0SAlfonso Siciliano.Pp
826*263660c0SAlfonso SicilianoThe library provides predefined themes:
827*263660c0SAlfonso Siciliano.Dv BSDDIALOG_THEME_BLACKWHITE ,
828*263660c0SAlfonso Siciliano.Dv BSDDIALOG_THEME_BSDDIALOG ,
829*263660c0SAlfonso Siciliano.Dv BSDDIALOG_THEME_DEFAULT
830*263660c0SAlfonso Sicilianoand
831*263660c0SAlfonso Siciliano.Dv BSDDIALOG_THEME_DIALOG ,
832*263660c0SAlfonso Sicilianothey can be set via
833*263660c0SAlfonso Siciliano.Fn bsddialog_set_default_theme .
834d93b4d32SBaptiste Daroussin.Sh RETURN VALUES
835*263660c0SAlfonso SicilianoThe functions return the value
836*263660c0SAlfonso Siciliano.Dv BSDDIALOG_ERROR
837*263660c0SAlfonso Sicilianoif unsuccessful;
838*263660c0SAlfonso Sicilianootherwise, depending on the pressed button, the following values can be
839*263660c0SAlfonso Sicilianoreturned:
840*263660c0SAlfonso Siciliano.Dv BSDDIALOG_OK ,
841*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CANCEL ,
842*263660c0SAlfonso Siciliano.Dv BSDDIALOG_HELP ,
843*263660c0SAlfonso Siciliano.Dv BSDDIALOG_EXTRA ,
844*263660c0SAlfonso Siciliano.Dv BSDDIALOG_GENERIC1
845*263660c0SAlfonso Sicilianoor
846*263660c0SAlfonso Siciliano.Dv BSDDIALOG_GENERIC2 .
847*263660c0SAlfonso Siciliano.Dv BSDDIALOG_YES
848*263660c0SAlfonso Sicilianoand
849*263660c0SAlfonso Siciliano.Dv BSDDIALOG_NO
850*263660c0SAlfonso Sicilianoare aliases for
851*263660c0SAlfonso Siciliano.Dv BSDDIALOG_OK
852*263660c0SAlfonso Sicilianoand
853*263660c0SAlfonso Siciliano.Dv BSDDIALOG_CANCEL ,
854*263660c0SAlfonso Sicilianorespectively.
855*263660c0SAlfonso Siciliano.Pp
856*263660c0SAlfonso SicilianoThe functions return
857*263660c0SAlfonso Siciliano.Dv BSDDIALOG_ESC
858*263660c0SAlfonso Sicilianoif
859*263660c0SAlfonso Siciliano.Fa conf.key.enable_esc
860*263660c0SAlfonso Sicilianois enabled and the ESC key is pressed.
861*263660c0SAlfonso Siciliano.Pp
862*263660c0SAlfonso Siciliano.Fn bsddialog_pause
863*263660c0SAlfonso Sicilianoreturns
864*263660c0SAlfonso Siciliano.Dv BSDDIALOG_TIMEOUT
865*263660c0SAlfonso Sicilianoif the timeout expires.
866d93b4d32SBaptiste Daroussin.Sh EXAMPLES
867*263660c0SAlfonso Siciliano.Dq Yes-No Question
868*263660c0SAlfonso SicilianoExample:
869d93b4d32SBaptiste Daroussin.Pp
870d93b4d32SBaptiste Daroussin.Bd -literal -offset indent -compact
871d93b4d32SBaptiste Daroussinint output;
872d93b4d32SBaptiste Daroussinstruct bsddialog_conf conf;
873d93b4d32SBaptiste Daroussin
874d93b4d32SBaptiste Daroussinif (bsddialog_init() == BSDDIALOG_ERROR)
875d93b4d32SBaptiste Daroussin	return (1);
876d93b4d32SBaptiste Daroussin
877*263660c0SAlfonso Sicilianobsddialog_initconf(&conf);
878*263660c0SAlfonso Sicilianoconf.title = "yesno";
879d93b4d32SBaptiste Daroussinoutput = bsddialog_yesno(&conf, "Example", 7, 25);
880d93b4d32SBaptiste Daroussin
881d93b4d32SBaptiste Daroussinbsddialog_end();
882d93b4d32SBaptiste Daroussin
883d93b4d32SBaptiste Daroussinswitch (output) {
884d93b4d32SBaptiste Daroussincase BSDDIALOG_YES:
885*263660c0SAlfonso Siciliano	printf("Yes\\n");
886d93b4d32SBaptiste Daroussin	break;
887d93b4d32SBaptiste Daroussincase BSDDIALOG_NO
888d93b4d32SBaptiste Daroussin	printf("NO\\n");
889d93b4d32SBaptiste Daroussin	break;
890d93b4d32SBaptiste Daroussincase BSDDIALOG_ERROR:
891d93b4d32SBaptiste Daroussin	printf("Error: %s\\n", bsddialog_geterror());
892d93b4d32SBaptiste Daroussin}
893d93b4d32SBaptiste Daroussin.Ed
894*263660c0SAlfonso Siciliano.Pp
895*263660c0SAlfonso SicilianoTheme Example:
896*263660c0SAlfonso Siciliano.Pp
897*263660c0SAlfonso Siciliano.Bd -literal -offset indent -compact
898*263660c0SAlfonso Sicilianostruct bsddialog_conf conf;
899*263660c0SAlfonso Sicilianostruct bsddialog_theme theme;
900*263660c0SAlfonso Siciliano
901*263660c0SAlfonso Sicilianoif (bsddialog_init() == BSDDIALOG_ERROR)
902*263660c0SAlfonso Siciliano
903*263660c0SAlfonso Sicilianobsddialog_initconf(&conf);
904*263660c0SAlfonso Sicilianobsddialog_msgbox(&conf, "Default theme", 7, 25);
905*263660c0SAlfonso Siciliano
906*263660c0SAlfonso Sicilianobsddialog_get_theme(&theme);
907*263660c0SAlfonso Sicilianotheme.screen.color = bsddialog_color(BSDDIALOG_RED, BSDDIALOG_GREEN,
908*263660c0SAlfonso Siciliano    BSDDIALOG_BOLD);
909*263660c0SAlfonso Sicilianobsddialog_set_theme(&theme);
910*263660c0SAlfonso Sicilianobsddialog_backtitle(&conf, "Red foreground and Green background");
911*263660c0SAlfonso Sicilianobsddialog_msgbox(&conf, "Change screen color", 7, 25);
912*263660c0SAlfonso Siciliano
913*263660c0SAlfonso Sicilianobsddialog_set_default_theme(BSDDIALOG_THEME_BLACKWHITE);
914*263660c0SAlfonso Sicilianobsddialog_msgbox(&conf, "Black and White theme", 7, 25);
915*263660c0SAlfonso Siciliano
916*263660c0SAlfonso Sicilianobsddialog_end();
917*263660c0SAlfonso Siciliano.Ed
918*263660c0SAlfonso Siciliano.Pp
919*263660c0SAlfonso SicilianoMixedlist Example:
920*263660c0SAlfonso Siciliano.Pp
921*263660c0SAlfonso Siciliano.Bd -literal -offset indent -compact
922*263660c0SAlfonso Sicilianounsigned int i, j;
923*263660c0SAlfonso Sicilianostruct bsddialog_conf conf;
924*263660c0SAlfonso Sicilianostruct bsddialog_menuitem item;
925*263660c0SAlfonso Sicilianostruct bsddialog_menuitem check[2] = {
926*263660c0SAlfonso Siciliano    { "1", true,  0, "Name 1", "Desc 1", "Check Bottom Desc 1" },
927*263660c0SAlfonso Siciliano    { "2", false, 0, "Name 2", "Desc 2", "Check Bottom Desc 2" }
928*263660c0SAlfonso Siciliano};
929*263660c0SAlfonso Sicilianostruct bsddialog_menuitem sep[1] = {
930*263660c0SAlfonso Siciliano    { "3", true, 0, "Radiolist", "(desc)", "" }
931*263660c0SAlfonso Siciliano};
932*263660c0SAlfonso Sicilianostruct bsddialog_menuitem radio[5] = {
933*263660c0SAlfonso Siciliano    { "4", true,  0, "Name 1", "Desc 1", "Radio Bottom Desc 1" },
934*263660c0SAlfonso Siciliano    { "5", false, 0, "Name 2", "Desc 2", "Radio Bottom Desc 2" }
935*263660c0SAlfonso Siciliano};
936*263660c0SAlfonso Sicilianostruct bsddialog_menugroup group[3] = {
937*263660c0SAlfonso Siciliano    { BSDDIALOG_CHECKLIST, 2, check },
938*263660c0SAlfonso Siciliano    { BSDDIALOG_SEPARATOR, 1, sep   },
939*263660c0SAlfonso Siciliano    { BSDDIALOG_RADIOLIST, 2, radio }
940*263660c0SAlfonso Siciliano};
941*263660c0SAlfonso Siciliano
942*263660c0SAlfonso Sicilianobsddialog_init();
943*263660c0SAlfonso Sicilianobsddialog_initconf(&conf);
944*263660c0SAlfonso Sicilianobsddialog_mixedlist(&conf, "Example", 20, 30, 11, 3, group, NULL,
945*263660c0SAlfonso Siciliano    NULL);
946*263660c0SAlfonso Sicilianobsddialog_end();
947*263660c0SAlfonso Siciliano
948*263660c0SAlfonso Sicilianofor (i = 0; i < 3; i++) {
949*263660c0SAlfonso Siciliano	for (j = 0; j < group[i].nitems; j++) {
950*263660c0SAlfonso Siciliano		item = group[i].items[j];
951*263660c0SAlfonso Siciliano		switch (item.type) {
952*263660c0SAlfonso Siciliano		case BSDDIALOG_SEPARATOR:
953*263660c0SAlfonso Siciliano			printf("---- %s ----\\n", item.name);
954*263660c0SAlfonso Siciliano			break;
955*263660c0SAlfonso Siciliano		case BSDDIALOG_RADIOLIST:
956*263660c0SAlfonso Siciliano			printf(" (%c) %s\\n",
957*263660c0SAlfonso Siciliano			    item.on ? '*' : ' ', item.name);
958*263660c0SAlfonso Siciliano			break;
959*263660c0SAlfonso Siciliano		case BSDDIALOG_CHECKLIST:
960*263660c0SAlfonso Siciliano			printf(" [%c] %s\\n",
961*263660c0SAlfonso Siciliano			    item.on ? 'X' : ' ', item.name);
962*263660c0SAlfonso Siciliano			break;
963*263660c0SAlfonso Siciliano		}
964*263660c0SAlfonso Siciliano	}
965*263660c0SAlfonso Siciliano}
966*263660c0SAlfonso Siciliano.Ed
967d93b4d32SBaptiste Daroussin.Sh SEE ALSO
968*263660c0SAlfonso Siciliano.Xr bsddialog 1 ,
969*263660c0SAlfonso Siciliano.Xr curses 3 ,
970*263660c0SAlfonso Siciliano.Xr ncurses 3
971d93b4d32SBaptiste Daroussin.Sh HISTORY
972d93b4d32SBaptiste DaroussinThe
973d93b4d32SBaptiste Daroussin.Nm bsddialog
974d93b4d32SBaptiste Daroussinlibrary first appeared in
975d93b4d32SBaptiste Daroussin.Fx 14.0 .
976d93b4d32SBaptiste Daroussin.Sh AUTHORS
977d93b4d32SBaptiste Daroussin.Nm bsddialog
978d93b4d32SBaptiste Daroussinwas written by
979d93b4d32SBaptiste Daroussin.An Alfonso Sabato Siciliano Aq Mt alf.siciliano@gmail.com .
980d93b4d32SBaptiste Daroussin.Sh BUGS
981*263660c0SAlfonso Siciliano.Fn bsddialog_form
982*263660c0SAlfonso Sicilianodoes not resize the dialog after a terminal resize and does not provide
983*263660c0SAlfonso Sicilianoscrolling for items.