xref: /freebsd/contrib/bsddialog/examples_library/mixedlist.c (revision f499134dd403eeeba8283e2640e2654c8da62430)
1*f499134dSBaptiste Daroussin /*-
2*f499134dSBaptiste Daroussin  * SPDX-License-Identifier: CC0-1.0
3*f499134dSBaptiste Daroussin  *
4*f499134dSBaptiste Daroussin  * Written in 2021 by Alfonso Sabato Siciliano.
5*f499134dSBaptiste Daroussin  * To the extent possible under law, the author has dedicated all copyright
6*f499134dSBaptiste Daroussin  * and related and neighboring rights to this software to the public domain
7*f499134dSBaptiste Daroussin  * worldwide. This software is distributed without any warranty, see:
8*f499134dSBaptiste Daroussin  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9*f499134dSBaptiste Daroussin  */
10*f499134dSBaptiste Daroussin 
11*f499134dSBaptiste Daroussin #include <stdio.h>
12*f499134dSBaptiste Daroussin #include <string.h>
13*f499134dSBaptiste Daroussin 
14*f499134dSBaptiste Daroussin #include <bsddialog.h>
15*f499134dSBaptiste Daroussin 
16*f499134dSBaptiste Daroussin int main()
17*f499134dSBaptiste Daroussin {
18*f499134dSBaptiste Daroussin 	int i, j, output;
19*f499134dSBaptiste Daroussin 	struct bsddialog_conf conf;
20*f499134dSBaptiste Daroussin 	struct bsddialog_menuitem item;
21*f499134dSBaptiste Daroussin 	struct bsddialog_menuitem check[5] = {
22*f499134dSBaptiste Daroussin 	    { "+", true,  0, "Name 1", "Desc 1", "Bottom Desc 1" },
23*f499134dSBaptiste Daroussin 	    { "" , false, 0, "Name 2", "Desc 2", "Bottom Desc 2" },
24*f499134dSBaptiste Daroussin 	    { "+", true,  0, "Name 3", "Desc 3", "Bottom Desc 3" },
25*f499134dSBaptiste Daroussin 	    { "" , false, 0, "Name 4", "Desc 4", "Bottom Desc 4" },
26*f499134dSBaptiste Daroussin 	    { "+", true,  0, "Name 5", "Desc 5", "Bottom Desc 5" }
27*f499134dSBaptiste Daroussin 	};
28*f499134dSBaptiste Daroussin 	struct bsddialog_menuitem sep[1] = {
29*f499134dSBaptiste Daroussin 	    { "", true, 0, "Radiolist", "(desc)", "" }
30*f499134dSBaptiste Daroussin 	};
31*f499134dSBaptiste Daroussin 	struct bsddialog_menuitem radio[5] = {
32*f499134dSBaptiste Daroussin 	    { "",  true,  0, "Name 1", "Desc 1", "Bottom Desc 1" },
33*f499134dSBaptiste Daroussin 	    { "+", false, 0, "Name 2", "Desc 2", "Bottom Desc 2" },
34*f499134dSBaptiste Daroussin 	    { "",  false, 0, "Name 3", "Desc 3", "Bottom Desc 3" },
35*f499134dSBaptiste Daroussin 	    { "+", false, 0, "Name 4", "Desc 4", "Bottom Desc 4" },
36*f499134dSBaptiste Daroussin 	    { "",  false, 0, "Name 5", "Desc 5", "Bottom Desc 5" }
37*f499134dSBaptiste Daroussin 	};
38*f499134dSBaptiste Daroussin 	struct bsddialog_menugroup group[3] = {
39*f499134dSBaptiste Daroussin 	    { BSDDIALOG_CHECKLIST, 5, check },
40*f499134dSBaptiste Daroussin 	    { BSDDIALOG_SEPARATOR, 1, sep   },
41*f499134dSBaptiste Daroussin 	    { BSDDIALOG_RADIOLIST, 5, radio }
42*f499134dSBaptiste Daroussin 	};
43*f499134dSBaptiste Daroussin 
44*f499134dSBaptiste Daroussin 	bsddialog_initconf(&conf);
45*f499134dSBaptiste Daroussin 	conf.title = "mixedmenu";
46*f499134dSBaptiste Daroussin 
47*f499134dSBaptiste Daroussin 	if (bsddialog_init() < 0)
48*f499134dSBaptiste Daroussin 		return -1;
49*f499134dSBaptiste Daroussin 
50*f499134dSBaptiste Daroussin 	output = bsddialog_mixedlist(&conf, "dialog4ports", 20, 30, 11, 3, group,
51*f499134dSBaptiste Daroussin 	    NULL,NULL);
52*f499134dSBaptiste Daroussin 
53*f499134dSBaptiste Daroussin 	bsddialog_end();
54*f499134dSBaptiste Daroussin 
55*f499134dSBaptiste Daroussin 	printf("Mixedlist:\n");
56*f499134dSBaptiste Daroussin 	for (i=0; i<3; i++) {
57*f499134dSBaptiste Daroussin 		for (j=0; j<group[i].nitems; j++) {
58*f499134dSBaptiste Daroussin 			item = group[i].items[j];
59*f499134dSBaptiste Daroussin 			if (group[i].type == BSDDIALOG_SEPARATOR)
60*f499134dSBaptiste Daroussin 				printf("----- %s -----\n", item.name);
61*f499134dSBaptiste Daroussin 			else if (group[i].type == BSDDIALOG_RADIOLIST)
62*f499134dSBaptiste Daroussin 				printf(" (%c) %s\n", item.on ? '*' : ' ', item.name);
63*f499134dSBaptiste Daroussin 			else /* BSDDIALOG_PORTCHECKLIST */
64*f499134dSBaptiste Daroussin 				printf(" [%c] %s\n", item.on ? 'X' : ' ', item.name);
65*f499134dSBaptiste Daroussin 		}
66*f499134dSBaptiste Daroussin 	}
67*f499134dSBaptiste Daroussin 
68*f499134dSBaptiste Daroussin 
69*f499134dSBaptiste Daroussin 	return output;
70*f499134dSBaptiste Daroussin }
71