YamaKen
yamak****@bp*****
2004年 5月 17日 (月) 17:27:35 JST
ヤマケンです。 At Mon, 17 May 2004 13:27:38 +0900, ashie****@homa***** wrote: > On Thu, 13 May 2004 17:26:28 +0900 > YamaKen <yamak****@bp*****> wrote: > > > 上記のstruct _uim_configと同様、GUIによる設定項目の構成も静的な > > コードによって実現されていますが、libuimから取得した設定データに > > 応じて未知の設定項目に対しても動的にUIを生成できるようになると便 > > 利なので、custom APIもそれを前提に設計してあります。 > > まずここに反応します。この話を初めて聞いたときから疑問に思っていながら聞 > くのを忘れていましたが、「動的に生成する」というのはどの程度の規模で考え > ておられるのでしょうか? > > 全てのUIを完全に動的に生成するのでしょうか? まず始めに、uimのcustom APIは決してフルセットのUI記述言語を作ろ うというような方向性ではありません。あくまでもuimの設定に限定し た特定用途向けの機構です。 基本的に、現在のSumikaが実装しているuim向け設定画面の構造をその ままトレースしたような構成で設定項目をまとめています。私が「UI生 成」と言っているのは基本的に以下のような処理の事です。Schemeのコー ドで例示していますが、各APIのC版がuim-scm.hに用意されています。 1. 設定項目のグループを取得し、ここで得られた各グループに対応す るタブを生成する (custom-list-primary-groups) => (global anthy canna skk prime other-ims spellcheck) (custom-group-label 'anthy) => "Anthy" (custom-group-desc 'anthy) => "long description will be here." 2. 各グループに属する設定項目のリストを取得する (custom-collect-by-group 'anthy) => (anthy-segment-separator anthy-show-segment-separator? anthy-nr-candidate-max anthy-candidate-op-count anthy-use-candidate-window?) 3. 各項目毎に必要な情報を取得し、それに応じたwidgetを各グループ のタブに追加。タイプとwidgetの対応はintegerならspinbox、 booleanならcheckbox等、一対一 - 設定項目のタイプ (custom-type 'anthy-nr-candidate-max) => integer - 設定可能な値の範囲 (custom-range 'anthy-nr-candidate-max) => (1 20) - 現在の設定値 (custom-value 'anthy-nr-candidate-max) => 10 - 設定項目の説明 (custom-label 'anthy-nr-candidate-max) => "Number of candidates in candidate window at a time" - 設定項目の詳細説明 (custom-desc 'anthy-nr-candidate-max) => "long description will be here." > あるいは「キー設定一覧」のように、ある程度一まとまりの設定を動的に取得す > るという雰囲気でしょうか? キー設定については[Sumika-devel 21]で触れたようにまだ迷っている 部分があるんですが、基本的に他の設定項目と同様の扱いで単に設定項 目のタイプが「キー」と定義されているだけにする予定です。これに対 応するwidgetはkey capturing等に対応した専用のものが用意される事 を想定しています。 AnthyやSKKといったIM毎のタブの他に「キー設定一覧」のようなタブを 用意して各IMのキーバインドを横断的に設定できた方が便利かもしれま せんが、それを実現する場合もuim側で設定項目のグルーピングを調整 する事で実現し、Sumika側はあくまでもuimから渡された情報に応じて 受動的にタブとwidgetを生成するだけで済むようにしたいと思います。 > いずれにしても、あまりやり過ぎると、おもてさんが仰っているようにリストで > 表示する(Mozillaのabout:configのように)以外に手が無くなってしまうので、 > 完全にUIを生成するという線は無いとは思っているのですが... 設定項目が多すぎて収まりが悪い場合はuim側でグループを分け直す等 の対策を取って、Sumika側ではなるべく個別対応を無くしたいと考えて います。 ただ、自動生成にこだわるあまりコードが複雑になってしまっては本末 転倒なので、特定の設定項目やグループについて個別対応するのはアリ だと思います。例えば"Advanced settings"や"Key bindings" といった グループを特別扱いして専用のUIでハンドリングするのは現実的だと思 います。 他にも疑問点などあったらどんどん聞いて下さい。 ------------------------------- ヤマケン yamak****@bp*****