summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-08-08 16:16:59 +0800
committerPeng Wu <alexepico@gmail.com>2012-08-08 16:16:59 +0800
commit4a830d6660e877fd879e9b4ae55c4fda9a2087aa (patch)
tree3b30b719bc48870fbe0cab7cbc99b2901f09df6f
parent9735999a0e80463c4489aad21770731ebd54a368 (diff)
downloadibus-libpinyin-4a830d6660e877fd879e9b4ae55c4fda9a2087aa.tar.gz
ibus-libpinyin-4a830d6660e877fd879e9b4ae55c4fda9a2087aa.tar.xz
ibus-libpinyin-4a830d6660e877fd879e9b4ae55c4fda9a2087aa.zip
add init context
-rw-r--r--src/PYLibPinyin.cc64
-rw-r--r--src/PYLibPinyin.h3
2 files changed, 49 insertions, 18 deletions
diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc
index 44dcaf2..27d1ad5 100644
--- a/src/PYLibPinyin.cc
+++ b/src/PYLibPinyin.cc
@@ -53,19 +53,33 @@ LibPinyinBackEnd::~LibPinyinBackEnd () {
m_chewing_context = NULL;
}
+pinyin_context_t *
+LibPinyinBackEnd::initPinyinContext ()
+{
+ pinyin_context_t * context = NULL;
+
+ gchar * userdir = g_build_filename (g_get_home_dir(), ".cache",
+ "ibus", "libpinyin", NULL);
+ int retval = g_mkdir_with_parents (userdir, 0700);
+ if (retval) {
+ g_free(userdir); userdir = NULL;
+ }
+ context = pinyin_init ("/usr/share/libpinyin/data", userdir);
+
+#if 0
+ pinyin_load_phrase_library(m_pinyin_context, 2);
+#endif
+ /* TODO: load phrase libraries here. */
+
+ g_free(userdir);
+ return context;
+}
+
pinyin_instance_t *
LibPinyinBackEnd::allocPinyinInstance ()
{
if (NULL == m_pinyin_context) {
- gchar * userdir = g_build_filename (g_get_home_dir(), ".cache",
- "ibus", "libpinyin", NULL);
- int retval = g_mkdir_with_parents (userdir, 0700);
- if (retval) {
- g_free(userdir); userdir = NULL;
- }
- m_pinyin_context = pinyin_init ("/usr/share/libpinyin/data", userdir);
- pinyin_load_phrase_library(m_pinyin_context, 2);
- g_free(userdir);
+ m_pinyin_context = initPinyinContext ();
}
setPinyinOptions (&LibPinyinPinyinConfig::instance ());
@@ -78,19 +92,33 @@ LibPinyinBackEnd::freePinyinInstance (pinyin_instance_t *instance)
pinyin_free_instance (instance);
}
+pinyin_context_t *
+LibPinyinBackEnd::initChewingContext ()
+{
+ pinyin_context_t * context = NULL;
+
+ gchar * userdir = g_build_filename (g_get_home_dir(), ".cache",
+ "ibus", "libbopomofo", NULL);
+ int retval = g_mkdir_with_parents (userdir, 0700);
+ if (retval) {
+ g_free(userdir); userdir = NULL;
+ }
+ context = pinyin_init ("/usr/share/libpinyin/data", userdir);
+
+#if 0
+ pinyin_load_phrase_library(m_chewing_context, 2);
+#endif
+ /* TODO: load phrase libraries here. */
+
+ g_free(userdir);
+ return context;
+}
+
pinyin_instance_t *
LibPinyinBackEnd::allocChewingInstance ()
{
if (NULL == m_chewing_context) {
- gchar * userdir = g_build_filename (g_get_home_dir(), ".cache",
- "ibus", "libbopomofo", NULL);
- int retval = g_mkdir_with_parents (userdir, 0700);
- if (retval) {
- g_free(userdir); userdir = NULL;
- }
- m_chewing_context = pinyin_init ("/usr/share/libpinyin/data", userdir);
- pinyin_load_phrase_library(m_chewing_context, 2);
- g_free(userdir);
+ m_chewing_context = initChewingContext ();
}
setChewingOptions (&LibPinyinBopomofoConfig::instance ());
diff --git a/src/PYLibPinyin.h b/src/PYLibPinyin.h
index 9807ca4..1dba971 100644
--- a/src/PYLibPinyin.h
+++ b/src/PYLibPinyin.h
@@ -41,6 +41,9 @@ public:
gboolean setPinyinOptions (Config *config);
gboolean setChewingOptions (Config *config);
+ pinyin_context_t * initPinyinContext ();
+ pinyin_context_t * initChewingContext ();
+
pinyin_instance_t *allocPinyinInstance ();
void freePinyinInstance (pinyin_instance_t *instance);
pinyin_instance_t *allocChewingInstance ();