Libraries \ MenuBackend

Reference for Wiring version 1.0 Build 0100+ If you have a previous version, use the reference included with your software. If see any errors or have any comments, let us know.

Class

MenuBackend

Name

getRoot()

Examples
#include <MenuBackend.h>

//this controls the menu backend and the event generation

MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent);
//beneath is list of menu items needed to build the menu

MenuItem settings   = MenuItem(menu, "Settings", 1);
MenuItem pin      = MenuItem(menu, "Pin", 2);
MenuItem debug    = MenuItem(menu, "Debug", 2);
MenuItem options    = MenuItem(menu, "Options", 1);
MenuItem setDelay = MenuItem(menu, "Delay",'D', 2);
MenuItem d100   = MenuItem(menu, "100 ms", 3);
MenuItem d200   = MenuItem(menu, "200 ms", 3);
MenuItem d300   = MenuItem(menu, "300 ms", 3);
MenuItem d400   = MenuItem(menu, "400 ms", 3);

//this function builds the menu and connects the correct items together

void menuSetup()
{
  Serial.println("Setting up menu...");
  //add the file menu to the menu root

  menu.getRoot().add(settings); 
  //setup the settings menu item

  settings.addAfter(options); 
  options.addAfter(settings); 

  settings.addLeft(settings); //loop back if left on settings

  settings.addRight(pin);     //chain settings to  pin on right

  debug.addLeft(settings);  //also go to settings left for debug

  //we want looping both up and down

  pin.addBefore(debug);
  pin.addAfter(debug);
  debug.addBefore(pin);
  debug.addAfter(pin);

  options.addLeft(options);   //loop back if left on settings

  options.addRight(setDelay); //chain options to delay on right

  setDelay.addRight(d100);
  d100.addBefore(d100);   //loop to d400 

  d100.addAfter(d200);
  d200.addAfter(d300);
  d300.addAfter(d400);
  d400.addAfter(d100);    //loop back to d100

  //we want left to always be bak to delay

  d100.addLeft(setDelay);
  d200.addLeft(setDelay);
  d300.addLeft(setDelay);
  d400.addLeft(setDelay);
}

/*
  This is an important function
 Here all use events are handled
 
 This is where you define a behaviour for a menu item
 */
void menuUseEvent(MenuUseEvent used)
{
  Serial.print("Menu use ");
  Serial.println(used.item.getName());

  if (used.item.isEqual(setDelay)) //comparison agains a known item

  {
    Serial.println("menuUseEvent found Delay (D)");
  }
}

/*
  This is an important function
 Here we get a notification whenever the user changes the menu
 That is, when the menu is navigated
 */
void menuChangeEvent(MenuChangeEvent changed)
{
  Serial.print("Menu change ");
  Serial.print(changed.from.getName());
  Serial.print(" ");
  Serial.println(changed.to.getName());
}

void setup()
{
  Serial.begin(9600);

  menuSetup();
  Serial.println("Starting navigation:rnUp:w Down:s Left:a Right:d Use: e");

  //fire Delay : menu.use('D');

  //bail back to Options by moving up one logical level 

  //after a D : menu.moveRelativeLevels(-1);

}

void loop()
{
  if (Serial.available()) 
  {
    byte read = Serial.read();
    switch (read) 
    {
    case 'w': 
      menu.moveUp(); 
      break;
    case 's': 
      menu.moveDown(); 
      break;
    case 'd': 
      menu.moveRight(); 
      break;
    case 'a': 
      menu.moveLeft(); 
      break;
    case 'e': 
      menu.use(); 
      break;
    }
  }
}
Description Get the root of this menu.
Syntax
getRoot()
Returns The root item.
Usage Application
Updated on July 07, 2011 11:10:46pm PDT

Creative Commons License