|

ダウンロードしたばかりの 007.rev は、一番上にデフォルトフォルダーのパスを表示しています。開発環境では、Revolution があるフォルダーまでのパス。RRプレイヤーでは、プレイヤーが保存してあるフォルダーまでのパスです。フォルダーという言葉は、ディレクトリーという言葉と置き換えても、機能的には同じですね。
次にあるボタンのクリックで、デスクトップ上に myFolder という名前のフォルダー(ディレクトリー)を作ってください。
create folder specialFolderPath("Desktop") &"/myFolder"
set the defaultFolder to specialFolderPath("Desktop") &"/myFolder"
Revolution には、スペシャルフォルダーのパスを求める the specialFolderPath というファンクションがあります。スペシャルフォルダーと言うのは、デスクトップや OS の特別なフォルダーのことでで、それぞれの OS によって違いがあるんですけれど。
Mac OSX では
Desktop: ユーザーのディスクトップ
System: システムフォルダー
Fonts: システムのフォントフォルダー
Preferences: ユーザーの Library フォルダーにある Preferences フォルダー
Windows では
Desktop: アイコンが見えるデスクトップ
System: システムコンポーネント
Start: スタートメニューのアイテムがあるフォルダー
Documents: ユーザーのドキュメントフォルダー
Fonts: フォントを入れているフォルダー
Temporary: テンポラリーファイルのためのフォルダー
などがそれです。
たとえば specialFolderPath("Desktop")とすると、ユーザーが使っているデスクトップまでのパスを得ることができて、
OSX の場合は /Users/username/Desktop
Windows の場合は C:/Document and Settings/usename/Desktop
となります。
新しいフォルダー(ディレクトリー)を作るには、 create folder を使って
create folde the folderPath & "/" & flderName
ですから、 the folderPath をデスクトップまでのスペシャルフォルダーパスに、 folderName を myFolder とすれば。デスクトップに muFolder というフォルダー(ディレクトリー)が作れられることになります。その後 005 でスナップショットを撮ったように、デフォルトフォルダーにスナップショットが入るよう、 myFolder をデフォルトフォルダーに設定しています。
ここまでが前半の主なスクリプトです。
スナップショット撮影は、005 の説明を見てください。ここでは撮影したスナップショットのファイルリストから、そのイメージを見る方法についてのスクリプトを書きます。ボタン「スナップショットを撮る」のクリックで、何枚かのスナップショットを撮って下にあるリストの1 行をハイライトにすると、それぞれのイメージが別ウインドウで現れるスクリプトです。

以下はリストフィールドにあるスクリプトの前半です。
put clickText() into gFile if gFile is empty then exit to top
set the filename of image 1 of cd 1 of stack "imageWd" \ to the defaultFolder &"/"& gFile
クリックするとリストの行がハイライトになるフィールドは、Tools Palette の List Filed かScrolling List Field から作ることができます。リストのフィールドをクリッックをすると、 clickText() でハイライトになっている行の、文字列 1 行が取り出されます。 clickText() は普通の LockText されているフィールドでしたら、ひとつの単語か、グループ化(Link Text)されている文字列を、クリックするごとに取り出すことができます。
put clickText() into gFile
でクリックした行を gFile に入れ、
set the filename of image "imageObjectName" to the filePath & "/" & gFile
だけで、選んだイメージがイメージオブジェクトに映し出されるのですが、それだけでは問題があります。と言うのは、イメージを別ウインドウ(サブスタック)を開けて、カード1にあるイメージオブジェクトに映しているので、ウインドウのサイズをイメージに合わせた調整が必要なんです。
イメージオブジェクトはサイズをロックされない状態では、イメージそのもののピクセルサイズに画像が映し出されますが、ロックされるとロックされた形状にイメージは変形されてしまいます。
正確なサイズを求めるには、イメージが変形されていても、されていない状態でも、元のイメージが持っているサイズのピクセル数を表すプロパティ formattedWidth と formattedHeight を使って、
put clickText() into gFile if gFile is empty then exit to top
set the filename of image 1 of cd 1 of stack "imageWd" \ to the defaultFolder &"/"& gFile
put the formattedWidth of image 1 of cd 1 of stack "imageWd" into tWidth
put the formattedHeight of image 1 of cd 1 of stack "imageWd" into tHeight
put the rect of stack "imageWd" into tWdRect
set the rect of stack "imageWd" to item 1 of tWdRect, item 2 of tWdRect, \
item 1 of tWdRect + tWidth, item 2 of tWdRect + tHeight
set the rect of image 1 of cd 1 of stack "imageWd" to (0,0,tWidth,tHeight)
open stack "imageWd"
007.rev のイメージオブジェクトはロックされていますから、 formattedWidth と formattedHeight で得られたサイズにウインドウ rect を変え、その後ウインドウのトップレフトを基準に、イメージをウインドウにそろえます。最後の open stack "imageWd" は、いくつも開いたウインドウの、トップウインドウにするためのスクリプトです。
これより危険物: 自爆した場合でも当方は責任を負いません。
最後に、作った myFolder を削除するスクリプトですが、スクリプトの内容を変える実験は危険ですから、取り扱いには十分注意してください。007.rev では、安全のためいろいろ書いています。フォルダーを削除するスクリプト自体は、シンプルなものです。
delete folder the folderPath
実はこの007 を作っているときにちょっとトラブルがあって、Mac OSX で削除できたスクリプトで、Windows 上で「myFolder」が削除できなかったんです。調べた結果Windows ではデフォルトフォルダーに設定している間、そのフォルダーは削除できません。007.rev ではそのための削除前にデフォルトフォルダーを変更するスクリプトを追加しました。どちらにしてもデフォルトフォルダーを削除した場合は、デフォルトフォルダーを変更する必要はあるので、新しいデフォルトフォルダー設定の順序が後先の問題ですが。それと Mac OSX とWindows 共通に、使用中のファイルがあるフォルダーは削除できません。delete folder the folderPath は、 the result で結果を見ることができます。empty の場合はフォルダーは削除されています。
007.rev では myFolder を削除した後は、デスクトップをデフォルトフォルダーにしています。
|