/*
 *  CELLS       An Implementation of the WireWorld cellular automata
 *              as described in Scientific American, Jan 1990.
 *
 *              Copyright 1990 by Davide P. Cervone.
 *  You may use this code, provided this copyright notice is kept intact.
 *  See the CELLS.HELP file for complete information on distribution conditions.
 */

/*
 *  File:  cReqLS.h             Defines for the Load/Save file requester
 */


/*
 *  Gadget IDs and array positions
 */

#define LS_LOAD     0
#define LS_DRIVE    1
#define LS_INFO     2
#define LS_DELETE   3
#define LS_MAKEDIR  4
#define LS_CANCEL   5
#define LS_NAME     6
#define LS_NLIST    7
#define LS_SLIDE    8
#define LS_UARROW   9
#define LS_DARROW   10
#define LS_DIR      11
#define LS_DLARROW  12
#define LS_CHECK    13
#define LS_MESSAGE  14
#define LS_BRDRGADG 15
#define LS_IMGADG   16
#define LS_SAVE     17
#define LS_REWRITE  18

/*
 *  Array positions
 */

#define LSB_PANEL   0
#define LSB_FRAME1  2
#define LSB_FRAME2  4
#define LSB_NAME    6
#define LSB_SLIDE   8
#define LSB_CHECK   10
#define LSB_MESSAGE 12
#define LSB_DIR     14
#define LSB_NLIST   16
#define LSB_BUTTON  18

#define LSI_NAME    0
#define LSI_SLIDE   1
#define LSI_SBACK   2
#define LSI_BLANK   3
#define LSI_SELECT  4
#define LSI_DLARROW 5
#define LSI_CHECK   6
#define LSI_NOCHECK 7
#define LSI_MESSAGE 8
#define LSI_DIR     9

#define LSI_UARROW  3
#define LSI_DARROW  4

#define LST_LOAD    0
#define LST_DRIVE   1
#define LST_INFO    2
#define LST_DELETE  3
#define LST_MAKEDIR 4
#define LST_CANCEL  5
#define LST_DIR     6
#define LST_CHECK   7
#define LST_TITLE   8
#define LST_MESS1   9
#define LST_MESS2   10
#define LST_NLIST0  11
#define LST_NLIST7  18


/*
 * Sizes and screen positions
 */

#define LS_PANELW   212
#define LS_PANELH   160

#define LS_FRAME1X  3
#define LS_FRAME1Y  11
#define LS_FRAME1W  (LS_NAMEW+6)
#define LS_FRAME1H  (LS_NLISTH+LS_DIRH+LS_NAMEH+8)

#define LS_FRAME2X  (LS_FRAME1W+LS_FRAME1X+2)
#define LS_FRAME2Y  LS_FRAME1Y
#define LS_FRAME2W  (LS_BUTTONW+6)
#define LS_FRAME2H  LS_FRAME1H

#define LS_NAMEX    (LS_FRAME1X+3)
#define LS_NAMEY    (LS_FRAME1Y+3)
#define LS_NAMEW    (LS_NLISTW+LS_SLIDEW)
#define LS_NAMEH    TEXTH

#define LS_NLISTX   LS_NAMEX
#define LS_NLISTY   (LS_NAMEY+LS_NAMEH+LS_DIRH+2)
#define LS_NLISTW   128
#define LS_NLISTH   82

#define LS_SLIDEX   (LS_NLISTX+LS_NLISTW)
#define LS_SLIDEY   (LS_NLISTY+SLIDEWH)
#define LS_SLIDEW   SLIDEWH
#define LS_SLIDEH   (LS_NLISTH-2*SLIDEWH)

#define LS_MESSAGEX LS_FRAME1X
#define LS_MESSAGEY (LS_PANELH-LS_MESSAGEH-3)
#define LS_MESSAGEW (LS_PANELW-6)
#define LS_MESSAGEH 20

#define LS_DIRX     (LS_NAMEX+TEXTH)
#define LS_DIRY     (LS_NAMEY+LS_NAMEH+2)
#define LS_DIRW     (LS_NAMEW-TEXTH)
#define LS_DIRH     TEXTH

#define LS_BUTTONX  (LS_FRAME2X+3)
#define LS_BUTTONY  (LS_FRAME2Y+4)
#define LS_BUTTONW  54
#define LS_BUTTONH  16
#define LS_BUTSEP   (LS_BUTTONH+2)

#define LS_UARROWX  LS_SLIDEX
#define LS_UARROWY  LS_NLISTY
#define LS_DARROWX  LS_SLIDEX
#define LS_DARROWY  (LS_NLISTY+LS_NLISTH-SLIDEWH)
#define LS_DLARROWX LS_NLISTX
#define LS_DLARROWY LS_DIRY

#define LS_CHECKX   (LS_FRAME1X+6)
#define LS_CHECKY   (LS_FRAME1Y+LS_FRAME1H+2)
#define LS_CHECKW   8
#define LS_CHECKH   8
#define LS_CTEXTW   (30*CHAR_WIDTH)

extern struct ExtRequest LSRequest;
extern struct ListInfo LSListInfo;
