diff --git a/colors.py b/colors.py deleted file mode 100644 index 6581fd6..0000000 --- a/colors.py +++ /dev/null @@ -1,24 +0,0 @@ -import curses - - -@curses.wrapper -def main(win): - def print_all_colors(attr): - for color in range(-1, curses.COLORS): - try: - curses.init_pair(color, color, 0) - except curses.error: - pass - else: - win.addstr(str(color) + ' ', curses.color_pair(color) | attr) - curses.start_color() - try: - curses.use_default_colors() - except curses.error: - pass - win.addstr("available colors: %d\n\n" % curses.COLORS) - print_all_colors(0) - win.addstr("\n\n") - print_all_colors(curses.A_BOLD) - win.refresh() - win.getch() diff --git a/tg/colors.py b/tg/colors.py new file mode 100644 index 0000000..abfcbde --- /dev/null +++ b/tg/colors.py @@ -0,0 +1,52 @@ +import curses + +DEFAULT_FG = curses.COLOR_WHITE +DEFAULT_BG = curses.COLOR_BLACK +COLOR_PAIRS = {10: 0} + +# colors +black = curses.COLOR_BLACK +blue = curses.COLOR_BLUE +cyan = curses.COLOR_CYAN +green = curses.COLOR_GREEN +magenta = curses.COLOR_MAGENTA +red = curses.COLOR_RED +white = curses.COLOR_WHITE +yellow = curses.COLOR_YELLOW +default = -1 + +# modes +normal = curses.A_NORMAL +bold = curses.A_BOLD +blink = curses.A_BLINK +reverse = curses.A_REVERSE +underline = curses.A_UNDERLINE +invisible = curses.A_INVIS +dim = curses.A_DIM + + +def get_color(fg, bg): + """Returns the curses color pair for the given fg/bg combination.""" + + key = (fg, bg) + if key not in COLOR_PAIRS: + size = len(COLOR_PAIRS) + try: + curses.init_pair(size, fg, bg) + except curses.error: + # If curses.use_default_colors() failed during the initialization + # of curses, then using -1 as fg or bg will fail as well, which + # we need to handle with fallback-defaults: + if fg == -1: # -1 is the "default" color + fg = DEFAULT_FG + if bg == -1: # -1 is the "default" color + bg = DEFAULT_BG + + try: + curses.init_pair(size, fg, bg) + except curses.error: + # If this fails too, colors are probably not supported + pass + COLOR_PAIRS[key] = size + + return curses.color_pair(COLOR_PAIRS[key])