Last Open Page and Weighted Page closing

This commit is contained in:
ClintUNI 2024-05-02 14:25:17 +02:00
parent 0a8a539ad5
commit e6fc3210ca

View file

@ -33,15 +33,32 @@ function window:GetPage(page: string): types.Page
return self.Pages.Stored[page]
end
function window:OpenPage(page: string)
function window:OpenPage(page: string, command: "Weighted" | "Forced"?)
local pageModule: types.Page = self.Pages.Stored[page]
if pageModule then
if command then
if command:upper() == "WEIGHTED" then
self:CloseAllPages(function(openPage: types.Page)
return openPage.Weight < pageModule.Weight
end)
elseif command:upper() == "FORCED" then
self:CloseAllPages()
end
end
pageModule:Build(self)
pageModule:Open()
self.Pages.Open[page] = pageModule
self._.LastOpenedPageName = self._.RecentlyOpenedPageName or page
self._.RecentlyOpenedPageName = page
end
end
function window:OpenLastPage()
self:OpenPage(self._.LastOpenedPageName)
end
function window:ClosePage(page: string)
local pageModule: types.Page = self.Pages.Open[page]
if pageModule then
@ -51,6 +68,19 @@ function window:ClosePage(page: string)
end
end
function window:CloseAllPages(middleware: (types.Page) -> (boolean)?)
for _, page: types.Page in self.Pages.Open do
if not middleware or not middleware(page) then
continue
end
page:Close()
page:Clean()
self.Pages.Open[page.Name] = nil
end
end
function window:CleanPages()
for _, page: types.Page in self.Pages.Open do
page:Close()
@ -60,7 +90,7 @@ function window:CleanPages()
self.Pages.Open = {}
end
function window:RemovePages()
function window:RemoveAllPages()
for _, page: types.Page in self.Pages.Open do
page:Remove()
end