# BSDDialog 1.0.4 This project provides **bsddialog** and **libbsddialog**, an utility and a library to build scripts and tools with TUI dialogs and widgets. ## Demo [Screenshots](https://www.flickr.com/photos/alfonsosiciliano/albums/72157720215006074). ## Getting Started FreeBSD and Linux: ``` % git clone https://gitlab.com/alfix/bsddialog.git % cd bsddialog % make % ./bsddialog --msgbox "Hello World!" 8 20 ``` Output: ![screenshot](screenshot.png) ## Utility **Dialogs:** --calendar, --checklist, --datebox, --form, --gauge, --infobox, --inputbox, --menu, --mixedform, --mixedgauge, --msgbox, --passwordbox, --passwordform, --pause, --radiolist, --rangebox, --textbox, --timebox, --treeview, --yesno. **Manual** - [bsddialog(1)](https://alfonsosiciliano.gitlab.io/posts/2022-01-26-manual-bsddialog.html) **Examples**: ``` % ./bsddialog --backtitle "TITLE" --title msgbox --msgbox "Hello World!" 5 30 % ./bsddialog --theme blackwhite --title msgbox --msgbox "Hello World!" 5 30 % ./bsddialog --begin-y 2 --default-no --title yesno --yesno "Hello World!" 5 30 % ./bsddialog --ascii-lines --pause "Hello World!" 8 50 10 % ./bsddialog --checklist "Space to select" 0 0 0 Name1 Desc1 off Name2 Desc2 on % ./bsddialog --title yesno --hline "bsddialog" --yesno "Hello World!" 5 25 % ./bsddialog --extra-button --help-button --yesno "Hello World!" 0 0 ``` and [Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_utility) in the _Public Domain_ to build new projects: ``` % sh ./examples_utility/calendar.sh % sh ./examples_utility/checklist.sh % sh ./examples_utility/datebox.sh % sh ./examples_utility/form.sh % sh ./examples_utility/gauge.sh % sh ./examples_utility/infobox.sh % sh ./examples_utility/inputbox.sh % sh ./examples_utility/menu.sh % sh ./examples_utility/mixedform.sh % sh ./examples_utility/mixedgauge.sh % sh ./examples_utility/msgbox.sh % sh ./examples_utility/passwordbox.sh % sh ./examples_utility/passwordform.sh % sh ./examples_utility/pause.sh % sh ./examples_utility/radiolist.sh % sh ./examples_utility/rangebox.sh % sh ./examples_utility/timebox.sh % sh ./examples_utility/yesno.sh ``` ## Library **API** - [bsddialog.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog.h) - [bsddialog\_theme.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog_theme.h) **Manual** - [bsddialog(3)](https://alfonsosiciliano.gitlab.io/posts/2022-01-15-manual-libbsddialog.html) **Examples**: [Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_library) in the _Public Domain_ to build new projects: ``` % cd examples_library % sh compile % ./calendar % ./checklist % ./datebox % ./form % ./gauge % ./infobox % ./menu % ./mixedgauge % ./mixedlist % ./msgbox % ./pause % ./radiolist % ./rangebox % ./theme % ./timebox % ./yesno ``` ## TODO and Ideas - menubar feature. - key callback. - Right-To-Left text. - some terminal does not hide the cursor, move it bottom-right before to getch. - refactor backtitle: add WINDOW \*dialog.backtitle for multiline and fix expanding screen. - refactor bottomdesc: add WINDOW \*dialog.bottomdesc to fix expandig screen. - accessibility https://wiki.freebsd.org/Accessibility/Wishlist/Base. - add bool conf.menu.depthlines. - implement custom getopt\_long(). - refactor/redesign gauge(). - improve grey lines expanding terminal (maybe redrawwin() in hide\_dialog()). - more restrictive strtol() and strtoul(). - implement global buttons handler. - doc: external tutorial, theming guide. - implement menutype.min\_on. - improve refresh at startup, avoid dialog refresh before drawing text. - add debug API: bsddialog\_debug(y,x,refresh,"fmt",...). - add mouse support. - use alarm(2) for bsddialog\_pause. - delete form fieldlen constraint, hide or truncate long field in little screens. - improve --inputbox autosizing, consider also input length. - fix --form "" 0 0 0 Label 1 0 Init 1 12 0 0 (with 0 editable field). - fix --mixedform "" 0 0 0 Label 1 0 Init 1 12 0 0 2 (with 0 editable field). - add *text* customization to --hmsg *help-message* - check --passwordform *fieldlen* like --form and --mixedform.