xref: /freebsd/contrib/bsddialog/examples_library/theme.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 #include <bsddialog_theme.h>
16*f499134dSBaptiste Daroussin 
17*f499134dSBaptiste Daroussin int main()
18*f499134dSBaptiste Daroussin {
19*f499134dSBaptiste Daroussin 	int output;
20*f499134dSBaptiste Daroussin 	struct bsddialog_conf conf;
21*f499134dSBaptiste Daroussin 	enum bsddialog_default_theme theme;
22*f499134dSBaptiste Daroussin 	struct bsddialog_menuitem items[5] = {
23*f499134dSBaptiste Daroussin 	    {"", false, 0, "Dialog",    "Current dialog theme",  "BSDDIALOG_THEME_DIALOG" },
24*f499134dSBaptiste Daroussin 	    {"", false, 0, "BSDDialog", "Future default theme",  "BSDDIALOG_THEME_DEFAULT"},
25*f499134dSBaptiste Daroussin 	    {"", false, 0, "BlackWhite","Black and White theme", "BSDDIALOG_THEME_BLACKWHITE"},
26*f499134dSBaptiste Daroussin 	    {"", false, 0, "Magenta",   "Testing",               "BSDDIALOG_THEME_MAGENTA"},
27*f499134dSBaptiste Daroussin 	    {"", false, 0, "Quit",      "Exit",                  "Quit or Cancel to exit" }
28*f499134dSBaptiste Daroussin 	};
29*f499134dSBaptiste Daroussin 
30*f499134dSBaptiste Daroussin 	bsddialog_initconf(&conf);
31*f499134dSBaptiste Daroussin 	conf.title = " Theme ";
32*f499134dSBaptiste Daroussin 
33*f499134dSBaptiste Daroussin 	if (bsddialog_init() == BSDDIALOG_ERROR)
34*f499134dSBaptiste Daroussin 		return BSDDIALOG_ERROR;
35*f499134dSBaptiste Daroussin 
36*f499134dSBaptiste Daroussin 	while (true) {
37*f499134dSBaptiste Daroussin 		bsddialog_backtitle(&conf, "Theme Example");
38*f499134dSBaptiste Daroussin 
39*f499134dSBaptiste Daroussin 		output = bsddialog_menu(&conf, "Choose theme", 15, 40, 5, 5, items, NULL);
40*f499134dSBaptiste Daroussin 
41*f499134dSBaptiste Daroussin 		if (output != BSDDIALOG_YESOK || items[4].on)
42*f499134dSBaptiste Daroussin 			break;
43*f499134dSBaptiste Daroussin 
44*f499134dSBaptiste Daroussin 		if (items[0].on) {
45*f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_DIALOG;
46*f499134dSBaptiste Daroussin 			conf.menu.default_item = items[0].name;
47*f499134dSBaptiste Daroussin 		}
48*f499134dSBaptiste Daroussin 		else if (items[1].on) {
49*f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_BSDDIALOG;
50*f499134dSBaptiste Daroussin 			conf.menu.default_item = items[1].name;
51*f499134dSBaptiste Daroussin 		}
52*f499134dSBaptiste Daroussin 		else if (items[2].on) {
53*f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_BLACKWHITE;
54*f499134dSBaptiste Daroussin 			conf.menu.default_item = items[2].name;
55*f499134dSBaptiste Daroussin 		}
56*f499134dSBaptiste Daroussin 		else if (items[3].on) {
57*f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_MAGENTA;
58*f499134dSBaptiste Daroussin 			conf.menu.default_item = items[3].name;
59*f499134dSBaptiste Daroussin 		}
60*f499134dSBaptiste Daroussin 
61*f499134dSBaptiste Daroussin 		bsddialog_set_default_theme(theme);
62*f499134dSBaptiste Daroussin 	}
63*f499134dSBaptiste Daroussin 
64*f499134dSBaptiste Daroussin 	bsddialog_end();
65*f499134dSBaptiste Daroussin 
66*f499134dSBaptiste Daroussin 	return output;
67*f499134dSBaptiste Daroussin }
68