AnP/Python/AnP/Models/BrowserTabsModel.py
2026-07-20 07:21:56 +02:00

91 lines
2.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Self, Any, Optional, Callable, Sequence
from AnP.Utils.Checks import Check
class BrowserTabsModel:
def __init__(self:Self, item:Any) -> None:
self.item:Any = item
self.last:Any = item
def set_last(self:Self, item:Any) -> None:
self.last = item
def reset(self:Self) -> None:
self.last = self.item
class BrowserBoxModel:
def __init__(self:Self, is_working:Optional[Callable[[], bool]] = None) -> None:
self.tabs:dict[str, BrowserTabsModel] = {}
self.tab_selected:str = ""
self.variables:dict[str, Any|None] = {}
self.is_working:Callable[[], bool]|None = is_working
self._base:Any|None = None
def set_base(self:Self, item:Any) -> None:
self._base = item
def get_base(self:Self) -> Any|None:
return self._base
def get_selected(self:Self) -> str:
return self.tab_selected
def get_last(self:Self) -> Any|None:
if self.tab_selected in self.tabs:
return self.tabs[self.tab_selected].last
return None
def set(self:Self, key:str, item:Any) -> None:
self.tabs[key] = BrowserTabsModel(item)
self.tab_selected = key
def get(self:Self, key:str) -> Any|None:
if key in self.tabs:
return self.tabs[key].item
return None
def change(self:Self, key:str) -> bool:
if key in self.tabs:
self.tab_selected = key
return True
return False
def set_last(self:Self, item:Any) -> bool:
if self.tab_selected in self.tabs:
self.tabs[self.tab_selected].set_last(item)
return True
return False
def reset(self:Self) -> bool:
if self.tab_selected in self.tabs:
self.tabs[self.tab_selected].reset()
return True
return False
def close(self:Self, keys:Optional[str|Sequence[str]] = None) -> bool:
ok:bool = True
for key in (
keys if Check.is_array(keys) else
[keys] if Check.is_key(keys) else
list(self.tabs.keys()) if keys is None else
[]):
if key in self.tabs:
del self.tabs[key]
if self.tab_selected == key:
self.tab_selected = next(iter(self.tabs), "")
else:
ok = False
return ok
def switch(self:Self, key:str) -> bool:
if key in self.tabs:
self.tab_selected = key
return True
return False