Shofel2_T124_python/venv/lib/python3.10/site-packages/pyfx/view/themes.py

50 lines
1.8 KiB
Python

"""Components that defines color scheme for different components inside Pyfx."""
from dataclasses import asdict
from dataclasses import dataclass
import urwid
@dataclass(frozen=True)
class ComponentTheme:
foreground: str = urwid.DEFAULT
background: str = urwid.DEFAULT
@dataclass(frozen=True)
class Theme:
body: ComponentTheme = ComponentTheme()
foot: ComponentTheme = ComponentTheme(urwid.LIGHT_GRAY)
focused: ComponentTheme = ComponentTheme(urwid.LIGHT_GRAY, urwid.DARK_BLUE)
# auto-complete popup
autocomplete: ComponentTheme = ComponentTheme(urwid.BLACK, urwid.LIGHT_CYAN)
autocomplete_focused: ComponentTheme = ComponentTheme(urwid.WHITE,
urwid.DARK_MAGENTA)
# help popup
help: ComponentTheme = ComponentTheme(urwid.BLACK, urwid.LIGHT_GRAY)
help_focused: ComponentTheme = ComponentTheme(urwid.WHITE, urwid.DARK_GRAY)
# json
json_key: ComponentTheme = ComponentTheme(urwid.LIGHT_BLUE)
json_string: ComponentTheme = ComponentTheme(urwid.LIGHT_GREEN)
json_integer: ComponentTheme = ComponentTheme(urwid.LIGHT_CYAN)
json_numeric: ComponentTheme = ComponentTheme(urwid.LIGHT_CYAN)
json_bool: ComponentTheme = ComponentTheme(urwid.YELLOW)
json_null: ComponentTheme = ComponentTheme(urwid.LIGHT_RED)
json_focused: ComponentTheme = ComponentTheme(urwid.LIGHT_GRAY,
urwid.DARK_BLUE)
def palette(self):
palette = []
for component_name, component_theme in asdict(self).items():
component_name = component_name.replace('_', '.')
palette.append([
component_name,
component_theme["foreground"],
component_theme["background"]
])
return palette