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 15 int 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 }