interface menu : widget { 
      
      menu(char* p, char* options = "");
      menu(widget* w, char* p, char* options = "");
      
      menu* add(char* s, char* options = "");
      
      menu* entry(char* s, char* args ="", char* options="");
      menu* entry(char* s, binding* ac, char* args="", char* opts="");
      
      menu* cascade(char* s, char* m, char* options = "");
      menu* cascade(char* s, menu* m, char* options = "");
      
      char* entryconfigure(int i, char* options);
      
      int index(char *s);
      int active();                    // returns active index
      
      void del(int i);                 // delete entry with index i
      void del(char* s);               // delete entry with tag s 
      
      char* invoke(int i);             // invoke entry with index i
      char* invoke(char *s );          // invoke entry with tag s
      
      void post(int x = 500, int y = 500); 
      void unpost();
  
    protected:
      install(binding*, char* args);
    };
  

slide: The menu class