MENWIZ: yet another character lcd menu wizard library

@khalid
the difference should be less than 1k. probably around 4-500bytes. btw, did you commented the button support (As you use your own analog button management). That should save some space.
Frankly i would'nt work on an "old version" to fork a new branch...

@stretched59
the following code (from menwiz.h) does compile on my ide and allows you to call actBTE directly from your sketch. this changes will be in the next version.

class menwiz{

public:
           menwiz();
  void     begin(void *,int, int);
  void     addSplash(char *,int);
  void     addUsrScreen(void (*f)(), unsigned long);
  void     addUsrNav(int (*f)(), int);
  void     setBehaviour(MW_FLAGS,boolean);
  _menu*   addMenu(int, _menu *, MW_LABEL);
  void     draw();
  void     drawUsrScreen(char *);       //draw user screen(s)
  int      getErrorMessage(boolean); 	//if arg=true, err message is printed to the default Serial terminal, otherwise the function returns error code only
  int      freeRam();

#ifdef EEPROM_SUPPORT
  void     writeEeprom();
  void     readEeprom();
#endif

#ifdef BUTTON_SUPPORT 
  _nav*    btx;
  void     navButtons(int,int,int,int,int,int);
  void     navButtons(int,int,int,int);
  int      scanNavButtons();
#endif

  MW_FLAGS flags;
  MW_LCD*  lcd;
  char*    sbuf;                        //lcd screen buffer (+ 1 for each line) 
  _cback   usrScreen;	        	//callback
  _cback   usrNav;    
  byte     idx_m;
  _menu    m[MAX_MENU];
  _menu*   cur_menu;
  _menu*   root;
  void     actBTE();

private:
  byte     row;
  byte     col;
  byte     cur_mode;
  int 	   last_button;                 //last pushed button code
  unsigned long tm_push;                //last pushed button time
  unsigned long tm_start;       	//start time (set when begin method is invocated)
  unsigned long tm_splash;      	//splash screen duration  
  unsigned long tm_usrScreen;   	//lap time before usrscreen  
  void     apply2vars(void (*f)(_menu *));
  int      actNavButtons(int);
  void     drawMenu(_menu *);
  void     drawVar(_menu *);
  void     drawList(_menu *, int);
  void     actBTU();
  void     actBTD();
  void     actBTL();
  void     actBTR();
  void     actBTC();
protected:
};