2 # -*- coding: utf-8 -*-
4 # config.py - configuration for QWeeChat (~/.qweechat/qweechat.conf)
6 # Copyright (C) 2011-2013 Sebastien Helleu <flashcode@flashtux.org>
8 # This file is part of QWeeChat, a Qt remote GUI for WeeChat.
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.
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.
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/>.
24 import os
, ConfigParser
25 import weechat
.color
as color
27 CONFIG_DIR
= '%s/.qweechat' % os
.getenv('HOME')
28 CONFIG_FILENAME
= '%s/qweechat.conf' % CONFIG_DIR
30 CONFIG_DEFAULT_SECTIONS
= ('relay', 'look', 'color')
31 CONFIG_DEFAULT_OPTIONS
= (('relay.server', ''),
34 ('relay.password', ''),
35 ('relay.autoconnect', 'off'),
36 ('look.debug', 'off'),
37 ('look.statusbar', 'off'))
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 config_color_options
= []
82 """Read config file."""
83 global config_color_options
84 config
= ConfigParser
.RawConfigParser()
85 if os
.path
.isfile(CONFIG_FILENAME
):
86 config
.read(CONFIG_FILENAME
)
88 # add missing sections/options
89 for section
in CONFIG_DEFAULT_SECTIONS
:
90 if not config
.has_section(section
):
91 config
.add_section(section
)
92 for option
in reversed(CONFIG_DEFAULT_OPTIONS
):
93 section
, name
= option
[0].split('.', 1)
94 if not config
.has_option(section
, name
):
95 config
.set(section
, name
, option
[1])
97 for option
in reversed(CONFIG_DEFAULT_COLOR_OPTIONS
):
98 if option
[0] and not config
.has_option(section
, option
[0]):
99 config
.set(section
, option
[0], option
[1])
101 # build list of color options
102 config_color_options
= []
103 for option
in CONFIG_DEFAULT_COLOR_OPTIONS
:
105 config_color_options
.append(config
.get('color', option
[0]))
107 config_color_options
.append('#000000')
112 """Write config file."""
113 if not os
.path
.exists(CONFIG_DIR
):
114 os
.mkdir(CONFIG_DIR
, 0o0755)
115 with open(CONFIG_FILENAME
, 'wb') as cfg
:
119 global config_color_options
120 return config_color_options