]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env python | |
2 | # -*- coding: utf-8 -*- | |
3 | # | |
4 | # config.py - configuration for QWeeChat (~/.qweechat/qweechat.conf) | |
5 | # | |
6 | # Copyright (C) 2011-2014 Sébastien Helleu <flashcode@flashtux.org> | |
7 | # | |
8 | # This file is part of QWeeChat, a Qt remote GUI for WeeChat. | |
9 | # | |
10 | # QWeeChat is free software; you can redistribute it and/or modify | |
11 | # it under the terms of the GNU General Public License as published by | |
12 | # the Free Software Foundation; either version 3 of the License, or | |
13 | # (at your option) any later version. | |
14 | # | |
15 | # QWeeChat is distributed in the hope that it will be useful, | |
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | # GNU General Public License for more details. | |
19 | # | |
20 | # You should have received a copy of the GNU General Public License | |
21 | # along with QWeeChat. If not, see <http://www.gnu.org/licenses/>. | |
22 | # | |
23 | ||
24 | import os, ConfigParser | |
25 | import weechat.color as color | |
26 | ||
27 | CONFIG_DIR = '%s/.qweechat' % os.getenv('HOME') | |
28 | CONFIG_FILENAME = '%s/qweechat.conf' % CONFIG_DIR | |
29 | ||
30 | CONFIG_DEFAULT_SECTIONS = ('relay', 'look', 'color') | |
31 | CONFIG_DEFAULT_OPTIONS = (('relay.server', ''), | |
32 | ('relay.port', ''), | |
33 | ('relay.ssl', 'off'), | |
34 | ('relay.password', ''), | |
35 | ('relay.autoconnect', 'off'), | |
36 | ('look.debug', 'off'), | |
37 | ('look.statusbar', 'off')) | |
38 | ||
39 | # Default colors for WeeChat color options (option name, #rgb value) | |
40 | CONFIG_DEFAULT_COLOR_OPTIONS = (('separator', '#000066'), # 0 | |
41 | ('chat', '#000000'), # 1 | |
42 | ('chat_time', '#999999'), # 2 | |
43 | ('chat_time_delimiters', '#000000'), # 3 | |
44 | ('chat_prefix_error', '#FF6633'), # 4 | |
45 | ('chat_prefix_network', '#990099'), # 5 | |
46 | ('chat_prefix_action', '#000000'), # 6 | |
47 | ('chat_prefix_join', '#00CC00'), # 7 | |
48 | ('chat_prefix_quit', '#CC0000'), # 8 | |
49 | ('chat_prefix_more', '#CC00FF'), # 9 | |
50 | ('chat_prefix_suffix', '#330099'), # 10 | |
51 | ('chat_buffer', '#000000'), # 11 | |
52 | ('chat_server', '#000000'), # 12 | |
53 | ('chat_channel', '#000000'), # 13 | |
54 | ('chat_nick', '#000000'), # 14 | |
55 | ('chat_nick_self', '*#000000'), # 15 | |
56 | ('chat_nick_other', '#000000'), # 16 | |
57 | ('', '#000000'), # 17 (nick1 -- obsolete) | |
58 | ('', '#000000'), # 18 (nick2 -- obsolete) | |
59 | ('', '#000000'), # 19 (nick3 -- obsolete) | |
60 | ('', '#000000'), # 20 (nick4 -- obsolete) | |
61 | ('', '#000000'), # 21 (nick5 -- obsolete) | |
62 | ('', '#000000'), # 22 (nick6 -- obsolete) | |
63 | ('', '#000000'), # 23 (nick7 -- obsolete) | |
64 | ('', '#000000'), # 24 (nick8 -- obsolete) | |
65 | ('', '#000000'), # 25 (nick9 -- obsolete) | |
66 | ('', '#000000'), # 26 (nick10 -- obsolete) | |
67 | ('chat_host', '#666666'), # 27 | |
68 | ('chat_delimiters', '#9999FF'), # 28 | |
69 | ('chat_highlight', '#3399CC'), # 29 | |
70 | ('chat_read_marker', '#000000'), # 30 | |
71 | ('chat_text_found', '#000000'), # 31 | |
72 | ('chat_value', '#000000'), # 32 | |
73 | ('chat_prefix_buffer', '#000000'), # 33 | |
74 | ('chat_tags', '#000000'), # 34 | |
75 | ('chat_inactive_window', '#000000'), # 35 | |
76 | ('chat_inactive_buffer', '#000000'), # 36 | |
77 | ('chat_prefix_buffer_inactive_buffer', '#000000'), # 37 | |
78 | ('chat_nick_offline', '#000000'), # 38 | |
79 | ('chat_nick_offline_highlight', '#000000'), # 39 | |
80 | ('chat_nick_prefix', '#000000'), # 40 | |
81 | ('chat_nick_suffix', '#000000'), # 41 | |
82 | ('emphasis', '#000000'), # 42 | |
83 | ('chat_day_change', '#000000'), #43 | |
84 | ) | |
85 | config_color_options = [] | |
86 | ||
87 | ||
88 | def read(): | |
89 | """Read config file.""" | |
90 | global config_color_options | |
91 | config = ConfigParser.RawConfigParser() | |
92 | if os.path.isfile(CONFIG_FILENAME): | |
93 | config.read(CONFIG_FILENAME) | |
94 | ||
95 | # add missing sections/options | |
96 | for section in CONFIG_DEFAULT_SECTIONS: | |
97 | if not config.has_section(section): | |
98 | config.add_section(section) | |
99 | for option in reversed(CONFIG_DEFAULT_OPTIONS): | |
100 | section, name = option[0].split('.', 1) | |
101 | if not config.has_option(section, name): | |
102 | config.set(section, name, option[1]) | |
103 | section = 'color' | |
104 | for option in reversed(CONFIG_DEFAULT_COLOR_OPTIONS): | |
105 | if option[0] and not config.has_option(section, option[0]): | |
106 | config.set(section, option[0], option[1]) | |
107 | ||
108 | # build list of color options | |
109 | config_color_options = [] | |
110 | for option in CONFIG_DEFAULT_COLOR_OPTIONS: | |
111 | if option[0]: | |
112 | config_color_options.append(config.get('color', option[0])) | |
113 | else: | |
114 | config_color_options.append('#000000') | |
115 | ||
116 | return config | |
117 | ||
118 | def write(config): | |
119 | """Write config file.""" | |
120 | if not os.path.exists(CONFIG_DIR): | |
121 | os.mkdir(CONFIG_DIR, 0o0755) | |
122 | with open(CONFIG_FILENAME, 'wb') as cfg: | |
123 | config.write(cfg) | |
124 | ||
125 | def color_options(): | |
126 | global config_color_options | |
127 | return config_color_options |