diff --git a/honoka/src/Makefile.am b/honoka/src/Makefile.am index 75d2a34..ec59255 100644 --- a/honoka/src/Makefile.am +++ b/honoka/src/Makefile.am @@ -32,7 +32,7 @@ moduledir = @SCIM_MODULEDIR@/IMEngine module_LTLIBRARIES = honoka.la -honoka_la_SOURCES = honoka_imengine.cpp romkan.cpp kanainput.cpp +honoka_la_SOURCES = honoka_imengine.cpp honoka_la_CFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ honoka_la_CXXFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ @@ -82,7 +82,7 @@ endif plugindir = @SCIM_MODULEDIR@/honoka -plugin_LTLIBRARIES = $(ANTHY_PLUGIN) $(WNN_PLUGIN) +plugin_LTLIBRARIES = $(ANTHY_PLUGIN) $(WNN_PLUGIN) plugin-romkan.la plugin-kanainput.la plugin_anthy_la_SOURCES = anthyconversion.cpp plugin_anthy_la_CFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ @@ -96,3 +96,16 @@ plugin_wnn_la_LDFLAGS = -avoid-version -module -rpath $(plugindir) @LIBTOOL_EXPORT_OPTIONS@ @INTLLIBS@ @SCIM_LIBS@ @WNN_LIBS@ plugin_wnn_la_LIBADD = $(top_builddir)/src/libhonoka_plugin.la +plugin_romkan_la_SOURCES = romkan.cpp +plugin_romkan_la_CFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ +plugin_romkan_la_CXXFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ +plugin_romkan_la_LDFLAGS = -avoid-version -module -rpath $(plugindir) @LIBTOOL_EXPORT_OPTIONS@ @INTLLIBS@ @SCIM_LIBS@ +plugin_romkan_la_LIBADD = $(top_builddir)/src/libhonoka_plugin.la + +plugin_kanainput_la_SOURCES = kanainput.cpp +plugin_kanainput_la_CFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ +plugin_kanainput_la_CXXFLAGS = @SCIM_CFLAGS@ @SCIM_DEBUG_FLAGS@ +plugin_kanainput_la_LDFLAGS = -avoid-version -module -rpath $(plugindir) @LIBTOOL_EXPORT_OPTIONS@ @INTLLIBS@ @SCIM_LIBS@ +plugin_kanainput_la_LIBADD = $(top_builddir)/src/libhonoka_plugin.la + + diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index dcb2bf2..2d587c6 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -190,9 +190,7 @@ : IMEngineInstanceBase (factory, encoding, id) { m_iconv.set_encoding ("EUC-JP"); - preeditors.push_back(new Romkan(_scim_config)); - preeditors.push_back(new KanaInput(_scim_config)); - m_preeditor = preeditors.at(0); + DIR *dir = opendir(HONOKA_PLUGINDIR); if (dir) { struct dirent *entry; @@ -207,20 +205,24 @@ dlclose(plugin); continue; } - convertors.push_back(static_cast(getInstance(_scim_config))); + HonokaPluginBase *p = getInstance(_scim_config); + if (p->getPluginType() == "Convertor") { + convertors.push_back(static_cast(p)); + } else + if (p->getPluginType() == "PreEditor") { + preeditors.push_back(static_cast(p)); + } else { + delete p; + dlclose(plugin); + } } } } if (!convertors.size()) convertors.push_back(new Convertor(_scim_config)); - /* - #ifdef HAVE_LIBWNN - convertors.push_back(new WnnConversion(_scim_config)); - #endif - #ifdef HAVE_LIBANTHY - convertors.push_back(new AnthyConversion(_scim_config)); - #endif - */ + if (!preeditors.size()) preeditors.push_back(new PreEditor(_scim_config)); + m_convertor = convertors.at(0); + m_preeditor = preeditors.at(0); init(); } diff --git a/honoka/src/honoka_imengine.h b/honoka/src/honoka_imengine.h index b9e2425..aee97d3 100644 --- a/honoka/src/honoka_imengine.h +++ b/honoka/src/honoka_imengine.h @@ -29,8 +29,6 @@ #include #include #include -#include -#include #include #include #define Uses_SCIM_ICONV diff --git a/honoka/src/honokapluginbase.cpp b/honoka/src/honokapluginbase.cpp index 1049ec4..bb55427 100644 --- a/honoka/src/honokapluginbase.cpp +++ b/honoka/src/honokapluginbase.cpp @@ -30,4 +30,8 @@ { } +String HonokaPluginBase::getPluginType() +{ + return(type); +} diff --git a/honoka/src/honokapluginbase.h b/honoka/src/honokapluginbase.h index 8a40f9b..218f9a2 100644 --- a/honoka/src/honokapluginbase.h +++ b/honoka/src/honokapluginbase.h @@ -40,8 +40,9 @@ protected: HonokaPluginBase(const String pluginType); - ~HonokaPluginBase(); public: + ~HonokaPluginBase(); + String getPluginType(); private: diff --git a/honoka/src/kanainput.cpp b/honoka/src/kanainput.cpp index 63496f4..099ea3b 100644 --- a/honoka/src/kanainput.cpp +++ b/honoka/src/kanainput.cpp @@ -37,6 +37,9 @@ #define bind_textdomain_codeset(domain,codeset) #endif +// �ץ饤�����󲽤Τ��ޤ��ʤ��Ǥ��� +HonokaPluginRegister(KanaInput); + struct KanaInputKey { int code; const char kana[6]; diff --git a/honoka/src/romkan.cpp b/honoka/src/romkan.cpp index 8dfe023..2589106 100644 --- a/honoka/src/romkan.cpp +++ b/honoka/src/romkan.cpp @@ -37,6 +37,8 @@ #define bind_textdomain_codeset(domain,codeset) #endif +// �ץ饤�����󲽤Τ��ޤ��ʤ��Ǥ��� +HonokaPluginRegister(Romkan); Romkan::Romkan(ConfigPointer cfg) : PreEditor(cfg) {