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]
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue