1# BSDDialog 1.0.4 2 3This project provides **bsddialog** and **libbsddialog**, an utility 4and a library to build scripts and tools with TUI dialogs and widgets. 5 6 7## Demo 8 9[Screenshots](https://www.flickr.com/photos/alfonsosiciliano/albums/72157720215006074). 10 11 12## Getting Started 13 14FreeBSD and Linux: 15 16``` 17% git clone https://gitlab.com/alfix/bsddialog.git 18% cd bsddialog 19% make 20% ./bsddialog --msgbox "Hello World!" 8 20 21``` 22 23Output: 24 25![screenshot](screenshot.png) 26 27 28## Utility 29 30**Dialogs:** 31 32--calendar, --checklist, --datebox, --form, --gauge, --infobox, --inputbox, 33--menu, --mixedform, --mixedgauge, --msgbox, --passwordbox, --passwordform, 34--pause, --radiolist, --rangebox, --textbox, --timebox, --treeview, --yesno. 35 36**Manual** 37 38 - [bsddialog(1)](https://alfonsosiciliano.gitlab.io/posts/2022-01-26-manual-bsddialog.html) 39 40 41**Examples**: 42 43``` 44% ./bsddialog --backtitle "TITLE" --title msgbox --msgbox "Hello World!" 5 30 45% ./bsddialog --theme blackwhite --title msgbox --msgbox "Hello World!" 5 30 46% ./bsddialog --begin-y 2 --default-no --title yesno --yesno "Hello World!" 5 30 47% ./bsddialog --ascii-lines --pause "Hello World!" 8 50 10 48% ./bsddialog --checklist "Space to select" 0 0 0 Name1 Desc1 off Name2 Desc2 on 49% ./bsddialog --title yesno --hline "bsddialog" --yesno "Hello World!" 5 25 50% ./bsddialog --extra-button --help-button --yesno "Hello World!" 0 0 51``` 52 53and [Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_utility) 54in the _Public Domain_ to build new projects: 55``` 56% sh ./examples_utility/calendar.sh 57% sh ./examples_utility/checklist.sh 58% sh ./examples_utility/datebox.sh 59% sh ./examples_utility/form.sh 60% sh ./examples_utility/gauge.sh 61% sh ./examples_utility/infobox.sh 62% sh ./examples_utility/inputbox.sh 63% sh ./examples_utility/menu.sh 64% sh ./examples_utility/mixedform.sh 65% sh ./examples_utility/mixedgauge.sh 66% sh ./examples_utility/msgbox.sh 67% sh ./examples_utility/passwordbox.sh 68% sh ./examples_utility/passwordform.sh 69% sh ./examples_utility/pause.sh 70% sh ./examples_utility/radiolist.sh 71% sh ./examples_utility/rangebox.sh 72% sh ./examples_utility/timebox.sh 73% sh ./examples_utility/yesno.sh 74``` 75 76## Library 77 78**API** 79 80 - [bsddialog.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog.h) 81 - [bsddialog\_theme.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog_theme.h) 82 83 84**Manual** 85 86 - [bsddialog(3)](https://alfonsosiciliano.gitlab.io/posts/2022-01-15-manual-libbsddialog.html) 87 88 89**Examples**: 90 91[Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_library) 92in the _Public Domain_ to build new projects: 93``` 94% cd examples_library 95% sh compile 96% ./calendar 97% ./checklist 98% ./datebox 99% ./form 100% ./gauge 101% ./infobox 102% ./menu 103% ./mixedgauge 104% ./mixedlist 105% ./msgbox 106% ./pause 107% ./radiolist 108% ./rangebox 109% ./theme 110% ./timebox 111% ./yesno 112``` 113 114 115## TODO and Ideas 116 117 - menubar feature. 118 - key callback. 119 - Right-To-Left text. 120 - some terminal does not hide the cursor, move it bottom-right before to getch. 121 - refactor backtitle: add WINDOW \*dialog.backtitle for multiline and fix expanding screen. 122 - refactor bottomdesc: add WINDOW \*dialog.bottomdesc to fix expandig screen. 123 - accessibility https://wiki.freebsd.org/Accessibility/Wishlist/Base. 124 - add bool conf.menu.depthlines. 125 - implement custom getopt\_long(). 126 - refactor/redesign gauge(). 127 - improve grey lines expanding terminal (maybe redrawwin() in hide\_dialog()). 128 - more restrictive strtol() and strtoul(). 129 - implement global buttons handler. 130 - doc: external tutorial, theming guide. 131 - implement menutype.min\_on. 132 - improve refresh at startup, avoid dialog refresh before drawing text. 133 - add debug API: bsddialog\_debug(y,x,refresh,"fmt",...). 134 - add mouse support. 135 - use alarm(2) for bsddialog\_pause. 136 - delete form fieldlen constraint, hide or truncate long field in little screens. 137 - improve --inputbox autosizing, consider also input length. 138 - fix --form "" 0 0 0 Label 1 0 Init 1 12 0 0 (with 0 editable field). 139 - fix --mixedform "" 0 0 0 Label 1 0 Init 1 12 0 0 2 (with 0 editable field). 140 - add *text* customization to --hmsg *help-message* 141 - check --passwordform *fieldlen* like --form and --mixedform. 142 143