home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / d / dmenu1.zip / DM10SRC.ZIP / MENU.H < prev    next >
Text File  |  1991-10-15  |  7KB  |  228 lines

  1. #define byte          unsigned char
  2. #define MAX_LINE         140
  3. #define MAX_FILE_NAME    80
  4. #define MAX_VARS         9     
  5. #define MAX_PALETTES     10
  6. #define PALETTE_SIZE     7
  7. #define MAX_TIME_STR     34
  8. #define MAX_RECURSION    11
  9. #define LEAVE_QUERY_MODE 13
  10. #define CENTER           255
  11.  
  12. /***************************************************************************/
  13. typedef enum { NO, YES } boolean;
  14.  
  15. /***************************************************************************/
  16. typedef enum { BACK, TEXT, TITLE, BORDER, HIGHLIGHT, S_BACK, SELECT }
  17.         palette_colors;
  18.  
  19. /***************************************************************************/
  20. typedef enum { MEMORY, FILE_OPEN, SYNTAX, VALUE, POSITION, DISPLAY, ENVIROMENT } 
  21.         error_type;
  22.  
  23. /***************************************************************************/
  24. typedef enum { NO_ACTION, MOVE_UP, MOVE_DOWN, GOTO_TOP, GOTO_END, GOTO_ITEM, 
  25.                DO_ITEM, ESCAPE, TIMER, QUERY, FUNCTION_KEY } action_type;
  26.  
  27. /***************************************************************************/
  28. struct linked_text
  29. {
  30.     struct linked_text *next_line;
  31.     char   text_line[1];
  32. };
  33.  
  34. typedef struct linked_text Linked_Text;
  35.  
  36. /***************************************************************************/
  37. struct item
  38. {
  39.     byte             title_length, item_number;
  40.     struct item      *next_item,*last_item;
  41.     struct linked_text *first_line;
  42.     char             title[1];
  43. };
  44.  
  45. typedef struct item Item;
  46.  
  47. /***************************************************************************/
  48. struct menu
  49. {
  50.     byte             offset_x, offset_y, palette, number_of_items, 
  51.                      title_length, longest_title;
  52.     struct menu      *next_menu;
  53.     struct item      *first_item;
  54.     char             title[1];
  55. };
  56.  
  57. typedef struct menu Menu;
  58.  
  59. /***************************************************************************/
  60. struct window_record
  61. {
  62.     Menu            *menu;
  63.     Item            *item;
  64.     int             *storage;
  65.     byte            left, right, width, top, bottom, height;
  66.     action_type     event;
  67. };
  68.  
  69. typedef struct window_record Window_Record;
  70.  
  71. /***************************************************************************/
  72. struct event
  73. {
  74.     action_type   action;
  75.     byte          data;
  76. };
  77.  
  78. typedef struct event Event;
  79.  
  80. /***************************************************************************/
  81. struct vars
  82. {
  83.     char   *name, *value;
  84.     Linked_Text *text;
  85. };
  86.  
  87. typedef struct vars Vars;
  88.  
  89. /***************************************************************************/
  90.                   /* palettes */
  91. /*  BACKground, TEXT, TITLE, BORDER, HIGHLIGHT, Selection BACKground, SELECTion  */
  92.  
  93. byte palette[ MAX_PALETTES ][ PALETTE_SIZE ] = {
  94.             {1,15,15,15,14,7,1},{3,1,1,1,1,0,15},
  95.             {4,14,14,14,14,7,15},{7,5,1,15,15,5,15},
  96.             {0,12,15,1,9,7,1},{0,12,13,1,9,7,15},
  97.             {0,11,15,8,7,2,15},{2,0,15,10,14,0,10},
  98.             {0,7,15,7,15,7,0},{7,0,0,0,0,0,7}   };
  99.  
  100. /***************************************************************************/
  101.                 /*Global Variables */
  102.  
  103. /* global menu defaults */
  104. byte             default_x = CENTER, default_y = CENTER,
  105.                  default_palette, header_palette, error_palette, 
  106.                  message_palette, backdrop_color, footer_color, 
  107.                  backdrop_char = '░', cascade_x = 4, cascade_y = 1;
  108.         
  109. boolean          exitable = YES, shadow = NO, cascade = NO;
  110.  
  111. /* global pointers */
  112. Menu            *first_menu, *current_menu;
  113. Item            *current_item;
  114. Linked_Text     *current_text;
  115. int far         *video_start;
  116. char            *current_file;
  117.  
  118. /* working records */
  119. Window_Record   Win[MAX_RECURSION+1];
  120. Event           event;
  121. byte            win_index;
  122.  
  123. /* working window */
  124. byte            top, bottom, left, right, height, width;
  125.  
  126. /* file names */
  127. char            *backdrop_file = NULL,
  128.                 far *temp_bat;
  129.  
  130. /* timers */
  131. byte            current_minute = 61,
  132.                 timer, timer_holder;
  133.  
  134. /* special items */
  135. Item            *timer_text = NULL;
  136. Item            *function_key[11];
  137.  
  138. /* video varibles */
  139. boolean         color_monitor;
  140. byte            max_screen_x, max_screen_y;
  141.  
  142. /* mouse variables */
  143. byte            last_button, last_x, last_y;
  144.  
  145. /* shadow stuff */
  146. byte            shadow_color, *shad_buf;
  147.  
  148. /* other variables */
  149. byte            l_len;
  150. unsigned int    line_count;
  151. boolean         first_run;
  152.  
  153. /***************************************************************************/
  154. /* procedure definitions */
  155.  
  156. void         exit( int );
  157. void         Critical_Error(error_type error, char *error_string);
  158. Menu         *Allocate_Menu( void );
  159. Item         *Allocate_Item( void );
  160. Linked_Text *Allocate_Linked_Text( void );
  161. void         Read_Line(char *t_line, FILE *Script );
  162. boolean _fastcall Compare(char *string1, char *string2);
  163. char         *After_Space(char *place);
  164. char         *After_Equals(char *place);
  165. char         *After_Comma(char *place);
  166. byte         Get_Palette(char *place, byte def_value);
  167. byte        Get_Color(char *place,byte def_value);
  168. byte         Get_Value(char *place, byte def_value);
  169. void         Parse_Command(char *place,FILE *Script);
  170. void         Parse_Menu(char t_line[]);
  171. void         Parse_Item(char t_line[]);
  172. void         Parse_Item_Text(char t_line[]);
  173. void         Parse_Engine( void );
  174. void         Parse( char dos_param_1[] );
  175. void         Include( char *place );
  176. void         Break_Off(void);
  177. void _fastcall Draw(byte x,byte y,char thing,byte color);
  178. byte _fastcall Read_Color(byte x, byte y);
  179. void _fastcall Put_Color(byte x,byte y,byte color);
  180. void _fastcall Fill_Screen(char thing,byte color);
  181. void         Hide_Cursor( void );
  182. void         Show_Cursor( void );
  183. void         Hide_Mouse( void );
  184. void         Show_Mouse( void );
  185. void _fastcall Put_Cursor(byte col,byte row);
  186. void         Clean_Up( void );
  187. int         *Store_Screen(byte x1,byte x2,byte y1,byte y2);
  188. void         Restore_Screen(int *storage_addr,byte x1,byte x2,byte y1,byte y2);
  189. void         Display_Menu(Item *hi_item);
  190. void         Select(Item *new_item);
  191. void         Display_Text_Box(char *lines[],byte x1,byte x2,byte y1,byte y2,byte pal);
  192. void         Error_Box(char line1[],char line2[]);
  193. void        Display_Shadow( byte x1, byte x2, byte y1, byte y2);
  194. void        Remove_Shadow( byte x1, byte x2, byte y1, byte y2);
  195. void         Blank_Screen( void );
  196. void         Update_Time( void );
  197. byte        Old_Window(byte x,byte y);
  198. void         Update_Mouse( void );
  199. void         Scan_For_Letter(char key_input );
  200. void         Get_Key_Input( void );
  201. void         Wait_For_Event( void );
  202. boolean        Windowfy_Menu(Menu *menu);
  203. Item         *Number_To_Item(byte number);
  204. Item         *Home_Item( void );
  205. Item         *End_Item( void );
  206. Item         *Move_Up( void );
  207. Item         *Move_Down( void );
  208. void        Last_Window_Globals( void );
  209. void         Remove_Window(byte number_to_remove);
  210. Menu         *Find_Menu(char menu_to_find[]);
  211. void         Execute_Item( void );
  212. byte         Do_Query_Window( Menu *query );
  213. void         Exit_Query( void );
  214. void         Get_Key_String(char string[],byte x,byte y,byte color);
  215. void        String_Query(char *place, char temp[] );
  216. void         Choice_Query(char *place, char temp[] );
  217. void         Make_Batch( void );
  218. void         Monochrome_Defaults( void );
  219. void         Get_Video_Info( void );
  220. void         Display_Title_Screen( void );
  221. void         Set_Up_Enviroment( void );
  222. void         Set_Up_Mouse( void );
  223. void         Draw_Backdrop( void );
  224. void         Draw_Header( void );
  225. void         Draw_Footer( void );
  226. void         Set_Up_Screen( void );
  227. void         main( int argc, char *argv[] );
  228.