summaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2012-12-31 00:31:50 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2012-12-31 00:31:50 +0900
commitccc32ee73eb600bb1aabe60eafe7696c5ea1a16d (patch)
treee737cf7ad8043f9abbd6a171935258bca31b8fc9 /setup
parent83d02bc6ce75e3f76eceffd2b0f234bde34e6a14 (diff)
downloadibus-anthy-ccc32ee73eb600bb1aabe60eafe7696c5ea1a16d.tar.gz
Added to sync the user config xml between versions.
Diffstat (limited to 'setup')
-rw-r--r--setup/main.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/setup/main.py b/setup/main.py
index 2434476..e00abb5 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -24,6 +24,7 @@
from os import environ, getuid, path
import os, sys
import locale
+import xml.dom.minidom
import gettext
from gettext import dgettext
@@ -922,6 +923,38 @@ class AnthySetup(object):
active = l.get_value(iter, id)
renderer.set_property('active', active)
+ def __resync_engine_file(self):
+ user_config = path.join(self.__get_userhome(), '.config',
+ 'ibus-anthy', 'engines.xml')
+ system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml')
+ if not path.exists(user_config):
+ return
+ if not path.exists(system_config):
+ os.unlink(user_config)
+ return
+
+ # path.getmtime depends on the build time rather than install time.
+ def __get_engine_file_version(engine_file):
+ version_str = ''
+ dom = xml.dom.minidom.parse(engine_file)
+ elements = dom.getElementsByTagName('version')
+ nodes = []
+ if len(elements) > 0:
+ nodes = elements[0].childNodes
+ if len(nodes) > 0:
+ version_str = nodes[0].data
+ if type(version_str) == unicode:
+ version_str = str(version_str)
+ if version_str != '':
+ version_str = version_str.strip()
+ return version_str
+
+ user_config_version = __get_engine_file_version(user_config)
+ system_config_version = __get_engine_file_version(system_config)
+ if system_config_version > user_config_version:
+ import shutil
+ shutil.copyfile(system_config, user_config)
+
def __get_engine_file(self):
user_config = path.join(self.__get_userhome(), '.config',
'ibus-anthy', 'engines.xml')
@@ -946,7 +979,6 @@ class AnthySetup(object):
if engine_file == None:
return None
- import xml.dom.minidom
dom = xml.dom.minidom.parse(engine_file)
nodes = dom.getElementsByTagName('layout')[0].childNodes
if len(nodes) > 0:
@@ -1018,7 +1050,6 @@ class AnthySetup(object):
(layout, variant, option) = self.__parse_keymap(self.__keymap)
- import xml.dom.minidom
dom = xml.dom.minidom.parse(engine_file)
nodes = dom.getElementsByTagName('layout')[0].childNodes
if len(nodes) == 0:
@@ -1054,6 +1085,7 @@ class AnthySetup(object):
"Please restart ibus to reload the layout."))
def __update_keymap_label(self):
+ self.__resync_engine_file()
prefs = self.prefs
keymap = self.__get_keymap()
if keymap == None: