/*===========================================================================*\
| PULLSHEL.H - Header file for PULLC shell                  ver 2.0, 04-15-89 |
|                                                                             |
| This file contains all of the prototypes, macros, enums,                    |
| typedefs and externs for PULLSHEL.C.                                        |
|   Copyright (c) 1989 by James H. LeMay, All rights reserved.                |
|   Conversion to Turbo C by Jordan Gallagher / Wisdom Research               |
\*===========================================================================*/

#undef MULTIWORKWNDWS             /* Change this to "#undef" to exclude code
                                     for multiple work windows in PULLWORK.C */

/*===========================================================================*\
                           PULLSTAT declarations
\*===========================================================================*/

/* Any of the keys can be modified. POPKEY and TOPKEY1 are defined in *\
\* PULLC20.H.                                                         */

#define ALTF 33   /* First menu */
#define ALTQ 16   /* Quit menu */
#define ALTX 45   /* Immediately exit program */

/*------------------ Set up your menu names here in order: ----------------*/
/* This is optional, but it sure helps you in not only understanding the
   program, but also makes it unquestionably easier to rearrange.
*/

enum mainmenunames {
    FIRST_MENU,    QUIT_MENU,
    NO_MAIN_MENU=255
};

#ifdef USE_SUBMENU_CODE
enum submenunames {
    MY_SUB_MENU,
    NO_SUB_MENU=255
};
#endif

#ifdef USE_MSGLINE_CODE
enum msglinenames {
    WORK_ML,  TOP_ML,   ALT_ML,   MAIN_ML,  SUB_ML,   DW_ML,    DE_ML,
    SEQ_ML,   HELP_ML,  FUNC_ML,
    NO_ML=0xFF
};
#endif

#ifdef USE_HELPWNDW_CODE
enum helpwndwnames {
    WORKWNDW_HW,       TOPLINE_HW,        MAINMENU_HW,       SUBMENU_HW,
    DATAWNDW_HW,
    NO_HW=255
};

enum helplinenames {                /* HL - helpline;  L  - last */
    HL_W1, HL_WL,                                   /* work window */
    HL_T1, HL_TL,                                   /* top menu */
    HL_M1, HL_ML,                                   /* main menu */
    HL_S1, HL_SL,                                   /* sub menu */
    HL_D1, HL_D2, HL_D3, HL_D4, HL_D5, HL_D6,       /* numeric data */
           HL_DL,
    NO_HL=255
};
#endif

#ifdef USE_DATAENTRY_CODE
enum datawndwnames {
    AUBYTE_DW,
    NO_DW=255
};
#endif

extern char filename[13];


/*===========================================================================*\
                           PULLDATA declarations
\*===========================================================================*/

extern char pathname[67];

enum dataentrynames {
    AINT_DE,
    NO_DE=255
};

/*---------------- Set up your error message lines here: ------------------*\
| Error messages are used for indicating that data entry was invalid or out |
| of range.  errmsgline[0] is reserved for custom error messages that you   |
| can create at runtime.  Messages up to INVALID_EM are reserved.           |
\*-------------------------------------------------------------------------*/
enum errmsgnames {
    USER_EM,
    INVALID_EM,
    MY_EM,
    NO_EM=255
};


/*===========================================================================*\
                            PULLDIR declarations
\*===========================================================================*/

#define FNAMESIZE 13      /* Size of a filename string variable */
#define MAXFILES 250      /* Size as large as you want your heap to be
                             available.   Uses 15 bytes per file name. */

typedef struct {
    char title[9];
    unsigned char menulines;
    unsigned char row,col,rows,cols;
    unsigned char hiliteline;
    unsigned char battr,wattr,hattr;
    int border;
    unsigned char msglinenum,helpwndwnum;
} dirmenu_t;

extern dirmenu_t dirmenu;
extern char filemask[FNAMESIZE];

/*  ----------   Prototypes from PULLSTAT.C   -----------  */

void getmainmenu( int name );
void savemainmenu(void);
void getsubmenu( int name );
void savesubmenu(void);
void sethelplines( int name, int first, int last );
void dummyfunc(void);
void gotodir(void);
void dodir(void);
void setquit(void);
void processthenpop(void);
void popthenprocess(void);
void popprocessandpull(void);
void popnumoflevels(void);
void poptonewmenu(void);
void datemenu1(void);
void datemenu2(void);
void datemenu3(void);
void getuserpullstats(void);
void getoverridestats(void);
void setworkwndw( int wn );
void checkglobalkeys(void);
void initpullstat(void);

/*  ----------   Prototypes from PULLDATA.C   -----------  */

void geterrmsgs(void);
void makeerrmsg( unsigned long low, unsigned long high, char sign );
void verifypath(void);
void verifyfilemask(void);
void verifypricelimit(void);
void verifymonth(void);
void verifyday(void);
void verifyyear(void);
void verifyyears(void);
void translatecase(void);
void verifybyte2(void);
void verifyubyte2(void);
void verifyint2(void);
void verifyuint2(void);
void verifylong2(void);
void verifydouble2(void);
void verifychar2(void);
void verifystring2(void);
void getdataentrystats(void);
void allocateheap(void);
void setdefaultcolors(void);
void initdatacolors(void);
int getjustify( int justify, int tod );
int getsetname( int sn, int tod );
void initdatadefaults(void);
void initpulldata(void);

/*  ----------   Prototypes from PULLDIR.C   -----------  */

void removespaces( char *str );
void dirqsort( int lower, int upper );
void sortdirectory(void);
void findfilenames(char *pathmask);
void getdirfilenames(void);
void showfilenames( int fli_new );
void maxpositive( int *num, int nummax );
void repositionlist( int fli_new, int hl_new );
void centernames( int *fli_new, int *hl_new, unsigned index );
void centerhilite(unsigned char mls, int *hl_new, int *fli_new);
void findclosematch( char *nametohilite, char *fn1, char *fn2, char *des,
                     int *index);
void showdirmenu( char *nametohilite );
void scandirbycursor(void);
void scandirbyletter(void);
void pulldirectory( char *nametochange, char *nametohilite );

/*  ----------   Prototypes from PULLWORK.C   -----------  */

void resetworkwndwstep(void);
void hideworkwndw(void);
void accessworkwndw( int wn );
void kbdidle(void);
void showfields(void);
void makeworkwndw2(void);
void editfields(void);
void initworkwndws(void);
void workwndw(void);
void initpullwork(void);

/*  ----------   Prototypes from MODNAME.C   -----------  */

void modfilename(void far *asciiz, void far *st);


