menubackend resetting menu toRoot


hi, i've written code uses menubackend http://forum.arduino.cc/index.php/topic,38053.0.html change suggested coagula http://www.coagula.org/content/pages/tutorial-manage-menu-and-lcd-display-arduino. change inserts function toroot in menubackend class of library.
code: [select]

void toroot() {
    setcurrent( &getroot() );
}

this works intended (when running command in loop()). need use differently, check condition when menuchangeevent occurs , if condition true, want reset menu "menuroot". so, simple example, test condition if (changed.to == malarmhour) can see. problem although menu appears go root (as seen subsequent menuchangeevent , serial monitor readout) pointer in fact still pointed "hour" menu. output menu.movedown() shows pointer going "hour" "minute" not "menuroot" "time" expected. i've looked @ library , don't know enough pointers functions know why setcurrent() isn't working expected. appreciated. include brevig's menubackend.h modification coagula attachment.
code: [select]

#include <menubackend.h>

menubackend menu = menubackend(menuuseevent,menuchangeevent);
menuitem mtime = menuitem("time");
          menuitem myear = menuitem("year");
menuitem malarm = menuitem("alarm");
  menuitem malarmfreq = menuitem("frequency");
          menuitem malarmhour = menuitem("hour");
  menuitem malarmminute = menuitem("minute");

void menusetup()
{
  menu.getroot().add(mtime);
    mtime.addright(myear);
    mtime.addafter(malarm);
    malarm.addafter(mtime);
    malarm.addright(malarmfreq);
    malarmfreq.addafter(malarmhour);
    malarmhour.addafter(malarmminute);
}

void menuuseevent(menuuseevent used)
{
serial.print("menu use ");
serial.println(used.item.getname());
        menu.toroot();
}

void menuchangeevent(menuchangeevent changed)
{
serial.print("menu change ");
serial.print(changed.from.getname());
serial.print(" ");
serial.println(changed.to.getname());
        //***************************problem here**************************
        if (changed.to == malarmhour)
        {
          menu.toroot();
        }
}

void setup()
{
serial.begin(9600);
menusetup();
serial.println("starting navigation:\r\nup: w   down: s   left: a   right: d   toroot: b   use: e");
}

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;
                        case 'b': menu.toroot(); break;
}
}
  delay(10);
}



Arduino Forum > Using Arduino > Programming Questions > menubackend resetting menu toRoot


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support