SSブログ

Mac用USBデバイス-96 USB DesimpのUI設計を始める [Mac用USBデバイス工作]

前回まででCocoaバインディングのざっくりとした技術的なバックグラウンドのおさらいをした。概念的にはわかったということにして、Cocoaバインディングがどういう場面で使えるかを見るためにUSB DesimpのUser Interfaceを具体的に設計してみる。

5.2  USB DesimpのUI設計

イメージとしてはマスタ・ディテール型のI/O KitでいじったIORegistryExplorerのような感じにしよう。 左にデスクリプタが並んで、そのひとつをセレクトすると右にその内容が表示されて、編集ができる。デスクリプタは入れ子関係があるので表示はNSOutlineViewを使うのがいいだろう。右のディテールはデスクリプタごとにビューペインを作って、NSTabViewに表示させるか。Interface Builderで部品を並べた感じが図-8。
0426fig8.png
最初は最低限必要なデスクリプタがあってデフォルトの値が入っているとしよう。必要最低限とは
  • Device
  • Configurationひとつ
  • Interfaceひとつ
  • Endpointひとつ
  • Stringの0番目
ということになるか。Configuration、Interface、Endpointは追加/削除できる。セレクトされた位置によってはDevice_QualifierとOther_Speedが追加できる。セレクトされるとその詳細が右に表示される。表示はデスクリプタごとに違っているのでそれぞれをリソースにして追加されるたびにロードする。

Stringデスクリプタは、0番目の言語を指定する以外は、右側のビューに文字列を追加すれば作られてStringデスクリプタだけを明示的に作れるようにはしないでおく。Stringデスクリプタ0に言語を追加すると文字列もその数だけ入力要求するようにする。また、自動的に決まるデスクリプタの長さや例えばInterfaceが持っているEndpointの数なんかはもちろん自動的に埋まって、ユーザには書き換えられないようにする。

書類のセーブは、
  1. 構造そのものを保存
  2. ソースファイルを保存
の2種類がある。構造そのものを保存した場合、後で編集できる。これはやっぱりxmlだろうな。ソースファイルとして保存すればsdccで読み込んでデスクリプタの記述ソースとして使えるようになるが、編集はそのソースをテキストファイルとして編集できるだけになる。ソースの形を読み込んで編集できるようにすれば便利だけど、それは大変なのでやめる。ソースはCのコードを吐くようにしよう。アセンブラを吐く方が簡単なのかな。ソースのエントリポイントや変数の名前なんかは詳細ペインで同時に入力させるようにする。

まあこんなもんだろ。ここまでやれば普通はCore Dataを一緒に使う方が簡単だろう。でも、Core Dataはいかにもデータベースという感じで、普段Cなんかを使っているプログラマにとってはかなり大味。Core Dataにマッチしたデータ構造なら非常に簡単でUI設計まで自動化できる。データが最終的にテーブルかテーブルのツリーとして表現できるような、例えばよくある組織と所属社員のデータのようなものだったら簡単なんだけど、ちょっと違うこと、例えばなんだろ、社員の趣味の内容を保持するような場合(結局一人々々別々の属性を用意するか、単なる文字列にするしかない)は一気に面倒になる。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立04/26献立04/27 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。