xref: /freebsd-src/contrib/bsddialog/examples_library/theme.c (revision 263660c061ac76d449cbca7bdd0db2ecdfad76d9)
1f499134dSBaptiste Daroussin /*-
2f499134dSBaptiste Daroussin  * SPDX-License-Identifier: CC0-1.0
3f499134dSBaptiste Daroussin  *
4f499134dSBaptiste Daroussin  * Written in 2021 by Alfonso Sabato Siciliano.
5f499134dSBaptiste Daroussin  * To the extent possible under law, the author has dedicated all copyright
6f499134dSBaptiste Daroussin  * and related and neighboring rights to this software to the public domain
7f499134dSBaptiste Daroussin  * worldwide. This software is distributed without any warranty, see:
8f499134dSBaptiste Daroussin  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9f499134dSBaptiste Daroussin  */
10f499134dSBaptiste Daroussin 
11f499134dSBaptiste Daroussin #include <stdio.h>
12f499134dSBaptiste Daroussin #include <string.h>
13f499134dSBaptiste Daroussin 
14f499134dSBaptiste Daroussin #include <bsddialog.h>
15f499134dSBaptiste Daroussin #include <bsddialog_theme.h>
16f499134dSBaptiste Daroussin 
17f499134dSBaptiste Daroussin int main()
18f499134dSBaptiste Daroussin {
19*263660c0SAlfonso Siciliano 	int output, focusitem;
20f499134dSBaptiste Daroussin 	struct bsddialog_conf conf;
21f499134dSBaptiste Daroussin 	enum bsddialog_default_theme theme;
22*263660c0SAlfonso Siciliano 	struct bsddialog_menuitem items[5] = {
23*263660c0SAlfonso Siciliano 		{"", false, 0, "Default", "dialog-like",
24*263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_DEFAULT" },
25*263660c0SAlfonso Siciliano 		{"", false, 0, "Dialog", "dialog clone",
26*263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_DIALOG" },
27*263660c0SAlfonso Siciliano 		{"", false, 0, "BSDDialog", "new theme",
28*263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_BSDDIALOG" },
29*263660c0SAlfonso Siciliano 		{"", false, 0, "BlackWhite","black and white",
30*263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_BLACKWHITE" },
31f499134dSBaptiste Daroussin 		{"", false, 0, "Quit", "Exit", "Quit or Cancel to exit" }
32f499134dSBaptiste Daroussin 	};
33f499134dSBaptiste Daroussin 
34*263660c0SAlfonso Siciliano 	if (bsddialog_init() == BSDDIALOG_ERROR) {
35*263660c0SAlfonso Siciliano 		printf("Error: %s\n", bsddialog_geterror());
36*263660c0SAlfonso Siciliano 		return (1);
37*263660c0SAlfonso Siciliano 	}
38*263660c0SAlfonso Siciliano 
39f499134dSBaptiste Daroussin 	bsddialog_initconf(&conf);
40f499134dSBaptiste Daroussin 
41f499134dSBaptiste Daroussin 	bsddialog_backtitle(&conf, "Theme Example");
42f499134dSBaptiste Daroussin 
43*263660c0SAlfonso Siciliano 	conf.title = " Theme ";
44*263660c0SAlfonso Siciliano 	focusitem = -1;
45*263660c0SAlfonso Siciliano 	while (true) {
46*263660c0SAlfonso Siciliano 		output = bsddialog_menu(&conf, "Choose theme", 15, 40, 5, 5,
47*263660c0SAlfonso Siciliano 		    items, &focusitem);
48f499134dSBaptiste Daroussin 
49*263660c0SAlfonso Siciliano 		if (output != BSDDIALOG_OK || items[4].on)
50f499134dSBaptiste Daroussin 			break;
51f499134dSBaptiste Daroussin 
52f499134dSBaptiste Daroussin 		if (items[0].on) {
53*263660c0SAlfonso Siciliano 			theme = BSDDIALOG_THEME_DEFAULT;
54*263660c0SAlfonso Siciliano 			focusitem = 0;
55f499134dSBaptiste Daroussin 		}
56f499134dSBaptiste Daroussin 		else if (items[1].on) {
57*263660c0SAlfonso Siciliano 			theme = BSDDIALOG_THEME_DIALOG;
58*263660c0SAlfonso Siciliano 			focusitem = 1;
59f499134dSBaptiste Daroussin 		}
60f499134dSBaptiste Daroussin 		else if (items[2].on) {
61*263660c0SAlfonso Siciliano 			theme = BSDDIALOG_THEME_BSDDIALOG;
62*263660c0SAlfonso Siciliano 			focusitem = 2;
63*263660c0SAlfonso Siciliano 		}
64*263660c0SAlfonso Siciliano 		else if (items[3].on) {
65f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_BLACKWHITE;
66*263660c0SAlfonso Siciliano 			focusitem = 3;
67f499134dSBaptiste Daroussin 		}
68f499134dSBaptiste Daroussin 
69f499134dSBaptiste Daroussin 		bsddialog_set_default_theme(theme);
70f499134dSBaptiste Daroussin 	}
71f499134dSBaptiste Daroussin 
72f499134dSBaptiste Daroussin 	bsddialog_end();
73f499134dSBaptiste Daroussin 
74*263660c0SAlfonso Siciliano 	return (output);
75f499134dSBaptiste Daroussin }