// C++ code Copyright (C) David R. Evans G4AMJ/NQ0I #ifndef MENUH #define MENUH #include #include #include #include // menu item class class menu_item { friend class menu; Menu_item mi; public: menu_item(void) { mi = menu_create_item(0); } ~menu_item(void) { menu_destroy(mi); } }; // menu class class menu { public: Menu m; public: menu(void) { m = menu_create(0); } ~menu(void) { menu_destroy(m); } int show(window& w, event& e) { return (int)menu_show(m, w.w, (Event*)e, 0); } menu& DREstrings(const char* s1, ...) { va_list p; va_start(p, s1); const char* p1 = s1; int n_so_far = n_items(); while (p1 != NULL) { menu_set(m, MENU_STRING_ITEM, p1, ++n_so_far, 0); p1 = va_arg(p, const char*); } va_end(p); return *this; } // access functions -- set menu& append(menu_item& mi) { menu_set(m, MENU_APPEND_ITEM, mi.mi, 0); return *this; } menu& initial_selection(int n) { menu_set(m, MENU_INITIAL_SELECTION, n, 0); return *this; } // access functions -- get int initial_selection(void) { return (int)menu_get(m, MENU_INITIAL_SELECTION); } int n_items(void) { return (int)menu_get(m, MENU_NITEMS); } }; #endif