diff --git a/honoka/src/honoka_def.h b/honoka/src/honoka_def.h index 9327399..3b14ab4 100644 --- a/honoka/src/honoka_def.h +++ b/honoka/src/honoka_def.h @@ -96,9 +96,9 @@ #define HONOKA_CONFIG_DEFAULT_PREEDITOR "/IMEngine/Honoka/DefaultPreEditor" #define HONOKA_DEFAULT_DEFAULT_PREEDITOR "Romkan" #define HONOKA_CONFIG_DEFAULT_CONVERTOR "/IMEngine/Honoka/DefaultConvertor" -#define HONOKA_DEFAULT_DEFAULT_CONVERTOR "Wnn" +#define HONOKA_DEFAULT_DEFAULT_CONVERTOR "Wnn,Anthy" #define HONOKA_CONFIG_DEFAULT_PREDICTOR "/IMEngine/Honoka/DefaultPredictor" -#define HONOKA_DEFAULT_DEFAULT_PREDICTOR "WnnPredictor" +#define HONOKA_DEFAULT_DEFAULT_PREDICTOR "WnnPredictor,SimplePredictor" #define HONOKA_CONFIG_PLUGINLOADER_PREFIX "/IMEngine/Honoka/PluginLoader" diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index 0e2513e..b72f07a 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -267,6 +267,25 @@ } } +/*! + \fn HonokaInstance::split(const String &str,const char &sep) + */ +vector HonokaInstance::split(const String &str,const char &sep) +{ + vector s; + String w; + for(unsigned int i = 0;i < str.length();i ++) { + if (str[i] == sep) { + if (w.length()) { + s.push_back(w); + w.clear(); + } + } else w = w + str.substr(i,1); + } + if (w.length()) s.push_back(w); + return s; +} + /*! \fn HonokaInstance::init() @@ -399,13 +418,16 @@ String(a))); } - - changePreEditor(defaultPreEditor); - changeConvertor(defaultConvertor); - changePredictor(defaultPredictor); + vector sl; - // �����ǰ�����³���Ƥ������� - m_convertor->connect(); + sl = split(defaultPreEditor); + for(unsigned int i = 0;i < sl.size();i ++) if (changePreEditor(sl[i])) break; + sl = split(defaultConvertor); + for(unsigned int i = 0;i < sl.size();i ++) if (changeConvertor(sl[i])) break; + sl = split(defaultPredictor); + for(unsigned int i = 0;i < sl.size();i ++) if (changePredictor(sl[i])) break; + + if (prediction) m_predictor->connect(); } @@ -413,16 +435,16 @@ /*! \fn HonokaInstance::changePreEditor(const String &name) */ -void HonokaInstance::changePreEditor(const String &name) +bool HonokaInstance::changePreEditor(const String &name) { // PreEditor���ѹ�����᥽�åɡ� for(unsigned int i = 0;i < preeditors.size();i ++) { if (preeditors[i]->getPropertyName() == name) { m_preeditor = preeditors[i]; - return; + return true; } } - return; + return false; } @@ -430,16 +452,16 @@ /*! \fn HonokaInstance::changeConvertor(const String &name) */ -void HonokaInstance::changeConvertor(const String &name) +bool HonokaInstance::changeConvertor(const String &name) { // Convertor���ѹ�����᥽�åɡ� for(unsigned int i = 0;i < convertors.size();i ++) { if (convertors[i]->getPropertyName() == name) { m_convertor = convertors[i]; - return; + return true; } } - return; + return false; } @@ -447,16 +469,16 @@ /*! \fn HonokaInstance::changePredictor(const String &name) */ -void HonokaInstance::changePredictor(const String &name) +bool HonokaInstance::changePredictor(const String &name) { // Predictor���ѹ�����᥽�åɡ� for(unsigned int i = 0;i < predictors.size();i ++) { if (predictors[i]->getPropertyName() == name) { m_predictor = predictors[i]; - return; + return true; } } - return; + return false; } @@ -544,10 +566,7 @@ update_preedit_string(m_preeditor->getText(),m_preeditor->getAttributeList()); update_preedit_caret(m_preeditor->getPos()); } - // ͽ¬���ѥ����ɡ�����Wnn7������ʬΥͽ�ꡣ - //if ((!m_conversion) && yosoku && m_convertor->isConnected() && (sType == "Wnn7") && - // (!auto_conversion) && (m_convertor->getName() == "Wnn")) { - // m_convList = m_convertor->getYosokuList(m_preeditor->getText()); + // Prediction if ((!m_conversion) && prediction && m_predictor->isConnected() && (!auto_conversion)) { m_convList = m_predictor->getPredictionList(m_preeditor->getText()); if (m_convList.count()) { @@ -1324,3 +1343,5 @@ + + diff --git a/honoka/src/honoka_imengine.h b/honoka/src/honoka_imengine.h index f8faba0..d9e0554 100644 --- a/honoka/src/honoka_imengine.h +++ b/honoka/src/honoka_imengine.h @@ -137,6 +137,7 @@ WideString yomi; stack preeditStack; Convertor *m_multi; + vector split(const String &str,const char &sep = ','); protected: bool process_preedit_key_event(const KeyEvent &key); bool process_conversion_key_event(const KeyEvent &key); @@ -147,9 +148,9 @@ void updatePreEditor(); void updateProperty(); void updateConversion(); - void changePreEditor(const String &name); - void changeConvertor(const String &name); - void changePredictor(const String &name); + bool changePreEditor(const String &name); + bool changeConvertor(const String &name); + bool changePredictor(const String &name); void autoConversion(); bool pluginCheck(HonokaPluginBase *p); private: