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.