mirror of
https://github.com/aclist/dztui.git
synced 2026-10-31 15:12:48 +01:00
feat: add new model manager types
This commit is contained in:
1 parent
6f29b1318a
commit
5543d8cb38
1 file changed
+79
@@ -0,0 +1,79 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from dzgui.const.enum import HELP_MENU_ROWS
|
||||||
|
|
||||||
|
import gi
|
||||||
|
gi.require_version("Gtk", "3.0")
|
||||||
|
from gi.repository.Gtk import ListStore # noqa E402
|
||||||
|
from gi.repository import GObject, GLib # noqa E402
|
||||||
|
|
||||||
|
@dataclass(slots=True, frozen=True)
|
||||||
|
class ModCols:
|
||||||
|
name: str
|
||||||
|
symlink: str
|
||||||
|
directory: str
|
||||||
|
size: float
|
||||||
|
color: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(slots=True, frozen=True)
|
||||||
|
class LogCols:
|
||||||
|
timestamp: str
|
||||||
|
flag: str
|
||||||
|
traceback: str
|
||||||
|
msg: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(slots=True, frozen=True)
|
||||||
|
class ServerModCols:
|
||||||
|
name: str
|
||||||
|
uid: GObject.TYPE_INT64
|
||||||
|
installed: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(slots=True, frozen=True)
|
||||||
|
class MenuCols:
|
||||||
|
name: str
|
||||||
|
hidden: GObject.TYPE_PYOBJECT
|
||||||
|
|
||||||
|
|
||||||
|
class ModelManager:
|
||||||
|
"""
|
||||||
|
Manager for miscellaneous ListStores
|
||||||
|
"""
|
||||||
|
def __init__(self) -> None:
|
||||||
|
|
||||||
|
self.map_store = ListStore(str)
|
||||||
|
self.help_store = self.new_model_from_class(MenuCols)
|
||||||
|
self.mod_store = self.new_model_from_class(ModCols)
|
||||||
|
self.log_store = self.new_model_from_class(LogCols)
|
||||||
|
self.modlist_store = self.new_model_from_class(ServerModCols)
|
||||||
|
|
||||||
|
for row in HELP_MENU_ROWS:
|
||||||
|
label = row.dict["label"]
|
||||||
|
self.help_store.append([label, row])
|
||||||
|
|
||||||
|
def new_model_from_class(self, cls: type) -> ListStore:
|
||||||
|
store = ListStore(*[ftype for field, ftype in cls.__annotations__.items()])
|
||||||
|
return store
|
||||||
|
|
||||||
|
def get_map_store(self) -> ListStore:
|
||||||
|
return self.map_store
|
||||||
|
|
||||||
|
def get_help_store(self) -> ListStore:
|
||||||
|
return self.help_store
|
||||||
|
|
||||||
|
def get_mod_store(self) -> ListStore:
|
||||||
|
return self.mod_store
|
||||||
|
|
||||||
|
def get_log_store(self) -> ListStore:
|
||||||
|
return self.log_store
|
||||||
|
|
||||||
|
def get_modlist_store(self) -> ListStore:
|
||||||
|
return self.modlist_store
|
||||||
|
|
||||||
|
def set_all_maps(self) -> None:
|
||||||
|
self.map_store.clear()
|
||||||
|
self.map_store.append(["All maps"])
|
||||||
|
|
||||||
|
def append_map(self, row: list) -> None:
|
||||||
|
self.map_store.append(row)
|
||||||
Reference in new issue
Block a user