xref: /freebsd-src/contrib/bsddialog/examples_library/mixedgauge.c (revision a6d8be451f62d425b71a4874f7d4e133b9fb393c)
1*61ba55bcSBaptiste Daroussin /*-
2*61ba55bcSBaptiste Daroussin  * SPDX-License-Identifier: CC0-1.0
3*61ba55bcSBaptiste Daroussin  *
4*61ba55bcSBaptiste Daroussin  * Written in 2023 by Alfonso Sabato Siciliano.
5*61ba55bcSBaptiste Daroussin  * To the extent possible under law, the author has dedicated all copyright
6*61ba55bcSBaptiste Daroussin  * and related and neighboring rights to this software to the public domain
7*61ba55bcSBaptiste Daroussin  * worldwide. This software is distributed without any warranty, see:
8*61ba55bcSBaptiste Daroussin  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9*61ba55bcSBaptiste Daroussin  */
10*61ba55bcSBaptiste Daroussin 
11*61ba55bcSBaptiste Daroussin #include <bsddialog.h>
12*61ba55bcSBaptiste Daroussin #include <stdlib.h>
13*61ba55bcSBaptiste Daroussin #include <stdio.h>
14*61ba55bcSBaptiste Daroussin #include <unistd.h>
15*61ba55bcSBaptiste Daroussin 
16*61ba55bcSBaptiste Daroussin #define NMINIBAR    13
17*61ba55bcSBaptiste Daroussin 
18*61ba55bcSBaptiste Daroussin static const char *minilabels[NMINIBAR] = {
19*61ba55bcSBaptiste Daroussin 	"Label   1",
20*61ba55bcSBaptiste Daroussin 	"Label   2",
21*61ba55bcSBaptiste Daroussin 	"Label   3",
22*61ba55bcSBaptiste Daroussin 	"Label   4",
23*61ba55bcSBaptiste Daroussin 	"Label   5",
24*61ba55bcSBaptiste Daroussin 	"Label   6",
25*61ba55bcSBaptiste Daroussin 	"Label   7",
26*61ba55bcSBaptiste Daroussin 	"Label   8",
27*61ba55bcSBaptiste Daroussin 	"Label   9",
28*61ba55bcSBaptiste Daroussin 	"Label  10",
29*61ba55bcSBaptiste Daroussin 	"Label  11",
30*61ba55bcSBaptiste Daroussin 	"Label   X",
31*61ba55bcSBaptiste Daroussin 	"Label   Y",
32*61ba55bcSBaptiste Daroussin };
33*61ba55bcSBaptiste Daroussin 
34*61ba55bcSBaptiste Daroussin static int minipercs[NMINIBAR] = {
35*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_SUCCEEDED,
36*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_FAILED,
37*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_PASSED,
38*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_COMPLETED,
39*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_CHECKED,
40*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_DONE,
41*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_SKIPPED,
42*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_INPROGRESS,
43*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_BLANK,
44*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_NA,
45*61ba55bcSBaptiste Daroussin 	BSDDIALOG_MG_PENDING,
46*61ba55bcSBaptiste Daroussin 	67,
47*61ba55bcSBaptiste Daroussin 	0,
48*61ba55bcSBaptiste Daroussin };
49*61ba55bcSBaptiste Daroussin 
exit_error()50*61ba55bcSBaptiste Daroussin static void exit_error()
51*61ba55bcSBaptiste Daroussin {
52*61ba55bcSBaptiste Daroussin 	if (bsddialog_inmode())
53*61ba55bcSBaptiste Daroussin 		bsddialog_end();
54*61ba55bcSBaptiste Daroussin 	printf("Error: %s\n", bsddialog_geterror());
55*61ba55bcSBaptiste Daroussin 	exit (1);
56*61ba55bcSBaptiste Daroussin }
57*61ba55bcSBaptiste Daroussin 
main()58*61ba55bcSBaptiste Daroussin int main()
59*61ba55bcSBaptiste Daroussin {
60*61ba55bcSBaptiste Daroussin 	int retval, i;
61*61ba55bcSBaptiste Daroussin 	struct bsddialog_conf conf;
62*61ba55bcSBaptiste Daroussin 
63*61ba55bcSBaptiste Daroussin 	if (bsddialog_init() == BSDDIALOG_ERROR)
64*61ba55bcSBaptiste Daroussin 		exit_error();
65*61ba55bcSBaptiste Daroussin 	bsddialog_initconf(&conf);
66*61ba55bcSBaptiste Daroussin 	conf.title = "mixedgauge";
67*61ba55bcSBaptiste Daroussin 	for (i = 0; i <= 10; i++) {
68*61ba55bcSBaptiste Daroussin 		minipercs[11] += 3;
69*61ba55bcSBaptiste Daroussin 		minipercs[12] = i * 10;
70*61ba55bcSBaptiste Daroussin 		retval= bsddialog_mixedgauge(&conf, "Example", 20, 40,
71*61ba55bcSBaptiste Daroussin 		    50 + i * 5, NMINIBAR, minilabels, minipercs);
72*61ba55bcSBaptiste Daroussin 		if (retval == BSDDIALOG_ERROR)
73*61ba55bcSBaptiste Daroussin 			exit_error();
74*61ba55bcSBaptiste Daroussin 		sleep(1);
75*61ba55bcSBaptiste Daroussin 	}
76*61ba55bcSBaptiste Daroussin 	bsddialog_end();
77*61ba55bcSBaptiste Daroussin 
78*61ba55bcSBaptiste Daroussin 	return (0);
79*61ba55bcSBaptiste Daroussin }