Source code for spino.panels.output_panel
"""Output & Plot tab: output dir, aux/boundary/KDE paths, landscape limits."""
from __future__ import annotations
from typing import Any, Dict
from spino import config_io
from spino.panels.base import FieldGrid, to_int
[docs]
class OutputPanel:
KEYS = ["OUTPUT_DIR", "AUX_DIR", "DESERT_BOUNDARY_FILE", "KDE_FILE",
"P_MAX", "R_MAX"]
def __init__(self, tab, bg: str, defaults: Dict[str, Any]):
g = FieldGrid(tab, bg, "Output & Plot", config_io.HELP["Output & Plot"])
self._out = g.path("OUTPUT_DIR", defaults["OUTPUT_DIR"], mode="dir")
g.section("Desert landscape inputs")
self._aux = g.path("AUX_DIR", defaults["AUX_DIR"], mode="dir")
self._boundary = g.path("DESERT_BOUNDARY_FILE",
defaults["DESERT_BOUNDARY_FILE"], mode="file")
self._kde = g.path("KDE_FILE", defaults["KDE_FILE"], mode="file")
g.section("Landscape axis limits")
self._pmax = g.entry("P_MAX [days]", defaults["P_MAX"])
self._rmax = g.entry("R_MAX [R_earth]", defaults["R_MAX"])
[docs]
def collect(self) -> Dict[str, Any]:
return {
"OUTPUT_DIR": self._out.get_value().strip(),
"AUX_DIR": self._aux.get_value().strip(),
"DESERT_BOUNDARY_FILE": self._boundary.get_value().strip(),
"KDE_FILE": self._kde.get_value().strip(),
"P_MAX": to_int(self._pmax.get_value(), 100),
"R_MAX": to_int(self._rmax.get_value(), 20),
}
[docs]
def set_values(self, v: Dict[str, Any]) -> None:
self._out.set_value(v["OUTPUT_DIR"])
self._aux.set_value(v["AUX_DIR"])
self._boundary.set_value(v["DESERT_BOUNDARY_FILE"])
self._kde.set_value(v["KDE_FILE"])
self._pmax.set_value(v["P_MAX"])
self._rmax.set_value(v["R_MAX"])