1\r
};\r
\r
+/**\r
+ Help info that will be displayed.\r
+**/\r
+EFI_STRING_ID HexMainMenuHelpInfo[] = {\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_TITLE),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_LIST_TITLE),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_DIV),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_GO_TO_OFFSET),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_SAVE_BUFFER),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_EXIT),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_SELECT_START),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_SELECT_END),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_CUT),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_PASTE),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_OPEN_FILE),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_OPEN_DISK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_OPEN_MEMORY),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_EXIT_HELP),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_BLANK),\r
+ STRING_TOKEN(STR_HEXEDIT_HELP_DIV),\r
+ 0\r
+};\r
+\r
+\r
+/**\r
+ show help menu.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+**/\r
+EFI_STATUS\r
+HMainCommandDisplayHelp (\r
+ VOID\r
+ )\r
+{\r
+ INT32 CurrentLine;\r
+ CHAR16 * InfoString;\r
+ EFI_INPUT_KEY Key;\r
+\r
+ CurrentLine = 0;\r
+ // print helpInfo \r
+ for (CurrentLine = 0; 0 != HexMainMenuHelpInfo[CurrentLine]; CurrentLine++) {\r
+ InfoString = HiiGetString(gShellDebug1HiiHandle, HexMainMenuHelpInfo[CurrentLine]\r
+, NULL);\r
+ ShellPrintEx (0,CurrentLine+1,L"%E%s%N",InfoString); \r
+ }\r
+ \r
+ // scan for ctrl+w\r
+ do {\r
+ gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
+ } while(SCAN_CONTROL_W != Key.UnicodeChar); \r
+\r
+ // update screen with buffer's info\r
+ HBufferImageNeedRefresh = TRUE;\r
+ HBufferImageOnlyLineNeedRefresh = FALSE;\r
+ HBufferImageRefresh ();\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
/**\r
Move cursor to specified lines.\r
\r
\r
}\r
\r
+MENU_ITEM_FUNCTION HexMainControlBasedMenuFunctions[] = {\r
+ NULL,\r
+ NULL, /* Ctrl - A */\r
+ NULL, /* Ctrl - B */\r
+ NULL, /* Ctrl - C */\r
+ HMainCommandSelectEnd, /* Ctrl - D */\r
+ HMainCommandDisplayHelp, /* Ctrl - E */\r
+ NULL, /* Ctrl - F */\r
+ HMainCommandGoToOffset, /* Ctrl - G */\r
+ NULL, /* Ctrl - H */\r
+ HMainCommandOpenDisk, /* Ctrl - I */\r
+ NULL, /* Ctrl - J */\r
+ NULL, /* Ctrl - K */\r
+ NULL, /* Ctrl - L */\r
+ HMainCommandOpenMemory, /* Ctrl - M */\r
+ NULL, /* Ctrl - N */\r
+ HMainCommandOpenFile, /* Ctrl - O */\r
+ NULL, /* Ctrl - P */\r
+ HMainCommandExit, /* Ctrl - Q */\r
+ NULL, /* Ctrl - R */\r
+ HMainCommandSaveBuffer, /* Ctrl - S */\r
+ HMainCommandSelectStart, /* Ctrl - T */\r
+ NULL, /* Ctrl - U */\r
+ HMainCommandPaste, /* Ctrl - V */\r
+ NULL, /* Ctrl - W */\r
+ HMainCommandCut, /* Ctrl - X */\r
+ NULL, /* Ctrl - Y */\r
+ NULL, /* Ctrl - Z */\r
+};\r
+\r
CONST EDITOR_MENU_ITEM HexEditorMenuItems[] = {\r
{\r
STRING_TOKEN(STR_HEXEDIT_LIBMENUBAR_GO_TO_OFFSET),\r
return EFI_LOAD_ERROR;\r
}\r
\r
+ Status = ControlHotKeyInit (HexMainControlBasedMenuFunctions);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), gShellDebug1HiiHandle);\r
+ return EFI_LOAD_ERROR;\r
+ }\r
Status = MenuBarInit (HexEditorMenuItems);\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), gShellDebug1HiiHandle);\r
}\r
\r
if (HEditorFirst) {\r
- MenuBarRefresh ( \r
- HMainEditor.ScreenSize.Row,\r
- HMainEditor.ScreenSize.Column);\r
HBufferImageRefresh ();\r
}\r
\r
// clear previous status string\r
//\r
StatusBarSetRefresh();\r
-\r
- if (Key.ScanCode == SCAN_NULL) {\r
+ if (EFI_SUCCESS == MenuBarDispatchControlHotKey(&Key)) {\r
+ Status = EFI_SUCCESS;\r
+ } else if (Key.ScanCode == SCAN_NULL) {\r
Status = HBufferImageHandleInput (&Key);\r
} else if (((Key.ScanCode >= SCAN_UP) && (Key.ScanCode <= SCAN_PAGE_DOWN))) {\r
Status = HBufferImageHandleInput (&Key);\r