/*
    Edit line management header file
    Copyright (c) Tudor Hulubei & Andrei Pitis, April 1994

This file is part of UIT (UNIX Interactive Tools)

UIT is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.

UIT is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details .

You should have received a copy of the GNU General Public License along with
UIT; see the file COPYING.  If not, write to the Free Software Foundation,
675 Mass Ave, Cambridge, MA 02139, USA.  */


#ifndef __EDIT_H
#define __EDIT_H


#include "config.h"


#define EDIT_BUFLEN	0xFF
#define EDIT_HISTBUFLEN	0x2000
#define EDIT_RECLEN	0x100
#define EDIT_HISTRECS   (EDIT_HISTBUFLEN / EDIT_RECLEN)
#define EDIT_RECORD	0
#define EDIT_PREVIOUS	1
#define EDIT_NEXT	2


typedef struct
{
    window *win;
    unsigned index, columns;
    unsigned static_size, records, current_record;
    char *buf, *history_buf;
} edit;


edit *edit_init(int columns, int begin_y, configuration *config);
void  edit_end(edit *this);
void  edit_putch(edit *this, int key);
void  edit_puts(edit *this, char *str);
char *edit_gets(edit *this, char *static_text, char *dest, char *default_str);
char *edit_gettext(edit *this, char *dest);
void  edit_reset(edit *this);
void  edit_del(edit *this);
void  edit_setcursor(edit *this);
void  edit_update(edit *this);
void  edit_eos(edit *this);
void  edit_history(edit *this, int action);


#endif
