aboutsummaryrefslogtreecommitdiff
path: root/contrib/bsddialog/CHANGELOG
blob: 0e75f847347d9ee984d2aeba0cd4590a28bebe14 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
2024-04-11 Version 1.0.2

	Utility:
	improvements and changes for --form and --mixedform:
	    * add: <maxletters> 0 sets <maxletters> like <fieldlen>.
	    * add: <fieldlen> 0 sets <fieldlen> like <init> width and readonly.
	    * change: <maxletters> 0 was an error (remains error in lib).
	    * change: <fieldlen> 0 was an error (remains error in lib)
	      (<fieldlen> 0 and <init> "" is still an error.).

	Library and implicitly utility:
	* add: Ctrl-l to redraw dialog.
	    Request stable@freebsd.org January 2024.
	* add: -, +, Ctrl-p, Ctrl-n for several dialogs.
	    +, - request for menus, private feature request.
	    Ctrl-p, Ctrl-n for menu, request hackers@freebsd.org February 2024.
	* fix: escaped text ending with an escape symbol.
	* change: truncate mixedgauge long (over the screen/minibars)
	    minilabels adding "...". As a result, avoid check-size error.
	    https://gitlab.com/alfix/bsddialog/-/issues/6.
	* change: invert UP/DOWN keys to set a rangebox value.


2023-11-16 Version 1.0.1

	Library Internal Refactoring:
	* add: arrow macro handlers.
	* change: Box-drawing characters, from utf8 to wide chars to avoid to
	    handle "env NCURSES_NO_UTF8_ACS=1".
	    Request https://bugs.freebsd.org/274472,
	    Rationale https://reviews.freebsd.org/D42380.

2023-08-01 Version 1.0

	Utility:
	* add: comments to --save-theme output file.
	* add: blink, halfbright, highlight to --save-theme and --load-theme.
	* add: theme.menu.[f_]prefixcolor to --save-theme and --load-theme.
	* add: --datebox-format <d/m/y|m/d/y|y/m/d> to set --datebox UI.
	* add: --help-print-items (--help-status becomes alias).
	* add: --text-escape (--colors becomes alias).
	* add: new escapes \Zd, \Zk, \Zs, \ZD, \ZK, \ZS, for --text-escape.
	* add: env NO_COLOR, to set blackwhite theme.
	* add: $HOME/.bsddialog.conf startup theme file.
	* add: env BSDDIALOG_THEMEFILE startup theme file.
	* add: --left1-button <label>.
	* add: --left2-button <label>.
	* add: --left3-button <label>.
	* add: --right1-button <label>.
	* add: --right2-button <label>.
	* add: --right3-button <label>.
	* add: dynamic exit codes.
	    - add: --error-exit-code.
	    - add: --ok-exit-code.
	    - add: --cancel-exit-code.
	    - add: --help-exit-code.
	    - add: --extra-exit-code.
	    - add: --timeout-exit-code.
	    - add: --esc-exit-code.
	    - add: --left1-exit-code.
	    - add: --left2-exit-code.
	    - add: --left3-exit-code.
	    - add: --right1-exit-code.
	    - add: --right2-exit-code.
	    - add: --right3-exit-code.
	    - add: env BSDDIALOG_ERROR.
	    - add: env BSDDIALOG_OK.
	    - add: env BSDDIALOG_CANCEL.
	    - add: env BSDDIALOG_HELP.
	    - add: env BSDDIALOG_EXTRA.
	    - add: env BSDDIALOG_TIMEOUT.
	    - add: env BSDDIALOG_ESC.
	    - add: env BSDDIALOG_LEFT1.
	    - add: env BSDDIALOG_LEFT2.
	    - add: env BSDDIALOG_LEFT3.
	    - add: env BSDDIALOG_RIGHT1.
	    - add: env BSDDIALOG_RIGHT2.
	    - add: env BSDDIALOG_RIGHT3.
	* add: undocumented envs for bsdconfig(8) compatibility.
	    - env BSDDIALOG_COMPATRC for use_shadow setting.
	    - env BSDDIALOG_ITEM_HELP to add/set exit code.
	* change: rename themes --theme <3d|blackwhite|flat>.
	* change: --no-names and --no-descriptions mutually exclusive (via lia).
	* change: quote only checklist output items if necessary. Previously
	    also radiolist item.
	* change: dialogs with user input print always values except with ERROR,
	    ESC, Cancel. Previously the situation was quite heterogeneous.
	* improve: DIAGNOSTIC messages adding fmt string errors.
	* improve: disable theme setting (opt and env) with no-color terminals.
	* improve: menus on|off status (strcasecmp, diagnostic, real off check).
	* improve: --bikeshed with button delimiter and --date-format.
	* improve: --textbox accepts button options.
	* improve: Forms with Help button.
	    - print "HELP" (like menus).
	    - accept --help-list-items.
	    - accept --help-print-name.
	* fix: --load-theme attributes.
	* fix: --clear-screen with --and-dialog.
	* delete: --theme <bsddialog> (partially implemented).
	* delete: --esc-return-cancel (replaced by new env and option).
	* delete: --generic-button1 (replaced by --right1-button).
	* delete: --generic-button2 (replaced by --right2-button).
	* refactor: modularize in more files (main, cli, builders, theme).

	Library:
	* add: bsddialog_inmode().
	* add: bsddialog_clear(y) for utility --clear-screen.
	* add: bsddialog_refresh() for utility terminal mode options.
	* add: conf.date.format="d/m/y"|"m/d/y"|"y/m/d" to customize
	    bsddialog_datebox() UI (boxes) with a date format.
	* add: 'const char *end' to bsddialog_gauge().
	* add: draw focus on the shortcut-key-selected button at exit.
	* add: escapes for conf.text.highlight \Zd, \Zk, \Zs, \ZD, \ZK, \ZS.
	* add: other theme flags.
	    - BSDDIALOG_BLINK.
	    - BSDDIALOG_HALFBRIGHT.
	    - BSDDIALOG_HIGHLIGHT.
	* add: generic buttons.
	    - conf.button.left1_label, BSDDIALOG_LEFT1 return value.
	    - conf.button.left2_label, BSDDIALOG_LEFT2 return value.
	    - conf.button.left3_label, BSDDIALOG_LEFT3 return value.
	    - conf.button.right1.label, BSDDIALOG_RIGHT1 return value.
	    - conf.button.right2.label, BSDDIALOG_RIGHT2 return value.
	    - conf.button.right3.label, BSDDIALOG_RIGHT3 return value.
	* add: unused bsddialog_menugroup.min_on for future features.
	* add: theme.menu.f_prefixcolor and theme.menu.prefixcolor.
	* improve: check (when possible) API pointers.
	* improve: circolar buttons with left and right keys for msgbox, yesno,
	    menus, rangebox and pause.
	* improve: bsddialog_textbox() handles conf.buttons.
	* improve: bsddialog_datebox() a box change affects the others as well.
	* improve: bsddialog_geterror() with fmt strings.
	* change: API NULL strings handled like "", except gauge *sep and *end.
	* change: menus and form less restrictive with text, hide text with
	    little screens (same behavior as other dialogs).
	* change: mixedgauge BSDDIALOG_MG_BLANK does not draw minibar but prints
	    minilabel. The change allows mixedgauge to add sections. To restore
	    the previous behavior setting minilabel to "".
	* change: check/set bsddialog_gauge() perc max 100.
	* change: check/set bsddialog_mixedgauge() mainperc max 100.
	* change: conf.menu.no_name and conf.menu.no_desc mutually exclusive.
	* change: bsddialog_pause() sec -> *sec to know remaining time at exit.
	* change: add *focusitem to bsddialog_form() like menus.
	* change: "pointer" values are always set except when BSDDIALOG_ERROR
	    occurs. Examples *yy/*mm/*ss, rangebox *value.
	    - delete conf.menu.on_without_ok.
	    - delete conf.form.value_without_ok.
	* rename: conf.text.highlight -> conf.text.escape.
	* rename: theme.menu.namesepcolor -> theme.menu.sepnamecolor.
	* rename: theme.menu.descsepcolor -> theme.menu.sepdesccolor.
	* fix: bsddialog_pause() elevation bar after resize.
	* fix: bsddialog_textbox() key '0'.
	* fix: timebox.c checksize (boxes width).
	* fix: extend menurows after shrink and enlarge.
	* fix: menu pad and form pad "re-expansion" after shrink and enlarge.
	* fix: shadow top-left corner (trick wresize() before wmove()).
	* fix: increment bsddialog_total_progview size for more general use.
	* delete: BSDDIALOG_THEME_BSDDIALOG (partially implemented).
	* delete: conf.button.generic1_label (for new conf.button.right1_label).
	* delete: BSDDIALOG_GENERIC1 return value (new BSDDIALOG_RIGHT1).
	* delete: conf.button.generic2_label (for new conf.button.right2_label).
	* delete: BSDDIALOG_GENERIC2 return value (new BSDDIALOG_RIGHT2).
	* delete: bsddialog_clearterminal(), replaced by bsddialog_clear(y).
	* refactor: internal implementation.
	    - add: internal structures to represent components.
	    - merge: (when possible) dialogs autosize.
	    - merge: (when possible) dialogs checksize.
	    - merge: for each dialog "build" with "update" -> <dialog>_redraw().
	    - merge: new_dialog() with update_dialog() -> draw_dialog().
	    - merge: infobox.c with messagebox.c (delete infobox.c)
	    - merge: bsddialog_datebox() + bsddialog_calendar() -> datebox.c
	    - change: flat and blackwhite real themes, 3d adapted from flat.
	    - improve: replace wrefresh() -> wnoutrefresh()/doupdate().
	    - improve: replace prefresh() -> pnoutrefresh()/doupdate().
	    - improve: menu split code to build private items.
	    - improve: form split code to build private items.
	    - delete: -Wno-implicit-fallthrough.


2023-06-12 Version 0.4.2

	Library:
	* fix: compile error with aarch64-gcc12 for "\Z[0-7]" check;
	    https://gitlab.com/alfix/bsddialog/-/issues/5.
	* fix: BSDDIALOG_FIELDCURSOREND with multiple items
	    (warning aarch64-gcc12).


2023-01-02 Version 0.4.1

	Utility:
	* fix: default space separator menus output, except if --separator " ".
	* rename: GNUMakefile to GNUmakefile to simplify linux build.
	    Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/2.

	Library:
	* fix: t.dialog.linelowercolor no bold-black, some terminal draws grey.
	* fix: text wrapping (actual string length) with --colors.
	* rename: GNUMakefile to GNUmakefile to simplify linux build.
	    Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/2.


2022-09-24 Version 0.4

	Utility:
	* add: --normal-screen to set normal mode.
	* add: --alternate-screen to set alternate mode.
	* add: --keep-tite as --alternate-screen alias.
	* add: --and-dialog to build other dialogs.
	* add: --and-widget as --and-dialog alias.
	* add: --no-names (--no-tags becomes alias).
	* add: --no-descriptions (--no-items becomes alias).
	* add: --help-print-name (--help-tags becomes alias).
	* add: --item-bottom-desc (--item-help becomes alias).
	* add: --cr-wrap (was partially implemented) to keep '\n' with "\n".
	* add: --text-unchanged to avoid default modification.
	* add: --tab-escape to enable "\t" in text.
	* add: --clear-screen to clear the screen.
	* add: --clear-dialog to clear the dialog (was --clear).
	* add: --calendar dialog to select a date.
	* add: DIAGNOSTICS messages for bad arguments number.
	* add: DIAGNOSTICS messages for missing and unexpected options.
	* change: --clear becomes alias for --clear-screen.
	* change: --print-maxsize format output.
	* change: --menu, --radiolist, --checklist and --treeview output.
	    - no printed items with Cancel or ESC.
	    - --separator prints <sepstr> before each item except HELP.
	    - --separator and --separate-output print <sepstr> after each item.
	    - quoted item name/desc only when needed.
	    - --menu avoids to print selected item after focused HELP item.
	* change: text default modification.
	    - without a "\n": '\t' -> space, '\n' -> '\n', trim spaces.
	    - with a "\n": '\t' -> space, '\n' -> space, "\n" -> '\n', no trim.
	    - delete '\n' after "\n" (also with --cr-wrap).
	* change: --datebox input and output format yy/mm/dd -> dd/mm/yy.
	* delete: --no-collapse (partially implemented).
	* delete: --no-nl-expand (partially implemented).
	* delete: --trim (partially implemented).

	Library:
	* add: bsddialog_msgbox() HOME, END, PPAGE and NPAGE keys.
	* add: bsddialog_yesno() HOME, END, PPAGE and NPAGE keys.
	* add: bsddialog_menu() SPACE key (equivalent to ENTER).
	* add: bsddialog_calendar() to select a date.
	* change: rename enum bsddialog_grouptype -> enum bsddialog_menutype.
	* change: fixed-menurows becomes at most menurows (depending on text).
	* change: fixed-rows becomes at most rows, min(rows, screenH - shadow).
	* change: fixed-cols becomes at most cols, min(cols, screenW - shadow).
	* delete: undocumented internal bsddialog_menuitem.depth factor (was 2).


2022-08-29 Version 0.3

	Utility:
	* add: --textbox accepts options for the first button.
	* add: --columns-per-row for text autosizing.
	* add: --load-theme to read and set a custom theme at runtime.
	* add: --save-theme to save current theme.
	* add: --bikeshed for random settings.
	* add: --switch-buttons to enable buttons/input widgets focus switching.
	       Available for: --form, --inputbox, --mixedform, --passwordform,
	       --passwordbox, --timebox and --datebox.
	* change: rename --esc-cancelvalue to --esc-return-cancel.
	* change: form field value is printed like multibyte charachter string,
	          previously widechar string.
	* change: --timebox output with zero padding.
	* change: --datebox output mm and dd with zero padding.
	* fix: --hline with empty string.
	* fix: avoid to overlay the backtitle by setting a top margin.
	* fix: avoid to overlay down shadow with menus and forms bottomdesc
	       by setting a down margin.
	* fix: --form read-only flag with multiple fields.

	Library:
	* add: conf.auto_topmargin and conf.auto_downmargin.
	* add: bsddialog_textbox() accepts conf.button.* for the first button.
	* add: bsddialog_textbox() arrows and percentage.
	* add: conf.text.cols_per_row to set a ratio for text autosizing.
	* add: timebox and datebox arrows and focus background for boxes.
	* add: timebox and datebox UP key to switch focus.
	* add: bsddialog_init_notheme() in bsddialog.h.
	* add: bsddialog_hascolors() in bsddialog_theme.h.
	* add: theme.form.bottomdesccolor and theme.menu.bottomdesccolor.
	* add: conf.button.always_active to disable buttons/input-boxes switch.
	* add: dynamic buttons margin.
	    - add: theme.button.minmargin and theme.button.maxmargin.
	    - delete: theme.button.hmargin.
	* add: Unicode.
	    - UI handles multicolumn charachters: backtitle, title,
	      text (word wrapping, autosizing), menus (shortcuts, name, desc),
	      forms (label, field), textbox, mixedgauge (minilabel),
	      buttons (label, shortcuts), bottomtitle.
	    - API handles char* arguments like multibyte charachter string,
	      depending on the current locale.
	    - Internally wide charachters are used to get input from keyboard
	      and to adapt word wrapping and dynamic text autosizing to
	      muticolumn charachters.
	* refactoring: (rewrite) form.c.
	    - delete: libformw dep implementing its features from scratch.
	    - delete: maxvaluelen >= valuelen constraint.
	    - delete: conf.form.enable_wchar, get always unicode (wchar) input.
	    - add: KEY_HOME, KEY_END, KEY_PPAGE, KEY_NPAGE keys in field.
	    - add: KEY_UP can move focus from buttons to fields.
	    - add: KEY_DOWN can move focus from item to buttons, if nitem is 1.
	    - add: conf.form.securembch secure multibyte charachter.
	    - add: BSDDIALOG_FIELDNOCOLOR for formitem.flags.
	    - add: BSDDIALOG_FIELDCURSOREND for formitem.flags.
	    - add: BSDDIALOG_FIELDEXTEND for formitem.flags.
	    - add: BSDDIALOG_FIELDSINGLEBYTE for formitem.flags.
	    - add: resizing and refresh after KEY_RESIZE (SIGWINCH).
	    - add: items scrolling.
	    - add: conf.form.value_wchar, value is wchar_t* instead of MB-char*.
	    - add: formheight autosizing.
	    - add: dynamic item position.
	* fix: bsddialog_gauge() with fd < 0.
	* fix: bsddialog_gauge() refresh new text.
	* fix: internal segmentation fault with disabled shadow.
	* fix: center position without shadow.
	* fix: bsddialog_infobox() with zero text length.
	* fix: text wrapping with more than 1024 words.
	* fix: rename theme.shadow.h to theme.shadow.y.
	* fix: rename theme.shadow.w to theme.shadow.x.
	* fix: menurows autosize with fixed rows improving text_size().
	* fix: messagebox.c scrolling and checksize without text.


2022-03-02 Version 0.2

	Utility:
	* add: (this) CHANGELOG.
	* add: "menus" print item with focus (except with OK and ERROR).
	* add: pause.sh example.
	* add: timebox.sh example.
	* change: --theme name "default" -> "flat".
	* delete: treeview.sh example.
	* fix: --separate-output does not quote (except with --quoted).
	* fix: --datebox and --date-format month in output.
	* improve: examples handle exit status.

	Library:
	* add: conf.form.enable_wchar for wide characters in bsddialog_form().
	* add: theme.menu.f_selectorcolor.
	* add: formw.c example.
	* change: move conf.f1_file and conf.f1_message in conf.key.
	* change: theme.button.[left|right]ch -> theme.button.[left|right]delim.
	* change: theme.button.space -> theme.button.hmargin.
	* change: theme.menu.arrowcolor -> theme.dialog.arrowcolor.
	* change: internal bsddialog_menuitem.depth factor 4 -> 2.
	* fix: disable HOME, PPAGE, END and NPAGE keys in bsddialog_form().
	* fix: visible cursor for timebox.c and form.c in VM VirtualBox.
	* fix: mixedlist, center position of separator with big pad.
	* fix: timebox and datebox set values only with BSDDIALOG_OK.
	* fix: menurows autosize with fullscreen.
	* fix: bar color with 0%.
	* fix: bar label position.
	* improve: timebox and datebox navigation (keys, buttons and shortcuts).
	* improve: "menus" colors for accessibility.


2022-01-27 Version 0.1

	* Options: --ascii-lines, --backtitle <backtitle>, --begin-x <x>,
	  --begin-y <y>, --cancel-label <label>, --clear, --colors, --cr-wrap,
	  --date-format <format>, --defaultno, --default-button <label>,
	  --default-no, --default-item <name>, --disable-esc,
	  --esc-cancelvalue, --exit-label <label>, --extra-button,
	  --extra-label <label>, --generic-button1 <label>,
	  --generic-button2 <label>, --help, --help-button,
	  --help-label <label>, --help-status, --help-tags,
	  --hfile <filename>, --hline <string>, --hmsg <string>, --ignore,
	  --insecure, --item-depth, --item-help, --items-prefix,
	  --max-input <size>, --no-cancel, --nocancel, --no-collapse,
	  --no-items, --no-label <label>, --no-lines, --no-nl-expand,
	  --no-ok, --nook, --no-shadow, --no-tags, --ok-label <label>,
	  --output-fd <fd>, --output-separator <sep>, --print-maxsize,
	  --print-size, --print-version, --quoted, --separate-output,
	  --separator <sep>, --shadow, --single-quoted, --sleep <secs>,
	  --stderr, --stdout, --tab-len <spaces>,
	  --theme <blackwhite|bsddialog|default|dialog>,
	  --time-format <format>, --title <title>, --trim, --version,
	  --yes-label <label>.
	* Dialogs: --checklist, --datebox, --form, --gauge, --infobox,
	  --inputbox, --menu, --mixedform, --mixedgauge, --msgbox,
	  --passwordbox, --passwordform, --pause, --radiolist, --rangebox,
	  --textbox, --timebox, --treeview, --yesno.
	* Manuals: bsddialog.1, bsddialog.3.