複数プラグインを束ねるプラグイン実装。
1 parent fdefefe commit ca575ed31983d74551bf232f552968fa96adbb47
@tamra tamra authored on 18 Jun 2005
Showing 5 changed files
View
6
honoka/src/Makefile.am
-DHONOKA_ICON_FILE=\"@SCIM_ICONDIR@/honoka.png\" \
-DHONOKA_PLUGINDIR=\"@SCIM_MODULEDIR@/honoka\"
 
noinst_HEADERS = honoka_imengine.h wnnproto.h romkan.h romkan_table.h \
wnnconversion.h honoka_def.h kanainput.h anthyconversion.h multiconvertor.h skkdic.h \
skkdicconversion.h
wnnconversion.h honoka_def.h kanainput.h anthyconversion.h multiconvertor.h skkdic.h \
skkdicconversion.h honokamultiplepluginbase.h
 
moduledir = @SCIM_MODULEDIR@/IMEngine
module_LTLIBRARIES = honoka.la
 
libhonokainclude_HEADERS = convertor.h preeditor.h honokapluginbase.h honokakeyeventlist.h
 
lib_LTLIBRARIES = libhonoka_plugin.la
libhonoka_plugin_la_SOURCES = convertor.cpp honokapluginbase.cpp preeditor.cpp \
honokakeyeventlist.cpp
honokakeyeventlist.cpp honokamultiplepluginbase.cpp
libhonoka_plugin_la_CFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@
libhonoka_plugin_la_CXXFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@
libhonoka_plugin_la_LDFLAGS = @LIBTOOL_EXPORT_OPTIONS@ @INTLLIBS@ @SCIM_LIBS@
 
View
35
honoka/src/honoka_imengine.cpp
//if (plugins.find(p->getName()) != plugins.end()) {
if (pluginNameList.find(p->getName()) != pluginNameList.end()) {
deleteInstance(p);
dlclose(plugin);
} else
// Convertorの場合。
if (p->getPluginType() == "Convertor") {
convertors.push_back(static_cast<Convertor *>(p));
//plugins.insert(pair<String,HonokaPluginEntry>(p->getName(),pe));
} else
if (p->getPluginType() == "Multiple") {
plugins.push_back(pe);
pluginNameList.insert(p->getName());
for(unsigned int i = 0;i < static_cast<HonokaMultiplePluginBase *>(p)->getPluginCount();i++)
pluginCheck(static_cast<HonokaMultiplePluginBase *>(p)->getPluginInstanceAt(i));
} else
// PreEditorの場合。
if (p->getPluginType() == "PreEditor") {
preeditors.push_back(static_cast<PreEditor *>(p));
//plugins.insert(pair<String,HonokaPluginEntry>(p->getName(),pe));
if (pluginCheck(p)) {
plugins.push_back(pe);
pluginNameList.insert(p->getName());
} else {
// どちらでもなければ…。
deleteInstance(p);
dlclose(plugin);
}
} else {
m_multi = new MultiConvertor(_scim_config,this);
// 初期化へ。
init();
}
bool HonokaInstance::pluginCheck(HonokaPluginBase *p) {
 
// Convertorの場合。
if (p->getPluginType() == "Convertor") {
convertors.push_back(static_cast<Convertor *>(p));
return true;
} else
// PreEditorの場合。
if (p->getPluginType() == "PreEditor") {
preeditors.push_back(static_cast<PreEditor *>(p));
return true;
}
return false;
}
 
HonokaInstance::~HonokaInstance()
{
View
honoka/src/honoka_imengine.h
View
honoka/src/honokamultiplepluginbase.cpp 0 → 100644
View
honoka/src/honokamultiplepluginbase.h 0 → 100644