source: trunk/third/moira/clients/moira/menu.h @ 24319

Revision 24319, 1.8 KB checked in by broder, 14 years ago (diff)
New Moira snapshot from SVN.
Line 
1/* $Id: menu.h 3956 2010-01-05 20:56:56Z zacheiss $ */
2
3#define MAX_ARGC 16             /* Maximum argument count per line */
4#define MAX_ARGLEN 128          /* Maximum length of an argument */
5#define MAX_LINES 16            /* Maximum number of lines per menu */
6
7#define MAX_TITLE 1             /* Maximum length of title, in lines */
8
9/* Maximum depth to which submenus will be searched when looking for commands */
10#define MAX_MENU_DEPTH 8
11
12typedef struct menu_arg {
13  char *ma_doc;         /* Short doc for completion */
14  char *ma_prompt;      /* For prompting in menu */
15} Menu_Arg;
16
17typedef struct menu_line {
18  int (*ml_function)(int argc, char **argv);
19  struct menu *ml_submenu;
20  int ml_argc;
21  struct menu_arg ml_args[MAX_ARGC];
22} Menu_Line;
23
24#define ml_doc ml_args[0].ma_prompt
25#define ml_command ml_args[0].ma_doc
26
27typedef struct menu {
28  int (*m_entry)(struct menu *m, int argc, char **argv);
29  int (*m_exit)(struct menu *m);
30  char *m_title;
31  int m_length;
32  struct menu_line m_lines[MAX_LINES];
33} Menu;
34
35/* Return codes for Do_menu */
36/* These should also be used by functions called from Do_menu */
37#define DM_NORMAL 0             /* Normal return */
38#define DM_QUIT 1               /* Quit; ^C or q command received */
39
40/* Macros for initializing menu lines */
41#define NULLFUNC (0)
42#define NULLMENU NULL
43#define SUBMENU(cmd, doc, menu) { NULLFUNC, menu, 1, { { cmd, doc } } }
44#define SIMPLEFUNC(cmd, doc, func) { func, NULLMENU, 1, { { cmd, doc } } }
45
46/* Unused words found on parsed command line */
47extern int parsed_argc;
48extern char **parsed_argv;
49
50/* prototypes */
51void Put_message(char *msg);
52void Start_menu(Menu *m);
53void Start_no_menu(Menu *m);
54int Do_menu(Menu *m, int margc, char *margv[]);
55void Cleanup_menu(void);
56void Start_paging(void);
57void Stop_paging(void);
58int Prompt_input(char *prompt, char *buf, int buflen);
59void refresh_screen(void);
Note: See TracBrowser for help on using the repository browser.