summaryrefslogtreecommitdiffstats
path: root/src/PYLibPinyin.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-10-07 12:53:14 +0800
committerPeng Wu <alexepico@gmail.com>2011-12-22 12:23:13 +0800
commite5870dfe0dc3a85182b8f92322ac25127de10af5 (patch)
treef41a9fea3df835c843d6318da3f4549f3f4104d0 /src/PYLibPinyin.cc
parentfd1f18c48e6fbec50e8c908552c446c60363a94b (diff)
downloadibus-libpinyin-e5870dfe0dc3a85182b8f92322ac25127de10af5.tar.gz
ibus-libpinyin-e5870dfe0dc3a85182b8f92322ac25127de10af5.tar.xz
ibus-libpinyin-e5870dfe0dc3a85182b8f92322ac25127de10af5.zip
write libpinyin backend
Diffstat (limited to 'src/PYLibPinyin.cc')
-rw-r--r--src/PYLibPinyin.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc
index a7097fe..d76e612 100644
--- a/src/PYLibPinyin.cc
+++ b/src/PYLibPinyin.cc
@@ -48,6 +48,7 @@ LibPinyinBackEnd::allocPinyinInstance ()
{
if (NULL == m_pinyin_context) {
m_pinyin_context = pinyin_init ("/usr/share/libpinyin/data", NULL);
+ setPinyinOptions (&PinyinConfig::instance ());
}
return pinyin_alloc_instance (m_pinyin_context);
}
@@ -63,6 +64,7 @@ LibPinyinBackEnd::allocChewingInstance ()
{
if (NULL == m_chewing_context) {
m_chewing_context = pinyin_init ("/usr/share/libpinyin/data", NULL);
+ setChewingOptions (&BopomofoConfig::instance ());
}
return pinyin_alloc_instance (m_chewing_context);
}
@@ -117,6 +119,8 @@ static const struct {
gboolean
LibPinyinBackEnd::setFuzzyOptions (Config *config, pinyin_context_t *context)
{
+ g_assert (context);
+
guint option = config->option ();
PinyinCustomSettings custom;
@@ -151,6 +155,9 @@ static const struct{
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 (shuang_pin_options); i++) {
if (map == shuang_pin_options[i].double_pinyin_keyboard) {
@@ -179,6 +186,9 @@ static const struct {
gboolean
LibPinyinBackEnd::setChewingOptions (Config *config)
{
+ if (NULL == m_chewing_context)
+ return FALSE;
+
const gint map = config->bopomofoKeyboardMapping ();
for (guint i = 0; i < G_N_ELEMENTS (chewing_options); i++) {
if (map == chewing_options[i].bopomofo_keyboard) {