self->valueChanged (section, name, value);
}
-static const struct {
- const gchar * const name;
- guint option;
-} pinyin_options [] = {
- /* correct */
- { "CorrectPinyin_GN_NG", PINYIN_CORRECT_GN_TO_NG },
- { "CorrectPinyin_GN_NG", PINYIN_CORRECT_GN_TO_NG },
- { "CorrectPinyin_MG_NG", PINYIN_CORRECT_MG_TO_NG },
- { "CorrectPinyin_IOU_IU", PINYIN_CORRECT_IOU_TO_IU },
- { "CorrectPinyin_UEI_UI", PINYIN_CORRECT_UEI_TO_UI },
- { "CorrectPinyin_UEN_UN", PINYIN_CORRECT_UEN_TO_UN },
- { "CorrectPinyin_UE_VE", PINYIN_CORRECT_UE_TO_VE },
- { "CorrectPinyin_V_U", PINYIN_CORRECT_V_TO_U },
- { "CorrectPinyin_VE_UE", PINYIN_CORRECT_V_TO_U },
- { "CorrectPinyin_ON_ONG", PINYIN_CORRECT_ON_TO_ONG },
-};
-
-PinyinConfig::PinyinConfig (Bus & bus)
- : Config (bus, "Pinyin")
-{
-}
-
-void
-PinyinConfig::init (Bus & bus)
-{
- if (m_instance.get () == NULL) {
- m_instance.reset (new PinyinConfig (bus));
- m_instance->readDefaultValues ();
- }
-}
-
-void
-PinyinConfig::readDefaultValues (void)
-{
- Config::readDefaultValues ();
-#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 ();
- }
- m_double_pinyin_show_raw = read (CONFIG_DOUBLE_PINYIN_SHOW_RAW, false);
-
- /* init states */
- m_init_chinese = read (CONFIG_INIT_CHINESE, true);
- m_init_full = read (CONFIG_INIT_FULL, false);
- m_init_full_punct = read (CONFIG_INIT_FULL_PUNCT, true);
- m_init_simp_chinese = read (CONFIG_INIT_SIMP_CHINESE, true);
-
- m_special_phrases = read (CONFIG_SPECIAL_PHRASES, true);
-
- /* other */
- m_shift_select_candidate = read (CONFIG_SHIFT_SELECT_CANDIDATE, false);
- m_minus_equal_page = read (CONFIG_MINUS_EQUAL_PAGE, true);
- m_comma_period_page = read (CONFIG_COMMA_PERIOD_PAGE, true);
- m_auto_commit = read (CONFIG_AUTO_COMMIT, false);
-
- /* correct pinyin */
- if (read (CONFIG_CORRECT_PINYIN, true))
- m_option_mask |= PINYIN_CORRECT_ALL;
- else
- m_option_mask &= ~PINYIN_CORRECT_ALL;
-
- /* read values */
- for (guint i = 0; i < G_N_ELEMENTS (pinyin_options); i++) {
- if (read (pinyin_options[i].name,
- (pinyin_options[i].option & PINYIN_DEFAULT_OPTION) != 0))
- m_option |= pinyin_options[i].option;
- else
- m_option &= ~pinyin_options[i].option;
- }
-#endif
-}
-
-gboolean
-PinyinConfig::valueChanged (const std::string §ion,
- const std::string &name,
- GVariant *value)
-{
- if (m_section != section)
- return FALSE;
-
- if (Config::valueChanged (section, name, value))
- return TRUE;
-
- /* double pinyin */
- 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 (m_double_pinyin_schema > DOUBLE_PINYIN_LAST) {
- m_double_pinyin_schema = 0;
- g_warn_if_reached ();
- }
- }
- else if (CONFIG_DOUBLE_PINYIN_SHOW_RAW == name)
- m_double_pinyin_show_raw = normalizeGVariant (value, false);
- /* init states */
- else if (CONFIG_INIT_CHINESE == name)
- m_init_chinese = normalizeGVariant (value, true);
- else if (CONFIG_INIT_FULL == name)
- m_init_full = normalizeGVariant (value, true);
- else if (CONFIG_INIT_FULL_PUNCT == name)
- m_init_full_punct = normalizeGVariant (value, true);
- else if (CONFIG_INIT_SIMP_CHINESE == name)
- m_init_simp_chinese = normalizeGVariant (value, true);
- else if (CONFIG_SPECIAL_PHRASES == name)
- m_special_phrases = normalizeGVariant (value, true);
- /* others */
- else if (CONFIG_SHIFT_SELECT_CANDIDATE == name)
- m_shift_select_candidate = normalizeGVariant (value, false);
- else if (CONFIG_MINUS_EQUAL_PAGE == name)
- m_minus_equal_page = normalizeGVariant (value, true);
- else if (CONFIG_COMMA_PERIOD_PAGE == name)
- m_comma_period_page = normalizeGVariant (value, true);
- else if (CONFIG_AUTO_COMMIT == name)
- m_auto_commit = normalizeGVariant (value, false);
- /* correct pinyin */
- else if (CONFIG_CORRECT_PINYIN == name) {
- if (normalizeGVariant (value, true))
- m_option_mask |= PINYIN_CORRECT_ALL;
- else
- m_option_mask &= ~PINYIN_CORRECT_ALL;
- }
- else {
- for (guint i = 0; i < G_N_ELEMENTS (pinyin_options); i++) {
- if (G_LIKELY (pinyin_options[i].name != name))
- continue;
- if (normalizeGVariant (value,
- (pinyin_options[i].option & PINYIN_DEFAULT_OPTION) != 0))
- m_option |= pinyin_options[i].option;
- else
- m_option &= ~pinyin_options[i].option;
- return TRUE;
- }
- return FALSE;
- }
- return TRUE;
-}
-
-BopomofoConfig::BopomofoConfig (Bus & bus)
- : Config (bus, "Bopomofo")
-{
-}
-
-void
-BopomofoConfig::init (Bus & bus)
-{
- if (m_instance.get () == NULL) {
- m_instance.reset (new BopomofoConfig (bus));
- m_instance->readDefaultValues ();
- }
-}
-
-void
-BopomofoConfig::readDefaultValues (void)
-{
- Config::readDefaultValues ();
-#if !defined(HAVE_IBUS_CONFIG_GET_VALUES)
- /* init states */
- m_init_chinese = read (CONFIG_INIT_CHINESE, true);
- m_init_full = read (CONFIG_INIT_FULL, false);
- m_init_full_punct = read (CONFIG_INIT_FULL_PUNCT, true);
- m_init_simp_chinese = read (CONFIG_INIT_SIMP_CHINESE, false);
-
- m_special_phrases = read (CONFIG_SPECIAL_PHRASES, false);
-
- m_bopomofo_keyboard_mapping = read (CONFIG_BOPOMOFO_KEYBOARD_MAPPING, 0);
-
- m_select_keys = read (CONFIG_SELECT_KEYS, 0);
- if (m_select_keys >= 9) m_select_keys = 0;
- m_guide_key = read (CONFIG_GUIDE_KEY, true);
- m_auxiliary_select_key_f = read (CONFIG_AUXILIARY_SELECT_KEY_F, true);
- m_auxiliary_select_key_kp = read (CONFIG_AUXILIARY_SELECT_KEY_KP, true);
- m_enter_key = read (CONFIG_ENTER_KEY, true);
-#endif
-}
-
-gboolean
-BopomofoConfig::valueChanged (const std::string §ion,
- const std::string &name,
- GVariant *value)
-{
- if (m_section != section)
- return FALSE;
-
- if (Config::valueChanged (section, name, value))
- return TRUE;
-
- /* init states */
- if (CONFIG_INIT_CHINESE == name)
- m_init_chinese = normalizeGVariant (value, true);
- else if (CONFIG_INIT_FULL == name)
- m_init_full = normalizeGVariant (value, true);
- else if (CONFIG_INIT_FULL_PUNCT == name)
- m_init_full_punct = normalizeGVariant (value, true);
- else if (CONFIG_INIT_SIMP_CHINESE == name)
- m_init_simp_chinese = normalizeGVariant (value, false);
- else if (CONFIG_SPECIAL_PHRASES == name)
- m_special_phrases = normalizeGVariant (value, false);
- else if (CONFIG_BOPOMOFO_KEYBOARD_MAPPING == name)
- m_bopomofo_keyboard_mapping = normalizeGVariant (value, 0);
- else if (CONFIG_SELECT_KEYS == name) {
- m_select_keys = normalizeGVariant (value, 0);
- if (m_select_keys >= 9) m_select_keys = 0;
- }
- else if (CONFIG_GUIDE_KEY == name)
- m_guide_key = normalizeGVariant (value, true);
- else if (CONFIG_AUXILIARY_SELECT_KEY_F == name)
- m_auxiliary_select_key_f = normalizeGVariant (value, true);
- else if (CONFIG_AUXILIARY_SELECT_KEY_KP == name)
- m_auxiliary_select_key_kp = normalizeGVariant (value, true);
- else if (CONFIG_ENTER_KEY == name)
- m_enter_key = normalizeGVariant (value, true);
- else
- return FALSE;
- return TRUE;
-
-}
};