xref: /freebsd/contrib/bsddialog/examples_library/theme.c (revision bce40c0242b167a541cc051b6b0dbcc5f3d04319)
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 <bsddialog.h>
12f499134dSBaptiste Daroussin #include <bsddialog_theme.h>
13*bce40c02SAlfonso S. Siciliano #include <stdio.h>
14*bce40c02SAlfonso S. Siciliano #include <string.h>
15f499134dSBaptiste Daroussin 
16f499134dSBaptiste Daroussin int main()
17f499134dSBaptiste Daroussin {
18263660c0SAlfonso Siciliano 	int output, focusitem;
19f499134dSBaptiste Daroussin 	struct bsddialog_conf conf;
20f499134dSBaptiste Daroussin 	enum bsddialog_default_theme theme;
21263660c0SAlfonso Siciliano 	struct bsddialog_menuitem items[5] = {
22*bce40c02SAlfonso S. Siciliano 		{"", false, 0, "Flat", "dialog-like",
23*bce40c02SAlfonso S. Siciliano 		    "BSDDIALOG_THEME_FLAT" },
24263660c0SAlfonso Siciliano 		{"", false, 0, "Dialog", "dialog clone",
25263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_DIALOG" },
26263660c0SAlfonso Siciliano 		{"", false, 0, "BSDDialog", "new theme",
27263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_BSDDIALOG" },
28263660c0SAlfonso Siciliano 		{"", false, 0, "BlackWhite","black and white",
29263660c0SAlfonso Siciliano 		    "BSDDIALOG_THEME_BLACKWHITE" },
30f499134dSBaptiste Daroussin 		{"", false, 0, "Quit", "Exit", "Quit or Cancel to exit" }
31f499134dSBaptiste Daroussin 	};
32f499134dSBaptiste Daroussin 
33263660c0SAlfonso Siciliano 	if (bsddialog_init() == BSDDIALOG_ERROR) {
34263660c0SAlfonso Siciliano 		printf("Error: %s\n", bsddialog_geterror());
35263660c0SAlfonso Siciliano 		return (1);
36263660c0SAlfonso Siciliano 	}
37263660c0SAlfonso Siciliano 
38f499134dSBaptiste Daroussin 	bsddialog_initconf(&conf);
39f499134dSBaptiste Daroussin 
40f499134dSBaptiste Daroussin 	bsddialog_backtitle(&conf, "Theme Example");
41f499134dSBaptiste Daroussin 
42263660c0SAlfonso Siciliano 	conf.title = " Theme ";
43263660c0SAlfonso Siciliano 	focusitem = -1;
44263660c0SAlfonso Siciliano 	while (true) {
45*bce40c02SAlfonso S. Siciliano 		output = bsddialog_menu(&conf, "Choose theme", 15, 45, 5, 5,
46263660c0SAlfonso Siciliano 		    items, &focusitem);
47f499134dSBaptiste Daroussin 
48263660c0SAlfonso Siciliano 		if (output != BSDDIALOG_OK || items[4].on)
49f499134dSBaptiste Daroussin 			break;
50f499134dSBaptiste Daroussin 
51f499134dSBaptiste Daroussin 		if (items[0].on) {
52*bce40c02SAlfonso S. Siciliano 			theme = BSDDIALOG_THEME_FLAT;
53263660c0SAlfonso Siciliano 			focusitem = 0;
54f499134dSBaptiste Daroussin 		}
55f499134dSBaptiste Daroussin 		else if (items[1].on) {
56263660c0SAlfonso Siciliano 			theme = BSDDIALOG_THEME_DIALOG;
57263660c0SAlfonso Siciliano 			focusitem = 1;
58f499134dSBaptiste Daroussin 		}
59f499134dSBaptiste Daroussin 		else if (items[2].on) {
60263660c0SAlfonso Siciliano 			theme = BSDDIALOG_THEME_BSDDIALOG;
61263660c0SAlfonso Siciliano 			focusitem = 2;
62263660c0SAlfonso Siciliano 		}
63263660c0SAlfonso Siciliano 		else if (items[3].on) {
64f499134dSBaptiste Daroussin 			theme = BSDDIALOG_THEME_BLACKWHITE;
65263660c0SAlfonso Siciliano 			focusitem = 3;
66f499134dSBaptiste Daroussin 		}
67f499134dSBaptiste Daroussin 
68f499134dSBaptiste Daroussin 		bsddialog_set_default_theme(theme);
69f499134dSBaptiste Daroussin 	}
70f499134dSBaptiste Daroussin 
71f499134dSBaptiste Daroussin 	bsddialog_end();
72f499134dSBaptiste Daroussin 
73263660c0SAlfonso Siciliano 	return (output);
74f499134dSBaptiste Daroussin }