#include "menu.h" using namespace Menu; #ifdef MENU_DEBUG bool debugFlag=false; #if defined(USING_PGM) const char* libMemMode="PGM"; #elif defined(USING_RAM) const char* libMemMode="RAM"; #else const char* libMemMode="ERROR!"; #endif #endif template result Menu::callCaster(eventMask event, navNode& nav, prompt &item, menuIn &in) {A(event,nav,item,in);return proceed;} template result Menu::callCaster(eventMask event, navNode& nav, prompt &item) {A(event,nav,item);return proceed;} template result Menu::callCaster(eventMask event, navNode& nav) {A(event,nav);return proceed;} template result Menu::callCaster(eventMask event) {A(event);return proceed;} template result Menu::callCaster() {A();return proceed;} //MEMMODE AUX PRINT idx_t Menu::print_P(Print& s,const char* at,idx_t len) { const char* p=at; uint8_t ch; for(int n=0;(ch=memByte(at++))&&(len==0||n','-',false}; // config* Menu::options=&defaultOptions; #ifdef MENU_DEBUG Print& Menu::operator<<(Print& o,bool b) { return o<<(b?"true":"false"); } Print& Menu::operator<<(Print& o,result r) { switch(r) { case proceed: o<<"proceed";break; case quit: o<<"quit";break; } return o; } const char* eventName(eventMask e) { switch(e) { case noEvent:return "noEvent"; case activateEvent:return "activateEvent"; case enterEvent:return "enterEvent"; case exitEvent:return "exitEvent"; case returnEvent:return "returnEvent"; case focusEvent:return "focusEvent"; case blurEvent:return "blurEvent"; case selFocusEvent:return "selFocusEvent"; case selBlurEvent:return "selBlurEvent"; case anyEvent:return "anyEvent"; default: return "need to implement this print"; } } Print& Menu::operator<<(Print& o,eventMask e) { if (e==noEvent||e==anyEvent) {o<