* 2004-08-25
*/
+/*
+LICENSE INFORMATION:
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation.
+
+Please refer to the COPYING file for more information.
+
+This program 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 Lesser General Public
+License along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Copyright (c) 2004 Bruno T. C. de Oliveira
+*/
+
+
#ifndef btco_ROTE_rote_h
#define btco_ROTE_rote_h
+#ifdef USE_NCURSES
#include <ncurses.h>
+#else
+#include <stdbool.h>
+#endif
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#define ROTE_ATTR_MOD_BOLD(attr, boldbit) \
attr &= 0x7F, attr |= (boldbit)?0x80:0x00
#define ROTE_ATTR_MOD_BLINK(attr, blinkbit) \
- attr &= 0xF7, attr |= (boldbit)?0x08:0x00
+ attr &= 0xF7, attr |= (blinkbit)?0x08:0x00
/* these return non-zero for 'yes', zero for 'no'. Don't rely on them being
* any more specific than that (e.g. being exactly 1 for 'yes' or whatever). */
RoteTermPrivate *pd; /* private state data */
+ bool insert; /* insert or replace mode */
/* --- dirtiness flags: the following flags will be raised when the
* corresponding items are modified. They can only be unset by YOU
* (when, for example, you redraw the term or something) --- */
*/
void rote_vt_inject(RoteTerm *rt, const char *data, int length);
+#ifdef USE_NCURSES
/* Paints the virtual terminal screen on the given window, putting
* the top-left corner at the given position. The cur_set_attr
* function must set the curses attributes given a Rote attribute
void rote_vt_draw(RoteTerm *rt, WINDOW *win, int startrow, int startcol,
void (*cur_set_attr)(WINDOW *win, unsigned char attr));
+#endif
/* Indicates to the terminal that the given key has been pressed.
* This will cause the terminal to rote_vt_write() the appropriate
* escape sequence for that key (that is, the escape sequence
* This function does NOT free() the passed buffer */
void rote_vt_restore_snapshot(RoteTerm *rt, void *snapbuf);
+/* Returns the pseudo tty descriptor associated with the given terminal.
+ * Please don't do weird things with it (like close it for instance),
+ * or things will break
+ *
+ * This function returns -1 if the given terminal does not yet have
+ * an associated pty. A pty is only associated to a terminal when
+ * needed, e.g. on a call to rote_vt_forkpty. */
+int rote_vt_get_pty_fd(RoteTerm *rt);
+
/* Declaration of custom escape sequence callback type. See the
* rote_vt_add_es_handler function for more info */
typedef int (*rote_es_handler_t)(RoteTerm *rt, const char *es);