007

スペシャルフォルダーのパス
フォルダー(ディレクトリー)を作る、削除する
イメージオブジェクトにイメージファイルを映す

specialFolderPath("Desktop")
create folder, delete folder
set the filename of image "imageName"
formattedWidth, formattedHeight


RR Player に 007.rev と入れてスタックをダウンロードしてください。
Revolution の開発環境がある方は、メッセージボックスに
go stack url "http://www.kenjikojima.com/runrev/handbook/download/007.rev"
とタイプしてリターンキーを叩く事でもダウンロードできます。





ダウンロードしたばかりの 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 を削除した後は、デスクトップをデフォルトフォルダーにしています。


006 / 007 / 008

わかりにくい事がありましたら、遠慮なくメールしてください。
index@kenjikojima.com