xref: /freebsd/contrib/bsddialog/README.md (revision 6549718b70f0e660a15685369afb4f9caf2215ce)
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