* honor the settings for initial status (fix issue#53)
authortchaikov
Mon, 16 Nov 2009 22:59:37 +0800
changeset 462 3571b5b7101b
parent 461 9044ba3f6afb
child 463 d10db9860cc3
* honor the settings for initial status (fix issue#53)
sunpinyin2/wrapper/ibus/setup/main.py
sunpinyin2/wrapper/ibus/src/engine_impl.cpp
sunpinyin2/wrapper/ibus/src/sunpinyin_config.cpp
sunpinyin2/wrapper/ibus/src/sunpinyin_config.h
sunpinyin2/wrapper/ibus/src/sunpinyin_config_keys.h
--- a/sunpinyin2/wrapper/ibus/setup/main.py	Sat Nov 14 10:37:24 2009 +0800
+++ b/sunpinyin2/wrapper/ibus/setup/main.py	Mon Nov 16 22:59:37 2009 +0800
@@ -475,7 +475,7 @@
             ComboBoxOption("General/MemoryPower", 3, range(10), self.__xml),
             RadioOption("General/InitialStatus/Mode", 'Chinese', ['Chinese', 'English'], self.__xml),
             RadioOption("General/InitialStatus/Punct", 'Full', ['Full', 'Half'], self.__xml),
-            RadioOption("General/InitialStatus/Letter", 'Full', ['Full', 'Half'], self.__xml),
+            RadioOption("General/InitialStatus/Letter", 'Half', ['Full', 'Half'], self.__xml),
             RadioOption("General/Charset", 'GBK', ['GB2312', 'GBK', 'GB18030'], self.__xml),
             CheckBoxOption("General/PunctMapping/Enabled", False, self.__xml),
             
--- a/sunpinyin2/wrapper/ibus/src/engine_impl.cpp	Sat Nov 14 10:37:24 2009 +0800
+++ b/sunpinyin2/wrapper/ibus/src/engine_impl.cpp	Mon Nov 16 22:59:37 2009 +0800
@@ -18,20 +18,6 @@
 EngineImpl::EngineImpl(IBusEngine *ibus_engine)
     : m_ibus_engine(ibus_engine), m_wh(NULL), m_pv(NULL), m_hotkey_profile(NULL)
 {
-    m_prop_list = ibus_prop_list_new();
-    
-    m_status_prop = SunPinyinProperty::create_status_prop(m_ibus_engine);
-    ibus_prop_list_append(m_prop_list, m_status_prop->get());
-    
-    m_letter_prop = SunPinyinProperty::create_letter_prop(m_ibus_engine);
-    ibus_prop_list_append(m_prop_list, m_letter_prop->get());
-    
-    m_punct_prop = SunPinyinProperty::create_punct_prop(m_ibus_engine);
-    ibus_prop_list_append(m_prop_list, m_punct_prop->get());
-
-    m_setup_prop = new SetupLauncher();
-    ibus_prop_list_append(m_prop_list, m_setup_prop->get());
-    
     m_lookup_table = new SunPinyinLookupTable();
     
     CSunpinyinSessionFactory& factory = CSunpinyinSessionFactory::getFactory();
@@ -60,6 +46,26 @@
     
     m_wh = new CIBusWinHandler(this);
     m_pv->attachWinHandler(m_wh);
+
+    m_prop_list = ibus_prop_list_new();
+    
+    bool is_cn = m_config->is_initial_mode_cn();
+    m_status_prop = SunPinyinProperty::create_status_prop(m_ibus_engine, is_cn);
+    m_pv->setStatusAttrValue(CIMIWinHandler::STATUS_ID_CN, is_cn);
+    ibus_prop_list_append(m_prop_list, m_status_prop->get());
+
+    bool is_letter_full = m_config->is_initial_letter_full();
+    m_letter_prop = SunPinyinProperty::create_letter_prop(m_ibus_engine, is_letter_full);
+    m_pv->setStatusAttrValue(CIMIWinHandler::STATUS_ID_FULLSYMBOL, is_letter_full);
+    ibus_prop_list_append(m_prop_list, m_letter_prop->get());
+
+    bool is_punct_full = m_config->is_initial_punct_full();
+    m_punct_prop = SunPinyinProperty::create_punct_prop(m_ibus_engine, is_punct_full);
+    m_pv->setStatusAttrValue(CIMIWinHandler::STATUS_ID_FULLPUNC, is_punct_full);
+    ibus_prop_list_append(m_prop_list, m_punct_prop->get());
+
+    m_setup_prop = new SetupLauncher();
+    ibus_prop_list_append(m_prop_list, m_setup_prop->get());
     
     update_config();
 }
--- a/sunpinyin2/wrapper/ibus/src/sunpinyin_config.cpp	Sat Nov 14 10:37:24 2009 +0800
+++ b/sunpinyin2/wrapper/ibus/src/sunpinyin_config.cpp	Mon Nov 16 22:59:37 2009 +0800
@@ -182,6 +182,30 @@
     return get_scheme(name);
 }
 
+bool
+SunPinyinConfig::is_initial_mode_cn()
+{
+    string init_mode("Chinese");
+    init_mode = get(CONFIG_GENERAL_INITIAL_MODE, init_mode);
+    return (init_mode == "Chinese");
+}
+
+bool
+SunPinyinConfig::is_initial_punct_full()
+{
+    string init_punct("Full");
+    init_punct = get(CONFIG_GENERAL_INITIAL_PUNCT, init_punct);
+    return (init_punct == "Full");
+}
+
+bool
+SunPinyinConfig::is_initial_letter_full()
+{
+    string init_letter("Half");
+    init_letter = get(CONFIG_GENERAL_INITIAL_LETTER, init_letter);
+    return (init_letter == "Full");
+}
+
 void
 SunPinyinConfig::set_config(IBusConfig *config)
 {
--- a/sunpinyin2/wrapper/ibus/src/sunpinyin_config.h	Sat Nov 14 10:37:24 2009 +0800
+++ b/sunpinyin2/wrapper/ibus/src/sunpinyin_config.h	Mon Nov 16 22:59:37 2009 +0800
@@ -82,6 +82,10 @@
     CSunpinyinSessionFactory::EPyScheme get_py_scheme(CSunpinyinSessionFactory::EPyScheme);
     void set_py_scheme(CSunpinyinSessionFactory::EPyScheme);
 
+    bool is_initial_mode_cn();
+    bool is_initial_punct_full();
+    bool is_initial_letter_full();
+    
     /**
      * gets called in ibus_sunpinyin_init() so that SunPinyinEngine can read 
      * configuration when it starts up
--- a/sunpinyin2/wrapper/ibus/src/sunpinyin_config_keys.h	Sat Nov 14 10:37:24 2009 +0800
+++ b/sunpinyin2/wrapper/ibus/src/sunpinyin_config_keys.h	Mon Nov 16 22:59:37 2009 +0800
@@ -39,6 +39,9 @@
 #define CONFIG_GENERAL_PAGE_SIZE            "General/PageSize"
 #define CONFIG_GENERAL_MEMORY_POWER         "General/MemoryPower"
 #define CONFIG_GENERAL_CHARSET_LEVEL        "General/Charset"
+#define CONFIG_GENERAL_INITIAL_MODE         "General/InitialStatus/Mode"
+#define CONFIG_GENERAL_INITIAL_PUNCT        "General/InitialStatus/Punct"
+#define CONFIG_GENERAL_INITIAL_LETTER       "General/InitialStatus/Letter"
 
 #define CONFIG_QUANPIN_FUZZY_ANY         "QuanPin/Fuzzy/Any"
 #define CONFIG_QUANPIN_FUZZY_ZhiZi       "QuanPin/Fuzzy/ZhiZi"