From: Tomohiro K. <ku...@de...> - 2003-02-22 23:19:01
|
久保田です。 From: Araki Ken <ara...@us...> Subject: Re: [Mlterm-dev-ja] mlconfig writes every settings Date: Sun, 23 Feb 2003 05:22:00 +0900 > mc_io 内部に save_str と set_str の二つをもつかどうかは、mc_set_xxx_str() > か mc_flush() のどちらに int save 引数をもたせるかという問題であって、 > OK なり apply なりを押下した場合に「save すべき変更項目と set すべき変更項 > 目が異なること」があるかどうかという問題とは関係ないです。 はい。ぼくのパッチでは、バッファをひとつに統一してしまいました。 ですので、int save は mc_flush() に対して指定するようになっています。 (int save というか、mc_io_t save としましたが)。 > 久保田さんのパッチをみてみましたが、これでは、 > 一箇所変更(A) -> apply -> もう一箇所変更(B) -> OK > した場合に、設定ファイルに (A) の変更が書きこまれないと思います。 たしかに、その通りです。自分で作ったものを使っていると、書き込まれた ほうがいいように思ってきました。 たとえば、各ヴィジェットに、old_xxx と new_xxx 以外に is_changed という フラグを持たせ、old_xxx と new_xxx が違っていれば is_changed を 1 にする (が、old_xxx と new_xxx がふたたび一致しても is_changed を 0 にしない) というので、どうでしょうか? ただし、この場合、 ある箇所を変更(A) -> apply -> その箇所をもとにもどす(A') -> OK の場合でも、もとの A' の設定がファイルに書き込まれてしまいますが、 これは仕様としても OK だと思います。 さらに、ほとんどのヴィジェットは、new_* の値の更新を、その ヴィジェットが操作された時点で行いますが、ぼくが追加した mc_flags.[ch] ヴィジェットは、mc_update_flag_mode() 呼び出し 時に new_* を更新します。したがって、 ある箇所を変更(A) -> その箇所をもとにもどす (A'') -> OK としたときに書き込まれるかどうかが、違ってきてしまうはずです。 (mc_flags.[ch] は、書き込まれません。それ以外は、書き込まれます)。 これは問題だと思います。どちらかに統一したほうがいいと思うのですが、 たとえば mc_flags.[ch] のほうを変更するとした場合、 mc_flags_selected() というのを作ったとして、それは 7 つの ヴィジェットで共用しているのですが、どのヴィジェットが操作 されているのか (int id に相当する情報) を知ることが必要です。 (いま考えているのは、GtkWidget *widget が、widget[id] と一致 するかどうかを for を使って調べるというものですが、たかが id を知るためだけにループを使うのは美しくないなあ、と)。 なお、 一箇所変更(A) -> apply -> もう一箇所変更(B) -> apply とした場合、2度目の apply で、A の変更要求も出してしまうことになりますが、 これについては、とくに実害はないだろうと思っています。 # うーん、なかなか、オリジナルの製作者にはかなわないなあ。 --- 久保田智広 Tomohiro KUBOTA <ku...@de...> http://www.debian.or.jp/~kubota/ |