xref: /freebsd/contrib/bsddialog/README.md (revision d4ca001544347e217e2ab023cca88b30637def98)
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![screenshot](screenshot.png)
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