diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index cdaa3c6..6656e9c 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -208,6 +208,11 @@ if (p->getPluginType() == "Predictor") { predictors.push_back(static_cast(p)); return true; + } else + // TextFilterの場合。 + if (p->getPluginType() == "TextFilter") { + filters.push_back(static_cast(p)); + return true; } return false; } @@ -290,11 +295,13 @@ if (!convertors.size()) convertors.push_back(new Convertor(_scim_config)); if (!preeditors.size()) preeditors.push_back(new PreEditor(_scim_config)); if (!predictors.size()) predictors.push_back(new Predictor(_scim_config)); + if (!filters.size()) filters.push_back(new TextFilter(_scim_config)); // 初期利用Convertor/PreEditorを指定します。 m_convertor = convertors.at(0); m_preeditor = preeditors.at(0); m_predictor = predictors.at(0); + m_filter = filters.at(0); m_multi = new MultiConvertor(_scim_config,this); @@ -316,6 +323,7 @@ convertors.clear(); preeditors.clear(); predictors.clear(); + filters.clear(); delete acpredictor; delete m_multi; plugins.clear(); @@ -654,6 +662,24 @@ /*! + \fn HonokaInstance::changeFilter(const String &name) + */ +bool HonokaInstance::changeFilter(const String &name) +{ + // Filterを変更するメソッド。 + for(unsigned int i = 0;i < filters.size();i ++) { + if (filters[i]->getName() == name) { + m_filter->unSelected(); + m_filter = filters[i]; + m_filter->selected(); + return true; + } + } + return false; +} + + +/*! \fn HonokaInstance::updateProperty() */ void HonokaInstance::updateProperty() diff --git a/honoka/src/honoka_imengine.h b/honoka/src/honoka_imengine.h index 7bca1b2..0ae59e1 100644 --- a/honoka/src/honoka_imengine.h +++ b/honoka/src/honoka_imengine.h @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -122,6 +123,7 @@ Convertor *m_def_convertor; Predictor *m_predictor; Convertor *m_splitter; + TextFilter *m_filter; //bool m_conversion; //bool m_prediction; //bool m_lookup; @@ -149,6 +151,7 @@ vector preeditors; vector convertors; vector predictors; + vector filters; WideString yomi; stack preeditStack; Convertor *m_multi; @@ -176,6 +179,7 @@ bool changeConvertor(const String &name); bool changePredictor(const String &name); bool changeSplitter(const String &name); + bool changeFilter(const String &name); void autoConversion(); bool pluginCheck(HonokaPluginBase *p); WideString getPosPerCount(int p,int c);