extern HEFI_EDITOR_BUFFER_IMAGE HBufferImage;\r
extern HEFI_EDITOR_BUFFER_IMAGE HBufferImageBackupVar;\r
\r
-extern HEFI_EDITOR_CLIPBOARD HClipBoard;\r
-\r
extern BOOLEAN HBufferImageMouseNeedRefresh;\r
extern BOOLEAN HBufferImageNeedRefresh;\r
extern BOOLEAN HBufferImageOnlyLineNeedRefresh;\r
//\r
HEFI_EDITOR_GLOBAL_EDITOR HMainEditorConst = {\r
&HBufferImage,\r
- &HClipBoard,\r
{\r
0,\r
0\r
1\r
};\r
\r
+/**\r
+ Move cursor to specified lines.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+**/\r
EFI_STATUS\r
HMainCommandGoToOffset (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- move cursor to specified lines\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
-\r
---*/\r
{\r
UINTN Size;\r
UINT64 Offset;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Save current opened buffer.\r
+ If is file buffer, you can save to current file name or \r
+ save to another file name.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandSaveBuffer (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- save current opened buffer . \r
- if is file buffer, you can save to current file name or \r
- save to another file name\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_OUT_OF_RESOURCES\r
- EFI_LOAD_ERROR\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
BOOLEAN Done;\r
SHELL_FILE_HANDLE ShellFileHandle;\r
\r
if (HMainEditor.BufferImage->BufferType != FileTypeFileBuffer) {\r
- if (HMainEditor.BufferImage->Modified == FALSE) {\r
+ if (!HMainEditor.BufferImage->Modified) {\r
return EFI_SUCCESS;\r
}\r
\r
//\r
// if the file is read only, so can not write back to it.\r
//\r
- if (HMainEditor.BufferImage->FileImage->ReadOnly == TRUE) {\r
+ if (HMainEditor.BufferImage->FileImage->ReadOnly) {\r
StatusBarSetStatusString (L"Access Denied");\r
SHELL_FREE_NON_NULL (FileName);\r
return EFI_SUCCESS;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Load a disk buffer editor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandSelectStart (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Load a disk buffer editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
-\r
---*/\r
{\r
UINTN Start;\r
\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Load a disk buffer editor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandSelectEnd (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Load a disk buffer editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
-\r
---*/\r
{\r
UINTN End;\r
\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Cut current line to clipboard.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandCut (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- cut current line to clipboard\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_OUT_OF_RESOURCES\r
- EFI_LOAD_ERROR\r
-\r
---*/\r
{\r
UINTN Index;\r
HEFI_EDITOR_LINE *Line;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Paste line to file buffer.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandPaste (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- paste line to file buffer\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_OUT_OF_RESOURCES\r
- EFI_LOAD_ERROR\r
-\r
-\r
---*/\r
{\r
\r
BOOLEAN OnlyLineRefresh;\r
\r
}\r
\r
+/**\r
+ Exit editor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandExit (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- exit editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_OUT_OF_RESOURCES\r
- EFI_LOAD_ERROR\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
\r
\r
}\r
\r
+/**\r
+ Load a file from disk to editor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainCommandOpenFile (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Load a file from disk to editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
-\r
---*/\r
{\r
BOOLEAN Done;\r
EFI_STATUS Status;\r
HMainEditor.BufferImage->FileImage->ReadOnly,\r
FALSE,\r
HMainEditor.ScreenSize.Column,\r
- HMainEditor.ScreenSize.Row\r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0\r
);\r
Done = TRUE;\r
break;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Load a disk buffer editor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+ @retval EFI_NOT_FOUND The disk was not found.\r
+**/\r
EFI_STATUS\r
HMainCommandOpenDisk (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Load a disk buffer editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
- EFI_NOT_FOUND\r
-\r
---*/\r
{\r
UINT64 Size;\r
UINT64 Offset;\r
HMainEditor.BufferImage->FileImage->ReadOnly,\r
FALSE,\r
HMainEditor.ScreenSize.Column,\r
- HMainEditor.ScreenSize.Row\r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0\r
);\r
Done = TRUE;\r
break;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Load memory content to editor\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+ @retval EFI_NOT_FOUND The disk was not found.\r
+**/\r
EFI_STATUS\r
HMainCommandOpenMemory (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Load memory content to editor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
- EFI_NOT_FOUND\r
-\r
---*/\r
{\r
UINT64 Size;\r
UINT64 Offset;\r
HMainEditor.BufferImage->FileImage->ReadOnly,\r
FALSE,\r
HMainEditor.ScreenSize.Column,\r
- HMainEditor.ScreenSize.Row\r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0\r
);\r
Done = TRUE;\r
break;\r
}\r
};\r
\r
+/**\r
+ Init function for MainEditor\r
\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainEditorInit (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Init function for MainEditor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
EFI_HANDLE *HandleBuffer;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Cleanup function for MainEditor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainEditorCleanup (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- cleanup function for MainEditor\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Refresh function for MainEditor.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+**/\r
EFI_STATUS\r
HMainEditorRefresh (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Refresh function for MainEditor\r
-\r
-Arguments: \r
-\r
- None\r
+{\r
+ BOOLEAN NameChange;\r
+ BOOLEAN ReadChange;\r
\r
-Returns: \r
+ NameChange = FALSE;\r
+ ReadChange = FALSE;\r
\r
- EFI_SUCCESS\r
+ if ( HMainEditor.BufferImage->FileImage != NULL && \r
+ HMainEditor.BufferImage->FileImage->FileName != NULL && \r
+ HBufferImageBackupVar.FileImage != NULL && \r
+ HBufferImageBackupVar.FileImage->FileName != NULL && \r
+ StrCmp (HMainEditor.BufferImage->FileImage->FileName, HBufferImageBackupVar.FileImage->FileName) != 0 ) {\r
+ NameChange = TRUE;\r
+ }\r
+ if ( HMainEditor.BufferImage->FileImage != NULL && \r
+ HBufferImageBackupVar.FileImage != NULL && \r
+ HMainEditor.BufferImage->FileImage->ReadOnly != HBufferImageBackupVar.FileImage->ReadOnly ) {\r
+ ReadChange = TRUE;\r
+ }\r
\r
---*/\r
-{\r
//\r
// to aVOID screen flicker\r
// the stall value is from experience\r
gBS->Stall (50);\r
\r
//\r
- // call the four components refresh function\r
+ // call the components refresh function\r
//\r
- MainTitleBarRefresh (\r
- HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL,\r
- HMainEditor.BufferImage->BufferType,\r
- HMainEditor.BufferImage->FileImage->ReadOnly,\r
- HMainEditor.BufferImage->Modified,\r
- HMainEditor.ScreenSize.Column,\r
- HMainEditor.ScreenSize.Row\r
- );\r
- HBufferImageRefresh ();\r
- StatusBarRefresh (\r
- HEditorFirst,\r
- HMainEditor.ScreenSize.Row,\r
- HMainEditor.ScreenSize.Column,\r
- 0,\r
- 0,\r
- TRUE\r
- );\r
- MenuBarRefresh ( \r
- HMainEditor.ScreenSize.Row,\r
- HMainEditor.ScreenSize.Column);\r
+ if (HEditorFirst \r
+ || NameChange\r
+ || HMainEditor.BufferImage->BufferType != HBufferImageBackupVar.BufferType \r
+ || HBufferImageBackupVar.Modified != HMainEditor.BufferImage->Modified \r
+ || ReadChange ) {\r
+\r
+ MainTitleBarRefresh (\r
+ HMainEditor.BufferImage->BufferType == FileTypeFileBuffer&&HMainEditor.BufferImage->FileImage!=NULL?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer&&HMainEditor.BufferImage->DiskImage!=NULL?HMainEditor.BufferImage->DiskImage->Name:NULL,\r
+ HMainEditor.BufferImage->BufferType,\r
+ (BOOLEAN)(HMainEditor.BufferImage->FileImage!=NULL?HMainEditor.BufferImage->FileImage->ReadOnly:FALSE),\r
+ HMainEditor.BufferImage->Modified,\r
+ HMainEditor.ScreenSize.Column,\r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer&&HMainEditor.BufferImage->DiskImage!=NULL?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer&&HMainEditor.BufferImage->MemImage!=NULL?HMainEditor.BufferImage->MemImage->Offset:0,\r
+ HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer&&HMainEditor.BufferImage->DiskImage!=NULL?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer&&HMainEditor.BufferImage->MemImage!=NULL?HMainEditor.BufferImage->MemImage->Size :0\r
+ );\r
+ HBufferImageRefresh ();\r
+ }\r
+ if (HEditorFirst\r
+ || HBufferImageBackupVar.DisplayPosition.Row != HMainEditor.BufferImage->DisplayPosition.Row \r
+ || HBufferImageBackupVar.DisplayPosition.Column != HMainEditor.BufferImage->DisplayPosition.Column \r
+ || StatusBarGetRefresh()) {\r
+\r
+ StatusBarRefresh (\r
+ HEditorFirst,\r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.ScreenSize.Column,\r
+ 0,\r
+ 0,\r
+ TRUE\r
+ );\r
+ HBufferImageRefresh ();\r
+ }\r
+\r
+ if (HEditorFirst) {\r
+ MenuBarRefresh ( \r
+ HMainEditor.ScreenSize.Row,\r
+ HMainEditor.ScreenSize.Column);\r
+ HBufferImageRefresh ();\r
+ }\r
\r
//\r
// EditorFirst is now set to FALSE\r
return EFI_SUCCESS;\r
}\r
\r
-STATIC\r
+/**\r
+ Handle the mouse input.\r
+\r
+ @param[in] MouseState The current mouse state.\r
+ @param[out] BeforeLeftButtonDown helps with selections.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+ @retval EFI_NOT_FOUND The disk was not found.\r
+**/\r
EFI_STATUS\r
HMainEditorHandleMouseInput (\r
IN EFI_SIMPLE_POINTER_STATE MouseState,\r
//\r
// release LButton\r
//\r
- if (*BeforeLeftButtonDown == TRUE) {\r
+ if (*BeforeLeftButtonDown) {\r
Action = TRUE;\r
}\r
//\r
return EFI_NOT_FOUND;\r
}\r
\r
+/**\r
+ Handle user key input. will route it to other components handle function.\r
+\r
+ @retval EFI_SUCCESS The operation was successful.\r
+ @retval EFI_OUT_OF_RESOURCES A memory allocation occured.\r
+ @retval EFI_LOAD_ERROR A load error occured.\r
+**/\r
EFI_STATUS\r
HMainEditorKeyInput (\r
VOID\r
)\r
-/*++\r
-\r
-Routine Description: \r
-\r
- Handle user key input. will route it to other components handle function\r
-\r
-Arguments: \r
-\r
- None\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS\r
- EFI_LOAD_ERROR\r
- EFI_OUT_OF_RESOURCES\r
-\r
---*/\r
{\r
EFI_INPUT_KEY Key;\r
EFI_STATUS Status;\r
Status = HMainEditorHandleMouseInput (MouseState, &MouseIsDown);\r
\r
if (!EFI_ERROR (Status)) {\r
- if (BeforeMouseIsDown == FALSE) {\r
+ if (!BeforeMouseIsDown) {\r
//\r
// mouse down\r
//\r
- if (MouseIsDown == TRUE) {\r
+ if (MouseIsDown) {\r
FRow = HBufferImage.BufferPosition.Row;\r
FCol = HBufferImage.BufferPosition.Column;\r
SelectStartBackup = HMainEditor.SelectStart;\r
//\r
// begin to drag\r
//\r
- if (MouseIsDown == TRUE) {\r
- if (FirstDown == TRUE) {\r
+ if (MouseIsDown) {\r
+ if (FirstDown) {\r
if (MouseState.RelativeMovementX || MouseState.RelativeMovementY) {\r
HMainEditor.SelectStart = 0;\r
HMainEditor.SelectEnd = 0;\r
case FileTypeMemBuffer:\r
OldSize = HBufferImage.MemImage->Size;\r
break;\r
+ \r
+ default:\r
+ OldSize = 0;\r
+ break;\r
}\r
\r
- if (LengthChange == FALSE) {\r
+ if (!LengthChange) {\r
if (OldSize != Size) {\r
StatusBarSetStatusString (L"Disk/Mem Buffer Length should not be changed");\r
}\r