diff options
Diffstat (limited to 'src/theme.py')
-rw-r--r-- | src/theme.py | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/theme.py b/src/theme.py new file mode 100644 index 00000000..1748e4a3 --- /dev/null +++ b/src/theme.py @@ -0,0 +1,131 @@ +# -*- coding:utf-8 -*- +# +# Copyright 2010 Le Coz Florent <louizatakk@fedoraproject.org> +# +# This file is part of Poezio. +# +# Poezio 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, version 3 of the License. +# +# Poezio 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 Poezio. If not, see <http://www.gnu.org/licenses/>. + +""" +Define the variables (colors and some other stuff) that are +used when drawing the interface (mainly colors) +""" + +import curses +import inspect +import imp +from config import config + +## Define the default colors +## Do not change these colors, create a theme file instead. + +# Message text color +COLOR_NORMAL_TEXT = 0 +COLOR_INFORMATION_TEXT = 76 +COLOR_HIGHLIGHT_TEXT = 77 + +# User list color +COLOR_USER_VISITOR = 78 +COLOR_USER_PARTICIPANT = 73 +COLOR_USER_NONE = 80 +COLOR_USER_MODERATOR = 77 + +# Separators +COLOR_VERTICAL_SEPARATOR = 73 +COLOR_NEW_TEXT_SEPARATOR = 75 + +# Time +COLOR_TIME_SEPARATOR = 79 +COLOR_TIME_BRACKETS = 74 +COLOR_TIME_NUMBERS = 0 + +# Tabs +COLOR_TAB_NORMAL = 15 +COLOR_TAB_CURRENT = 24 +COLOR_TAB_NEW_MESSAGE = 42 +COLOR_TAB_HIGHLIGHT = 51 +COLOR_TAB_PRIVATE = 33 + +# Nickname colors +LIST_COLOR_NICKNAMES = [ + 73, 74, 75, 76, 77, 78, 79 + ] +COLOR_OWN_NICK = 72 + +# Status color +COLOR_STATUS_XA = 40 +COLOR_STATUS_NONE = 0 +COLOR_STATUS_DND = 50 +COLOR_STATUS_AWAY = 70 +COLOR_STATUS_CHAT = 30 + +# Bars +COLOR_INFORMATION_BAR = 15 +COLOR_TOPIC_BAR = 15 +COLOR_PRIVATE_ROOM_BAR = 33 +COLOR_SCROLLABLE_NUMBER = 16 + +def init_colors(): + """ + Initilization of all the available ncurses colors + """ + curses.start_color() + curses.use_default_colors() + colors_list = [ + curses.COLOR_BLACK, + curses.COLOR_BLUE, + curses.COLOR_CYAN, + curses.COLOR_GREEN, + curses.COLOR_MAGENTA, + curses.COLOR_RED, + curses.COLOR_WHITE, + curses.COLOR_YELLOW, + -1 + ] + cpt = 0 + for i in colors_list: + for y in colors_list: + curses.init_pair(cpt, y, i) + cpt += 1 + reload_theme() + +def reload_theme(): + current_module = __import__(inspect.getmodulename(__file__)) + path = config.get('theme_file', '../default.theme') + try: + theme = imp.load_source('theme', path) + except: + return + for var in dir(theme): + if var.startswith('COLOR_'): + globals()[var] = getattr(theme, var) + +if __name__ == '__main__': + """ + Launch 'python theme.py' to see the list of all the available colors + in your terminal + """ + s = curses.initscr() + curses.start_color() + curses.use_default_colors() + for i in xrange(80): + s.attron(curses.color_pair(i)) + s.addstr(str(i)) + s.attroff(curses.color_pair(i)) + s.addstr(' ') + s.refresh() + s.getch() + s.endwin() + + + |