mirror of
https://github.com/pdxlocations/contact.git
synced 2026-03-28 17:12:35 +01:00
* init * working changes * working changes * working changes * working changes * not working changes * almost working changes * working changes * working changes * broke save and nested menus * working better * changes * working changes * scrolling text input * allow wide char input * set pad bg colors * add empty color for bg * reload colors on save * tab to save changes * cleanup on isle edit_value * dynamically create theme options
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import curses
|
|
import default_config as config
|
|
|
|
COLOR_MAP = {
|
|
"black": curses.COLOR_BLACK,
|
|
"red": curses.COLOR_RED,
|
|
"green": curses.COLOR_GREEN,
|
|
"yellow": curses.COLOR_YELLOW,
|
|
"blue": curses.COLOR_BLUE,
|
|
"magenta": curses.COLOR_MAGENTA,
|
|
"cyan": curses.COLOR_CYAN,
|
|
"white": curses.COLOR_WHITE
|
|
}
|
|
|
|
def setup_colors(reinit=False):
|
|
"""
|
|
Initialize curses color pairs based on the COLOR_CONFIG.
|
|
"""
|
|
curses.start_color()
|
|
if reinit:
|
|
conf = config.initialize_config()
|
|
config.assign_config_variables(conf)
|
|
|
|
for idx, (category, (fg_name, bg_name)) in enumerate(config.COLOR_CONFIG.items(), start=1):
|
|
fg = COLOR_MAP.get(fg_name.lower(), curses.COLOR_WHITE)
|
|
bg = COLOR_MAP.get(bg_name.lower(), curses.COLOR_BLACK)
|
|
curses.init_pair(idx, fg, bg)
|
|
config.COLOR_CONFIG[category] = idx
|
|
print()
|
|
|
|
|
|
def get_color(category, bold=False, reverse=False, underline=False):
|
|
"""
|
|
Retrieve a curses color pair with optional attributes.
|
|
"""
|
|
color = curses.color_pair(config.COLOR_CONFIG[category])
|
|
if bold:
|
|
color |= curses.A_BOLD
|
|
if reverse:
|
|
color |= curses.A_REVERSE
|
|
if underline:
|
|
color |= curses.A_UNDERLINE
|
|
return color |