1*d4ca0015SKyle Evans# BSDDialog 1.0.4 2c76f0793SBaptiste Daroussin 3b319d934SAlfonso S. SicilianoThis project provides **bsddialog** and **libbsddialog**, an utility 4b319d934SAlfonso S. Sicilianoand a library to build scripts and tools with TUI dialogs and widgets. 561ba55bcSBaptiste Daroussin 661ba55bcSBaptiste Daroussin 761ba55bcSBaptiste Daroussin## Demo 861ba55bcSBaptiste Daroussin 984823cc7SAlfonso S. Siciliano[Screenshots](https://www.flickr.com/photos/alfonsosiciliano/albums/72157720215006074). 108c4f4028SBaptiste Daroussin 11c76f0793SBaptiste Daroussin 12c76f0793SBaptiste Daroussin## Getting Started 13c76f0793SBaptiste Daroussin 1461ba55bcSBaptiste DaroussinFreeBSD and Linux: 15c76f0793SBaptiste Daroussin 16c76f0793SBaptiste Daroussin``` 17c76f0793SBaptiste Daroussin% git clone https://gitlab.com/alfix/bsddialog.git 18c76f0793SBaptiste Daroussin% cd bsddialog 19c76f0793SBaptiste Daroussin% make 20c76f0793SBaptiste Daroussin% ./bsddialog --msgbox "Hello World!" 8 20 21c76f0793SBaptiste Daroussin``` 22c76f0793SBaptiste Daroussin 23c76f0793SBaptiste DaroussinOutput: 24c76f0793SBaptiste Daroussin 25c76f0793SBaptiste Daroussin 26c76f0793SBaptiste Daroussin 27c76f0793SBaptiste Daroussin 28263660c0SAlfonso Siciliano## Utility 29263660c0SAlfonso Siciliano 30263660c0SAlfonso Siciliano**Dialogs:** 31263660c0SAlfonso Siciliano 3284823cc7SAlfonso S. Siciliano--calendar, --checklist, --datebox, --form, --gauge, --infobox, --inputbox, 3384823cc7SAlfonso S. Siciliano--menu, --mixedform, --mixedgauge, --msgbox, --passwordbox, --passwordform, 3484823cc7SAlfonso S. Siciliano--pause, --radiolist, --rangebox, --textbox, --timebox, --treeview, --yesno. 35263660c0SAlfonso Siciliano 36263660c0SAlfonso Siciliano**Manual** 37263660c0SAlfonso Siciliano 38263660c0SAlfonso Siciliano - [bsddialog(1)](https://alfonsosiciliano.gitlab.io/posts/2022-01-26-manual-bsddialog.html) 39263660c0SAlfonso Siciliano 40263660c0SAlfonso Siciliano 41263660c0SAlfonso Siciliano**Examples**: 42263660c0SAlfonso Siciliano 43c76f0793SBaptiste Daroussin``` 44263660c0SAlfonso Siciliano% ./bsddialog --backtitle "TITLE" --title msgbox --msgbox "Hello World!" 5 30 45263660c0SAlfonso Siciliano% ./bsddialog --theme blackwhite --title msgbox --msgbox "Hello World!" 5 30 46263660c0SAlfonso Siciliano% ./bsddialog --begin-y 2 --default-no --title yesno --yesno "Hello World!" 5 30 47263660c0SAlfonso Siciliano% ./bsddialog --ascii-lines --pause "Hello World!" 8 50 10 48263660c0SAlfonso Siciliano% ./bsddialog --checklist "Space to select" 0 0 0 Name1 Desc1 off Name2 Desc2 on 49263660c0SAlfonso Siciliano% ./bsddialog --title yesno --hline "bsddialog" --yesno "Hello World!" 5 25 50263660c0SAlfonso Siciliano% ./bsddialog --extra-button --help-button --yesno "Hello World!" 0 0 51c76f0793SBaptiste Daroussin``` 52263660c0SAlfonso Siciliano 53263660c0SAlfonso Sicilianoand [Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_utility) 54263660c0SAlfonso Sicilianoin the _Public Domain_ to build new projects: 55f499134dSBaptiste Daroussin``` 5684823cc7SAlfonso S. Siciliano% sh ./examples_utility/calendar.sh 57f499134dSBaptiste Daroussin% sh ./examples_utility/checklist.sh 5861ba55bcSBaptiste Daroussin% sh ./examples_utility/datebox.sh 59f499134dSBaptiste Daroussin% sh ./examples_utility/form.sh 60f499134dSBaptiste Daroussin% sh ./examples_utility/gauge.sh 61f499134dSBaptiste Daroussin% sh ./examples_utility/infobox.sh 62f499134dSBaptiste Daroussin% sh ./examples_utility/inputbox.sh 63f499134dSBaptiste Daroussin% sh ./examples_utility/menu.sh 64f499134dSBaptiste Daroussin% sh ./examples_utility/mixedform.sh 65f499134dSBaptiste Daroussin% sh ./examples_utility/mixedgauge.sh 66f499134dSBaptiste Daroussin% sh ./examples_utility/msgbox.sh 67f499134dSBaptiste Daroussin% sh ./examples_utility/passwordbox.sh 68f499134dSBaptiste Daroussin% sh ./examples_utility/passwordform.sh 69bce40c02SAlfonso S. Siciliano% sh ./examples_utility/pause.sh 70f499134dSBaptiste Daroussin% sh ./examples_utility/radiolist.sh 7161ba55bcSBaptiste Daroussin% sh ./examples_utility/rangebox.sh 72bce40c02SAlfonso S. Siciliano% sh ./examples_utility/timebox.sh 73f499134dSBaptiste Daroussin% sh ./examples_utility/yesno.sh 74f499134dSBaptiste Daroussin``` 75c76f0793SBaptiste Daroussin 76263660c0SAlfonso Siciliano## Library 77263660c0SAlfonso Siciliano 78263660c0SAlfonso Siciliano**API** 79263660c0SAlfonso Siciliano 80263660c0SAlfonso Siciliano - [bsddialog.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog.h) 81263660c0SAlfonso Siciliano - [bsddialog\_theme.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog_theme.h) 82263660c0SAlfonso Siciliano 83263660c0SAlfonso Siciliano 84263660c0SAlfonso Siciliano**Manual** 85263660c0SAlfonso Siciliano 86263660c0SAlfonso Siciliano - [bsddialog(3)](https://alfonsosiciliano.gitlab.io/posts/2022-01-15-manual-libbsddialog.html) 87263660c0SAlfonso Siciliano 88263660c0SAlfonso Siciliano 89263660c0SAlfonso Siciliano**Examples**: 90263660c0SAlfonso Siciliano 91263660c0SAlfonso Siciliano[Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_library) 92263660c0SAlfonso Sicilianoin the _Public Domain_ to build new projects: 93c76f0793SBaptiste Daroussin``` 94f499134dSBaptiste Daroussin% cd examples_library 95c76f0793SBaptiste Daroussin% sh compile 9684823cc7SAlfonso S. Siciliano% ./calendar 97b319d934SAlfonso S. Siciliano% ./checklist 98f499134dSBaptiste Daroussin% ./datebox 99f499134dSBaptiste Daroussin% ./form 10061ba55bcSBaptiste Daroussin% ./gauge 101c76f0793SBaptiste Daroussin% ./infobox 102c76f0793SBaptiste Daroussin% ./menu 10361ba55bcSBaptiste Daroussin% ./mixedgauge 104c76f0793SBaptiste Daroussin% ./mixedlist 105c76f0793SBaptiste Daroussin% ./msgbox 106f499134dSBaptiste Daroussin% ./pause 107c76f0793SBaptiste Daroussin% ./radiolist 108f499134dSBaptiste Daroussin% ./rangebox 109c76f0793SBaptiste Daroussin% ./theme 110f499134dSBaptiste Daroussin% ./timebox 111c76f0793SBaptiste Daroussin% ./yesno 112c76f0793SBaptiste Daroussin``` 113c76f0793SBaptiste Daroussin 114b319d934SAlfonso S. Siciliano 115b319d934SAlfonso S. Siciliano## TODO and Ideas 116b319d934SAlfonso S. Siciliano 117a6d8be45SAlfonso S. Siciliano - menubar feature. 118a6d8be45SAlfonso S. Siciliano - key callback. 119a6d8be45SAlfonso S. Siciliano - Right-To-Left text. 12061ba55bcSBaptiste Daroussin - some terminal does not hide the cursor, move it bottom-right before to getch. 121a6d8be45SAlfonso S. Siciliano - refactor backtitle: add WINDOW \*dialog.backtitle for multiline and fix expanding screen. 122a6d8be45SAlfonso S. Siciliano - refactor bottomdesc: add WINDOW \*dialog.bottomdesc to fix expandig screen. 123a6d8be45SAlfonso S. Siciliano - accessibility https://wiki.freebsd.org/Accessibility/Wishlist/Base. 12461ba55bcSBaptiste Daroussin - add bool conf.menu.depthlines. 12561ba55bcSBaptiste Daroussin - implement custom getopt\_long(). 12661ba55bcSBaptiste Daroussin - refactor/redesign gauge(). 12761ba55bcSBaptiste Daroussin - improve grey lines expanding terminal (maybe redrawwin() in hide\_dialog()). 12861ba55bcSBaptiste Daroussin - more restrictive strtol() and strtoul(). 12961ba55bcSBaptiste Daroussin - implement global buttons handler. 130a6d8be45SAlfonso S. Siciliano - doc: external tutorial, theming guide. 131a6d8be45SAlfonso S. Siciliano - implement menutype.min\_on. 132a6d8be45SAlfonso S. Siciliano - improve refresh at startup, avoid dialog refresh before drawing text. 133a6d8be45SAlfonso S. Siciliano - add debug API: bsddialog\_debug(y,x,refresh,"fmt",...). 134a6d8be45SAlfonso S. Siciliano - add mouse support. 135a6d8be45SAlfonso S. Siciliano - use alarm(2) for bsddialog\_pause. 136a6d8be45SAlfonso S. Siciliano - delete form fieldlen constraint, hide or truncate long field in little screens. 137a6d8be45SAlfonso S. Siciliano - improve --inputbox autosizing, consider also input length. 138a6d8be45SAlfonso S. Siciliano - fix --form "" 0 0 0 Label 1 0 Init 1 12 0 0 (with 0 editable field). 139a6d8be45SAlfonso S. Siciliano - fix --mixedform "" 0 0 0 Label 1 0 Init 1 12 0 0 2 (with 0 editable field). 140a6d8be45SAlfonso S. Siciliano - add *text* customization to --hmsg *help-message* 141079f6054SAlfonso S. Siciliano - check --passwordform *fieldlen* like --form and --mixedform. 142079f6054SAlfonso S. Siciliano 143