[ibus-table] Resolves: #911487 - Non-Chinese tables from the ibus-table-other package do not work
Mike FABIAN
mfabian at fedoraproject.org
Fri Feb 15 10:44:49 UTC 2013
commit afec9363fc839448c2c4ebd79fd1f43894de3830
Author: Mike FABIAN <mfabian at redhat.com>
Date: Thu Feb 14 18:49:32 2013 +0100
Resolves: #911487 - Non-Chinese tables from the ibus-table-other package do not work
- Update cmode property in chinese mode only
And some other small fixes and improvements:
- Add auto_select functionality to select the first phrase when typing.
Useful for Cyrillic transliteration
- Fall back to auto_select = False if neither dconf nor the table
have a value for auto_select
- Preedit needs to be updated on page-up and page-down
0001-Fix-typo-thanks-to-Mathieu-Bridon.patch | 75 +++++++++++++
...lect-functionality-to-select-the-first-ph.patch | 111 ++++++++++++++++++++
...date-cmode-pproperty-in-chinese-mode-only.patch | 25 +++++
...o-auto_select-False-if-neither-dconf-nor-.patch | 42 ++++++++
...ds-to-be-updated-on-page-up-and-page-down.patch | 66 ++++++++++++
ibus-table.spec | 21 ++++-
6 files changed, 339 insertions(+), 1 deletions(-)
---
diff --git a/0001-Fix-typo-thanks-to-Mathieu-Bridon.patch b/0001-Fix-typo-thanks-to-Mathieu-Bridon.patch
new file mode 100644
index 0000000..923c3bf
--- /dev/null
+++ b/0001-Fix-typo-thanks-to-Mathieu-Bridon.patch
@@ -0,0 +1,75 @@
+From 03cba776da99b05218c2b1c86f3e93d3373f253e Mon Sep 17 00:00:00 2001
+From: Mike FABIAN <mfabian at redhat.com>
+Date: Wed, 30 Jan 2013 07:41:54 +0100
+Subject: [PATCH 1/5] Fix typo, thanks to Mathieu Bridon
+
+---
+ engine/chinese_variants.py | 4 ++--
+ tools/generate-chinese-variants.py | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/engine/chinese_variants.py b/engine/chinese_variants.py
+index e48d992..5dce934 100644
+--- a/engine/chinese_variants.py
++++ b/engine/chinese_variants.py
+@@ -27,7 +27,7 @@ variants_table = {
+ # 1 = 1 << 0 simplified Chinese
+ # 2 = 1 << 1 traditional Chinese
+ # 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- # 4 = 2 << 3 mixture of simplified and traditional Chinese
++ # 4 = 1 << 2 mixture of simplified and traditional Chinese
+ u'蘄': 2,
+ u'谈': 1,
+ u'預': 2,
+@@ -6075,7 +6075,7 @@ def detect_chinese_category(phrase):
+ 1 = 1 << 0 simplified Chinese
+ 2 = 1 << 1 traditional Chinese
+ 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- 4 = 2 << 3 mixture of simplified and traditional Chinese
++ 4 = 1 << 2 mixture of simplified and traditional Chinese
+ '''
+ # make sure that we got a unicode string
+ if type(phrase) != type(u''):
+diff --git a/tools/generate-chinese-variants.py b/tools/generate-chinese-variants.py
+index b846496..c54eaec 100755
+--- a/tools/generate-chinese-variants.py
++++ b/tools/generate-chinese-variants.py
+@@ -58,7 +58,7 @@ variants_table_orig = {
+ # 1 = 1 << 0 simplified Chinese
+ # 2 = 1 << 1 traditional Chinese
+ # 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- # 4 = 2 << 3 mixture of simplified and traditional Chinese
++ # 4 = 1 << 2 mixture of simplified and traditional Chinese
+ #
+ # overrides can be added manually here. For example the following
+ # line marks the 〇 character as used in both
+@@ -185,7 +185,7 @@ variants_table = {
+ # 1 = 1 << 0 simplified Chinese
+ # 2 = 1 << 1 traditional Chinese
+ # 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- # 4 = 2 << 3 mixture of simplified and traditional Chinese
++ # 4 = 1 << 2 mixture of simplified and traditional Chinese
+ ''')
+
+ for phrase in variants_table_orig:
+@@ -208,7 +208,7 @@ def detect_chinese_category(phrase):
+ 1 = 1 << 0 simplified Chinese
+ 2 = 1 << 1 traditional Chinese
+ 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- 4 = 2 << 3 mixture of simplified and traditional Chinese
++ 4 = 1 << 2 mixture of simplified and traditional Chinese
+ \'\'\'
+ # make sure that we got a unicode string
+ if type(phrase) != type(u''):
+@@ -253,7 +253,7 @@ test_data = {
+ # 1 = 1 << 0 simplified Chinese
+ # 2 = 1 << 1 traditional Chinese
+ # 3 = (1 | 1 << 1) used both in simplified *and* traditional Chinese
+- # 4 = 2 << 3 mixture of simplified and traditional Chinese
++ # 4 = 1 << 2 mixture of simplified and traditional Chinese
+ u'乌': 1,
+ u'烏': 2,
+ u'晞': 3,
+--
+1.7.11.7
+
diff --git a/0002-Add-auto_select-functionality-to-select-the-first-ph.patch b/0002-Add-auto_select-functionality-to-select-the-first-ph.patch
new file mode 100644
index 0000000..6486be6
--- /dev/null
+++ b/0002-Add-auto_select-functionality-to-select-the-first-ph.patch
@@ -0,0 +1,111 @@
+From a55783887e757f02078143c2d12031a33c9e9223 Mon Sep 17 00:00:00 2001
+From: bnauwelaerts <bnauwelaerts at cli0189.fednot.be>
+Date: Sat, 2 Feb 2013 13:03:48 +0100
+Subject: [PATCH 2/5] Add auto_select functionality to select the first phrase
+ when typing. Useful for Cyrillic transliteration.
+
+---
+ engine/table.py | 26 +++++++++++++++++++++++---
+ engine/tabsqlitedb.py | 1 +
+ tables/template.txt | 3 +++
+ 3 files changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/engine/table.py b/engine/table.py
+index c106a0a..4a10636 100644
+--- a/engine/table.py
++++ b/engine/table.py
+@@ -228,6 +228,13 @@ class editor(object):
+ "ChineseMode"))
+ if self._chinese_mode == None:
+ self._chinese_mode = self.get_chinese_mode()
++
++ self._auto_select = variant_to_value(self._config.get_value(
++ self._config_section,
++ "AutoSelect"))
++ if self._auto_select == None:
++ self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
++
+
+ def init_select_keys(self):
+ # __select_keys: lookup table select keys/labels
+@@ -728,7 +735,9 @@ class editor(object):
+ if ascii.ispunct (self._chars[0][-1].encode('ascii')) \
+ or len (self._chars[0][:-1]) \
+ in self.db.pkeylens \
+- or only_one_last:
++ or only_one_last \
++ or self._auto_select:
++
+ # because we use [!@#$%] to denote [12345]
+ # in py_mode, so we need to distinguish them
+ ## old manner:
+@@ -750,7 +759,7 @@ class editor(object):
+ self._lookup_table.clear()
+ self._lookup_table.set_cursor_visible(True)
+ return False
+- else:
++ else:
+ # this is not a punct or not a valid phrase
+ # last time
+ self._chars[1].append( self._chars[0].pop() )
+@@ -1142,11 +1151,19 @@ class tabengine (IBus.Engine):
+ self._full_width_punct[1] = self.db.get_ime_property('def_full_width_punct').lower() == u'true'
+ # some properties we will involved, Property is taken from scim.
+ #self._setup_property = Property ("setup", _("Setup"))
++
+ self._auto_commit = variant_to_value(self._config.get_value(
+ self._config_section,
+ "AutoCommit"))
+ if self._auto_commit == None:
+ self._auto_commit = self.db.get_ime_property('auto_commit').lower() == u'true'
++
++ self._auto_select = variant_to_value(self._config.get_value(
++ self._config_section,
++ "AutoSelect"))
++ if self._auto_select == None:
++ self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
++
+ # the commit phrases length
+ self._len_list = [0]
+ # connect to SpeedMeter
+@@ -1736,7 +1753,10 @@ class tabengine (IBus.Engine):
+ sp_res = self._editor.space ()
+ #return (KeyProcessResult,whethercommit,commitstring)
+ if sp_res[0]:
+- self.commit_string (sp_res[1])
++ if self._auto_select:
++ self.commit_string ("%s " %sp_res[1])
++ else:
++ self.commit_string (sp_res[1])
+ #self.add_string_len(sp_res[1])
+ self.db.check_phrase (sp_res[1], sp_res[2])
+ else:
+diff --git a/engine/tabsqlitedb.py b/engine/tabsqlitedb.py
+index 78fa85d..fa56053 100644
+--- a/engine/tabsqlitedb.py
++++ b/engine/tabsqlitedb.py
+@@ -99,6 +99,7 @@ class tabsqlitedb:
+ 'user_can_define_phrase':'FALSE',
+ 'pinyin_mode':'FALSE',
+ 'dynamic_adjust':'FALSE',
++ 'auto_select':'false',
+ 'auto_commit':'false',
+ #'no_check_chars':u'',
+ 'description':'A IME under IBus Table',
+diff --git a/tables/template.txt b/tables/template.txt
+index 40bc915..f51cdf8 100644
+--- a/tables/template.txt
++++ b/tables/template.txt
+@@ -63,6 +63,9 @@ MAX_KEY_LENGTH = 4
+ ### Use auto_commit mode as default
+ AUTO_COMMIT = FALSE
+
++### Automatically selects the first phrase when typing
++AUTO_SELECT = FALSE
++
+ ### Use full width punctuation by default
+ DEF_FULL_WIDTH_PUNCT = TRUE
+ ### Not use full width letter by default
+--
+1.7.11.7
+
diff --git a/0003-Update-cmode-pproperty-in-chinese-mode-only.patch b/0003-Update-cmode-pproperty-in-chinese-mode-only.patch
new file mode 100644
index 0000000..2dd7531
--- /dev/null
+++ b/0003-Update-cmode-pproperty-in-chinese-mode-only.patch
@@ -0,0 +1,25 @@
+From 2baa9c3ff258c0623b4777f2c537467339cdcef6 Mon Sep 17 00:00:00 2001
+From: bnauwelaerts <bnauwelaerts at cli0189.fednot.be>
+Date: Sat, 2 Feb 2013 17:22:40 +0100
+Subject: [PATCH 3/5] Update cmode pproperty in chinese mode only
+
+---
+ engine/table.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/engine/table.py b/engine/table.py
+index 4a10636..f0a8a61 100644
+--- a/engine/table.py
++++ b/engine/table.py
+@@ -1304,7 +1304,7 @@ class tabengine (IBus.Engine):
+ self._set_property(self._cmode_property, 'tcb-mode.svg', _('Traditional Chinese First Big Charset Mode'), _('Switch to Big Charset Mode'))
+ elif self._editor._chinese_mode == 4:
+ self._set_property(self._cmode_property, 'cb-mode.svg', _('Big Chinese Mode'), _('Switch to Simplified Chinese Mode'))
+- self.update_property(self._cmode_property)
++ self.update_property(self._cmode_property)
+
+ def _set_property (self, property, icon, label, tooltip):
+ property.set_icon ( u'%s%s' % (self._icon_dir, icon ) )
+--
+1.7.11.7
+
diff --git a/0004-Fall-back-to-auto_select-False-if-neither-dconf-nor-.patch b/0004-Fall-back-to-auto_select-False-if-neither-dconf-nor-.patch
new file mode 100644
index 0000000..deb6d83
--- /dev/null
+++ b/0004-Fall-back-to-auto_select-False-if-neither-dconf-nor-.patch
@@ -0,0 +1,42 @@
+From 3d03bd8f8c558392db42897370cef65bdbad57bd Mon Sep 17 00:00:00 2001
+From: Mike FABIAN <mfabian at redhat.com>
+Date: Tue, 5 Feb 2013 09:11:17 +0100
+Subject: [PATCH 4/5] Fall back to auto_select = False if neither dconf nor
+ the table have a value for auto_select
+
+---
+ engine/table.py | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/engine/table.py b/engine/table.py
+index f0a8a61..3999c35 100644
+--- a/engine/table.py
++++ b/engine/table.py
+@@ -233,8 +233,10 @@ class editor(object):
+ self._config_section,
+ "AutoSelect"))
+ if self._auto_select == None:
+- self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
+-
++ if self.db.get_ime_property('auto_select') != None:
++ self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
++ else:
++ self._auto_select = False
+
+ def init_select_keys(self):
+ # __select_keys: lookup table select keys/labels
+@@ -1162,7 +1164,10 @@ class tabengine (IBus.Engine):
+ self._config_section,
+ "AutoSelect"))
+ if self._auto_select == None:
+- self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
++ if self.db.get_ime_property('auto_select') != None:
++ self._auto_select = self.db.get_ime_property('auto_select').lower() == u'true'
++ else:
++ self._auto_select = False
+
+ # the commit phrases length
+ self._len_list = [0]
+--
+1.7.11.7
+
diff --git a/0005-Preedit-needs-to-be-updated-on-page-up-and-page-down.patch b/0005-Preedit-needs-to-be-updated-on-page-up-and-page-down.patch
new file mode 100644
index 0000000..6aacc2a
--- /dev/null
+++ b/0005-Preedit-needs-to-be-updated-on-page-up-and-page-down.patch
@@ -0,0 +1,66 @@
+From 3b7a3530c42766b801cded26b3bc269222c3fb0a Mon Sep 17 00:00:00 2001
+From: Mike FABIAN <mfabian at redhat.com>
+Date: Thu, 14 Feb 2013 18:21:57 +0100
+Subject: [PATCH 5/5] Preedit needs to be updated on page-up and page-down
+
+When paging through the lookup table, the preedit needs to be updated
+to show the phrase selected by the cursor in the lookup table. Before
+this patch, the preedit was not updated and when commiting the
+character selected in the lookup table suddenly replaced the character
+in the preedit. This differed from the behaviour when moving through
+the lookup table with the arrow-up and arrow-down keys.
+Using page-up and page-down or the arrow icons at the bottom
+of the lookup table should also update the preedit just like it
+is done when the arrow-up and arrow-down keys are used.
+---
+ engine/table.py | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/engine/table.py b/engine/table.py
+index 3999c35..58a8d4d 100644
+--- a/engine/table.py
++++ b/engine/table.py
+@@ -1751,7 +1751,7 @@ class tabengine (IBus.Engine):
+ # on lookup page
+ if IBus.KEY_space in self._page_down_keys:
+ res = self._editor.page_down()
+- self._update_lookup_table ()
++ self._update_ui ()
+ return res
+ else:
+ o_py = self._editor._py_mode
+@@ -1826,13 +1826,13 @@ class tabengine (IBus.Engine):
+ elif key.code in self._page_down_keys \
+ and self._editor._candidates[0]:
+ res = self._editor.page_down()
+- self._update_lookup_table ()
++ self._update_ui ()
+ return res
+
+ elif key.code in self._page_up_keys \
+ and self._editor._candidates[0]:
+ res = self._editor.page_up ()
+- self._update_lookup_table ()
++ self._update_ui ()
+ return res
+
+ elif keychar in self._editor.get_select_keys() and self._editor._candidates[0]:
+@@ -1909,13 +1909,13 @@ class tabengine (IBus.Engine):
+
+ def do_page_up (self):
+ if self._editor.page_up ():
+- self._update_lookup_table ()
++ self._update_ui ()
+ return True
+ return False
+
+ def do_page_down (self):
+ if self._editor.page_down ():
+- self._update_lookup_table ()
++ self._update_ui ()
+ return True
+ return False
+
+--
+1.7.11.7
+
diff --git a/ibus-table.spec b/ibus-table.spec
index 52f3000..d584cfa 100644
--- a/ibus-table.spec
+++ b/ibus-table.spec
@@ -1,6 +1,6 @@
Name: ibus-table
Version: 1.5.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: The Table engine for IBus platform
License: LGPLv2+
Group: System Environment/Libraries
@@ -12,6 +12,11 @@ Patch3: 0001-Make-comments-about-_chinese_mode-clearer.patch
Patch4: 0002-Improve-detection-of-simplified-and-traditional-Chin.patch
Patch5: 0003-add-engine-chinese_variants.py-to-engine-Makefile.am.patch
Patch6: add-engine-chinese_variants.py-to-engine-Makefile.in.patch
+Patch7: 0001-Fix-typo-thanks-to-Mathieu-Bridon.patch
+Patch8: 0002-Add-auto_select-functionality-to-select-the-first-ph.patch
+Patch9: 0003-Update-cmode-pproperty-in-chinese-mode-only.patch
+Patch10: 0004-Fall-back-to-auto_select-False-if-neither-dconf-nor-.patch
+Patch11: 0005-Preedit-needs-to-be-updated-on-page-up-and-page-down.patch
Requires: ibus > 1.3.0
BuildRequires: ibus-devel > 1.3.0
@@ -40,6 +45,11 @@ Development files for %{name}.
%patch4 -p1 -b .improve-detection-of-simplified-and-traditional-chinese
%patch5 -p1 -b .fix-makefile-am
%patch6 -p1 -b .fix-makefile-in
+%patch7 -p1 -b .fix-typo
+%patch8 -p1 -b .add-auto-select
+%patch9 -p1 -b .update-cmode-in-chinese-mode-only
+%patch10 -p1 -b .fall-back-to-auto-select-false-by-default
+%patch11 -p1 -b .preedit-needs-to-be-updated-when-paging
%build
%configure --disable-static --disable-additional
@@ -113,6 +123,15 @@ Development files for %{name}.
%{_datadir}/pkgconfig/%{name}.pc
%changelog
+* Thu Feb 14 2013 Mike FABIAN <mfabian at redhat.com> - 1.5.0-2
+- Resolves: #911487 - Non-Chinese tables from the ibus-table-other package do not work
+- Add auto_select functionality to select the first phrase when typing.
+ Useful for Cyrillic transliteration
+- Update cmode property in chinese mode only
+- Fall back to auto_select = False if neither dconf nor the table
+ have a value for auto_select
+- Preedit needs to be updated on page-up and page-down
+
* Mon Jan 28 2013 Mike FABIAN <mfabian at redhat.com> - 1.5.0-1
- update to latest upstream 1.5.0 from Caius ‘kaio’ Chance’s repository
- add patches for better simplified/traditional Chinese detection
More information about the scm-commits
mailing list