Last Open Page and Weighted Page closing
This commit is contained in:
parent
0a8a539ad5
commit
e6fc3210ca
1 changed files with 32 additions and 2 deletions
|
@ -33,15 +33,32 @@ function window:GetPage(page: string): types.Page
|
||||||
return self.Pages.Stored[page]
|
return self.Pages.Stored[page]
|
||||||
end
|
end
|
||||||
|
|
||||||
function window:OpenPage(page: string)
|
function window:OpenPage(page: string, command: "Weighted" | "Forced"?)
|
||||||
local pageModule: types.Page = self.Pages.Stored[page]
|
local pageModule: types.Page = self.Pages.Stored[page]
|
||||||
if pageModule then
|
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:Build(self)
|
||||||
pageModule:Open()
|
pageModule:Open()
|
||||||
self.Pages.Open[page] = pageModule
|
self.Pages.Open[page] = pageModule
|
||||||
|
|
||||||
|
self._.LastOpenedPageName = self._.RecentlyOpenedPageName or page
|
||||||
|
self._.RecentlyOpenedPageName = page
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function window:OpenLastPage()
|
||||||
|
self:OpenPage(self._.LastOpenedPageName)
|
||||||
|
end
|
||||||
|
|
||||||
function window:ClosePage(page: string)
|
function window:ClosePage(page: string)
|
||||||
local pageModule: types.Page = self.Pages.Open[page]
|
local pageModule: types.Page = self.Pages.Open[page]
|
||||||
if pageModule then
|
if pageModule then
|
||||||
|
@ -51,6 +68,19 @@ function window:ClosePage(page: string)
|
||||||
end
|
end
|
||||||
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()
|
function window:CleanPages()
|
||||||
for _, page: types.Page in self.Pages.Open do
|
for _, page: types.Page in self.Pages.Open do
|
||||||
page:Close()
|
page:Close()
|
||||||
|
@ -60,7 +90,7 @@ function window:CleanPages()
|
||||||
self.Pages.Open = {}
|
self.Pages.Open = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
function window:RemovePages()
|
function window:RemoveAllPages()
|
||||||
for _, page: types.Page in self.Pages.Open do
|
for _, page: types.Page in self.Pages.Open do
|
||||||
page:Remove()
|
page:Remove()
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue