#include "ItemBox.h"

#include "stdarg.h"
#include "ncurses.h"
#include "curses.h"


 #define UP KEY_UP
 #define DOWN KEY_DOWN
 #define ESCAPE 27
 #define ENTER 13

//-------------------------------------------

 void iClearScreen()
 {    clear();     }

 // ---------------- Item Box ---------------
 // Return -1, if ESCAPE
 // Return number of selected variant

int iItemBox(int max, int sel, char *name, char *s1, ...)
{
   va_list parg;
   char **s;
   int selected = sel, i;
   int key=-1;

//----------------------------
   s = (char**)calloc(max, sizeof(char*));
   va_start(parg,s1);
    s[0] = s1;
      for (i=1; i < max; i++)
       s[i] = va_arg(parg, char*);
   va_end(parg);
//----------------------------
   noecho();

do {
  if (key == -1) key = -2; else key=getch();
     iClearScreen();
       switch (key) {
        case DOWN : if(selected<max-1) selected++; break;
        case UP : if(selected>0) selected--; break;
       }

    printw("%s \n", name);
     for (i=0; i < max; i++)
      if (selected == i) printw("-> %s <-\n", s[i]);
       else printw("   %s   \n", s[i]);
}  while ( (key != ENTER) && (key != ESCAPE) );
  echo();
  free(s);
  
 return  (key!=ESCAPE) ? selected : -1;
};




 // ---------------- Item Box Massive ---------------
 // Return -1, if ESCAPE
 // Return number of selected variant
int iItemBoxMas(int max, int sel, char **s)
 {
   int selected = sel, i;
   int key=-1;
   noecho();

do {
  if (key == -1) key = -2; else key=getch();
     iClearScreen();
       switch (key) {
        case DOWN : if(selected<max-1) selected++; break;
        case UP : if(selected>0) selected--; break;
       }

     for (i=0; i < max; i++)
      if (selected == i) printw("-> %s <-\n", s[i]);
       else printw("   %s   \n", s[i]);
}  while ( (key != ENTER) && (key != ESCAPE) );
  echo();
   return  (key!=ESCAPE)? selected : -1;
 };

