6.24【URL Access ManagerとScroll Text Box】
オンライン版で少し触れたけれど、URL Access Managerを使ってバージョンアップの確認をするルーチンを作成中。ややこしそうだと思っていたのだが、実はむちゃくちゃ簡単だった。
まず、URL Access Managerが使えるかどうかは、URLAccessAvailable()だけで確認できる。MacOS
8.6以降(URLAccessLib 1.0以降)かCarbonLib 1.0以降でサポートされているようなので、それらを確認するという手もあるけど。あ、そうだ。PowerPCか、たぶん68KならCFM
4.0が必要。
確認ができたら、URLNewReference()でURLリファレンスを作成する。引数には、C文字列でURL(http://...)を指定する。あとは、URLDownload()でダウンロード、URLUpload()でアップロードして、最後にURLDisposeReference()でリファレンスを解放して終わり。
ダウンロードの時は、ダウンロードした内容をファイルにするかハンドルにおさめるかを選択できる。今回のケースでは、内容を確認するだけで終わりなのでハンドルにおさめることに。どれだけ容量を確保しておいたらいいのかわからない場合は、大きさが0のハンドルを渡してやると、中で自動的に調整してくれるようだ。また、フラグとしてkURLDisplayProgressFlagを設定しておけば、進行状況まで表示してくれる。なんて親切な関数なんだろう。
今回のケースでは使用していないけど、kURLExpandFileFlagというフラグを設定するとダウンロードしたファイルを自動的に展開してくれるらしい。StuffIt
engineがないとだめみたいだけど、結構使えそうな機能だ。BinHexをデコードするだけなら、kURLDebinhexOnlyFlagというフラグをたてておけばシステムが自動的にしてくれるみたい。
OSのソフトウェアアップデートってたしかに便利なのだけど、バージョンがあがった時になにが変わったのかよくわからないところがなんとも不便だ(いや、私が知らないだけかも知れないけど)。ダイアルアップ環境では、自分に関係のないアップデートに時間をかけるのは大変なのだ。OSの機能だと、「関係ない」っていう可能性はあまりないのかも知れないけど、それでも、なにが変わったのか知りたいと思うし(ただ、現在使っているバージョンとの比較という意味になると、かなり複雑になるのだけど)。
そこで、新しいバージョンがある場合に、変更内容を表示することを考えてみた。変更内容と一言でいっても、たくさんある時もあればあまりない時もある。これをダイアログ内でうまく表示するにはどんな方法があるだろう。
Appearance Manager 1.1(8.5だっけ?)から、Scroll Text Boxというコントロールがサポートされて、編集できないスクロール可能なテキストボックスを簡単に作成できるようになった。ヘッダファイルでは、「アバウトボックスのクレジットなどで使える」と書いてある。どういうものかよくわからないけど、まずは使ってみる。
初期値にTEXTリソースのID、procIDにはkControlScrollTextBoxProcを指定したコントロールを作成……してみたが、なぜかうまく表示されない。作成した後にDrawControls()とかIdleControls()などを呼んでもだめ。思い付く限りのことをいじってみたが結局だめで(X上では表示されるようだが)、試しに自動スクロールバージョンのkControlScrollTextBoxAutoScrollProcを指定してみると、これがまたなぜか表示された。自動的にスクロールしていくのもなんだか変な気もするが、とりあえずこれでいくことにしよう。
スクロールするまでの時間や一度にスクロールする量などは、SetControlData()で指定する。Carbon環境では、作成から設定までを一度にすることができるCreateScrollingTextBoxControl()という便利な関数があるようだ。Carbonのみで作るなら、これを使うのが簡単かな。
さて、アバウトボックスのクレジットの場合なら、TEXTリソースの内容は常に固定でいいが、バージョンアップ時の変更内容の場合はアップロードされているバージョンによって異なる。ということは、変更内容を、TEXTリソースに入れ込むという作業が必要になる。しかし、確認の度にアプリケーションのリソースを変更するというのはあまりやりたくない。そうすると、初期設定ファイル(あるいはテンポラリファイル)にリソースをコピーしてそこからダイアログなどを表示するという流れになる。少々複雑になるが、できないことはなさそうかな。
と、以上のような機能をつけたバージョンをリリースするつもりだったのだけど、他にいくつかバグが見つかったので、その修正までを先にリリースすることに。
アップデートといえば、10.0.4というバージョンが出ているようだけど、私にとって有用なものなのかどうか、、内容を読んでもよくわからなかったり(汗)。
|