summaryrefslogtreecommitdiff
path: root/ShellPkg/Library/UefiShellDebug1CommandsLib/EditMenuBar.h
blob: 92c5610d66b63e2f7d372f9f5aa7b230f02bfadc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/** @file
  Declares menubar interface functions.

  Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _LIB_MENU_BAR_H_
#define _LIB_MENU_BAR_H_

#define SCAN_CONTROL_E  5
#define SCAN_CONTROL_F  6
#define SCAN_CONTROL_G  7
#define SCAN_CONTROL_K  11
#define SCAN_CONTROL_O  15
#define SCAN_CONTROL_Q  17
#define SCAN_CONTROL_R  18
#define SCAN_CONTROL_S  19
#define SCAN_CONTROL_T  20
#define SCAN_CONTROL_U  21
#define SCAN_CONTROL_W  23
#define SCAN_CONTROL_Z  26

typedef
EFI_STATUS
(*MENU_ITEM_FUNCTION) (
  VOID
  );

typedef struct _EDITOR_MENU_ITEM {
  EFI_STRING_ID         NameToken;
  CHAR16                FunctionKeyToken;
  MENU_ITEM_FUNCTION    Function;
} EDITOR_MENU_ITEM;

/**
  Initializa the menu bar with the specified items.

  @param[in] Items              The items to display and their functions.

  @retval EFI_SUCCESS           The initialization was correct.
  @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
**/
EFI_STATUS
MenuBarInit (
  IN CONST EDITOR_MENU_ITEM  *Items
  );

/**
  Initialize the control hot-key with the specified items.

  @param[in] Items              The hot-key functions.

  @retval EFI_SUCCESS           The initialization was correct.
**/
EFI_STATUS
ControlHotKeyInit (
  IN MENU_ITEM_FUNCTION  *Items
  );

/**
  Cleanup function for a menu bar.  frees all allocated memory.
**/
VOID
MenuBarCleanup (
  VOID
  );

/**
  Refresh function for the menu bar.

  @param[in] LastRow            The last printable row.
  @param[in] LastCol            The last printable column.

  @retval EFI_SUCCESS           The refresh was successful.
**/
EFI_STATUS
MenuBarRefresh (
  IN CONST UINTN  LastRow,
  IN CONST UINTN  LastCol
  );

/**
  Function to dispatch the correct function based on a function key (F1...)

  @param[in] Key                The pressed key.

  @retval EFI_NOT_FOUND         The key was not a valid function key
                                (an error was sent to the status bar).
  @return The return value from the called dispatch function.
**/
EFI_STATUS
MenuBarDispatchFunctionKey (
  IN CONST EFI_INPUT_KEY  *Key
  );

/**
  Function to dispatch the correct function based on a control-based key (ctrl+o...)

  @param[in] KeyData                The pressed key.

  @retval EFI_NOT_FOUND         The key was not a valid control-based key
                                (an error was sent to the status bar).
  @return EFI_SUCCESS.
**/
EFI_STATUS
MenuBarDispatchControlHotKey (
  IN CONST EFI_KEY_DATA  *KeyData
  );

#endif