minimum = 0,\r
maximum = 0xff,\r
step = 0,\r
+ locked,\r
endnumeric;\r
\r
numeric varid = MyNameValueVar[1], // This numeric take NameValueVar1 as storage\r
CurrentForm->ModalForm = TRUE;\r
break;\r
\r
+ //\r
+ // Lock tag, used by form and statement.\r
+ //\r
+ case EFI_IFR_LOCKED_OP:\r
+ //\r
+ // Get ScopeOpcode from top of stack\r
+ //\r
+ PopScope (&ScopeOpCode);\r
+ PushScope (ScopeOpCode);\r
+ switch (ScopeOpCode) {\r
+ case EFI_IFR_FORM_OP:\r
+ case EFI_IFR_FORM_MAP_OP:\r
+ ASSERT (CurrentForm != NULL);\r
+ CurrentForm->Locked = TRUE;\r
+ break;\r
+\r
+ default:\r
+ ASSERT (CurrentStatement != NULL);\r
+ CurrentStatement->Locked = TRUE;\r
+ } \r
+ break;\r
+\r
//\r
// Vendor specific\r
//\r
// We are NOT!! removing this StringPtr buffer via FreePool since it is being used in the menuoptions, we will do\r
// it in UiFreeMenu.\r
//\r
- MenuOption = UiAddMenuOption (StringPtr, Selection->Handle, Statement, NumberOfLines, MenuItemCount);\r
+ MenuOption = UiAddMenuOption (StringPtr, Selection->Handle, Selection->Form, Statement, NumberOfLines, MenuItemCount);\r
MenuItemCount++;\r
\r
if (MenuOption->IsQuestion && !MenuOption->ReadOnly) {\r
\r
EFI_DEFAULT_ID DefaultId; // for EFI_IFR_RESET_BUTTON\r
EFI_GUID RefreshGuid; // for EFI_IFR_REFRESH_ID\r
-\r
+ BOOLEAN Locked; // Whether this statement is locked.\r
//\r
// Get from IFR parsing\r
//\r
EFI_IMAGE_ID ImageId;\r
\r
BOOLEAN ModalForm; // Whether this is a modal form.\r
+ BOOLEAN Locked; // Whether this form is locked.\r
\r
BOOLEAN NvUpdateRequired; // Whether this form has NV update request.\r
\r
\r
@param String String description for this option.\r
@param Handle Hii handle for the package list.\r
+ @param Form The form this statement belong to.\r
@param Statement Statement of this Menu Option.\r
@param NumberOfLines Display lines for this Menu Option.\r
@param MenuItemCount The index for this Option in the Menu.\r
UiAddMenuOption (\r
IN CHAR16 *String,\r
IN EFI_HII_HANDLE Handle,\r
+ IN FORM_BROWSER_FORM *Form,\r
IN FORM_BROWSER_STATEMENT *Statement,\r
IN UINT16 NumberOfLines,\r
IN UINT16 MenuItemCount\r
MenuOption->GrayOut = Statement->GrayOutExpression->Result.Value.b;\r
}\r
\r
+ //\r
+ // If the form or the question has the lock attribute, deal same as grayout.\r
+ //\r
+ if (Form->Locked || Statement->Locked) {\r
+ MenuOption->GrayOut = TRUE;\r
+ }\r
+ \r
switch (Statement->Operand) {\r
case EFI_IFR_ORDERED_LIST_OP:\r
case EFI_IFR_ONE_OF_OP:\r
\r
@param String String description for this option.\r
@param Handle Hii handle for the package list.\r
+ @param Form The form this statement belong to.\r
@param Statement Statement of this Menu Option.\r
@param NumberOfLines Display lines for this Menu Option.\r
@param MenuItemCount The index for this Option in the Menu.\r
UiAddMenuOption (\r
IN CHAR16 *String,\r
IN EFI_HII_HANDLE Handle,\r
+ IN FORM_BROWSER_FORM *Form,\r
IN FORM_BROWSER_STATEMENT *Statement,\r
IN UINT16 NumberOfLines,\r
IN UINT16 MenuItemCount\r