小窓を実装(実験的に常にON)。
1 parent 5e2092f commit b5eee74e4b51233e98764327b422a52a6455d64e
@tamra tamra authored on 4 Dec 2004
Showing 3 changed files
View
1
■■■■
scim-wnn/src/romkan.cpp
void Romkan::reset()
{
clear();
pos = 0;
mode = ROMA;
}
 
 
/*!
View
42
scim-wnn/src/scim_wnn_imengine.cpp
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) {
View
scim-wnn/src/scim_wnn_imengine.h