add init context
authorPeng Wu <alexepico@gmail.com>
Wed, 8 Aug 2012 08:16:59 +0000 (16:16 +0800)
committerPeng Wu <alexepico@gmail.com>
Wed, 8 Aug 2012 08:16:59 +0000 (16:16 +0800)
src/PYLibPinyin.cc
src/PYLibPinyin.h

index 44dcaf2..27d1ad5 100644 (file)
@@ -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 ());
index 9807ca4..1dba971 100644 (file)
@@ -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 ();