59 lines
2.7 KiB
Python
59 lines
2.7 KiB
Python
# theme.py — Registrasi color pair curses.
|
|
# Satu-satunya tempat definisi warna untuk seluruh TUI,
|
|
# agar render.py dan menubar.py memakai skema yang konsisten.
|
|
|
|
import curses
|
|
|
|
# -- Color pair IDs (id 1-9, id 0 = default curses) --
|
|
C_HEADER = 1 # header bar: biru
|
|
C_USER = 2 # user message: cyan
|
|
C_AI = 3 # AI response: hijau
|
|
C_SYSTEM = 4 # system log: kuning
|
|
C_INPUT = 5 # text input: putih
|
|
C_STATUS = 6 # status bar: hitam di atas kuning
|
|
C_STATUS_READY = 10 # status READY: hijau
|
|
C_STATUS_PROC = 11 # status PROCESSING: kuning
|
|
C_SEP = 7 # separator line: magenta
|
|
C_ERROR = 8 # error message: merah
|
|
C_INPUT_BORDER = 9 # border input box: biru
|
|
C_STATUS_INFO = 12 # status info (workspace/hints): putih
|
|
C_HINT_DISABLED = 13 # hint disabled (abu-abu)
|
|
C_WELCOME = 14 # welcome art: light blue
|
|
C_TOOL_CALL = 15 # tool call: kuning terang
|
|
C_TOOL_RESULT = 16 # tool result: magenta muda
|
|
|
|
# -- Menu bar colors (id 17+) --
|
|
C_MENU = 17 # background menubar (sama dengan header)
|
|
C_MENU_ACTIVE = 18 # item menu yang sedang aktif (highlight)
|
|
C_MENU_DROPDOWN = 19 # item dropdown normal
|
|
C_MENU_SEL = 20 # item dropdown terseleksi
|
|
C_MENU_DISABLED = 21 # item non-aktif / separator
|
|
|
|
|
|
def init_colors():
|
|
# Daftarkan semua color pair sekali di awal.
|
|
# -1 = foreground/background default terminal.
|
|
curses.init_pair(C_HEADER, curses.COLOR_BLACK, curses.COLOR_BLUE)
|
|
curses.init_pair(C_USER, curses.COLOR_CYAN, -1)
|
|
curses.init_pair(C_AI, curses.COLOR_GREEN, -1)
|
|
curses.init_pair(C_SYSTEM, curses.COLOR_YELLOW, -1)
|
|
curses.init_pair(C_INPUT, curses.COLOR_WHITE, -1)
|
|
curses.init_pair(C_STATUS, curses.COLOR_BLACK, curses.COLOR_YELLOW)
|
|
curses.init_pair(C_STATUS_READY, curses.COLOR_BLACK, curses.COLOR_GREEN + 8)
|
|
curses.init_pair(C_STATUS_PROC, curses.COLOR_BLACK, curses.COLOR_YELLOW)
|
|
curses.init_pair(C_STATUS_INFO, curses.COLOR_BLACK, curses.COLOR_WHITE)
|
|
curses.init_pair(C_SEP, curses.COLOR_MAGENTA, -1)
|
|
curses.init_pair(C_ERROR, curses.COLOR_RED, -1)
|
|
curses.init_pair(C_INPUT_BORDER, curses.COLOR_BLUE, -1)
|
|
curses.init_pair(C_HINT_DISABLED, 8, -1) # abu-abu di atas bg default
|
|
curses.init_pair(C_WELCOME, curses.COLOR_BLUE + 8, -1) # light blue
|
|
curses.init_pair(C_TOOL_CALL, curses.COLOR_YELLOW + 8, -1) # bright yellow
|
|
curses.init_pair(C_TOOL_RESULT, curses.COLOR_MAGENTA + 8, -1) # bright magenta
|
|
|
|
# Menu bar
|
|
curses.init_pair(C_MENU, curses.COLOR_BLACK, curses.COLOR_BLUE)
|
|
curses.init_pair(C_MENU_ACTIVE, curses.COLOR_WHITE, curses.COLOR_BLUE + 8)
|
|
curses.init_pair(C_MENU_DROPDOWN, curses.COLOR_WHITE, -1)
|
|
curses.init_pair(C_MENU_SEL, curses.COLOR_BLACK, curses.COLOR_CYAN)
|
|
curses.init_pair(C_MENU_DISABLED, 8, -1) # abu-abu
|