/* $Id: napsaprefs.h,v 3.4 1994/05/14 12:31:55 ppessi Exp $
 * 
 * napsaprefs.h
 *
 * Author: ppessi <Pekka.Pessi@hut.fi>
 *
 * Copyright (c) 1993 Pekka Pessi
 *
 * Created      : Sun Nov  7 09:26:04 1993 ppessi
 * Last modified: Sat May 14 15:30:31 1994 ppessi
 *
 * $Log: napsaprefs.h,v $
 * Revision 3.4  1994/05/14  12:31:55  ppessi
 * Added `service ' option.
 *
 * Revision 3.3  1994/05/11  12:55:54  ppessi
 * Merged changes from Napsaterm 3.5 by R. Knop
 *
 * Revision 3.2  1994/02/25  02:00:48  ppessi
 * Reverted back to S:Napsaprefs preference file
 *
 * Revision 3.1  1994/01/07  22:51:30  ppessi
 * Version 3 beta
 */

/* enum for size_gadget */
#define SIZE_NONE 0
#define SIZE_COLUMN 1
#define SIZE_ROW 2

/* enum for bell_type */
#define BELL_NONE 0
#define BELL_VISUAL 1
#define BELL_AUDIO 2
#define BELL_BOTH 3
#define BELL_DISPLAY 4

/* enum for national mode */
#define NAT_INTER 0		/* Nothing special */
#define NAT_MULTI 1		/* Multiple keymaps */
#define NAT_7BIT  2		/* Use also national character sets */

/* Enum and bits for mouse mode */
#define MOUSE_OFF  0
#define MOUSE_DOWN 1
#define MOUSE_UP   2
#define MOUSE_BOTH 3

struct napsaprefs {
  char *device;			/* Device name */
  long  unit;			/* Unit number */
  long  dnetwork;		/* Channel number */
  long  bps;			/* Line speed */
  char *service;		/* Service */
  char *logname;		/* Log file name */
  char *title;			/* Base title string ? */
  char *geometry;		/* our geometry */
  char *pubscname;		/* Which screen to use? */
  char *basefont;		/* name for base font */
  char *remotename;		/* our remote name */
  char *remoteterm;		/* remote terminal type */
  char *keymap;			/* default keymap name */
  char  emulation;		/* Used emulation type (VT102/VT52/H19) */
  char  size_gadget;		/* Sizing gadget type */
  char  bell_type;		/* Bell type */
  char  nation;			/* Which national code we are using */
  char  visual;			/* Cursor type */
  char  cursormap;		/* ? */
  char  altismeta;		/* if true, use left alt as meta key */
  char  show_version;		/* if true, print version information? */
  char  wait_to_end;		/* if true, wait a keypress to end */
  char  shared;			/* if true, Open serial in shared mode */
  char  stdio;			/* if true, use standard IO? */
  char  col80;			/* if true, Use 80 columns? */
  char  slow;			/* if true, use slow motion */
  char  invert;			/* if true, Invert screen */
  char  backspace;		/* if true, BS->DEL change? */
  char  delete;			/* if true, DEL->BS change? */
  char  mouse;			/* mouse mode enum */
  char  blink;			/* if true, blink cursor */
  char  national;		/* if true, use 7 bit char set */
  char  pass8;			/* 1 = pass 8th bit, 0 = strip 8th bit */
  char  ctrl8bit;		/* if true, use 8 bit control chars */
/* Added RKNOP 940328 */
  char  applkeypad;             /* if true, keypad sends VT100 keypad codes */
/* End added RKNOP */
  /* These options are set according others */
  char  ansi_LNM;		/* ansi line feed/newline mode */
  char  unlisten;		/* if true, don't try to read (from serial) */
};

extern struct napsaprefs np;

#define DEFAULTFONT       "napsa"
#define DEFAULTFONTHEIGHT 11 
#define DEFAULTFONTDEF   "napsa/11"

char **parseargs(char **argv);
char **parsewbargs(struct WBStartup *);
void perrorparse(char *fmt, ...);

#define NUL "\0"

/*
 * Setup menu structure
 */
extern struct setup_menu_item {
  short  offset;
  short  choices;
  char  *title;
  char  *texts;
  void (*change_f)(int);
} setup_items[];

int changesetup(unsigned int n, int val);
int getsetup(unsigned int n);

/*
 * Prototypes for callbacks
 */ 
void change_national(int national);
void change_nation(int which);
void change_cursor(int mode);
void change_invert(int on);
void change_ansi_LNM(int on);   /* added RKNOP 940328 */
void change_mode80(int on);
void change_listen(int un_listen);
void change_sizing(int mode);
void change_bell(int type);
