// C++ code Copyright (C) David R. Evans G4AMJ/NQ0I

#ifndef MENUH
#define MENUH

#include <suntool/sunview.h>
#include <stdarg.h>

#include <event.h>
#include <window.h>

// 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
