AppleScript Studio 1.4 の Data View

AppleScript Studio 1.4 になって Data View(Table View と Outline View)の機能が強化されました。AppleScript Studio の機能強化は、Data View がほとんどだ...という素朴な感想はおいておくとして。

従来は、table view に新しい項目を追加するときは、新しい data row を作成し、その data cell のそれぞれの内容を設定していきました。

tell table view 1 of  scroll view 1 of window 1 
    set theRow to make new data row at end of data rows of data source 1 
    set content of data cell "name" of theRow to "新しいデータ"
end tell

こんな感じですね。新しく作り、内容を設定...ということを行うためどうしても時間がかかっていました。

AppleScript Studio 1.3 で table view にデータを追加するのに append という命令が追加されました。この命令を使うと data source にデータを追加するのに AppleScript のレコードを利用できます。

set theRecord to {{name:"新しいデータ"}}
tell table view 1 of scroll view 1 of window 1
    append data source 1 to theRecord
end tell

データの追加が簡単になり、より早くなったわけです。ただ、このようにデータの追加は早くなったのですが、問題がないわけではありませんでした。このようにレコードでデータを追加したなら、レコードでデータを取得したい...そう思ってもできなかったのです。

そして、AppleScript Studio 1.4 では、ようやくこれができるようになりました。table view に追加した項目を content(contents)属性で一括して設定/取り出しができるようになったのです。取り出しの際に data source の属性 returns records の真偽値を変更することでリストで取り出したり、レコードで取り出したりができます。

1.3 までは、このデータの設定が append 命令でレコードを利用できても同じ形式(リスト、レコード)でのデータの取り出しができなかったため、データの保存や復元、検索が面倒だったのです。が、1.4 でようやく AppleScript になじんだ方法でデータを扱えるようになり、速度的にも申し分ありません。

-- テーブル内のデータを保持するリスト
-- たとえば、以下のような感じ。
-- {{"myName","myAddress","myAge"},{"myName","myAddress","myAge"},...}
-- このリスト内にデータが5000項目あったとして...
property : theList

tell table view 1 of scroll view 1 of window 1
    set update views of data source 1 to false
    set contents to theList
    set update views of data source 1 to true
end tell

データにもよるのでしょうが 1 〜 2 秒で追加完了します。

1.4 の Data View は、いちいち data row を作成して data cell の内容を設定して...ということをしないでもいいですし、アプリケーションの起動時に data source を作成するということをしなくてもいいようになっています。おこなうことは、Interface Builder で Table View(Outline View)を配置してそれぞれ列の identifier を設定するだけです。そして、Table View(Outline View)のイベントハンドラ awake from nib を利用して次のように初期化します。

on awake from nib theObject
    set content of theObject to {}
end awake from nib

これだけで data source が作られて初期化完了なのですから、なんとも便利になったものです。新規に data row を追加するときは、もちろん append 命令を利用します。

0 件のコメント :

コメントを投稿