--- 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"