diff --git a/honoka/src/convertor.cpp b/honoka/src/convertor.cpp index 1b407b4..7b82263 100644 --- a/honoka/src/convertor.cpp +++ b/honoka/src/convertor.cpp @@ -23,84 +23,117 @@ Convertor::Convertor(ConfigPointer cfg) : HonokaPluginBase(String("Convertor")) { + // cfg�ץ�ѥƥ���Ȥä�SCIM������˥���������ǽ�Ǥ��� config = cfg; } Convertor::~Convertor() { + // ��������λ������ǥ��ȥ饯���˽񤭤ޤ��礦�� } bool Convertor::isConnected() { + // �����Ф���³�Ǥ��Ƥ��뤫�ɤ���������å�����᥽�åɡ� + // ������/���饤����ȷ��Ǥʤ��Ѵ����󥸥�ξ��Ͼ��true���֤����ɤ��Ǥ��� return false; } void Convertor::reset(){ + // reset�᥽�åɡ� + // ���Υ᥽�åɤ��ƤФ��ޤǤ��Ѵ������Ȱ����ޤ��� return; } void Convertor::setYomiText(WideString yomi) { + // �ɤߤ򥻥åȤ��ޤ��� return; } int Convertor::ren_conversion() { + // Ϣʸ���Ѵ��򳫻Ϥ��ޤ��� return 0; } WideString Convertor::getText() { + // �Ѵ���Υƥ����Ȥ򥲥åȤ��ޤ��� + // �������������ä����Ϥ��θ�Υƥ����Ȥ��֤��褦�ˤ��ޤ��� return WideString(); } int Convertor::setPos(int p){ + // ���ܤ���ʸ����֤򥻥åȤ��ޤ���0���鳫�Ϥ��ޤ��� return 0; } int Convertor::getPos() { + // ����ʸ����ֹ���֤��ޤ���0�����ֺ��Ǥ��� return 0; } ResultList Convertor::getResultList(int p,int kt){ + // ����ʸ��p���Ф���kt�ȸ����Ѵ���ˡ���Ѵ����� + // �Ѵ���̤θ���򤹤٤�ResultList��������֤��Ʋ������� + // ����/���顼�����ϸ���̵����ResultList���֤����ɤ��Ǥ��� return ResultList(); } ResultList Convertor::getYosokuList(const WideString &str) { + // ͽ¬�ѡ� + // ���δؿ��Ϥ⤦�Ȥ�ʤ��Dz�������ʬΥͽ��Ǥ��� return ResultList(); } bool Convertor::select(int p) { + // ���ߤ�����ʸ��θ����ֹ�p�����򤷤ޤ��� return false; } AttributeList Convertor::getAttributeList() { + // getText���Ф���Attribute���֤��ޤ��� return AttributeList(); } bool Convertor::resizeRegion(int w) { + // ����ʸ��������ϰϤ���ꤷ�ޤ���w�������ͤ���ꤷ�ޤ��� return false; } void Convertor::updateFrequency() { + // ���٤򹹿����������񤤤Ʋ������� + // select�Ǥ����ٹ����򤹤٤��ǤϤʤ��Ȼפ��ޤ����Ŀ�Ū�ո��� return; } bool Convertor::connect() { + // �����Ф���³���������񤭤ޤ��� + // ���פʤ�true���֤����ɤ��Ǥ��� return false; } void Convertor::disconnect() { + // �����Ф�����³�����Ǥ��������񤭤ޤ��� return; } int Convertor::getCaretPos() { + // �Ѵ����Υ����åȤΰ��֤���ꤷ�ޤ��� + // SCIM�ξ��lookupTable�ϥ����åȤΰ��֤�ɽ�������褦�ʤΤ� + // ���δؿ��Ǥ��ΰ��֤򤭤�ޤ��� return 0; } String Convertor::getName() { + // ̾�����֤��Ʋ������� + // ɬ����ˡ����ʤ�Τ���ꤷ�ޤ��礦�� return String("Convertor"); } String Convertor::getPropertyName() { + // �ץ�ѥƥ���ɽ�������̾�����֤��Ʋ������� + // �ġ���С���ɽ�������ΤǤǤ����û�������ɤ������Τ�ޤ��� + // �����λ���ǡ���ˡ����ʤ�Τ���ꤷ�ޤ��礦�� return getName(); } diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index 69ba8ea..68b57d3 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -199,39 +199,50 @@ // �ץ饰�����ɤ߹�����ʬ�� // while((entry = readdir(dir)) != NULL) { + // �ޤ�̾������ꤷ�ޤ��� String d = entry->d_name; if ((d.substr(0,6) == "plugin") && (d.substr(d.length() - 3,3) == ".so")) { if (!_scim_config->read(String(HONOKA_CONFIG_PLUGINLOADER_PREFIX) + "/" + d.substr(0,d.length() - 3),true)) continue; d = String(HONOKA_PLUGINDIR) + "/" + d; + // �ºݤ˥��ɤ��ޤ��� void* plugin = dlopen(d.c_str(), RTLD_LAZY); if (!plugin) continue; + // �ؿ���ȴ�����ޤ��� createInstanceFunc *getInstance = (createInstanceFunc *)dlsym(plugin,"getHonokaPluginInstance"); deleteInstanceFunc *deleteInstance = (deleteInstanceFunc *)dlsym(plugin,"deleteHonokaPluginInstance"); getPluginVersionFunc *getPluginVersion = (getPluginVersionFunc *)dlsym(plugin,"getHonokaPluginVersion"); + // �ؿ�����­�������ϥ�����ɤ��ޤ��� if ((!getInstance) || (!deleteInstance) || (!getPluginVersion)) { dlclose(plugin); continue; } + // �С����������å����ޤ��� if (getPluginVersion() == HONOKA_PLUGIN_VERSION) { + // �����ʤꥤ�󥹥��󥹤򥲥Ȥ��ޤ��� HonokaPluginBase *p = getInstance(_scim_config); + // �ץ饰�����������Ƥ����ޤ��� HonokaPluginEntry pe; pe.filename = d; pe.createInstance = getInstance; pe.deleteInstance = deleteInstance; pe.getPluginVersion = getPluginVersion; + // Ʊ̾�Υץ饰���󤬤��ä����ϥ��ɤ���ߤ��ޤ��� if (plugins.find(p->getName()) != plugins.end()) { deleteInstance(p); dlclose(plugin); } else + // Convertor�ξ�硣 if (p->getPluginType() == "Convertor") { convertors.push_back(static_cast(p)); plugins.insert(pair(p->getName(),pe)); } else + // PreEditor�ξ�硣 if (p->getPluginType() == "PreEditor") { preeditors.push_back(static_cast(p)); plugins.insert(pair(p->getName(),pe)); } else { + // �ɤ���Ǥ�ʤ���Сġ� deleteInstance(p); dlclose(plugin); } @@ -241,12 +252,15 @@ } } } + // �ץ饰���󤬤ʤ���Хǥե����㵡ǽ�ʥ١������饹��Ȥ��ޤ��� if (!convertors.size()) convertors.push_back(new Convertor(_scim_config)); if (!preeditors.size()) preeditors.push_back(new PreEditor(_scim_config)); - + + // �������Convertor/PreEditor����ꤷ�ޤ��� m_convertor = convertors.at(0); m_preeditor = preeditors.at(0); + // ������ء� init(); } @@ -264,6 +278,8 @@ */ void HonokaInstance::init() { + // ������� + m_conversion = false; m_yosoku = false; m_lookup = false; @@ -391,6 +407,7 @@ */ void HonokaInstance::changePreEditor(const String &name) { + // PreEditor���ѹ�����᥽�åɡ� for(unsigned int i = 0;i < preeditors.size();i ++) { if (preeditors[i]->getPropertyName() == name) { m_preeditor = preeditors[i]; @@ -407,7 +424,7 @@ */ void HonokaInstance::changeConvertor(const String &name) { - //if (m_conversion) return; + // Convertor���ѹ�����᥽�åɡ� for(unsigned int i = 0;i < convertors.size();i ++) { if (convertors[i]->getPropertyName() == name) { m_convertor = convertors[i]; @@ -423,6 +440,7 @@ */ void HonokaInstance::updateProperty() { + // �ץ�ѥƥ��򹹿�����᥽�åɡ� if (m_proplist.empty()) { Property p; p = Property(HONOKA_PROP_INPUTMODE,"",String(""),_("input mode")); @@ -477,6 +495,8 @@ */ void HonokaInstance::updatePreEditor() { + // PreEditor�򹹿�����᥽�åɡ� + // ���ˤ˸ƤФ�ޤ��� if (m_preeditor->getTextLength()) { if (auto_conversion && (m_preeditor->getTextLength() == m_preeditor->getPos())) autoConversion(); @@ -485,6 +505,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()); @@ -503,6 +524,7 @@ hide_preedit_string(); hide_lookup_table(); } + // mini_status�ѥ����ɡ��������� if (mini_status) { update_aux_string(utf8_mbstowcs(m_preeditor->getModeName())); show_aux_string(); @@ -517,6 +539,7 @@ */ void HonokaInstance::updateConversion() { + // �Ѵ�����ɽ�������� update_preedit_string(m_convertor->getText(),m_convertor->getAttributeList()); update_preedit_caret(m_convertor->getCaretPos()); if (m_lookup) { @@ -533,6 +556,7 @@ bool HonokaInstance::process_key_event (const KeyEvent& key) { + // �������٥�Ƚ����� if (key.is_key_release()) return false; KeyEvent ke = key; if (ke.mask & SCIM_KEY_CapsLockMask) ke.mask -= SCIM_KEY_CapsLockMask; @@ -549,6 +573,7 @@ */ bool HonokaInstance::process_preedit_key_event(const KeyEvent &key) { + // PreEdit���Υ������٥�ȡ� // PreEditor�Υ������٥�ȥեå��� if (m_preeditor->keyEventHook(key)) { updatePreEditor(); @@ -695,6 +720,8 @@ */ bool HonokaInstance::process_conversion_key_event(const KeyEvent &key) { + // �Ѵ����Υ������٥�Ƚ����� + // �������� if ((key.code == SCIM_KEY_Shift_L) || (key.code == SCIM_KEY_Shift_R) || (key.code == SCIM_KEY_Control_L) || @@ -886,6 +913,7 @@ */ bool HonokaInstance::process_yosoku_key_event(const KeyEvent &key) { + // ͽ¬������Υ������٥�Ƚ����� if (!m_yosoku) { m_yosoku = true; update_preedit_string(m_convList.kouho.at(m_convList.pos)); @@ -911,7 +939,6 @@ update_lookup_table(m_lookup_table); update_preedit_string(m_convList.kouho.at(m_convList.pos)); update_preedit_caret(0); -// select_candidate((unsigned int)m_convList.pos); updateProperty(); return true; } else @@ -1035,6 +1062,7 @@ void HonokaInstance::focus_out () { + // �ե��������򼺤ä��������ƥ��ߥåȡ��� if (m_conversion) { commit_string(m_convertor->getText()); m_convertor->updateFrequency(); @@ -1078,6 +1106,7 @@ */ void HonokaInstance::startConversion(WideString s) { + // �Ѵ����Ͻ����� // ����lookup�Ͼä��Ƥ������� m_def_convertor = m_convertor; if (!s.length()) s = yomi; @@ -1122,6 +1151,7 @@ */ void HonokaInstance::autoConversion() { + // ��ư�Ѵ����������ɡ� if (!m_convertor->isConnected()) { if (!m_convertor->connect()) { update_aux_string(utf8_mbstowcs(String(_("could not connect to jserver.")))); @@ -1155,6 +1185,7 @@ */ void HonokaInstance::createLookupTable(ResultList cList) { + // ����������롣 hide_lookup_table(); m_lookup_table.clear(); if (!cList.count) return; @@ -1171,6 +1202,7 @@ */ void HonokaInstance::startLookup() { + // ���������ɽ�����롣 createLookupTable(m_convList); if (m_convList.count == 0) return; m_lookup = true;