Mac用USBデバイス-100 Cocoaバインディング [Mac用USBデバイス工作]
昨日は種類の違うクラスを子要素に追加するようなモデルではNSTreeControllerを使うことがなかなか難しいことがわかった。こういうときは蛸壺サブクラス化を考えるのが常套手段。
ところでこれがUSBデバイスネタのちょうど百個目。いや、だからそれは十進法でキリがいいだけだってば、何度も言ってるように。でも、なんとなくうれしい。
ところでこれがUSBデバイスネタのちょうど百個目。いや、だからそれは十進法でキリがいいだけだってば、何度も言ってるように。でも、なんとなくうれしい。
Mac用USBデバイス-99 Cocoaバインディングを使おう [Mac用USBデバイス工作]
2週間近くほったらかしにしてたら、何やってたかほんとにきれいさっぱり忘れた。「鋭い忘却力!」なんて言って笑ってられない、マジで。昨日丸一日かけて思い出す努力をした。
USBのデスクリプタを自動生成するアプリを書こうとしていた。UIリッチなアプリになるのでなるべく簡単になるようにCocoaバインディングのコントローラクラスであるNSTreeControllerを使って記述量を減らそうと思ったが、なかなか勝手な構造のクラス定義ではうまくいかない。モデルが内在する構造とNSTreeControllerが期待する構造とにギャップがあると、何らかの形でその間の調整をする必要がある。
USBのデスクリプタを自動生成するアプリを書こうとしていた。UIリッチなアプリになるのでなるべく簡単になるようにCocoaバインディングのコントローラクラスであるNSTreeControllerを使って記述量を減らそうと思ったが、なかなか勝手な構造のクラス定義ではうまくいかない。モデルが内在する構造とNSTreeControllerが期待する構造とにギャップがあると、何らかの形でその間の調整をする必要がある。
Mac用USBデバイス-98 やっぱりNSMutableArrayじゃなきゃ [Mac用USBデバイス工作]
昨日NSTreeControllerのcontentとして、NSMutableArrayと同じ振る舞いをするLISPのCons Cellのようなリンクトリストを使おうとしたが実はそれはうまくいかなかった。なぜなのか。
Mac用USBデバイス-97 USB UI設計 [Mac用USBデバイス工作]
昨日、ユーザインターフェイスのスタイルを考え始めた。あんまりそういうところに労力を使ったことがないので頭の回転がさらに遅くなってしまう。
Cocoaバインディングを使えるようにしてなるべく簡単にすませたい。でも貧乏性なものでメモリの使用量が見やすいリンクトリストのようなものが使えるようにしたい。でもそれには制限があることがわかった。
Cocoaバインディングを使えるようにしてなるべく簡単にすませたい。でも貧乏性なものでメモリの使用量が見やすいリンクトリストのようなものが使えるようにしたい。でもそれには制限があることがわかった。
Mac用USBデバイス-96 USB DesimpのUI設計を始める [Mac用USBデバイス工作]
前回まででCocoaバインディングのざっくりとした技術的なバックグラウンドのおさらいをした。概念的にはわかったということにして、Cocoaバインディングがどういう場面で使えるかを見るためにUSB DesimpのUser Interfaceを具体的に設計してみる。
Mac用USBデバイス-93 Cocoaバインディング [Mac用USBデバイス工作]
EZ-USBを動作させるためには、デスクリプタを記述しないといけないが、記述量はかなり多いということがわかった。そこで自動生成するようなUSB Desimpというソフトを作ることにした。ところが、これはUI(ユーザインターフェイス)リッチなアプリになる。僕はいままで数値計算用のソフトばかり書いてきたのでUIはなおざりにしてきた。
先日のSpaghettiMazeMakerでは「詳細設定パネル」でCocoaバインディングを使った。メインウィンドウが切り替わったときに、そのパネルに反映されるようにするのをターゲット/アクションで書こうとするとかなり大変だけど(コントローラ側はメインウィンドウが切り替わった通知をもらって、パネル側はFirst Responderへのアクションとして)、Cocoaバインディングを使えばInterface Builderでの設定だけでできてしまう。めちゃめちゃ簡単だということがよくわかった。
その伝で今回も行こう。詳細設定パネルぐらい簡単になればいいんだけど。まず、Cocoaバインディングの技術的な基礎について。
先日のSpaghettiMazeMakerでは「詳細設定パネル」でCocoaバインディングを使った。メインウィンドウが切り替わったときに、そのパネルに反映されるようにするのをターゲット/アクションで書こうとするとかなり大変だけど(コントローラ側はメインウィンドウが切り替わった通知をもらって、パネル側はFirst Responderへのアクションとして)、Cocoaバインディングを使えばInterface Builderでの設定だけでできてしまう。めちゃめちゃ簡単だということがよくわかった。
その伝で今回も行こう。詳細設定パネルぐらい簡単になればいいんだけど。まず、Cocoaバインディングの技術的な基礎について。
Mac用USBデバイス-92 デスクリプタの生成 [Mac用USBデバイス工作]
前回まででUSBの標準デスクリプタを整理した。たくさんあるし、汎用的なデータ構造が使えないのでいちいち定義しないといけない。面倒だし1ビット違っただけでUSB機器として機能しなくなってしまうということになる。いや、もちろん普通のソフトでも1ビット違えば機能しなくなるんだけど、冗長性を持たすことがまったくできない。これはちゃんと自動生成する方法を考えないといけない。
Mac用USBデバイス-91 IIDCドライバ [Mac用USBデバイス工作]
昨日まででUSBの標準デスクリプタのおさらいがやっと終わった。これをいちいち手動で書いていたらぜったい頭が禿げる。
それはそうとして、しばらく前に一段落させたFireWire接続のIIDCカメラ用ドライバがちょっとだけバージョンアップ。
それはそうとして、しばらく前に一段落させたFireWire接続のIIDCカメラ用ドライバがちょっとだけバージョンアップ。