新酷音原有一個簡單的編輯器,可讀寫文字格式的詞庫,可是目前的新酷音使用者詞庫已全面採用二進位格式,
而 Timothy Lin 把原來的編輯器改成可以讀寫目前新酷音的使用者詞庫,並且做了一些修正及改進,現在可進行
一般的編輯了,程式碼請見:
http://code.google.com/p/chewing-hash-editor/
Timothy, 考慮把程式碼搬到 https://github.com/chewing 嗎?可以放在 chewing-utils.git
一類的 repository
Thanks,
-jserv
diff -r d557b1bed938 src/Makefile
--- a/src/Makefile Thu May 03 18:23:17 2012 +0800
+++ b/src/Makefile Sun Jun 03 05:03:26 2012 +0800
@@ -4,7 +4,7 @@
all: che
che: che.o key2pho-utf8.o chewing-utf8-util.o zhuindict.o
- gcc $(LIB_GTK) che.o key2pho-utf8.o chewing-utf8-util.o zhuindict.o -o che
+ gcc che.o key2pho-utf8.o chewing-utf8-util.o zhuindict.o -o che $(LIB_GTK)
zhuindict.o: zhuindict.c
gcc $(CFLAGS) -c zhuindict.c
已將入 github/chewing 成員,請見:
https://github.com/chewing/chewing-utils
建議提交命名為 chewing-utils/hash-editor
然後授權模式比照 libchewing (GNU LGPL),這樣日後若有 hash-editor 的程式碼要整合回去,問題會少一些。
另外,一旦 git 修改遞交後,請一併更新 Issue #8 狀態:
https://github.com/chewing/libchewing/issues/8
請多利用 chewin...@googlegroups.com 作為開發討論。
Thanks,
-jserv
在 2012年6月3日下午6:46,Timothy Lin <lzh...@gmail.com> 寫道:
> jserv 您好,
>
> 我希望可以把新酷音詞庫編輯器的程式碼搬到新酷音的開發網站,剛才稍微瀏覽了
> 一下 https://github.com/chewing,可是找不到 chewing-utils 的 repository
> 在哪裡。平常我用的版本控制系統是 mercurial,對 git 的運作方式還不太清
> 楚,請問要如何找到 chewing-utils.git?另外,如果要 commit 的話應該要有帳
> 號吧,我有申請了一個 github 的帳號,名稱是 lzh9102,是否可以把我加入可以
> commit 的名單?謝謝。
我在 git 做了些更新,追加「開啟預設 uhash」的機制。
另外,執行時期能否不依賴 zhuin.txt 的存在呢?如果我們希望 hash-editor 成為 ibus-chewing,
scim-chewing, gcin-chewing 等輸入法前端的一部分,那麼,我們得事先擺放 zhuin.txt 檔案到
合適的路徑,這多少造成些麻煩。
Thanks,
-jserv
hi Timothy,
這樣不錯,至少解決了 deployment 的問題,不過現在的資料表示法感覺有點累贅:
$ head hash-editor/src/zhuin_data.h
/* this file is generated from zhuin.txt. */
static const struct entry default_data[] = {
{"ˇ", "ˇ"},
{"兀", "ㄨˋ"},
{"㴖", "ㄌㄨㄛˋ"},
{"𠅗", "ㄉㄧㄝˋ"},
{"一", "ㄧ"},
{"丁", "ㄉㄧㄥ"},
{"丂", "ㄎㄠˇ"},
{"七", "ㄑㄧ"},
中文對應到注音符號,應該不需用完整的符號來表示,畢竟符號是有限的,聲母 21 個、韻母 16 個,外加 5 種聲調,可用更精簡的方式來呈現,或許就是一數值。
Thanks,
-jserv
我昨天試著輸入一位哲學家(列維納斯)的名字,意外發現 chewing-utils 新增詞彙的功能有點小問題。再現錯誤的描述如下:
(1) 點選(或 ctrl+N)「新增語詞」。
(2) 輸入「列印」。
(3) 按下「轉成注音」。
此時我們可以發現,「列」這個字呈現為方框,而「印」是好的。
並且,終端機輸出:「(che:31150): Pango-WARNING **: Invalid UTF-8 string passed
to pango_layout_set_text()」
我嘗試了幾個不同的組合,發現在漢字的注音組成為 {聲母 + 介母 + 韻母 + 聲符} 共四個符號的時候,就會出錯。由於聲介韻母各佔
3bytes,聲符佔 2bytes,3*3 + 2=11 > 10,造成 che.c 之 entry_active( ) 的 char
zhuin_buffer[10] 記憶體不當操作,意外覆寫相鄰的 gchar buf[4] 的空間,導致「列」等等的文字崩壞。
可以修正如下:
- char zhuin_buffer[10];
+ char zhuin_buffer[12];
謝謝!
Rifur
> --
> 您已訂閱「Google 網上論壇」的「Chewing IM Development」群組,因此我們特別傳送這封郵件通知您。
> 如要在此群組張貼留言,請傳送電子郵件至 chewin...@googlegroups.com。
> 如要取消訂閱此群組,請傳送電子郵件至 chewing-deve...@googlegroups.com。
> 如需更多選項,請造訪此群組:http://groups.google.com/group/chewing-devel?hl=zh-TW。
>
Thanks! Merged in git commit b70d0740236b7c1061c7c18212d33ffd6db0428e
You can submit git format-patch in mail body as well.
Sincerely,
-jserv
在 chewing-utils 中,按鍵盤方向鍵(上、下)無法捲動詞目,code 其實有註冊 key-press-event,也有處理
scrolling 的函式,不過呼叫的部份卻被遺漏了。
修正方式如下:
diff --git a/hash-editor/src/che.c b/hash-editor/src/che.c
index 732c465..553ab1b 100644
--- a/hash-editor/src/che.c
+++ b/hash-editor/src/che.c
@@ -837,6 +837,7 @@ che_select_prev_phrase()
if (path && gtk_tree_path_prev(path)) {
gtk_tree_model_get_iter(store, &iter, path);
gtk_tree_selection_select_iter(selection, &iter);
+ che_select_row(&iter);
}
gtk_tree_path_free(path);
}
@@ -849,8 +850,10 @@ che_select_next_phrase()
&iter);
if (valid) {
valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
- if (valid)
+ if (valid) {
gtk_tree_selection_select_iter(selection,
&iter); /* select the next item */
+ che_select_row(&iter);
+ }
}
}
謝謝!(上一封還沒打主旨就送出了,不好意思 > <")
Rifur
感謝遞交 patch,已整合,請見 commit d8def8e085d483c6a1e92d2c9a55739982a7dd85
對了,目前似乎沒有處理 Page Up/Down 與滑鼠右鍵,有興趣看看嗎?
Regards,
-jserv