diff options
author | Peng Wu <alexepico@gmail.com> | 2014-04-29 11:02:20 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2014-04-29 11:02:20 +0800 |
commit | ad0e422ceaafe4fcddfc579d2061d93a6e711ab0 (patch) | |
tree | 5e7645948a7cdd1846d144dbac8efef39cbac044 /src | |
parent | f3b0fa4f04a06036c5cc177969a58c73e8e7c5b5 (diff) | |
download | ibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.tar.gz ibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.tar.xz ibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.zip |
improves m_double_pinyin_schema read
Diffstat (limited to 'src')
-rw-r--r-- | src/PYConfig.cc | 2 | ||||
-rw-r--r-- | src/PYConfig.h | 4 | ||||
-rw-r--r-- | src/PYLibPinyin.cc | 23 | ||||
-rw-r--r-- | src/PYPConfig.cc | 43 |
4 files changed, 37 insertions, 35 deletions
diff --git a/src/PYConfig.cc b/src/PYConfig.cc index 554a13a..35e74e2 100644 --- a/src/PYConfig.cc +++ b/src/PYConfig.cc @@ -53,7 +53,7 @@ Config::initDefaultValues (void) m_auto_commit = FALSE; m_double_pinyin = FALSE; - m_double_pinyin_schema = 0; + m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT; m_double_pinyin_show_raw = FALSE; m_init_chinese = TRUE; diff --git a/src/PYConfig.h b/src/PYConfig.h index dfb86db..a0cdb17 100644 --- a/src/PYConfig.h +++ b/src/PYConfig.h @@ -51,7 +51,7 @@ public: gboolean commaPeriodPage (void) const { return m_comma_period_page; } gboolean autoCommit (void) const { return m_auto_commit; } gboolean doublePinyin (void) const { return m_double_pinyin; } - gint doublePinyinSchema (void) const { return m_double_pinyin_schema; } + DoublePinyinScheme doublePinyinSchema (void) const { return m_double_pinyin_schema; } gboolean doublePinyinShowRaw (void) const { return m_double_pinyin_show_raw; } gboolean initChinese (void) const { return m_init_chinese; } gboolean initFull (void) const { return m_init_full; } @@ -97,7 +97,7 @@ protected: gboolean m_auto_commit; gboolean m_double_pinyin; - gint m_double_pinyin_schema; + DoublePinyinScheme m_double_pinyin_schema; gboolean m_double_pinyin_show_raw; gboolean m_init_chinese; diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc index 99b11bd..78299d5 100644 --- a/src/PYLibPinyin.cc +++ b/src/PYLibPinyin.cc @@ -162,33 +162,14 @@ LibPinyinBackEnd::finalize (void) { m_instance.reset (); } -/* Here are the double pinyin keyboard scheme mapping table. */ -static const struct{ - gint double_pinyin_keyboard; - DoublePinyinScheme scheme; -} double_pinyin_options [] = { - {0, DOUBLE_PINYIN_MS}, - {1, DOUBLE_PINYIN_ZRM}, - {2, DOUBLE_PINYIN_ABC}, - {3, DOUBLE_PINYIN_ZIGUANG}, - {4, DOUBLE_PINYIN_PYJJ}, - {5, DOUBLE_PINYIN_XHE} -}; - gboolean LibPinyinBackEnd::setPinyinOptions (Config *config) { if (NULL == m_pinyin_context) return FALSE; - const gint map = config->doublePinyinSchema (); - for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_options); i++) { - if (map == double_pinyin_options[i].double_pinyin_keyboard) { - /* set double pinyin scheme. */ - DoublePinyinScheme scheme = double_pinyin_options[i].scheme; - pinyin_set_double_pinyin_scheme (m_pinyin_context, scheme); - } - } + DoublePinyinScheme scheme = config->doublePinyinSchema (); + pinyin_set_double_pinyin_scheme (m_pinyin_context, scheme); pinyin_option_t options = config->option() | USE_RESPLIT_TABLE | USE_DIVIDED_TABLE; diff --git a/src/PYPConfig.cc b/src/PYPConfig.cc index 8b6d17c..fb42cdd 100644 --- a/src/PYPConfig.cc +++ b/src/PYPConfig.cc @@ -93,7 +93,7 @@ LibPinyinConfig::initDefaultValues (void) m_auto_commit = FALSE; m_double_pinyin = FALSE; - m_double_pinyin_schema = 0; + m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT; m_double_pinyin_show_raw = FALSE; m_init_chinese = TRUE; @@ -273,6 +273,19 @@ static const struct { { "CorrectPinyin_ON_ONG", PINYIN_CORRECT_ON_ONG }, }; +/* Here are the double pinyin keyboard scheme mapping table. */ +static const struct{ + gint double_pinyin_keyboard; + DoublePinyinScheme scheme; +} double_pinyin_schemes [] = { + {0, DOUBLE_PINYIN_MS}, + {1, DOUBLE_PINYIN_ZRM}, + {2, DOUBLE_PINYIN_ABC}, + {3, DOUBLE_PINYIN_ZIGUANG}, + {4, DOUBLE_PINYIN_PYJJ}, + {5, DOUBLE_PINYIN_XHE} +}; + LibPinyinPinyinConfig::LibPinyinPinyinConfig (Bus & bus) : LibPinyinConfig (bus, "pinyin") { @@ -294,11 +307,17 @@ LibPinyinPinyinConfig::readDefaultValues (void) #if !defined(HAVE_IBUS_CONFIG_GET_VALUES) /* double pinyin */ m_double_pinyin = read (CONFIG_DOUBLE_PINYIN, false); - m_double_pinyin_schema = read (CONFIG_DOUBLE_PINYIN_SCHEMA, 0); - if (m_double_pinyin_schema > DOUBLE_PINYIN_LAST) { - m_double_pinyin_schema = 0; - g_warn_if_reached (); + + const gint map = read (CONFIG_DOUBLE_PINYIN_SCHEMA, 0); + m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT; + + for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_schemes); i++) { + if (map == double_pinyin_schemes[i].double_pinyin_keyboard) { + /* set double pinyin scheme. */ + m_double_pinyin_schema = double_pinyin_schemes[i].scheme; + } } + m_double_pinyin_show_raw = read (CONFIG_DOUBLE_PINYIN_SHOW_RAW, false); /* init states */ @@ -347,13 +366,15 @@ LibPinyinPinyinConfig::valueChanged (const std::string §ion, if (CONFIG_DOUBLE_PINYIN == name) m_double_pinyin = normalizeGVariant (value, false); else if (CONFIG_DOUBLE_PINYIN_SCHEMA == name) { - m_double_pinyin_schema = normalizeGVariant (value, 0); -#if 0 - if (m_double_pinyin_schema > DOUBLE_PINYIN_LAST) { - m_double_pinyin_schema = 0; - g_warn_if_reached (); + const gint map = normalizeGVariant (value, 0); + m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT; + + for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_schemes); i++) { + if (map == double_pinyin_schemes[i].double_pinyin_keyboard) { + /* set double pinyin scheme. */ + m_double_pinyin_schema = double_pinyin_schemes[i].scheme; + } } -#endif } else if (CONFIG_DOUBLE_PINYIN_SHOW_RAW == name) m_double_pinyin_show_raw = normalizeGVariant (value, false); |