home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
High Voltage Shareware
/
high1.zip
/
high1
/
DIR21
/
DOUGM.ZIP
/
DM168SRC.ZIP
/
DOUGMENU.H
< prev
next >
Wrap
Text File
|
1992-07-26
|
10KB
|
299 lines
#define byte unsigned char
#define MAX_LINE 140
#define MAX_FILE_NAME 80
#define MAX_VARS 9
#define MAX_PALETTES 10
#define MAX_SPECIAL 30
#define PALETTE_SIZE 7
#define MAX_RECURSION 9
#define CENTER 255
#define VAR_NOT_FOUND (char) 255
/***************************************************************************/
typedef enum { NO, YES } boolean;
/***************************************************************************/
typedef enum { EXECUTE_BATCH, LEAVE_MENU, EXECUTE_N_LEAVE } exit_actions;
/***************************************************************************/
typedef enum { BACK, TEXT, TITLE, BORDER, HIGHLIGHT, S_BACK, SELECT } palette_colors;
/***************************************************************************/
typedef enum { MEMORY, FILE_OPEN, SYNTAX, VALUE, POSITION, DISPLAY,
ENVIROMENT } error_type;
/***************************************************************************/
typedef enum { NO_ACTION, MOVE_UP, MOVE_DOWN, GOTO_TOP, GOTO_BOTTOM, GOTO_ITEM,
BACK_SPACE, ESCAPE, KEY_PRESS, OTHER, DO_ITEM, SPECIAL } action_type;
/***************************************************************************/
typedef enum { MAKE_BATCH, NEW_WINDOW, MAKE_TEXT_BOX, GET_DISK_SPACE,
FIND_FLOPPY, ASK_FOR_VAR, PASSWORD, LOGOUT, EXIT, REBOOT,
IF, IF_USERNAME, IF_MEMBER, ELSE, ENDIF }
execute_option;
/***************************************************************************/
struct linked_text
{
struct linked_text *next_line;
char text_line[1];
};
typedef struct linked_text Linked_Text;
/***************************************************************************/
struct linked_text_block
{
Linked_Text *first_line;
struct linked_text_block *next_block;
byte x1,y1,pal;
};
typedef struct linked_text_block Linked_Text_Block;
/***************************************************************************/
struct item
{
byte title_length, item_number;
struct item *next_item,*last_item;
struct linked_text *first_line;
char title[1];
};
typedef struct item Item;
/***************************************************************************/
struct menu
{
byte offset_x, offset_y, palette, number_of_items,
title_length;
struct menu *next_menu;
struct item *first_item;
char title[1];
};
typedef struct menu Menu;
/***************************************************************************/
struct window_record
{
Menu *menu;
Item *item;
int *storage;
byte left, right, width, top, bottom, height;
action_type event;
};
typedef struct window_record Window_Record;
/***************************************************************************/
struct event
{
action_type action;
byte data;
};
typedef struct event Event;
/***************************************************************************/
struct vars
{
char *name, *value;
};
typedef struct vars Vars;
/***************************************************************************/
/* palettes */
/*BACKground, TEXT, TITLE, BORDER, HIGHLIGHT, Selection BACKground, SELECTion*/
byte palette[ MAX_PALETTES ][ PALETTE_SIZE ] = {
{1,15,15,15,14,7,1},{3,1,1,1,1,0,15},
{4,14,14,14,14,7,15},{7,5,1,15,15,5,15},
{0,3,3,8,7,7,0},{0,12,13,1,9,7,15},
{0,11,15,8,7,2,15},{2,0,15,10,14,0,10},
{0,7,15,7,15,7,0},{7,0,0,0,0,0,7} };
/***************************************************************************/
/*Global Variables */
/* global menu defaults */
byte default_x = CENTER, default_y = CENTER, default_palette,
header_palette, error_palette, message_palette,
backdrop_color, footer_color, footer_highlight,
backdrop_char = '░', cascade_x = 4, cascade_y = 1;
boolean exitable = YES, shadow = NO, draw_shadow = NO, cascade = NO;
/* global pointers */
Menu *first_menu, *current_menu;
Item *current_item;
Linked_Text *current_text;
Linked_Text_Block *first_text_block, *current_text_block;
char *current_file;
int far *video_start;
char far *env_start;
/* working records */
Window_Record Win[MAX_RECURSION+2];
Event event;
byte win_index;
Vars vars[MAX_VARS];
byte var_number = 0;
/* working window */
byte top, bottom, left, right, height, width;
/* file names */
char *backdrop_file = NULL;
/* special items & their helpers*/
Item *special_item[MAX_SPECIAL];
/* list of special items : 0 timer
1 -10 function keys
11-30 hot keys */
/* timer stuff */
byte current_minute = 61,
timer = 0, timer_holder = 0;
unsigned int clock_place;
/*hot key stuff */
byte hot_keys = 11;
/* video varibles */
boolean color_monitor;
byte max_screen_x, max_screen_y;
/* mouse variables */
byte last_button, last_x, last_y, selected_fn;
/* shadow stuff */
byte shadow_color, *shad_buf;
/* other variables */
byte l_len;
unsigned int line_count;
boolean show_time = YES;
boolean first_run = YES;
boolean do_return = YES;
boolean quick_select = NO;
boolean allow_comments = YES;
char *screen_saver_message = NULL;
char *header_message = NULL;
byte video_mode;
byte cursor_top;
byte cursor_bottom;
/***************************************************************************/
/* procedure definitions */
/* parse.c */
Menu *Allocate_Menu( void );
Item *Allocate_Item( void );
Linked_Text *Allocate_Linked_Text( void );
void Read_Line(char *t_line, FILE *Script );
boolean Compare(char *string1, char *string2);
char *After_Space(char *place);
char *After_Equals(char *place);
char *After_Comma(char *place);
byte Get_Palette(char *place, byte def_value);
byte Get_Color(char *place,byte def_value);
byte Get_Value(char *place, byte def_value);
void Do_If( char *place, FILE *Script );
void Do_If_Username( char *place, FILE *Script );
void Do_If_Member( char *place, FILE *Script );
void Do_Else( char *place, FILE *Script );
void Parse_Command(char *place,FILE *Script);
void Parse_Menu(char t_line[]);
void Parse_Item(char t_line[]);
void Parse_Item_Text(char t_line[]);
void Parse_Engine( void );
void Parse( char dos_param_2[] );
void Include( char *place );
/* draw.c */
void _fastcall Draw(byte x,byte y,char thing,byte color);
byte _fastcall Read_Color(byte x, byte y);
void _fastcall Put_Color(byte x,byte y,byte color);
void _fastcall Fill_Screen(char thing,byte color);
void _fastcall Put_Cursor(byte col,byte row);
void Hide_Cursor( void );
void Show_Cursor( void );
void Hide_Mouse( void );
void Show_Mouse( void );
void Clean_Up( void );
void Screen_Saver( void );
int *Store_Screen( void );
void Restore_Screen(int *storage_addr );
void Display_Menu(Item *hi_item);
void Select(Item *new_item);
void Display_Text_Box(char *lines[],byte x1,byte y1, byte pal);
void Display_Shadow( void );
void Remove_Shadow( void );
void Draw_Backdrop( void );
void Draw_Header( void );
void Draw_Footer( void );
void Draw_Back_Boxes( void );
/* input.c */
void Update_Time( void );
void Select_Fn( byte x );
void Unselect_Fn( void );
byte Old_Window(byte x,byte y);
void Update_Mouse( void );
void Scan_For_Letter(char key_input );
void Get_Key_Input( void );
void Wait_For_Event( void );
void Pause_Until_Serious_Action( void );
/* dougmenu.c */
boolean Windowfy_Menu(Menu *menu);
Item *Number_To_Item(byte number);
Item *Home_Item( void );
Item *End_Item( void );
Item *Previous_Item( void );
Item *Next_Item( void );
void Last_Window_Globals( void );
void Remove_Window( void );
Menu *Find_Menu( Linked_Text *title_text );
void main( int argc, char *argv[] );
/* execute.c */
byte Do_Query_Window( Menu *query );
void Exit_Query( void );
void Choice_Query(char *place, char temp[] );
void String_Query(char *place, char string[], boolean show_it );
void Create_Text_Box( char *place );
void Get_Disk_Space( char *place );
void Find_Floppy( char *place );
void Ask_For_Pass( char *place );
void Logout( void );
void Reboot( void );
void Execute_Item( void );
execute_option What_To_Do( char *temp);
void Make_Batch( void );
void Exec_If( char *place );
void Exec_If_Username( char *place );
void Exec_If_Member( char *place );
void Exec_Else( char *place );
/* misc.c */
void Break_Off( void );
long int Disk_Space_Check( byte drive );
void Monochrome_Defaults( void );
void Get_Video_Info( char *parameter );
void Set_Up_Enviroment( void );
void Set_Up_Mouse( void );
void Set_Up_Screen( void );
void Find_Env_Var( char *var, char *string, byte space);
boolean Fcompare( char *string1,char far *string2 );
void Ask_For_Var( char *place );
void Transcribe_String(char *old,char *new);
boolean Get_DM_Var( char *place, char *temp, byte space);
void Critical_Error(error_type error);
void Error_Box(char line1[],char line2[]);