diff --git a/honoka/plugins/nicolainput.cpp b/honoka/plugins/nicolainput.cpp index b2beabb..e0fb916 100644 --- a/honoka/plugins/nicolainput.cpp +++ b/honoka/plugins/nicolainput.cpp @@ -46,24 +46,31 @@ { HonokaSetupPage *page = new HonokaSetupPage(_("Nicola-plugin"),"",""); page->append(new HonokaSetupKeyItem( - _("Left KANA-Shift keys:"), + _("_Left KANA-Shift keys:"), HONOKA_CONFIG_NICOLAINPUT_LSHIFT, "", HONOKA_DEFAULT_NICOLAINPUT_LSHIFT )); page->append(new HonokaSetupKeyItem( - _("Right KANA-Shift keys:"), + _("_Right KANA-Shift keys:"), HONOKA_CONFIG_NICOLAINPUT_RSHIFT, "", HONOKA_DEFAULT_NICOLAINPUT_RSHIFT )); page->append(new HonokaSetupIntItem( - _("Simultaneously press timer:"), + _("_Simultaneously press timer:"), HONOKA_CONFIG_NICOLAINPUT_SPTIMER, "", HONOKA_DEFAULT_NICOLAINPUT_SPTIMER, 0,199 )); + page->append(new HonokaSetupFileItem( + _("Nicola _table: "), + HONOKA_CONFIG_NICOLAINPUT_TABLE_FILE, + _("input the path of Nicola table file."), + HONOKA_DEFAULT_NICOLAINPUT_TABLE_FILE + )); + HonokaSetupPage *sc = new HonokaSetupPage(_("shortcut keys: "),"",""); sc->append(new HonokaSetupKeyItem( _("Nicola input: "), @@ -107,7 +114,7 @@ {SCIM_KEY_u,"��","��","��"}, {SCIM_KEY_i,"��","��","��"}, {SCIM_KEY_o,"��","��","��"}, - {SCIM_KEY_p,",","","��"}, + {SCIM_KEY_p,",","��","��"}, {SCIM_KEY_at,"��","",""}, {SCIM_KEY_bracketleft,"��","","��"}, @@ -147,21 +154,26 @@ delay = cfg->read(HONOKA_CONFIG_NICOLAINPUT_SPTIMER,HONOKA_DEFAULT_NICOLAINPUT_SPTIMER); scim_string_to_key_list(LShiftKey,cfg->read(HONOKA_CONFIG_NICOLAINPUT_LSHIFT,String(HONOKA_DEFAULT_NICOLAINPUT_LSHIFT))); scim_string_to_key_list(RShiftKey,cfg->read(HONOKA_CONFIG_NICOLAINPUT_RSHIFT,String(HONOKA_DEFAULT_NICOLAINPUT_RSHIFT))); + String table = cfg->read(HONOKA_CONFIG_NICOLAINPUT_TABLE_FILE,String(HONOKA_DEFAULT_NICOLAINPUT_TABLE_FILE)); LShift = false; RShift = false; - for(unsigned int i = 0;_nicolaTable[i].key != SCIM_KEY_NullKey;i ++) { - NicolaKey k; - iconvert.convert(k.noShift,_nicolaTable[i].noShift); - iconvert.convert(k.leftShift,_nicolaTable[i].leftShift); - iconvert.convert(k.rightShift,_nicolaTable[i].rightShift); - keymap.insert(pair(_nicolaTable[i].key,k)); + + if (table.length()) loadTable(table); + if (!keymap.size()) { + for(unsigned int i = 0;_nicolaTable[i].key != SCIM_KEY_NullKey;i ++) { + NicolaKey k; + iconvert.convert(k.noShift,_nicolaTable[i].noShift); + iconvert.convert(k.leftShift,_nicolaTable[i].leftShift); + iconvert.convert(k.rightShift,_nicolaTable[i].rightShift); + keymap.insert(pair(_nicolaTable[i].key,k)); + } } - iconvert.convert(vsc,String("��")); - iconvert.convert(svsc,String("��")); - iconvert.convert(vs1,String("�������������������������ĤƤȤϤҤդؤۤѤԤפڤ�")); - iconvert.convert(vs2,String("�����������������������¤ŤǤɤФӤ֤٤ܤФӤ֤٤�")); - iconvert.convert(svs1,String("�ϤҤդؤۤФӤ֤٤�")); - iconvert.convert(svs2,String("�ѤԤפڤݤѤԤפڤ�")); + iconvert.convert(vsc,String("��")); + iconvert.convert(svsc,String("��")); + iconvert.convert(vs1,String("�������������������������ĤƤȤϤҤդؤۤѤԤפڤ�")); + iconvert.convert(vs2,String("�����������������������¤ŤǤɤФӤ֤٤ܤФӤ֤٤�")); + iconvert.convert(svs1,String("�ϤҤդؤۤФӤ֤٤�")); + iconvert.convert(svs2,String("�ѤԤפڤݤѤԤפڤ�")); } @@ -169,6 +181,52 @@ { } + +/*! + \fn Honoka::NicolaInput::loadTable(const String &filename) + */ +bool Honoka::NicolaInput::loadTable(const String &filename) +{ + FILE *f = fopen(filename.c_str(),"r"); + if (!f) { + #ifdef HONOKA_DATADIR + String fn = HONOKA_DATADIR; + fn += "/" + filename; + f = fopen(fn.c_str(),"r"); + if (!f) return false; + #else + return false; + #endif + } + + while(-1) { + char s[256]; + if(fgets(s,256,f) == NULL) break; + String l = s; + unsigned int p = 0; + vector t; + for(unsigned int i = 0;i < l.length();i ++) { + if ((l[i] == '\t') || (l[i] == '\n')) { + t.push_back(l.substr(p,i - p)); + p = i + 1; + } + } + if (p < l.length()) t.push_back(l.substr(p)); + if (t.size() != 4) continue; + KeyEvent k; + NicolaKey n; + n.noShift = utf8_mbstowcs(t[1]); + n.leftShift = utf8_mbstowcs(t[2]); + n.rightShift = utf8_mbstowcs(t[3]); + scim_string_to_key(k,t[0]); + keymap.insert(pair(k,n)); + } + fclose(f); + if (keymap.size()) return true; + return false; +} + + /*! \fn NicolaInput::getModeName() */ @@ -288,3 +346,4 @@ } return false; } + diff --git a/honoka/plugins/nicolainput.h b/honoka/plugins/nicolainput.h index 7caebb2..d6a2cc4 100644 --- a/honoka/plugins/nicolainput.h +++ b/honoka/plugins/nicolainput.h @@ -35,6 +35,8 @@ #define HONOKA_DEFAULT_NICOLAINPUT_RSHIFT "Henkan" #define HONOKA_CONFIG_NICOLAINPUT_SPTIMER "/IMEngine/Honoka/NicolaInput/SimultaneouslyPressTimer" #define HONOKA_DEFAULT_NICOLAINPUT_SPTIMER 100 +#define HONOKA_CONFIG_NICOLAINPUT_TABLE_FILE "/IMEngine/Honoka/NicolaInput/TableFile" +#define HONOKA_DEFAULT_NICOLAINPUT_TABLE_FILE "" using namespace std; @@ -79,6 +81,8 @@ WideString svs2; long bkt; KeyEvent bk; +protected: + bool loadTable(const String &filename); }; } #endif diff --git a/honoka/po/honoka.pot b/honoka/po/honoka.pot index 1a5fcd0..22f36fd 100644 --- a/honoka/po/honoka.pot +++ b/honoka/po/honoka.pot @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-01-07 03:25+0900\n" +"POT-Creation-Date: 2006-01-10 16:57+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -70,12 +70,12 @@ msgid "REN" msgstr "" -#: src/honoka_imengine.cpp:1503 src/honoka_imengine.cpp:1542 -#: src/honoka_imengine.cpp:1554 +#: src/honoka_imengine.cpp:1508 src/honoka_imengine.cpp:1547 +#: src/honoka_imengine.cpp:1559 msgid "could not connect to server." msgstr "" -#: src/honoka_imengine.cpp:1512 +#: src/honoka_imengine.cpp:1517 msgid "The error was received from Converter. " msgstr "" @@ -403,7 +403,7 @@ msgid "input the path of Roma-Kana convert table file." msgstr "" -#: plugins/romkan.cpp:52 plugins/kanainput.cpp:52 plugins/nicolainput.cpp:67 +#: plugins/romkan.cpp:52 plugins/kanainput.cpp:52 plugins/nicolainput.cpp:74 #: plugins/wnnplugin.cpp:78 plugins/anthyplugin.cpp:46 #: plugins/simpleprediction.cpp:53 plugins/primeprediction.cpp:71 #: plugins/skkdicconversion.cpp:53 plugins/cannaconversion.cpp:57 @@ -454,7 +454,7 @@ msgid "Kana input: " msgstr "" -#: plugins/kanainput.cpp:165 plugins/nicolainput.cpp:177 +#: plugins/kanainput.cpp:165 plugins/nicolainput.cpp:235 msgid "KANA" msgstr "" @@ -467,22 +467,30 @@ msgstr "" #: plugins/nicolainput.cpp:49 -msgid "Left KANA-Shift keys:" +msgid "_Left KANA-Shift keys:" msgstr "" #: plugins/nicolainput.cpp:55 -msgid "Right KANA-Shift keys:" +msgid "_Right KANA-Shift keys:" msgstr "" #: plugins/nicolainput.cpp:61 -msgid "Simultaneously press timer:" +msgid "_Simultaneously press timer:" msgstr "" -#: plugins/nicolainput.cpp:69 +#: plugins/nicolainput.cpp:68 +msgid "Nicola _table: " +msgstr "" + +#: plugins/nicolainput.cpp:70 +msgid "input the path of Nicola table file." +msgstr "" + +#: plugins/nicolainput.cpp:76 msgid "Nicola input: " msgstr "" -#: plugins/nicolainput.cpp:193 +#: plugins/nicolainput.cpp:251 msgid "NICOLA" msgstr "" diff --git a/honoka/po/ja.po b/honoka/po/ja.po index 3e4ea71..ff712e1 100644 --- a/honoka/po/ja.po +++ b/honoka/po/ja.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-01-07 03:25+0900\n" +"POT-Creation-Date: 2006-01-10 16:57+0900\n" "PO-Revision-Date: 2004-12-01 14:29+0900\n" "Last-Translator: TAM (Teppei Tamra) \n" "Language-Team: Japanese\n" @@ -74,12 +74,12 @@ msgid "REN" msgstr "[連]" -#: src/honoka_imengine.cpp:1503 src/honoka_imengine.cpp:1542 -#: src/honoka_imengine.cpp:1554 +#: src/honoka_imengine.cpp:1508 src/honoka_imengine.cpp:1547 +#: src/honoka_imengine.cpp:1559 msgid "could not connect to server." msgstr "サーバに接続できませんでした" -#: src/honoka_imengine.cpp:1512 +#: src/honoka_imengine.cpp:1517 msgid "The error was received from Converter. " msgstr "変換エンジンがエラーを返しよりました。" @@ -407,7 +407,7 @@ msgid "input the path of Roma-Kana convert table file." msgstr "ローマ字かな変換テーブルファイルを指定します" -#: plugins/romkan.cpp:52 plugins/kanainput.cpp:52 plugins/nicolainput.cpp:67 +#: plugins/romkan.cpp:52 plugins/kanainput.cpp:52 plugins/nicolainput.cpp:74 #: plugins/wnnplugin.cpp:78 plugins/anthyplugin.cpp:46 #: plugins/simpleprediction.cpp:53 plugins/primeprediction.cpp:71 #: plugins/skkdicconversion.cpp:53 plugins/cannaconversion.cpp:57 @@ -460,7 +460,7 @@ msgid "Kana input: " msgstr "かな字入力:" -#: plugins/kanainput.cpp:165 plugins/nicolainput.cpp:177 +#: plugins/kanainput.cpp:165 plugins/nicolainput.cpp:235 msgid "KANA" msgstr "[あ]" @@ -473,22 +473,30 @@ msgstr "親指シフトプラグイン" #: plugins/nicolainput.cpp:49 -msgid "Left KANA-Shift keys:" +msgid "_Left KANA-Shift keys:" msgstr "左かなシフトキー(_L):" #: plugins/nicolainput.cpp:55 -msgid "Right KANA-Shift keys:" +msgid "_Right KANA-Shift keys:" msgstr "右かなシフトキー(_R):" #: plugins/nicolainput.cpp:61 -msgid "Simultaneously press timer:" +msgid "_Simultaneously press timer:" msgstr "同時押し判定時間:" -#: plugins/nicolainput.cpp:69 +#: plugins/nicolainput.cpp:68 +msgid "Nicola _table: " +msgstr "親指シフトテーブルファイル:" + +#: plugins/nicolainput.cpp:70 +msgid "input the path of Nicola table file." +msgstr "親指シフトテーブルファイルを指定します" + +#: plugins/nicolainput.cpp:76 msgid "Nicola input: " msgstr "親指シフト入力:" -#: plugins/nicolainput.cpp:193 +#: plugins/nicolainput.cpp:251 msgid "NICOLA" msgstr "親指シフト"