function to update the config file from version to version

I currently update some var names, add new themes and remove cyan theme, add new proxies, add new emoticons
If things are missing add them there
This commit is contained in:
Yann Leboulanger 2005-11-14 09:43:27 +00:00
parent 290ca15a7c
commit c94d1ca48a
1 changed files with 58 additions and 0 deletions

View File

@ -26,6 +26,8 @@ _ = i18n._
class OptionsParser:
def __init__(self, filename):
self.__filename = filename
self.old_values = {} # values that are saved in the file and maybe
# no longer valid
def read_line(self, line):
index = line.find(' = ')
@ -36,6 +38,7 @@ class OptionsParser:
i_end = var_str.rfind('.')
if i_start == -1:
self.old_values[var_str] = value_str
gajim.config.set(var_str, value_str)
else:
optname = var_str[0:i_start]
@ -53,12 +56,17 @@ class OptionsParser:
print _('error: cannot open %s for reading') % self.__filename
return
new_version = gajim.config.get('version')
for line in fd.readlines():
try:
line = line.decode('utf-8')
except UnicodeDecodeError:
line = line.decode(locale.getpreferredencoding())
self.read_line(line)
old_version = gajim.config.get('version')
self.update_config(old_version, new_version)
self.old_values = {} # clean mem
fd.close()
@ -116,3 +124,53 @@ class OptionsParser:
except IOError, e:
return e.errno
os.chmod(self.__filename, 0600)
def update_config(self, old_version, new_version):
if old_version < '0.9' and new_version == '0.9':
self.update_config_x_to_09()
def update_config_x_to_09(self):
# Var name that changed:
# avatar_width /height -> chat_avatar_width / height
if self.old_values.has_key('avatar_width'):
gajim.config.set('chat_avatar_width', self.old_values['avatar_width'])
if self.old_values.has_key('avatar_height'):
gajim.config.set('chat_avatar_height', self.old_values['avatar_height'])
# always_compact_view -> always_compact_view_chat / _gc
if self.old_values.has_key('always_compact_view'):
gajim.config.set('always_compact_view_chat',
self.old_values['always_compact_view'])
gajim.config.set('always_compact_view_gc',
self.old_values['always_compact_view'])
# new theme: grocery, plain
d = ['accounttextcolor', 'accountbgcolor', 'accountfont',
'accountfontattrs', 'grouptextcolor', 'groupbgcolor', 'groupfont',
'groupfontattrs', 'contacttextcolor', 'contactbgcolor', 'contactfont',
'contactfontattrs', 'bannertextcolor', 'bannerbgcolor']
for theme_name in ['grocery', 'plain']:
if theme_name not in gajim.config.get_per('themes'):
gajim.config.add_per('themes', theme_name)
theme = gajim.config.themes_default[theme_name]
for o in d:
gajim.config.set_per('themes', theme_name, o, theme[d.index(o)])
# Remove cyan theme if it's not the default theme
if gajim.config.get('roster_theme') != 'cyan' and \
'cyan' in gajim.config.get_per('themes'):
gajim.config.del_per('themes', 'cyan')
# new proxies in accounts.name.file_transfer_proxies
for account in gajim.config.get_per('accounts'):
proxies = gajim.config.get_per('accounts', account,
'file_transfer_proxies')
for new in ['proxy.netlab.cz', 'proxy65.jabber.ccc.de',
'proxy65.unstable.nl']:
if proxies.find(new) < 0:
proxies += ', ' + new
gajim.config.set_per('accounts', account,'file_transfer_proxies',
proxies)
# Add some emots :-* :* >:) >:-) <3
for emot in [':-*', ':*', '>:)', '>:-)', '<3']:
if emot not in gajim.config.get_per('emoticons'):
gajim.config.add_per('emoticons', emot)
gajim.config.set_per('emoticons', emot, 'path',
gajim.config.emoticons_default[emot])
gajim.config.set('version', '0.9')