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