606 lines
20 KiB
C
606 lines
20 KiB
C
/*
|
|
* $Id: pico.h 14019 2005-03-30 22:44:40Z jpf $
|
|
*
|
|
* Program: pico.h - definitions for Pine's composer library
|
|
*
|
|
*
|
|
* Michael Seibel
|
|
* Networks and Distributed Computing
|
|
* Computing and Communications
|
|
* University of Washington
|
|
* Administration Builiding, AG-44
|
|
* Seattle, Washington, 98195, USA
|
|
* Internet: mikes@cac.washington.edu
|
|
*
|
|
* Please address all bugs and comments to "pine-bugs@cac.washington.edu"
|
|
*
|
|
*
|
|
* Pine and Pico are registered trademarks of the University of Washington.
|
|
* No commercial use of these trademarks may be made without prior written
|
|
* permission of the University of Washington.
|
|
*
|
|
* Pine, Pico, and Pilot software and its included text are Copyright
|
|
* 1989-2004 by the University of Washington.
|
|
*
|
|
* The full text of our legal notices is contained in the file called
|
|
* CPYRIGHT, included with this distribution.
|
|
*/
|
|
|
|
#ifndef PICO_H
|
|
#define PICO_H
|
|
/*
|
|
* Defined for attachment support
|
|
*/
|
|
#define ATTACHMENTS 1
|
|
|
|
|
|
/*
|
|
* defs of return codes from pine mailer composer.
|
|
*/
|
|
#define BUF_CHANGED 0x01
|
|
#define COMP_CANCEL 0x02
|
|
#define COMP_EXIT 0x04
|
|
#define COMP_FAILED 0x08
|
|
#define COMP_SUSPEND 0x10
|
|
#define COMP_GOTHUP 0x20
|
|
|
|
|
|
/*
|
|
* top line from the top of the screen for the editor to do
|
|
* its stuff
|
|
*/
|
|
#define COMPOSER_TOP_LINE 2
|
|
#define COMPOSER_TITLE_LINE 0
|
|
|
|
|
|
|
|
/*
|
|
* definitions of Mail header structures
|
|
*/
|
|
struct hdr_line {
|
|
char text[256];
|
|
struct hdr_line *next;
|
|
struct hdr_line *prev;
|
|
};
|
|
|
|
#if defined(DOS) || defined(HELPFILE)
|
|
#define HELP_T short
|
|
#else
|
|
#define HELP_T char **
|
|
#endif
|
|
|
|
|
|
/*
|
|
* This structure controls the header line items on the screen. An
|
|
* instance of this should be created and passed in as an argument when
|
|
* pico is called. The list is terminated by an entry with the name
|
|
* element NULL.
|
|
*/
|
|
|
|
struct headerentry {
|
|
char *prompt;
|
|
char *name;
|
|
HELP_T help;
|
|
int prlen;
|
|
int maxlen;
|
|
char **realaddr;
|
|
int (*builder)(); /* Function to verify/canonicalize val */
|
|
struct headerentry *affected_entry, *next_affected;
|
|
/* entry builder's 4th arg affects */
|
|
char *(*selector)(); /* Browser for possible values */
|
|
char *key_label; /* Key label for key to call browser */
|
|
char *(*fileedit)(); /* Editor for file named in header */
|
|
unsigned display_it:1; /* field is to be displayed by default */
|
|
unsigned break_on_comma:1; /* Field breaks on commas */
|
|
unsigned is_attach:1; /* Special case field for attachments */
|
|
unsigned rich_header:1; /* Field is part of rich header */
|
|
unsigned only_file_chars:1; /* Field is a file name */
|
|
unsigned single_space:1; /* Crush multiple spaces into one */
|
|
unsigned sticky:1; /* Can't change this via affected_entry*/
|
|
unsigned dirty:1; /* We've changed this entry */
|
|
unsigned start_here:1; /* begin composer on first on lit */
|
|
unsigned blank:1; /* blank line separator */
|
|
#ifdef KS_OSDATAVAR
|
|
KS_OSDATAVAR /* Port-Specific keymenu data */
|
|
#endif
|
|
void *bldr_private; /* Data managed by builders */
|
|
struct hdr_line *hd_text;
|
|
};
|
|
|
|
|
|
/*
|
|
* Structure to pass as arg to builders.
|
|
*
|
|
* me -- A pointer to the bldr_private data for the entry currently
|
|
* being edited.
|
|
* tptr -- A malloc'd copy of the displayed text for the affected_entry
|
|
* pointed to by the aff argument.
|
|
* aff -- A pointer to the bldr_private data for the affected_entry (the
|
|
* entry that this entry affects).
|
|
* next -- The next affected_entry in the list. For example, the Lcc entry
|
|
* affects the To entry which affects the Fcc entry.
|
|
*/
|
|
typedef struct bld_arg {
|
|
void **me;
|
|
char *tptr;
|
|
void **aff;
|
|
struct bld_arg *next;
|
|
} BUILDER_ARG;
|
|
|
|
#define BUILDER_SCREEN_MANGLED 0x1
|
|
#define BUILDER_MESSAGE_DISPLAYED 0x2
|
|
|
|
|
|
/*
|
|
* structure to keep track of header display
|
|
*/
|
|
struct on_display {
|
|
int p_off; /* offset into line */
|
|
int p_len; /* length of line */
|
|
int p_line; /* physical line on screen */
|
|
int top_e; /* topline's header entry */
|
|
struct hdr_line *top_l; /* top line on display */
|
|
int cur_e; /* current header entry */
|
|
struct hdr_line *cur_l; /* current hd_line */
|
|
}; /* global on_display struct */
|
|
|
|
|
|
/*
|
|
* Structure to handle attachments
|
|
*/
|
|
typedef struct pico_atmt {
|
|
char *description; /* attachment description */
|
|
char *filename; /* file/pseudonym for attachment */
|
|
char *size; /* size of attachment */
|
|
char *id; /* attachment id */
|
|
unsigned short flags;
|
|
struct pico_atmt *next;
|
|
} PATMT;
|
|
|
|
/*
|
|
* Structure to contain color options
|
|
*/
|
|
typedef struct pico_colors {
|
|
COLOR_PAIR *tbcp; /* title bar color pair */
|
|
COLOR_PAIR *klcp; /* key label color pair */
|
|
COLOR_PAIR *kncp; /* key name color pair */
|
|
COLOR_PAIR *stcp; /* status color pair */
|
|
} PCOLORS;
|
|
|
|
/*
|
|
* Flags for attachment handling
|
|
*/
|
|
#define A_FLIT 0x0001 /* Accept literal file and size */
|
|
#define A_ERR 0x0002 /* Problem with specified attachment */
|
|
#define A_TMP 0x0004 /* filename is temporary, delete it */
|
|
|
|
|
|
/*
|
|
* Master pine composer structure. Right now there's not much checking
|
|
* that any of these are pointing to something, so pine must have them pointing
|
|
* somewhere.
|
|
*/
|
|
typedef struct pico_struct {
|
|
void *msgtext; /* ptrs to malloc'd arrays of char */
|
|
char *pine_anchor; /* ptr to pine anchor line */
|
|
char *pine_version; /* string containing Pine's version */
|
|
char *oper_dir; /* Operating dir (confine to tree) */
|
|
char *home_dir; /* Home directory that should be used (WINDOWS) */
|
|
char *quote_str; /* prepended to lines of quoted text */
|
|
char *exit_label; /* Label for ^X in keymenu */
|
|
char *ctrlr_label; /* Label for ^R in keymenu */
|
|
char *alt_spell; /* Checker to use other than "spell" */
|
|
char **alt_ed; /* name of alternate editor or NULL */
|
|
int fillcolumn; /* where to wrap */
|
|
int menu_rows; /* number of rows in menu (0 or 2) */
|
|
long edit_offset; /* offset into hdr line or body */
|
|
int *hibit_entered; /* hibit input came from user */
|
|
PATMT *attachments; /* linked list of attachments */
|
|
PCOLORS *colors; /* colors for titlebar and keymenu */
|
|
long pine_flags; /* entry mode flags */
|
|
/* The next few bits are features that don't fit in pine_flags */
|
|
/* If we had this to do over, it would probably be one giant bitmap */
|
|
unsigned always_spell_check:1; /* always spell-checking upon quit */
|
|
unsigned strip_ws_before_send:1; /* don't default strip bc of flowed */
|
|
unsigned allow_flowed_text:1; /* clean text when done to keep flowed */
|
|
int (*helper)(); /* Pine's help function */
|
|
int (*showmsg)(); /* Pine's display_message */
|
|
int (*suspend)(); /* Pine's suspend */
|
|
void (*keybinput)(); /* Pine's keyboard input indicator */
|
|
int (*tty_fix)(); /* Let Pine fix tty state */
|
|
long (*newmail)(); /* Pine's report_new_mail */
|
|
long (*msgntext)(); /* callback to get msg n's text */
|
|
int (*upload)(); /* callback to rcv uplaoded text */
|
|
char *(*ckptdir)(); /* callback for checkpoint file dir */
|
|
char *(*exittest)(); /* callback to verify exit request */
|
|
char *(*canceltest)(); /* callback to verify cancel request */
|
|
int (*mimetype)(); /* callback to display mime type */
|
|
int (*expander)(); /* callback to expand address lists */
|
|
void (*resize)(); /* callback handling screen resize */
|
|
void (*winch_cleanup)(); /* callback handling screen resize */
|
|
int arm_winch_cleanup; /* do the winch_cleanup if resized */
|
|
HELP_T search_help;
|
|
HELP_T ins_help;
|
|
HELP_T ins_m_help;
|
|
HELP_T composer_help;
|
|
HELP_T browse_help;
|
|
HELP_T attach_help;
|
|
struct headerentry *headents;
|
|
} PICO;
|
|
|
|
|
|
/*
|
|
* Used to save and restore global pico variables that are destroyed by
|
|
* calling pico a second time. This happens when pico calls a selector
|
|
* in the HeaderEditor and that selector calls pico again.
|
|
*/
|
|
typedef struct _save_stuff {
|
|
int vtrow,
|
|
vtcol,
|
|
lbound;
|
|
VIDEO **vscreen,
|
|
**pscreen; /* save pointers */
|
|
struct on_display ods; /* save whole struct */
|
|
short delim_ps,
|
|
invert_ps;
|
|
int pico_all_done;
|
|
jmp_buf finstate;
|
|
char *pico_anchor; /* save pointer */
|
|
PICO *Pmaster; /* save pointer */
|
|
int fillcol;
|
|
char *pat; /* save array */
|
|
int ComposerTopLine,
|
|
ComposerEditing;
|
|
long gmode;
|
|
char *alt_speller; /* save pointer */
|
|
char *quote_str; /* save pointer */
|
|
int currow,
|
|
curcol,
|
|
thisflag,
|
|
lastflag,
|
|
curgoal;
|
|
char *opertree; /* save array */
|
|
WINDOW *curwp; /* save pointer */
|
|
WINDOW *wheadp; /* save pointer */
|
|
BUFFER *curbp; /* save pointer */
|
|
BUFFER *bheadp; /* save pointer */
|
|
int km_popped;
|
|
int mrow;
|
|
} VARS_TO_SAVE;
|
|
|
|
|
|
#ifdef MOUSE
|
|
/*
|
|
* Mouse buttons.
|
|
*/
|
|
#define M_BUTTON_LEFT 0
|
|
#define M_BUTTON_MIDDLE 1
|
|
#define M_BUTTON_RIGHT 2
|
|
|
|
|
|
/*
|
|
* Flags. (modifier keys)
|
|
*/
|
|
#define M_KEY_CONTROL 0x01 /* Control key was down. */
|
|
#define M_KEY_SHIFT 0x02 /* Shift key was down. */
|
|
|
|
|
|
/*
|
|
* Mouse Events
|
|
*/
|
|
#define M_EVENT_DOWN 0x01 /* Mouse went down. */
|
|
#define M_EVENT_UP 0x02 /* Mouse went up. */
|
|
#define M_EVENT_TRACK 0x04 /* Mouse tracking */
|
|
|
|
/*
|
|
* Mouse event information.
|
|
*/
|
|
typedef struct mouse_struct {
|
|
char mevent; /* Indicates type of event: Down, Up or
|
|
Track */
|
|
char down; /* TRUE when mouse down event */
|
|
char doubleclick; /* TRUE when double click. */
|
|
int button; /* button pressed. */
|
|
int flags; /* What other keys pressed. */
|
|
int row;
|
|
int col;
|
|
} MOUSEPRESS;
|
|
|
|
|
|
|
|
typedef unsigned long (*mousehandler_t) PROTO((int, int, int, int, int));
|
|
|
|
typedef struct point {
|
|
unsigned r:8; /* row value */
|
|
unsigned c:8; /* column value */
|
|
} MPOINT;
|
|
|
|
|
|
typedef struct menuitem {
|
|
unsigned val; /* return value */
|
|
mousehandler_t action; /* action to perform */
|
|
MPOINT tl; /* top-left corner of active area */
|
|
MPOINT br; /* bottom-right corner of active area */
|
|
MPOINT lbl; /* where the label starts */
|
|
char *label;
|
|
void (*label_hiliter)();
|
|
COLOR_PAIR *kncp; /* key name color pair */
|
|
COLOR_PAIR *klcp; /* key label color pair */
|
|
struct menuitem *next;
|
|
} MENUITEM;
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Structure used to manage keyboard input that comes as escape
|
|
* sequences (arrow keys, function keys, etc.)
|
|
*/
|
|
typedef struct KBSTREE {
|
|
char value;
|
|
int func; /* Routine to handle it */
|
|
struct KBSTREE *down;
|
|
struct KBSTREE *left;
|
|
} KBESC_T;
|
|
|
|
/*
|
|
* Protos for functions used to manage keyboard escape sequences
|
|
* NOTE: these may ot actually get defined under some OS's (ie, DOS, WIN)
|
|
*/
|
|
extern int kbseq PROTO((int (*)(), int (*)(), void (*)(), int *));
|
|
extern void kbdestroy PROTO((KBESC_T *));
|
|
|
|
|
|
/*
|
|
* various flags that they may passed to PICO
|
|
*/
|
|
#define P_HICTRL 0x80000000 /* overwrite mode */
|
|
#define P_CHKPTNOW 0x40000000 /* do the checkpoint on entry */
|
|
#define P_DELRUBS 0x20000000 /* map ^H to forwdel */
|
|
#define P_LOCALLF 0x10000000 /* use local vs. NVT EOL */
|
|
#define P_BODY 0x08000000 /* start composer in body */
|
|
#define P_HEADEND 0x04000000 /* start composer at end of header */
|
|
#define P_VIEW MDVIEW /* read-only */
|
|
#define P_FKEYS MDFKEY /* run in function key mode */
|
|
#define P_SECURE MDSCUR /* run in restricted (demo) mode */
|
|
#define P_TREE MDTREE /* restrict to a subtree */
|
|
#define P_SUSPEND MDSSPD /* allow ^Z suspension */
|
|
#define P_ADVANCED MDADVN /* enable advanced features */
|
|
#define P_CURDIR MDCURDIR /* use current dir for lookups */
|
|
#define P_ALTNOW MDALTNOW /* enter alt ed sans hesitation */
|
|
#define P_SUBSHELL MDSPWN /* spawn subshell for suspend */
|
|
#define P_COMPLETE MDCMPLT /* enable file name completion */
|
|
#define P_DOTKILL MDDTKILL /* kill from dot to eol */
|
|
#define P_SHOCUR MDSHOCUR /* cursor follows hilite in browser*/
|
|
#define P_HIBITIGN MDHBTIGN /* ignore chars with hi bit set */
|
|
#define P_DOTFILES MDDOTSOK /* browser displays dot files */
|
|
#define P_NOBODY MDHDRONLY /* Operate only on given headers */
|
|
#define P_ALLOW_GOTO MDGOTO /* support "Goto" in file browser */
|
|
#define P_REPLACE MDREPLACE /* allow "Replace" in "Where is" */
|
|
|
|
/*
|
|
* definitions for various PICO modes
|
|
*/
|
|
#define MDWRAP 0x00000001 /* word wrap */
|
|
#define MDSPELL 0x00000002 /* spell error parcing */
|
|
#define MDEXACT 0x00000004 /* Exact matching for searches */
|
|
#define MDVIEW 0x00000008 /* read-only buffer */
|
|
#define MDFKEY 0x00000010 /* function key mode */
|
|
#define MDSCUR 0x00000020 /* secure (for demo) mode */
|
|
#define MDSSPD 0x00000040 /* suspendable mode */
|
|
#define MDADVN 0x00000080 /* Pico's advanced mode */
|
|
#define MDTOOL 0x00000100 /* "tool" mode (quick exit) */
|
|
#define MDBRONLY 0x00000200 /* indicates standalone browser */
|
|
#define MDCURDIR 0x00000400 /* use current dir for lookups */
|
|
#define MDALTNOW 0x00000800 /* enter alt ed sans hesitation */
|
|
#define MDSPWN 0x00001000 /* spawn subshell for suspend */
|
|
#define MDCMPLT 0x00002000 /* enable file name completion */
|
|
#define MDDTKILL 0x00004000 /* kill from dot to eol */
|
|
#define MDSHOCUR 0x00008000 /* cursor follows hilite in browser */
|
|
#define MDHBTIGN 0x00010000 /* ignore chars with hi bit set */
|
|
#define MDDOTSOK 0x00020000 /* browser displays dot files */
|
|
#define MDEXTFB 0x00040000 /* stand alone File browser */
|
|
#define MDTREE 0x00080000 /* confine to a subtree */
|
|
#define MDMOUSE 0x00100000 /* allow mouse (part. in xterm) */
|
|
#define MDONECOL 0x00200000 /* single column browser */
|
|
#define MDHDRONLY 0x00400000 /* header editing exclusively */
|
|
#define MDGOTO 0x00800000 /* support "Goto" in file browser */
|
|
#define MDREPLACE 0x01000000 /* allow "Replace" in "Where is"*/
|
|
#define MDTCAPWINS 0x02000000 /* Termcap overrides defaults */
|
|
|
|
/*
|
|
* Main defs
|
|
*/
|
|
#ifdef maindef
|
|
PICO *Pmaster = NULL; /* composer specific stuff */
|
|
char *version = "4.10"; /* PICO version number */
|
|
|
|
#else
|
|
extern PICO *Pmaster; /* composer specific stuff */
|
|
extern char *version; /* pico version! */
|
|
|
|
#endif /* maindef */
|
|
|
|
|
|
/*
|
|
* Flags for FileBrowser call
|
|
*/
|
|
#define FB_READ 0x0001 /* Looking for a file to read. */
|
|
#define FB_SAVE 0x0002 /* Looking for a file to save. */
|
|
#define FB_ATTACH 0x0004 /* Looking for a file to attach */
|
|
#define FB_LMODEPOS 0x0008 /* ListMode is a possibility */
|
|
#define FB_LMODE 0x0010 /* Using ListMode now */
|
|
|
|
|
|
/*
|
|
* number of keystrokes to delay removing an error message, or new mail
|
|
* notification, or checkpointing
|
|
*/
|
|
#define MESSDELAY 25
|
|
#define NMMESSDELAY 60
|
|
#ifndef CHKPTDELAY
|
|
#define CHKPTDELAY 100
|
|
#endif
|
|
|
|
|
|
/*
|
|
* defs for keypad and function keys...
|
|
*/
|
|
#define KEY_UP 0x0811
|
|
#define KEY_DOWN 0x0812
|
|
#define KEY_RIGHT 0x0813
|
|
#define KEY_LEFT 0x0814
|
|
#define KEY_PGUP 0x0815
|
|
#define KEY_PGDN 0x0816
|
|
#define KEY_HOME 0x0817
|
|
#define KEY_END 0x0818
|
|
#define KEY_DEL 0x0819
|
|
#define BADESC 0x0820
|
|
#define KEY_MOUSE 0x0821 /* Fake key to indicate mouse event. */
|
|
#define KEY_SCRLUPL 0x0822
|
|
#define KEY_SCRLDNL 0x0823
|
|
#define KEY_SCRLTO 0x0824
|
|
#define KEY_XTERM_MOUSE 0x0825
|
|
#define KEY_DOUBLE_ESC 0x0826
|
|
#define KEY_SWALLOW_Z 0x0827
|
|
#define KEY_SWAL_UP 0x0828 /* These four have to be in the same order */
|
|
#define KEY_SWAL_DOWN 0x0829 /* as KEY_UP, KEY_DOWN, ... */
|
|
#define KEY_SWAL_RIGHT 0x0830
|
|
#define KEY_SWAL_LEFT 0x0831
|
|
#define KEY_KERMIT 0x0832
|
|
#define KEY_JUNK 0x0840
|
|
#define KEY_RESIZE 0x0841 /* Fake key to cause resize. */
|
|
#define KEY_MENU_FLAG 0x1000
|
|
#define KEY_MASK 0x13FF
|
|
|
|
/*
|
|
* Don't think we are using the fact that this is zero anywhere,
|
|
* but just in case we'll leave it.
|
|
*/
|
|
#define NO_OP_COMMAND 0x0 /* no-op for short timeouts */
|
|
#define NO_OP_IDLE 0x0842 /* no-op for >25 second timeouts */
|
|
#define READY_TO_READ 0x0843
|
|
#define BAIL_OUT 0x0844
|
|
#define PANIC_NOW 0x0845
|
|
#define READ_INTR 0x0846
|
|
#define NODATA 0x08FF
|
|
|
|
#define IDLE_TIMEOUT (8)
|
|
#define FUDGE (30) /* better be at least 20 */
|
|
|
|
/*
|
|
* defines for function keys
|
|
*/
|
|
#define F1 0x1001 /* Functin key one */
|
|
#define F2 0x1002 /* Functin key two */
|
|
#define F3 0x1003 /* Functin key three */
|
|
#define F4 0x1004 /* Functin key four */
|
|
#define F5 0x1005 /* Functin key five */
|
|
#define F6 0x1006 /* Functin key six */
|
|
#define F7 0x1007 /* Functin key seven */
|
|
#define F8 0x1008 /* Functin key eight */
|
|
#define F9 0x1009 /* Functin key nine */
|
|
#define F10 0x100A /* Functin key ten */
|
|
#define F11 0x100B /* Functin key eleven */
|
|
#define F12 0x100C /* Functin key twelve */
|
|
|
|
/* 1st tier pine function keys */
|
|
#define PF1 F1
|
|
#define PF2 F2
|
|
#define PF3 F3
|
|
#define PF4 F4
|
|
#define PF5 F5
|
|
#define PF6 F6
|
|
#define PF7 F7
|
|
#define PF8 F8
|
|
#define PF9 F9
|
|
#define PF10 F10
|
|
#define PF11 F11
|
|
#define PF12 F12
|
|
|
|
#define PF2OPF(x) (x + 0x10)
|
|
#define PF2OOPF(x) (x + 0x20)
|
|
#define PF2OOOPF(x) (x + 0x30)
|
|
|
|
/* 2nd tier pine function keys */
|
|
#define OPF1 PF2OPF(PF1)
|
|
#define OPF2 PF2OPF(PF2)
|
|
#define OPF3 PF2OPF(PF3)
|
|
#define OPF4 PF2OPF(PF4)
|
|
#define OPF5 PF2OPF(PF5)
|
|
#define OPF6 PF2OPF(PF6)
|
|
#define OPF7 PF2OPF(PF7)
|
|
#define OPF8 PF2OPF(PF8)
|
|
#define OPF9 PF2OPF(PF9)
|
|
#define OPF10 PF2OPF(PF10)
|
|
#define OPF11 PF2OPF(PF11)
|
|
#define OPF12 PF2OPF(PF12)
|
|
|
|
/* 3rd tier pine function keys */
|
|
#define OOPF1 PF2OOPF(PF1)
|
|
#define OOPF2 PF2OOPF(PF2)
|
|
#define OOPF3 PF2OOPF(PF3)
|
|
#define OOPF4 PF2OOPF(PF4)
|
|
#define OOPF5 PF2OOPF(PF5)
|
|
#define OOPF6 PF2OOPF(PF6)
|
|
#define OOPF7 PF2OOPF(PF7)
|
|
#define OOPF8 PF2OOPF(PF8)
|
|
#define OOPF9 PF2OOPF(PF9)
|
|
#define OOPF10 PF2OOPF(PF10)
|
|
#define OOPF11 PF2OOPF(PF11)
|
|
#define OOPF12 PF2OOPF(PF12)
|
|
|
|
/* 4th tier pine function keys */
|
|
#define OOOPF1 PF2OOOPF(PF1)
|
|
#define OOOPF2 PF2OOOPF(PF2)
|
|
#define OOOPF3 PF2OOOPF(PF3)
|
|
#define OOOPF4 PF2OOOPF(PF4)
|
|
#define OOOPF5 PF2OOOPF(PF5)
|
|
#define OOOPF6 PF2OOOPF(PF6)
|
|
#define OOOPF7 PF2OOOPF(PF7)
|
|
#define OOOPF8 PF2OOOPF(PF8)
|
|
#define OOOPF9 PF2OOOPF(PF9)
|
|
#define OOOPF10 PF2OOOPF(PF10)
|
|
#define OOOPF11 PF2OOOPF(PF11)
|
|
#define OOOPF12 PF2OOOPF(PF12)
|
|
|
|
|
|
/*
|
|
* useful function definitions
|
|
*/
|
|
int pico PROTO((PICO *));
|
|
int pico_file_browse PROTO((PICO *, char *, int, char *, int, char *, int));
|
|
void *pico_get PROTO((void));
|
|
void pico_give PROTO((void *));
|
|
int pico_readc PROTO((void *, unsigned char *));
|
|
int pico_writec PROTO((void *, int));
|
|
int pico_puts PROTO((void *, char *));
|
|
int pico_seek PROTO((void *, long, int));
|
|
int pico_replace PROTO((void *, char *));
|
|
int pico_fncomplete PROTO((char *, char *, int));
|
|
#if defined(DOS) || defined(OS2)
|
|
int pico_nfsetcolor PROTO((char *));
|
|
int pico_nbsetcolor PROTO((char *));
|
|
int pico_rfsetcolor PROTO((char *));
|
|
int pico_rbsetcolor PROTO((char *));
|
|
#endif
|
|
#ifdef MOUSE
|
|
int init_mouse PROTO((void));
|
|
void end_mouse PROTO((void));
|
|
int mouseexist PROTO((void));
|
|
int register_mfunc PROTO((mousehandler_t, int, int, int, int));
|
|
void clear_mfunc PROTO((mousehandler_t));
|
|
unsigned long mouse_in_content PROTO((int, int, int, int, int));
|
|
unsigned long mouse_in_pico PROTO((int, int, int, int, int));
|
|
void mouse_get_last PROTO((mousehandler_t *, MOUSEPRESS *));
|
|
void register_key PROTO((int, unsigned, char *, void (*)(),
|
|
int, int, int, COLOR_PAIR *, COLOR_PAIR *));
|
|
int mouse_on_key PROTO((int, int));
|
|
int checkmouse PROTO((unsigned *, int, int, int));
|
|
void invert_label PROTO((int, MENUITEM *));
|
|
void mouseon PROTO((void));
|
|
void mouseoff PROTO((void));
|
|
#endif /* MOUSE */
|
|
|
|
|
|
#endif /* PICO_H */
|