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 }