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 16f499134dSBaptiste Daroussin int main() 17f499134dSBaptiste Daroussin { 18*263660c0SAlfonso Siciliano int output; 19*263660c0SAlfonso Siciliano unsigned int i, j; 20f499134dSBaptiste Daroussin struct bsddialog_conf conf; 21f499134dSBaptiste Daroussin struct bsddialog_menuitem item; 22f499134dSBaptiste Daroussin struct bsddialog_menuitem check[5] = { 23f499134dSBaptiste Daroussin { "+", true, 0, "Name 1", "Desc 1", "Bottom Desc 1" }, 24f499134dSBaptiste Daroussin { "" , false, 0, "Name 2", "Desc 2", "Bottom Desc 2" }, 25f499134dSBaptiste Daroussin { "+", true, 0, "Name 3", "Desc 3", "Bottom Desc 3" }, 26f499134dSBaptiste Daroussin { "" , false, 0, "Name 4", "Desc 4", "Bottom Desc 4" }, 27f499134dSBaptiste Daroussin { "+", true, 0, "Name 5", "Desc 5", "Bottom Desc 5" } 28f499134dSBaptiste Daroussin }; 29f499134dSBaptiste Daroussin struct bsddialog_menuitem sep[1] = { 30f499134dSBaptiste Daroussin { "", true, 0, "Radiolist", "(desc)", "" } 31f499134dSBaptiste Daroussin }; 32f499134dSBaptiste Daroussin struct bsddialog_menuitem radio[5] = { 33f499134dSBaptiste Daroussin { "", true, 0, "Name 1", "Desc 1", "Bottom Desc 1" }, 34f499134dSBaptiste Daroussin { "+", false, 0, "Name 2", "Desc 2", "Bottom Desc 2" }, 35f499134dSBaptiste Daroussin { "", false, 0, "Name 3", "Desc 3", "Bottom Desc 3" }, 36f499134dSBaptiste Daroussin { "+", false, 0, "Name 4", "Desc 4", "Bottom Desc 4" }, 37f499134dSBaptiste Daroussin { "", false, 0, "Name 5", "Desc 5", "Bottom Desc 5" } 38f499134dSBaptiste Daroussin }; 39f499134dSBaptiste Daroussin struct bsddialog_menugroup group[3] = { 40f499134dSBaptiste Daroussin { BSDDIALOG_CHECKLIST, 5, check }, 41f499134dSBaptiste Daroussin { BSDDIALOG_SEPARATOR, 1, sep }, 42f499134dSBaptiste Daroussin { BSDDIALOG_RADIOLIST, 5, radio } 43f499134dSBaptiste Daroussin }; 44f499134dSBaptiste Daroussin 45*263660c0SAlfonso Siciliano if (bsddialog_init() == BSDDIALOG_ERROR) { 46*263660c0SAlfonso Siciliano printf("Error: %s\n", bsddialog_geterror()); 47*263660c0SAlfonso Siciliano return (1); 48*263660c0SAlfonso Siciliano } 49*263660c0SAlfonso Siciliano 50f499134dSBaptiste Daroussin bsddialog_initconf(&conf); 51*263660c0SAlfonso Siciliano conf.title = "mixedlist"; 52*263660c0SAlfonso Siciliano output = bsddialog_mixedlist(&conf, "Example", 20, 30, 11, 3, group, 53f499134dSBaptiste Daroussin NULL, NULL); 54f499134dSBaptiste Daroussin 55f499134dSBaptiste Daroussin bsddialog_end(); 56f499134dSBaptiste Daroussin 57*263660c0SAlfonso Siciliano if (output == BSDDIALOG_ERROR) { 58*263660c0SAlfonso Siciliano printf("Error: %s\n", bsddialog_geterror()); 59*263660c0SAlfonso Siciliano return (1); 60*263660c0SAlfonso Siciliano } 61*263660c0SAlfonso Siciliano 62*263660c0SAlfonso Siciliano if (output == BSDDIALOG_CANCEL) { 63*263660c0SAlfonso Siciliano printf("Cancel\n"); 64*263660c0SAlfonso Siciliano return (0); 65*263660c0SAlfonso Siciliano } 66*263660c0SAlfonso Siciliano 67f499134dSBaptiste Daroussin printf("Mixedlist:\n"); 68f499134dSBaptiste Daroussin for (i = 0; i < 3; i++) { 69f499134dSBaptiste Daroussin for (j = 0; j < group[i].nitems; j++) { 70f499134dSBaptiste Daroussin item = group[i].items[j]; 71f499134dSBaptiste Daroussin if (group[i].type == BSDDIALOG_SEPARATOR) 72f499134dSBaptiste Daroussin printf("----- %s -----\n", item.name); 73f499134dSBaptiste Daroussin else if (group[i].type == BSDDIALOG_RADIOLIST) 74*263660c0SAlfonso Siciliano printf(" (%c) %s\n", 75*263660c0SAlfonso Siciliano item.on ? '*' : ' ', item.name); 76*263660c0SAlfonso Siciliano else /* BSDDIALOG_CHECKLIST */ 77*263660c0SAlfonso Siciliano printf(" [%c] %s\n", 78*263660c0SAlfonso Siciliano item.on ? 'X' : ' ', item.name); 79f499134dSBaptiste Daroussin } 80f499134dSBaptiste Daroussin } 81f499134dSBaptiste Daroussin 82*263660c0SAlfonso Siciliano return (output); 83f499134dSBaptiste Daroussin }