1 /** @file
2   Declares menubar interface functions.
3 
4   Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
5   SPDX-License-Identifier: BSD-2-Clause-Patent
6 
7 **/
8 
9 #ifndef _LIB_MENU_BAR_H_
10 #define _LIB_MENU_BAR_H_
11 
12 #define SCAN_CONTROL_E  5
13 #define SCAN_CONTROL_F  6
14 #define SCAN_CONTROL_G  7
15 #define SCAN_CONTROL_K  11
16 #define SCAN_CONTROL_O  15
17 #define SCAN_CONTROL_Q  17
18 #define SCAN_CONTROL_R  18
19 #define SCAN_CONTROL_S  19
20 #define SCAN_CONTROL_T  20
21 #define SCAN_CONTROL_U  21
22 #define SCAN_CONTROL_W  23
23 #define SCAN_CONTROL_Z  26
24 
25 
26 typedef
27 EFI_STATUS
28 (*MENU_ITEM_FUNCTION) (
29   VOID
30   );
31 
32 typedef struct _EDITOR_MENU_ITEM {
33   EFI_STRING_ID           NameToken;
34   CHAR16                  FunctionKeyToken;
35   MENU_ITEM_FUNCTION  Function;
36 } EDITOR_MENU_ITEM;
37 
38 /**
39   Initializa the menu bar with the specified items.
40 
41   @param[in] Items              The items to display and their functions.
42 
43   @retval EFI_SUCCESS           The initialization was correct.
44   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
45 **/
46 EFI_STATUS
47 MenuBarInit (
48   IN CONST EDITOR_MENU_ITEM  *Items
49   );
50 
51 /**
52   Initialize the control hot-key with the specified items.
53 
54   @param[in] Items              The hot-key functions.
55 
56   @retval EFI_SUCCESS           The initialization was correct.
57 **/
58 EFI_STATUS
59 ControlHotKeyInit (
60   IN MENU_ITEM_FUNCTION  *Items
61   );
62 
63 /**
64   Cleanup function for a menu bar.  frees all allocated memory.
65 **/
66 VOID
67 MenuBarCleanup (
68   VOID
69   );
70 
71 /**
72   Refresh function for the menu bar.
73 
74   @param[in] LastRow            The last printable row.
75   @param[in] LastCol            The last printable column.
76 
77   @retval EFI_SUCCESS           The refresh was successful.
78 **/
79 EFI_STATUS
80 MenuBarRefresh (
81   IN CONST UINTN LastRow,
82   IN CONST UINTN LastCol
83   );
84 
85 /**
86   Function to dispatch the correct function based on a function key (F1...)
87 
88   @param[in] Key                The pressed key.
89 
90   @retval EFI_NOT_FOUND         The key was not a valid function key
91                                 (an error was sent to the status bar).
92   @return The return value from the called dispatch function.
93 **/
94 EFI_STATUS
95 MenuBarDispatchFunctionKey (
96   IN CONST EFI_INPUT_KEY   *Key
97   );
98 
99 /**
100   Function to dispatch the correct function based on a control-based key (ctrl+o...)
101 
102   @param[in] KeyData                The pressed key.
103 
104   @retval EFI_NOT_FOUND         The key was not a valid control-based key
105                                 (an error was sent to the status bar).
106   @return EFI_SUCCESS.
107 **/
108 EFI_STATUS
109 MenuBarDispatchControlHotKey (
110   IN CONST EFI_KEY_DATA   *KeyData
111   );
112 
113 #endif
114