Chapter Seventy two

第72話


どうも、梅雨時という季節のためか、プログラム作成が遅々としているが、今回はFileWindow5.llbをベースにして圧縮機能の組み込みについて書いてみよう。

前回の更新時に添付したFileWindow5は、右のパネルのようにパスをたどってディレクトリに含まれるファイル名の表示を行っている。これはNIのreadme.viをもとに拡張子が.zipの場合はZipファイルの集中型ディレクトリを読み取って圧縮されているファイル名を表示することができるように拡張している。ファイル選択の際にファイルダイアログなどが飛び出してこない操作感はなかなか気に入っている。伸長(Extract)はZipファイルと同じ階層に新しくディレクトリを作り伸長されたファイルを作成するようにしたため、伸長プログラムを起動するボタンを作るだけで済んでいた。

圧縮する場合は圧縮後のファイルを作る場所とファイル名を指定して、圧縮したい複数のファイルを指定する必要がある。ファイルダイアログをポップアップで表示させれば簡単なのだが、できるだけ一つのパネルで操作できるようにしたい、と思ったので、自然な操作の流れを考えるのに多少時間がかかった。

今回はこの点を解決するために、ボタンなどの制御器の属性ノードにあるDisabledを使ってみた。Disabledでは0,1,2でそれぞれ入力可、入力不可、グレー表示で入力不可の状態が選択できる。表示は変わらずに入力できないのは誤解のもとなので、グレー表示で入力不可を選ぶのが一般的だろう。

右のパネルがLVZIP100という名前で作った最新のVIだ。

ファイルリストで何も選択されていない状態では停止ボタンと、New Folderボタン、New Archiveボタンが選択できる状態になっている。

New Archiveボタンが押されると下の画面のようにファイル名を入力するための文字列制御器のグレイアウトが解除される。ここには拡張子.zipを持つファイル名だけが入力できるようになっている。

ファイル名が入力されると下の図のようにパスが予約される。

アーカイブのパスが予約されると同時に、ファイルリストの下にAdd to belowというボタンとリストのグレイアウトが解除される。

このリストに圧縮したいファイルをどんどん登録していくことができる。もちろん、ディレクトリを渡り歩きながら登録を行うことができる。

ファイルが1個でもリストに登録されるとArchiveボタンのグレイアウトが解除される。このボタンを押すと圧縮が開始される。実行速度が鈍いことを除けばなかなか快適そうな操作だとは思わない?

この状態でNew Archiveボタンを押したくなるのはプログラムを楽しんでいる人のサガだが、<ファイルパスとちがいます>と表示され、もう一度ボタンを押すと、Put new Zip nameと表示されるようになっている。

Compress filesのリストのクリアボタンの無いのは不便かもしれないが、、、。

 

 

ダイアグラムは初期化のためのシーケンスストラクチャとホワイルループからなり、ユーザーの実行状態に応じてケースストラクチャが選択されるステートマシンになっている。

属性ノードは表示器や制御器と同じVIの中に置かざるをえないので、今回のように多用するとダイアグラムのかなりの面積を占有してしまうことになる。ユーザーの操作状態に応じたケース構造の選択は少し複雑になるため、User Selectionと書かれたアイコンのVIにまとめてしまった。

プログラム作成が遅々としていた本当の理由は、今回のプロジェクトも全体像が見えない中でボトムアップで作っているために、終盤にきて入出力を変更せざるをえなくなったり、サイズの大きなファイルの圧縮に対応するために手を入れていかなければならなかったからだ。もうひとつの大きな精神的な要素としては、興味の対象であった圧縮プロセスのプログラミングが終わり、実用性の観点からすれば動作速度もはかばかしくないプログラムに手を加えていくのはけっこうめいってしまうような作業ではあった。

今回は圧縮機能に関連するユーザーインターフェースで終始してしまったが、次回は圧縮関数の変更について書いてみよう。

 

See you!

Nigel Yamaguchi


戻る