Source code for spino.panels.catalog_panel
"""Catalog tab: source, online-fetch toggle, timeout, cache directory."""
from __future__ import annotations
import os
from typing import Any, Dict
from spino import config_io
from spino.panels.base import FieldGrid, to_int
_LOGO_PATH = os.path.join(
os.path.dirname(os.path.dirname(__file__)), "data", "assets", "spino_logo.png"
)
[docs]
class CatalogPanel:
KEYS = ["CATALOG_SOURCE", "FETCH_NEA_ONLINE", "NEA_FETCH_TIMEOUT", "CATALOG_DIR"]
def __init__(self, tab, bg: str, defaults: Dict[str, Any]):
g = FieldGrid(tab, bg, "Catalog", config_io.HELP["Catalog"])
self._source = g.dropdown("CATALOG_SOURCE", config_io.CATALOG_SOURCES,
defaults["CATALOG_SOURCE"])
self._online = g.checkbox("FETCH_NEA_ONLINE (try TAP, fall back to CSV)",
defaults["FETCH_NEA_ONLINE"])
self._timeout = g.entry("NEA_FETCH_TIMEOUT [s]", defaults["NEA_FETCH_TIMEOUT"])
self._catdir = g.path("CATALOG_DIR", defaults["CATALOG_DIR"], mode="dir")
g.image(_LOGO_PATH, max_width=440)
[docs]
def collect(self) -> Dict[str, Any]:
return {
"CATALOG_SOURCE": self._source.get_value(),
"FETCH_NEA_ONLINE": bool(self._online.get_value()),
"NEA_FETCH_TIMEOUT": to_int(self._timeout.get_value(), 30),
"CATALOG_DIR": self._catdir.get_value().strip(),
}
[docs]
def set_values(self, v: Dict[str, Any]) -> None:
self._source.set_value(v["CATALOG_SOURCE"])
self._online.set_value(1 if v["FETCH_NEA_ONLINE"] else 0)
self._timeout.set_value(v["NEA_FETCH_TIMEOUT"])
self._catdir.set_value(v["CATALOG_DIR"])