| |
---|
| | void WnnInstance::init() |
---|
| | { |
---|
| | m_conversion = false; |
---|
| | m_lookup = false; |
---|
| | |
---|
| | // @todo jserverとの接続があれば切るようにすべき。 |
---|
| | mini_status = true; // @todo should read from a config. |
---|
| | |
---|
| | // @todo if connected to jserver, should disconnect this. |
---|
| | |
---|
| | host = _scim_config->read(String(SCIM_CONFIG_WNN_SERVER),String(SCIM_DEFAULT_WNN_SERVER)); |
---|
| | rc = _scim_config->read(String(SCIM_CONFIG_WNN_RC),String(SCIM_DEFAULT_WNN_RC)); |
---|
| | alp = _scim_config->read(String(SCIM_CONFIG_WNN_ALP),SCIM_DEFAULT_WNN_ALP); |
---|
| |
---|
| | show_preedit_string(); |
---|
| | update_preedit_string(m_preeditor->getText()); |
---|
| | update_preedit_caret(m_preeditor->getPos()); |
---|
| | } else hide_preedit_string(); |
---|
| | if (mini_status) { |
---|
| | update_aux_string(utf8_mbstowcs(m_preeditor->getModeName())); |
---|
| | show_aux_string(); |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| |
---|
| | \fn WnnInstance::process_preedit_key_event(const KeyEvent &key) |
---|
| | */ |
---|
| | bool WnnInstance::process_preedit_key_event(const KeyEvent &key) |
---|
| | { |
---|
| | // PreEditorのキーイベントフック。 |
---|
| | if (m_preeditor->keyEventHook(key)) { |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } else |
---|
| | |
---|
| | // バッファが空では無い場合。 |
---|
| | if (m_preeditor->getTextLength()) { |
---|
| | if (k_conversion_start.comp(key)) { |
---|
| | startConversion(m_preeditor->getText(true)); |
---|
| | alp_count ++; |
---|
| |
---|
| | } else |
---|
| | if (k_commit.comp(key)) { |
---|
| | commit_string(m_preeditor->getText(true)); |
---|
| | m_preeditor->reset(); |
---|
| | hide_preedit_string(); |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } else |
---|
| | if (k_forward.comp(key) || k_backward.comp(key)) { |
---|
| | k_backward.comp(key) ? m_preeditor->setPos(m_preeditor->getPos() - 1) : m_preeditor->setPos(m_preeditor->getPos() + 1); |
---|
| |
---|
| | k_backspace.comp(key) ? m_preeditor->backspace(): m_preeditor->del(); |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } else |
---|
| | if (k_cancel.comp(key)) { |
---|
| | if (m_preeditor->cancelEvent()) { |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } |
---|
| | m_preeditor->reset(); |
---|
| | hide_preedit_string(); |
---|
| | return(true); |
---|
| | } else |
---|
| | if (k_convert_hiragana.comp(key)) { |
---|
| | m_preeditor->kataHira(); |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| |
---|
| | m_preeditor->hiraKata(); |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | // バッファの存在にかかわらず。 |
---|
| | if (k_cancel.comp(key)) { |
---|
| | if (m_preeditor->cancelEvent()) { |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } |
---|
| | if (m_preeditor->getTextLength()) { |
---|
| | m_preeditor->reset(); |
---|
| | } |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } |
---|
| | if (isprint(key.code)) { |
---|
| | if (key.mask & (SCIM_KEY_AltMask | SCIM_KEY_ControlMask)) return(false); |
---|
| | // バッファが空の時の行頭スペースは直接入力。 |
---|
| |
---|
| | } else |
---|
| | if (k_cancel.comp(key) || k_backspace.comp(key)) { |
---|
| | wnn.reset(); |
---|
| | m_conversion = false; |
---|
| | update_preedit_string(m_preeditor->getText()); |
---|
| | update_preedit_caret(m_preeditor->getPos()); |
---|
| | hide_lookup_table(); |
---|
| | hide_aux_string(); |
---|
| | m_lookup = false; |
---|
| | alp_count = 0; |
---|
| | updatePreEditor(); |
---|
| | return(true); |
---|
| | } else |
---|
| | if (k_conversion_next.comp(key) || k_conversion_prev.comp(key)) { |
---|
| | k_conversion_prev.comp(key) ? m_convList.pos --: m_convList.pos ++; |
---|
| |
---|
| | } |
---|
| | |
---|
| | void WnnInstance::focus_in () |
---|
| | { |
---|
| | if (!m_conversion) updatePreEditor(); |
---|
| | } |
---|
| | |
---|
| | void WnnInstance::focus_out () |
---|
| | { |
---|
| |
---|
| | \fn WnnInstance::startConversion(WideString s) |
---|
| | */ |
---|
| | void WnnInstance::startConversion(WideString s) |
---|
| | { |
---|
| | hide_aux_string(); |
---|
| | if (!m_connected) { |
---|
| | m_connected = wnn.wnnConnect(String("scim-wnn"),host,rc,0); |
---|
| | } |
---|
| | if (!m_connected) { |
---|
| |
---|
| | |