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