aboutsummaryrefslogtreecommitdiffstats
path: root/menu/menu.h
diff options
context:
space:
mode:
authorhpa <hpa>2005-04-28 23:12:09 +0000
committerhpa <hpa>2005-04-28 23:12:09 +0000
commit6ff6bfa27a7c611c3ff52020fb5c71202c96331b (patch)
treee67c0da0053ecec3f4a5414f71b3d2a982f23b19 /menu/menu.h
parentfded392bcacd004e7fa57eada39d825da33399cb (diff)
downloadsyslinux-elf-6ff6bfa27a7c611c3ff52020fb5c71202c96331b.tar.gz
syslinux-elf-6ff6bfa27a7c611c3ff52020fb5c71202c96331b.tar.xz
syslinux-elf-6ff6bfa27a7c611c3ff52020fb5c71202c96331b.zip
Rewritten advanced menuing system from Murali.
Diffstat (limited to 'menu/menu.h')
-rw-r--r--menu/menu.h284
1 files changed, 0 insertions, 284 deletions
diff --git a/menu/menu.h b/menu/menu.h
deleted file mode 100644
index fe03d792..00000000
--- a/menu/menu.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- c -*- ------------------------------------------------------------- *
- *
- * Copyright 2004 Murali Krishnan Ganapathy - All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, Inc., 53 Temple Place Ste 330,
- * Boston MA 02111-1307, USA; either version 2 of the License, or
- * (at your option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-/* This program can be compiled for DOS with the OpenWatcom compiler
- * (http://www.openwatcom.org/):
- *
- * wcl -3 -osx -mt <filename>.c
- */
-
-#ifndef __MENU_H__
-#define __MENU_H__
-
-#include "biosio.h"
-#include "string.h"
-
-// TIMEOUT PARAMETERS
-/* If no key is pressed within TIMEOUTNUMSTEPS * TIMEOUTSTEPSIZE milliseconds
- and if a timeout handler is registered, then that will be called.
- The handler should either either take control from there on, or return without
- producing any change in the current video settings.
-
- For e.g. the handler could
- * Could just quit the menu program
- * beep and return.
-
- TIMEOUTSTEPSIZE is the interval for which the program sleeps without checking for
- any keystroke. So increasing this will make the response of the system slow.
- Decreasing this will make a lot of interrupt calls using up your CPU. Default
- value of TIMEOUTSTEPSIZE of 0.1 seconds should be right in most cases.
-
- TIMEOUTNUMSTEPS of 3000 corresponds to a wait time of 300 seconds or 5 minutes
-*/
-
-#define TIMEOUTSTEPSIZE 10
-#define TIMEOUTNUMSTEPS 30000L
-
-// Scancodes of some keys
-#define ESCAPE 1
-#define ENTERA 28
-#define ENTERB 224
-
-#define HOMEKEY 71
-#define UPARROW 72
-#define PAGEUP 73
-#define LTARROW 75
-#define RTARROW 77
-#define ENDKEY 79
-#define DNARROW 80
-#define PAGEDN 81
-#define SPACEKEY 57 // Scan code for SPACE
-
-// Attributes
-#define NORMALATTR 0x17
-#define NORMALHLITE 0x1F // Normal Highlight attribute
-#define REVERSEATTR 0x70
-#define REVERSEHLITE 0x78 // Reverse Hightlight attribute
-#define INACTATTR 0x18
-#define INACTHLITE 0x10 // Inactive Highlight attribute
-#define REVINACTATTR 0x78
-#define REVINACTHLITE 0x70 // Reverse Inactive Highlight attr
-
-#define STATUSATTR 0x74
-#define STATUSHLITE 0x7B // Status highlight
-
-#define FILLCHAR 177
-#define FILLATTR 0x01
-#define SHADOWATTR 0x00
-#define SPACECHAR ' '
-
-#define TFILLCHAR ' '
-#define TITLEATTR 0x70
-
-#define ENABLEHLITE '<' // Char which turns on highlight
-#define DISABLEHLITE '>' // Char which turns off highlight
-#define NOHLITE 0 // The offset into attrib array for non-hilite
-#define HLITE 1 // The offset for Hlite attrib
-
-// Single line Box drawing Chars
-
-#define TOPLEFT 218
-#define BOTLEFT 192
-#define TOPRIGHT 191
-#define BOTRIGHT 217
-#define TOP 196
-#define BOT 196
-#define LEFT 179
-#define RIGHT 179
-#define HORIZ 196
-#define LTRT 195 // The |- char
-#define RTLT 180 // The -| char
-
-// Double line Box Drawing Chars
-/*
-#define TOPLEFT 201
-#define BOTLEFT 200
-#define TOPRIGHT 187
-#define BOTRIGHT 188
-#define TOP 205
-#define BOT 205
-#define LEFT 186
-#define RIGHT 186
-#define HORIZ 205
-#define LTRT 199 // The ||- char
-#define RTLT 182 // The -|| char
-*/
-
-// Attributes of the menu system
-#define MAXMENUS 8 // Maximum number of menu's allowed
-#define MAXMENUSIZE 12 // Maximum number of entries in each menu
-
-// Upper bounds on lengths
-// Now that the onus of allocating space is with the user, these numbers
-// are only for sanity checks. You may increase these values without
-// affecting the memory footprint of this program
-#define MENULEN 30 // Each menu entry is atmost MENULEN chars
-#define STATLEN 80 // Maximum length of status string
-#define ACTIONLEN 80 // Maximum length of an action string
-
-// Layout of menu
-#define MENUROW 3 // Row where menu is displayed (relative to window)
-#define MENUCOL 4 // Col where menu is displayed (relative to window)
-#define MENUPAGE 1 // show in display page 1
-#define STATLINE 23 // Line number where status line starts (relative to window)
-
-// Other Chars
-#define SUBMENUCHAR 175 // This is >> symbol
-#define RADIOMENUCHAR '>' // > symbol for radio menu?
-#define EXITMENUCHAR 174 // This is << symbol
-#define CHECKED 251 // Check mark
-#define UNCHECKED 250 // Light bullet
-#define RADIOSEL '.' // Current Radio Selection
-#define RADIOUNSEL ' ' // Radio option not selected
-
-// Types of menu's
-#define NORMALMENU 1
-#define RADIOMENU 2
-
-typedef enum {OPT_INACTIVE, OPT_SUBMENU, OPT_RUN, OPT_EXITMENU, OPT_CHECKBOX,
- OPT_RADIOMENU, OPT_SEP, OPT_INVISIBLE,
- OPT_RADIOITEM} t_action;
-
-typedef union {
- char submenunum; // For submenu's
- char checked; // For check boxes
- char radiomenunum; // Item mapping to a radio menu
-} t_itemdata;
-
-struct s_menuitem;
-struct s_menu;
-struct s_menusystem;
-
-typedef void (*t_item_handler)(struct s_menusystem *, struct s_menuitem *);
-typedef void (*t_menusystem_handler)(struct s_menusystem *, struct s_menuitem *);
-
-// TIMEOUT is the list of possible values which can be returned by the handler
-// instructing the menusystem what to do. The default is CODE_WAIT
-typedef enum {CODE_WAIT, CODE_ENTER, CODE_ESCAPE } TIMEOUTCODE;
-typedef TIMEOUTCODE (*t_timeout_handler)(void);
-
-typedef struct s_menuitem {
- const char *item;
- const char *status;
- const char *data; // string containing kernel to run.. but...
- // for radio menu's this is a pointer to the item selected or NULL (initially)
- void * extra_data; // Any other data user can point to
- t_item_handler handler; // Pointer to function of type menufn
- t_action action;
- t_itemdata itemdata; // Data depends on action value
- char shortcut; // one of [A-Za-z0-9] shortcut for this menu item
- char index; // Index within the menu array
- char parindex; // Index of the menu in which this item appears.
-} t_menuitem;
-
-typedef t_menuitem *pt_menuitem; // Pointer to type menuitem
-
-typedef struct s_menu {
- pt_menuitem items[MAXMENUSIZE];
- const char *title;
- char numitems;
- char numvisible;
- char menuwidth;
- char row,col; // Position where this menu should be displayed
-} t_menu;
-
-typedef t_menu *pt_menu; // Pointer to type menu
-
-typedef struct s_menusystem {
- pt_menu menus[MAXMENUS];
- const char *title;
- t_menusystem_handler handler; // Handler function called every time a menu is re-printed.
- t_timeout_handler ontimeout; // Timeout handler
- unsigned int tm_stepsize; // Timeout step size (in milliseconds)
- unsigned long tm_numsteps; // Time to wait for key press=numsteps * stepsize milliseconds
-
- char nummenus;
- char normalattr[2]; // [0] is non-hlite attr, [1] is hlite attr
- char reverseattr[2];
- char inactattr[2];
- char revinactattr[2];
- char statusattr[2];
- char fillchar;
- char fillattr;
- char spacechar;
- char tfillchar;
- char titleattr;
- char shadowattr;
- char statline;
- char menupage;
- char maxrow,minrow,numrows; // Number of rows in the window
- char maxcol,mincol,numcols; // Number of columns in the window
-} t_menusystem;
-
-typedef t_menusystem *pt_menusystem; // Pointer to type menusystem
-
-/************************************************************************
- * IMPORTANT INFORMATION
- *
- * All functions which take a string as argument store the pointer
- * for later use. So if you have alloc'ed a space for the string
- * and are passing it to any of these functions, DO NOT deallocate it.
- *
- * If they are constant strings, you may receive warning from the compiler
- * about "converting from char const * to char *". Ignore these errors.
- *
- * This hack/trick of storing these pointers will help in reducing the size
- * of the internal structures by a lot.
- *
- ***************************************************************************
- */
-
-pt_menuitem showmenus(char startmenu);
-
-void init_menusystem(const char *title); // This pointer value is stored internally
-
-void set_normal_attr(char normal, char selected, char inactivenormal, char inactiveselected);
-
-void set_normal_hlite(char normal, char selected, char inactivenormal, char inactiveselected);
-
-void set_status_info(char statusattr, char statushlite, char statline);
-
-void set_title_info(char tfillchar, char titleattr);
-
-void set_misc_info(char fillchar, char fillattr,char spacechar, char shadowattr);
-
-void set_window_size(char top, char left, char bot, char right); // Set the window which menusystem should use
-
-void reg_handler( t_menusystem_handler handler); // Register handler
-
-void unreg_handler();
-
-void reg_ontimeout(t_timeout_handler, unsigned int numsteps, unsigned int stepsize);
-// Set timeout handler, set 0 for default values.
-// So stepsize=0 means numsteps is measured in centiseconds.
-void unreg_ontimeout();
-
-// Create a new menu and return its position
-char add_menu(const char *title); // This pointer value is stored internally
-
-void set_menu_pos(char row,char col); // Set the position of this menu.
-
-// Add item to the "current" menu // pointer values are stored internally
-pt_menuitem add_item(const char *item, const char *status, t_action action, const char *data, char itemdata);
-
-void set_shortcut(char shortcut); // Set the shortcut key for the current item
-
-// Add a separator to the "current" menu
-pt_menuitem add_sep();
-
-// Calculate the number of visible items
-void calc_visible(pt_menu menu);
-
-// Main function for the user's config file
-int menumain(char *cmdline);
-
-#endif