]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/EditStatusBar.c
ShellPkg/[hex]edit: use SimpleTextInEx to read console
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / EditStatusBar.c
index 3fd604d818aac5d6e299e10eb707e68df0ff8e12..e7792c17b005ced641558ddd2962c9c160c66d45 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Implements statusbar interface functions.\r
 \r
-  Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>\r
+  Copyright (c) 2005 - 2014, Intel Corporation. All rights reserved. <BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -27,7 +27,6 @@ BOOLEAN StatusStringChanged;
   @sa StatusBarSetStatusString\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 StatusBarInit (\r
   VOID\r
   )\r
@@ -49,7 +48,6 @@ StatusBarInit (
   Cleanup function for the status bar.\r
 **/\r
 VOID\r
-EFIAPI\r
 StatusBarCleanup (\r
   VOID\r
   )\r
@@ -62,7 +60,7 @@ StatusBarCleanup (
 \r
 typedef struct {\r
   UINT32  Foreground : 4;\r
-  UINT32  Background : 4;\r
+  UINT32  Background : 3;\r
 } STATUS_BAR_COLOR_ATTRIBUTES;\r
 \r
 typedef union {\r
@@ -84,7 +82,6 @@ typedef union {
   @retval EFI_SUCCESS         The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 StatusBarRefresh (\r
   IN BOOLEAN  EditorFirst,\r
   IN UINTN    LastRow,\r
@@ -111,36 +108,46 @@ StatusBarRefresh (
   // back up the screen attributes\r
   //\r
   Orig.Data             = gST->ConOut->Mode->Attribute;\r
-  New.Colors.Foreground = Orig.Colors.Background;\r
-  New.Colors.Background = Orig.Colors.Foreground;\r
+  New.Data              = 0;\r
+  New.Colors.Foreground = Orig.Colors.Background & 0xF;\r
+  New.Colors.Background = Orig.Colors.Foreground & 0x7;\r
 \r
   gST->ConOut->EnableCursor (gST->ConOut, FALSE);\r
-  gST->ConOut->SetAttribute (gST->ConOut, New.Data);\r
+  gST->ConOut->SetAttribute (gST->ConOut, New.Data & 0x7F);\r
 \r
   //\r
   // clear status bar\r
   //\r
-  EditorClearLine (LastRow - 3, LastCol, LastRow);\r
+  EditorClearLine (LastRow, LastCol, LastRow);\r
 \r
   //\r
   // print row, column fields\r
   //\r
-  ShellPrintEx (\r
-    0,\r
-    (INT32)(LastRow) - 4,\r
-    L"  Row: %d  Col: %d       %s",\r
-    FileRow,\r
-    FileCol,\r
-    StatusString\r
-    );\r
+  if (FileRow != (UINTN)(-1) && FileCol != (UINTN)(-1)) {\r
+    ShellPrintEx (\r
+      0,\r
+      (INT32)(LastRow) - 1,\r
+      L" %d,%d       %s",\r
+      FileRow,\r
+      FileCol,\r
+      StatusString\r
+      );\r
+  } else {\r
+    ShellPrintEx (\r
+      0,\r
+      (INT32)(LastRow) - 1,\r
+      L"  %s",\r
+      StatusString\r
+      );\r
+  }\r
 \r
   //\r
   // print insert mode field\r
   //\r
   if (InsertMode) {\r
-    ShellPrintEx ((INT32)(LastCol) - 10, (INT32)(LastRow) - 4, L"|%s|", L"INS");\r
+    ShellPrintEx ((INT32)(LastCol) - 21, (INT32)(LastRow) - 1, L"|%s|   Help: Ctrl-E", L"INS");\r
   } else {\r
-    ShellPrintEx ((INT32)(LastCol) - 10, (INT32)(LastRow) - 4, L"|%s|", L"OVR");\r
+    ShellPrintEx ((INT32)(LastCol) - 21, (INT32)(LastRow) - 1, L"|%s|   Help: Ctrl-E", L"OVR");\r
   }\r
   //\r
   // restore the old screen attributes\r
@@ -167,7 +174,6 @@ StatusBarRefresh (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 StatusBarSetStatusString (\r
   IN CHAR16 *Str\r
   )\r
@@ -192,7 +198,6 @@ StatusBarSetStatusString (
   @return The string that is used.\r
 **/\r
 CONST CHAR16*\r
-EFIAPI\r
 StatusBarGetString (\r
   VOID\r
   )\r
@@ -204,7 +209,6 @@ StatusBarGetString (
   Function to set the need refresh boolean to TRUE.\r
 **/\r
 VOID\r
-EFIAPI\r
 StatusBarSetRefresh(\r
   VOID\r
   )\r
@@ -218,7 +222,6 @@ StatusBarSetRefresh(
   @retval TRUE    The status bar needs to be refreshed.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 StatusBarGetRefresh(\r
   VOID\r
   )\r