summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-09-20 13:52:05 +0800
committerPeng Wu <alexepico@gmail.com>2011-12-22 12:23:12 +0800
commit48297caeed02607f0f124510d488d71e69b8e303 (patch)
treef796180f15a4e0f3b46d0a8b4f3072ae22011d1a
parentacca31ee1da743f2f4850eb6562dba73aa9c6a7d (diff)
downloadibus-libpinyin-48297caeed02607f0f124510d488d71e69b8e303.tar.gz
ibus-libpinyin-48297caeed02607f0f124510d488d71e69b8e303.tar.xz
ibus-libpinyin-48297caeed02607f0f124510d488d71e69b8e303.zip
write update pinyin
-rw-r--r--src/PYPFullPinyinEditor.cc31
-rw-r--r--src/PYPFullPinyinEditor.h2
2 files changed, 33 insertions, 0 deletions
diff --git a/src/PYPFullPinyinEditor.cc b/src/PYPFullPinyinEditor.cc
index 9712d97..5194ef8 100644
--- a/src/PYPFullPinyinEditor.cc
+++ b/src/PYPFullPinyinEditor.cc
@@ -62,3 +62,34 @@ LibPinyinFullPinyinEditor::processKeyEvent (guint keyval,
return LibPinyinPinyinEditor::processKeyEvent (keyval, keycode, modifiers);
}
+void
+LibPinyinFullPinyinEditor::updatePinyin (void)
+{
+ if (G_UNLIKELY (m_text.empty ())) {
+ m_pinyins.clear ();
+ m_pinyin_len = 0;
+ return;
+ }
+
+ m_pinyin_len = PinyinParser::parse (m_text, // text
+ m_text.length (), // text length
+ m_config.option (), // option
+ m_pinyins, // result
+ MAX_PHRASE_LEN); // max result length
+
+ /* propagate to libpinyin */
+ g_array_set_size (m_instance->m_pinyin_keys, 0);
+ g_array_set_size (m_instance->m_pinyin_poses, 0);
+
+ PinyinKey key; PinyinKeyPos pos;
+ PinyinArray::const_iterator iter = m_pinyins.begin ();
+ for ( ; iter != m_pinyins.end (); ++iter ) {
+ PinyinSegment py = *iter;
+ pinyin_parse_full_pinyin (m_instance, py.pinyin->text, &key);
+ pos.set_pos (py.begin); pos.set_length (py.len);
+ g_array_append_val(m_instance->m_pinyin_keys, key);
+ g_array_append_val(m_instance->m_pinyin_poses, pos);
+ }
+
+ pinyin_guess_sentence(m_instance);
+}
diff --git a/src/PYPFullPinyinEditor.h b/src/PYPFullPinyinEditor.h
index a6e74c4..afb52d5 100644
--- a/src/PYPFullPinyinEditor.h
+++ b/src/PYPFullPinyinEditor.h
@@ -52,6 +52,8 @@ public:
protected:
/* TODO: to be implemented. */
+ void updatePinyin (void);
+
};
};