Blame SOURCES/0001-Changes-in-dconf-values-now-get-applied-immediately.patch

abcd9f
From fdda5c156d851446497bb042e1614ef1c55d9e92 Mon Sep 17 00:00:00 2001
abcd9f
From: Mike FABIAN <mfabian@redhat.com>
abcd9f
Date: Thu, 10 Jan 2013 11:37:59 +0100
abcd9f
Subject: [PATCH] Changes in dconf values now get applied immediately
abcd9f
abcd9f
Changing values of dconf keys for example with
abcd9f
abcd9f
   dconf write /desktop/ibus/engine/table/cangjie3/chinesemode 3
abcd9f
abcd9f
was not applied immediately to the ibus-table engine, only
abcd9f
when changing to a different input method and back this
abcd9f
change was applied.
abcd9f
abcd9f
This commit fixes this problem.
abcd9f
---
abcd9f
 engine/table.py | 72 ++++++++++++++++++++++++++++++++++++++++++---------------
abcd9f
 1 file changed, 53 insertions(+), 19 deletions(-)
abcd9f
abcd9f
diff --git a/engine/table.py b/engine/table.py
abcd9f
index e171949..24ca921 100644
abcd9f
--- a/engine/table.py
abcd9f
+++ b/engine/table.py
abcd9f
@@ -26,6 +26,7 @@ __all__ = (
abcd9f
 )
abcd9f
 
abcd9f
 import os
abcd9f
+import string
abcd9f
 from gi.repository import IBus
abcd9f
 from gi.repository import GLib
abcd9f
 from curses import ascii
abcd9f
@@ -1894,27 +1895,60 @@ class tabengine (IBus.Engine):
abcd9f
             return True
abcd9f
         return False
abcd9f
 
abcd9f
+    def config_section_normalize(self, section):
abcd9f
+        # This function replaces _: with - in the dconf
abcd9f
+        # section and converts to lower case to make
abcd9f
+        # the comparison of the dconf sections work correctly.
abcd9f
+        # I avoid using .lower() here because it is locale dependent,
abcd9f
+        # when using .lower() this would not achieve the desired
abcd9f
+        # effect of comparing the dconf sections case insentively
abcd9f
+        # in some locales, it would fail for example if Turkish
abcd9f
+        # locale (tr_TR.UTF-8) is set.
abcd9f
+        if type(section) == type(u''):
abcd9f
+            # translate() does not work in Python’s internal Unicode type
abcd9f
+            section = section.encode('utf-8')
abcd9f
+        return re.sub(r'[_:]', r'-', section).translate(
abcd9f
+            string.maketrans(string.ascii_uppercase, string.ascii_lowercase ))
abcd9f
+
abcd9f
     def config_value_changed_cb (self, config, section, name, value):
abcd9f
+        if self.config_section_normalize(self._config_section) != self.config_section_normalize(section):
abcd9f
+            return
abcd9f
+        print "config value %(n)s for engine %(en)s changed" %{'n': name, 'en': self._name}
abcd9f
         value = variant_to_value(value)
abcd9f
-        if section == self._config_section:
abcd9f
-            if name == u'AutoCommit':
abcd9f
-                self._auto_commit = value
abcd9f
-            elif name == u'ChineseMode':
abcd9f
-                self._editor._chinese_mode = value
abcd9f
-            elif name == u'EnDefFullWidthLetter':
abcd9f
-                self._full_width_letter[0] = value
abcd9f
-            elif name == u'EnDefFullWidthPunct':
abcd9f
-                self._full_width_punct[0] = value
abcd9f
-            elif name == u'LookupTableOrientation':
abcd9f
-                self._editor._lookup_table.set_orientation (value)
abcd9f
-            elif name == u'LookupTableSelectKeys':
abcd9f
-                self._editor.set_select_keys (value)
abcd9f
-            elif name == u'OneChar':
abcd9f
-                self._editor._onechar = value
abcd9f
-            elif name == u'TabDefFullWidthLetter':
abcd9f
-                self._full_width_letter[1] = value
abcd9f
-            elif name == u'TabDefFullWidthPunct':
abcd9f
-                self._full_width_punct[1] = value
abcd9f
+        if name == u'autocommit':
abcd9f
+            self._auto_commit = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'chinesemode':
abcd9f
+            self._editor._chinese_mode = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'endeffullwidthletter':
abcd9f
+            self._full_width_letter[0] = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'endeffullwidthpunct':
abcd9f
+            self._full_width_punct[0] = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'lookuptableorientation':
abcd9f
+            self._editor._lookup_table.set_orientation (value)
abcd9f
+            return
abcd9f
+        elif name == u'lookuptableselectkeys':
abcd9f
+            self._editor.set_select_keys (value)
abcd9f
+            return
abcd9f
+        elif name == u'onechar':
abcd9f
+            self._editor._onechar = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'tabdeffullwidthletter':
abcd9f
+            self._full_width_letter[1] = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
+        elif name == u'tabdeffullwidthpunct':
abcd9f
+            self._full_width_punct[1] = value
abcd9f
+            self._refresh_properties()
abcd9f
+            return
abcd9f
 
abcd9f
     # for further implementation :)
abcd9f
     @classmethod
abcd9f
-- 
abcd9f
1.7.11.7
abcd9f