From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from atlmailgw1.ami.com (atlmailgw1.ami.com [63.147.10.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7EFAD81CCC for ; Fri, 4 Nov 2016 13:15:31 -0700 (PDT) X-AuditID: ac1060b2-a7fff7000000467b-39-581cec5e884b Received: from atlms2.us.megatrends.com (atlms2.us.megatrends.com [172.16.96.152]) (using TLS with cipher AES128-SHA (128/128 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id ED.6F.18043.E5CEC185; Fri, 4 Nov 2016 16:15:29 -0400 (EDT) Received: from ATLMS1.us.megatrends.com ([fe80::8c55:daf0:ef05:5605]) by atlms2.us.megatrends.com ([fe80::29dc:a91e:ea0c:cdeb%12]) with mapi id 14.03.0123.003; Fri, 4 Nov 2016 16:15:26 -0400 From: Felix Poludov To: "Yao, Jiewen" , "Dong, Eric" , "edk2-devel@lists.01.org" CC: "Bi, Dandan" , "Gao, Liming" Thread-Topic: [RFC] [MdePkg] UefiLib: CreatePopUp Thread-Index: AdIwjdjhOCSq+FCtTKCTGmtOXAGI2QAMMLIgABg3kNAAjBbicAAXwstQABbm8XAAVGQNQAARaGqwACHM5fAAK783YA== Date: Fri, 4 Nov 2016 20:15:25 +0000 Message-ID: <9333E191E0D52B4999CE63A99BA663A00270FF8EC3@atlms1.us.megatrends.com> References: <9333E191E0D52B4999CE63A99BA663A00270FF754E@atlms1.us.megatrends.com> <9333E191E0D52B4999CE63A99BA663A00270FF787F@atlms1.us.megatrends.com> <9333E191E0D52B4999CE63A99BA663A00270FF7D5B@atlms1.us.megatrends.com> <9333E191E0D52B4999CE63A99BA663A00270FF860F@atlms1.us.megatrends.com> <74D8A39837DF1E4DA445A8C0B3885C50386BDE74@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C50386BDE74@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.99.93] content-transfer-encoding: quoted-printable MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrOKsWRmVeSWpSXmKPExsWyRiBhhm7iG5kIg8anOhZbt6lb7Dl0lNli 84tgi3UfPSxW3NvA7sDqsXjPSyaP7tn/WAKYohoYbRLz8vJLEktSFVJSi5NtlQKKMssSkyuV FDJTbJUMlRQKchKTU3NT80pslRILClLzUpTsuBQwgA1QWWaeQmpecn5KZl66rZJnsL+uhYWp pa6hkl1IRqpCZl5aflFuYklmfp5Ccn5eCVB1agpQVCGhizNj/qNu1oInqxgr9vfPYm9g/NXD 2MXIySEhYCLx4VE/WxcjF4eQwGwmidnrfzFDOIcYJaZdfcYGUsUmoCKx6ewFZhBbRKCZUWLp CRsQm1nAR2LJ/w1MXYwcHMICBhJHr0RDlBhKPD5zkxHCzpJ4euA9K4jNAjTm4Jt/YGN4BQIl jv9+BbOYVWLzpZNMIAlOgRCJ3u+zwIoYBcQkvp9awwSxS1zi1pP5TBBXC0gs2XOeGcIWlXj5 +B8rhK0gseV9JztEvY7Egt2f2CBsbYllC19DLRaUODnzCcsERtFZSMbOQtIyC0nLLCQtCxhZ VjEKJZbk5CZm5qSXG+ol5mbqJefnbmKEpItNOxhbLpofYhTgYFTi4VW4KxMhxJpYVlyZCwxK DmYlEV7lx0Ah3pTEyqrUovz4otKc1OJDjE7AcJnILMUNijFgEog3NjCQEoVxDE3MTMyNzA0t TcyNjZXEeYv++IYLCaQDk1J2ampBahHMECYOTqkGxp2zUs+4dcTq3OIJkMk6YvpbuEUrzsG/ 91DRu6X5U+LeHFT4sn3zb78t08pm/HQUdmFvmpKg4L5qee5c688nVKcbLL3jlvVZx9fu+lE+ /QdrHxxtbtCt0ZKbNPHWT7GVK0/0t8S+VG57utnl1o99pY6JESueLdMUqG5hr1QQs5df7K/f y1DTpMRSnJFoqMVcVJwIALhhg446AwAA Subject: Re: [RFC] [MdePkg] UefiLib: CreatePopUp X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Nov 2016 20:15:31 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Jiewen, You suggestion is also an option, but I was hoping to achieve the goal witho= ut changing all the consumers. -----Original Message----- From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Yao,= Jiewen Sent: Thursday, November 03, 2016 7:25 PM To: Dong, Eric; Felix Poludov; edk2-devel@lists.01.org Cc: Bi, Dandan; Gao, Liming Subject: Re: [edk2] [RFC] [MdePkg] UefiLib: CreatePopUp Hi I have another idea to resolve the MdePkg dependency issue. We can create a new UiLib in MdeModulePkg with interface such as: UiLibCreat= ePopUp(). Then we update all the *caller* to use the new interface. I did a search and= find caller below: We can add DEPRECATE flag for the UefiLib:CreatePopUp(), to avoid it being u= sed any more. C:\home\Edk-II\MdeModulePkg\Application\UiApp\FrontPage.c(1156): Crea= tePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, StringBuffer1, StringBuf= fer2, NULL); C:\home\Edk-II\MdeModulePkg\Universal\Disk\RamDiskDxe\RamDiskImpl.c(324):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Disk\RamDiskDxe\RamDiskImpl.c(346):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Disk\RamDiskDxe\RamDiskImpl.c(378):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Disk\RamDiskDxe\RamDiskImpl.c(404):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Disk\RamDiskDxe\RamDiskImpl.c(431):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\DriverSampleDxe\DriverSample.c(1407)= : CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\DriverSampleDxe\DriverSample.c(1830)= : CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\DriverSampleDxe\DriverSample.c(1872)= : CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\DriverSampleDxe\DriverSample.c(1901)= : CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(613):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP a= ddress!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(619):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subn= et Mask!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(625):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gate= way!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(634):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid= Dns Server!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(641):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dn= s Server!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(1150):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP= address!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(1158):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Su= bnet Mask!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(1166):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Ga= teway!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(1177):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invali= d Dns Server!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\Ip4Dxe\Ip4Config2Nv.c(1184):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid= Dns Server!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(101):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(721):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iS= CSI Name!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(731):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP= address!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(743):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Su= bnet Mask!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(755):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Ga= teway!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(767):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP= address!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(779):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iS= CSI Name!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(797):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid LU= N string!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(855):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gate= way address is set but subnet mask is zero.", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(859):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Loca= l IP and Gateway are not in the same subnet.", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(871):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target= IP is invalid!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(882):= CreatePopUp ( C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(896):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"CHAP N= ame or CHAP Secret is invalid!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\Network\IScsiDxe\IScsiConfig.c(904):= CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Revers= e CHAP Name or Reverse CHAP Secret is invalid!", NULL); C:\home\Edk-II\MdeModulePkg\Universal\PlatformDriOverrideDxe\PlatDriOverri= deDxe.c(1434): CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &K= ey, L"Single Override Info too large, Saving Error!", NULL); C:\home\Edk-II\NetworkPkg\HttpBootDxe\HttpBootConfig.c(495): CreatePo= pUp ( C:\home\Edk-II\NetworkPkg\Ip6Dxe\Ip6ConfigNv.c(1801): CreatePopUp ( C:\home\Edk-II\NetworkPkg\Ip6Dxe\Ip6ConfigNv.c(1818): CreatePopUp ( C:\home\Edk-II\NetworkPkg\Ip6Dxe\Ip6ConfigNv.c(1835): CreatePopUp ( C:\home\Edk-II\NetworkPkg\Ip6Dxe\Ip6ConfigNv.c(1852): CreatePopUp ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(212): CreatePopUp ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(514): CreatePopUp ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(535): CreatePopU= p ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(544): CreatePopU= p ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(560): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(575): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(591): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(604): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(648): CreatePopUp ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2205): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2250): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2353): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2370): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2387): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2404): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2421): CreatePopUp= ( C:\home\Edk-II\NetworkPkg\IScsiDxe\IScsiConfig.c(2444): CreatePopUp= ( From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Dong,= Eric Sent: Thursday, November 3, 2016 3:33 PM To: Felix Poludov ; edk2-devel@lists.01.org Cc: Bi, Dandan ; Gao, Liming Subject: Re: [edk2] [RFC] [MdePkg] UefiLib: CreatePopUp Hi Felix, Thanks for your clearly explanation, I misunderstand your changes before. B= ut I think this change still has small impact because the platforms DSC file= need to include the new UiLib instance. I think the new UiLib library class need to be added into MdePkg because Ue= fiLib need to depend on it. This may need get some input from MdePkg maintai= ner. If you add this new UiLib, I will add my new API into this library clas= s. Thanks, Eric > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Felix Poludov > Sent: Thursday, November 03, 2016 7:13 AM > To: Dong, Eric; > edk2-devel@lists.01.org > Cc: Bi, Dandan; Gao, Liming > Subject: Re: [edk2] [RFC] [MdePkg] UefiLib: CreatePopUp > > Eric, > > See my comments below > > -----Original Message----- > From: Dong, Eric [mailto:eric.dong@intel.com] > Sent: Tuesday, November 01, 2016 2:55 AM > To: Felix Poludov; > edk2-devel@lists.01.org > Cc: Bi, Dandan; Gao, Liming > Subject: RE: [RFC] [MdePkg] UefiLib: CreatePopUp > > Felix, > > Add my comments below. > > -----Original Message----- > From: Felix Poludov [mailto:Felixp@ami.com] > Sent: Tuesday, November 1, 2016 4:22 AM > To: Dong, Eric >; > edk2-devel@lists.01.org > Cc: Bi, Dandan >; Gao, > Liming > > Subject: RE: [RFC] [MdePkg] UefiLib: CreatePopUp > > Eric, > > 1. If you are not changing CretePopUp, your proposal does not really solve= my problem. > It means my proposal still has merit. > Do you have problem with moving CreatePopUp implementation into a new libr= ary class? > Once again, the function will stay in UefiLib, but the implementation > will be changed to call a new function UiCreatePopUp from the new library= class UiLib. > [[Eric]] My proposal bases on modal form to show the popup dialog. > The modal form is painted by the browser. So the UI will changed in > different browser. I think you can update your browser to show the differe= nt UI. > I not prefer your solution because this is an incompatible change and we m= ust avoid it. > It will impact a lot of core codes which use CreatePopup API. > > [[[Felix]]] Since you have no plans to change CreatePopUp > implementation, existing code that uses CreatePopUp will like to keep > using it, which means popup box will keep looking "strange". > As far as my proposal, I'm not sure why you are saying that it's backward= compatible. > Let me explain one more time, what I propose: > 1. No changes to UefiLib.h (CreatePopUp is still there) 2. A single > line change in [LibraryClasses] section of MdePkg/Library/UefiLib/UefiLib.= inf. New library class UiLib is added there. > 3. CreatePopUp implementation in MdePkg/Library/UefiLib/Console.c is repl= aced with: > VOID > EFIAPI > CreatePopUp ( > IN UINTN Attribute, > OUT EFI_INPUT_KEY *Key, OPTIONAL > ... > ) > { > VA_LIST Args; > VA_START (Args, Key); > UiCreatePopUp(Attribute,Ket,Args); > } > 4. New library class UiLib.h is added. New library instance for the class= is added. The library contains UiCreatePopUp function. > Function implementation is copied from original CreatePopUp implementation= in MdePkg/Library/UefiLib/Console.c. > > To summarize: > - There is no need to change code that consumes CreatePopUp because > the function is still there > - CreatePopUp consumers see no difference in look-and-feel and > behavior because default CreatePopUp implementation is the same as the cur= rent one. > - Project owners that strive unified UI can override UiLib library class. > I agree that creating a new library class for a single function does > not feel right, but we may have other functions that deal with presentatio= n in the future. > See continuation of my answer below... > > 2. In my opinion, adding HiiGetUserSelection to HiiLib is a bad idea becau= se it will create the same problem as with CretePopUp. > The rest of HiiLib is generic. It operates within the scope of HII databas= e definitions from UEFI specification. > The new HiiGetUserSelection you are proposing deals with presentation, whi= ch means it is may get changed to match project UI. > HiiGetUserSelection can be added to the same new UiLib that I'm proposing. > [[Eric]] My proposal bases on modal form defined in UEFI Spec. Modal > form UI decides by the browser. Base on this reason, so I put this new > API to the HiiLib. I only add one new API and related to HII, so I prefer= not add new library class. > > I think you want to split the API to new library just want to reduce the o= verride code size? Or other reason? > [[[Felix]]] 1. I agree, if new function is based on standard HII Modal for= m, HiiLib is a good place for it. > 2. Yes, the main reason is a clean project porting. > Today I have two options: > Option 1: replace CreatePopUp implementation in Console.c with my > custom implementation Option 2: create custom instance of UefiLib With > both options, I'm deviating from standard EDKII code base, which means > I will have to merge my changes whenever I want to upgrade EDKII tree. > Also I will have to manually migrate the patch from project to project. > > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Dong, Eric > Sent: Monday, October 31, 2016 4:26 AM > To: Felix Poludov; > edk2-devel@lists.01.org > Cc: Bi, Dandan; Gao, Liming > Subject: Re: [edk2] [RFC] [MdePkg] UefiLib: CreatePopUp > > Hi Felix, > > Add my comments below. > > > -----Original Message----- > > From: Felix Poludov [mailto:Felixp@ami.com] > > Sent: Friday, October 28, 2016 9:52 PM > > To: Dong, Eric; > > edk2-devel@lists.01.org > > Cc: Gao, Liming; Bi, Dandan > > Subject: RE: [RFC] [MdePkg] UefiLib: CreatePopUp > > > > Hi Eric, > > > > My goal is to facilitate CreatePopUp customization. > > Since UI is one of the most customizable areas in the firmware projects,= an ability to easily replace UI element would be useful. > > Thank you for providing the presentation. > > I agree with the problem statement. It describes some of the reasons beh= ind my request. > > As far as the solution you propose, you are introducing a new > > function HiiGetUserSelection, which is more powerful, but still implemen= ts a specific look-and-feel. > > So it should be possible to easily replace HiiGetUserSelection with > > a project specific version to align implementation with project-specific= UI. > > Which library class are you planning to add HiiGetUserSelection to? > [[Eric]] I plan to add this API to HiiLib which existed at MdeModulePkg/Li= brary/UefiHiiLib. I think it's belong to HII scope. > > > Another question is, what are you planning to do with the existing Creat= ePopUp function? > [[Eric]] I plan to not change it. Just suggest user to use new API and dep= recated it later. > > > If you just remove it, existing projects that use the function will brea= k. > > With my proposal, CreatePopUp can be easily replaced by picking a differ= ent library instance. > > For example, we can have a legacy instance that implements current > > behavior as well as and advanced instance that implements popup using HI= I infrastructure. > > > > Thanks > > Felix > > > > -----Original Message----- > > From: Dong, Eric [mailto:eric.dong@intel.com] > > Sent: Thursday, October 27, 2016 10:36 PM > > To: Felix Poludov; > > edk2-devel@lists.01.org > > Cc: Gao, Liming; Bi, Dandan > > Subject: RE: [RFC] [MdePkg] UefiLib: CreatePopUp > > > > Hi Felix, > > > > Do you want to provide a new solution for CreatePopup or just want > > to split CreatePopup from UefiLib? We already has a proposal to > > provide new API to replace CreatePopup. This new API will use modal > form to paint the UI. Detail you can see the proposal in below link: > > https://github.com/ydong10/doc/blob/master/Use%20Modal%20form%20for% > > 20 > > CreatePopup%20API.pptx > > > > Thanks, > > Eric > > > -----Original Message----- > > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On > > > Behalf Of Felix Poludov > > > Sent: Friday, October 28, 2016 5:12 AM > > > To: edk2-devel@lists.01.org > > > Subject: [edk2] [RFC] [MdePkg] UefiLib: CreatePopUp > > > > > > UefiLib library class (MdePkg ) includes CreatePopUp function. > > > The function displays a message box. > > > There is certainly more than one way to draw a message box. > > > If homogenous user interface is a project requirement, CreatePopUp > > > is likely to be overridden to align message box appearance with the pl= atform look and feel. > > > The function can be overridden by creating a project specific > > > UefiLib instance, but this seems like an overkill because the rest of= the UefiLib, which is quite big, would have to be duplicated. > > > > > > One way to solve the problem is to move CreatePopUp to a new library c= lass, however, this may break existing projects. > > > I suggest changing CreatePopUp implementation to delegate pop up > > > drawing to a new function UiCreatePopUp provided by a new library clas= s UiLib.h. > > > > > > I would like to solicit feedback for this proposal. > > > If there will be no major objections, I'll start working on a patch. > > > > > > Thanks > > > Felix > > > > > > Please consider the environment before printing this email. > > > > > > The information contained in this message may be confidential and > > > proprietary to American Megatrends, Inc. This communication is > > > intended to be read only by the individual or entity to whom it is > > > addressed or by their designee. If the reader of this message is > > > not the intended recipient, you are on notice that any > > > distribution of > this message, in any form, is strictly prohibited. Please promptly > notify the sender by reply e-mail or by telephone at 770-246-8600, and the= n delete or destroy all copies of the transmission. > > > _______________________________________________ > > > edk2-devel mailing list > > > edk2-devel@lists.01.org > > > https://lists.01.org/mailman/listinfo/edk2-devel > > > > Please consider the environment before printing this email. > > > > The information contained in this message may be confidential and > > proprietary to American Megatrends, Inc. This communication is > > intended to be read only by the individual or entity to whom it is > > addressed or by their designee. If the reader of this message is not > > the intended recipient, you are on notice that any distribution of > > this > message, in any form, is strictly prohibited. Please promptly notify > the sender by reply e-mail or by telephone at 770-246-8600, and then delet= e or destroy all copies of the transmission. > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > > Please consider the environment before printing this email. > > The information contained in this message may be confidential and > proprietary to American Megatrends, Inc. This communication is > intended to be read only by the individual or entity to whom it is > addressed or by their designee. If the reader of this message is not the i= ntended recipient, you are on notice that any distribution of this message,= in any form, is strictly prohibited. Please promptly notify the sender by= reply e-mail or by telephone at 770-246-8600, and then delete or destroy al= l copies of the transmission. > > Please consider the environment before printing this email. > > The information contained in this message may be confidential and > proprietary to American Megatrends, Inc. This communication is > intended to be read only by the individual or entity to whom it is > addressed or by their designee. If the reader of this message is not the i= ntended recipient, you are on notice that any distribution of this message,= in any form, is strictly prohibited. Please promptly notify the sender by= reply e-mail or by telephone at 770-246-8600, and then delete or destroy al= l copies of the transmission. > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Please consider the environment before printing this email. The information contained in this message may be confidential and proprietar= y to American Megatrends, Inc. This communication is intended to be read on= ly by the individual or entity to whom it is addressed or by their designee.= If the reader of this message is not the intended recipient, you are on not= ice that any distribution of this message, in any form, is strictly prohibit= ed. Please promptly notify the sender by reply e-mail or by telephone at 77= 0-246-8600, and then delete or destroy all copies of the transmission.