# Copyright (C) 2009, 2010 Roman Zimbelmann # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ Contains abbreviations to curses color/attribute constants. Multiple attributes can be combined with the | (or) operator, toggled with ^ (xor) and checked for with & (and). Examples: attr = bold | underline attr |= reverse bool(attr & reverse) # => True attr ^= reverse bool(attr & reverse) # => False """ import curses COLOR_PAIRS = {10: 0} def get_color(fg, bg): """ Returns the curses color pair for the given fg/bg combination. """ c = bg+2 + 9*(fg + 2) if c not in COLOR_PAIRS: size = len(COLOR_PAIRS) curses.init_pair(size, fg, bg) COLOR_PAIRS[c] = size return COLOR_PAIRS[c] 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 normal = curses.A_NORMAL bold = curses.A_BOLD reverse = curses.A_REVERSE underline = curses.A_UNDERLINE invisible = curses.A_INVIS default_colors = (default, default, normal) def remove_attr(integer, attr): """Remove an attribute from an integer""" if integer & attribute: return integer ^ attribute return integer