#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <curses.h>
#include <ncinput.h>
#include "mfjterm.h"
#include "inout.h"
#include "misc.h"

WINDOW *fkwin;


void out_fk(int n)
{
       int i;
       unsigned char c;

       for (i = 0; i < strlen(fkstr[n]); i++) {
               c = fkstr[n][i];
               if (c == '|')
                       c = 10;
               write_tnc(c);
       }
}


void show_fkeys(void)
{
       char tmp[81];
       int i;

       for (i = 0; i < 10; i++) {
               wmove(fkwin, 1 + i, (i < 9) ? 2 : 1);
               sprintf(tmp, "F%d: %s", i + 1, fkstr[i]);
               waddstr(fkwin, tmp);
       }
       wrefresh(fkwin);
}


void fkeys(void)
{
       int c, n;
       unsigned char fkstr_bkup[71];

       curs_set(0);

       fkwin = newwin(12, 78, 6, 1);
       keypad(fkwin, TRUE);
       wbkgd(fkwin, A_REVERSE);
       werase(fkwin);
       box(fkwin, 0, 0);
       show_fkeys();

       while (1) {
               c = wgetch(fkwin);

               if ((c < KEY_F(1)) || (c > KEY_F(10)))
                       break;

               n = (c - KEY_F(1));
               strcpy(fkstr_bkup, fkstr[n]);
               wmove(fkwin, 1 + n, 6);
               waddstr(fkwin, "                                                                      ");
               wmove(fkwin, 1 + n, 6);
               curs_set(1);
               wrefresh(fkwin);
               edgets(fkwin, fkstr[n], 70, FALSE);
               if (! strlen(fkstr[n])){
                       strcpy(fkstr[n], fkstr_bkup);
                       wmove(fkwin, 1 + n, 6);
                       waddstr(fkwin, fkstr[n]);
               }
               curs_set(0);
               wrefresh(fkwin);
       }

       delwin(fkwin);
       redrawwin(stdscr);
       move(tnc_y, tnc_x);
       curs_set(1);
       refresh();
}