SenseTalkスクリプティングにおけるユーザーとの対話
実行時に情報を求めるSenseTalkスクリプトを作成することができます。以下のコマンドは、情報の表示や要求によりSenseTalkスクリプトがユーザーと対話することを可能にします。
answer
それが何をするか
メッセージと最大3つのボタンを含む簡単なモーダルパネルを表示します。ユーザーがクリックしたボタンのタイトルを変数it
に返します。
それを使用するタイミング
モーダルパネルで短いから中程度の長さのメッセージを表示したり、ユーザーから二つまたは三つの異なる選択肢の形で入力を求める必要があるときに、answerコマンドを使用します。
answerコマンドは、ユーザーがyes/noやcontinue/cancelのような決定をする必要がある状況に最適です。より複雑な選択肢については、askコマンドを使用します。
例
answer "Great! You got " & pctRight &"% correct!"
例:
answer "Go on?" with "Yes" or "No" title "DECIDE"
例
answer "How do you feel?" with "Great!" or \
"Okay" or "Really Lousy" title "Greetings!"
例:
answer "Account" from list the unique items of myListOfChoices
例:
answer "What would you like to drink?" from list ["Coffee", "Tea", "Beer", "Water"] allow multiple default "Coffee"
Syntax
answer {panelType} {Options}
Options:
{prompt | body | message}
prompt
with reply1 {or reply2 { or reply3 {or reply4}}}
[title | titled] titleExpr
[timeout | time out ] {after | in} duration
icon iconName
[default {answer} | answer] defaultSelection
{allow} multiple
オプションとしてpanelType
として、情報、質問、警告、エラーが指定可能です。各パネルの具体的な実装はホストアプリケーションに任されていますが、通常、関連するアイコンがパネルに表示されます。
prompt
は、パネルの主要なテキストとして表示される表現される表現の値です。TitleExpr
は、パネルの上部で大きなフォントで表示されるタイトルです。
Reply1, reply2, reply3,
とreply4
は、パネルの下部にあるボタンに表示されるラベルで、reply1
がデフォルトの(最も右の)ボタンです。表示されるボタンの数は、コマンドで指定された応答文字列の数に一致します。応答が指定されていない場合、"OK"と表示される単一のボタンが含まれます。
タイムアウトオプションが使用される場合、duration
はパネルがユーザーの入力を待って表示される時間(明示的に指定されていない場合は秒)を指定します。ユーザーがその時間内にパネルに反応しない場合、パネルは自動的に閉じられます。その場合、変数itは空に なり、result関数はパネルがタイムアウトしたことを示す値に設定されます。
アイコンオプションを使用して、パネルに表示する別のアイコンを提供することもできます。使用される場合、iconName
は既知のシステムアイコンの名前、またはアイコンファイルへのフルパスのいずれかになります。
プロンプト、返信、タイトル、タイムアウト、アイコンの指定順序は自由で、すべての項目はオプションです(ただし、少なくとも1つのオプションが必要です)。
answerコマンドの実行後、変数itにはクリックされたボタンのタイトル(またはパネルのタイムアウトが経過した場合は空)が含まれます。
Answer
コマンドについての詳細は、Using Ask and Answerを参照してください。
ask
それが何をするか
ユーザーが応答をタイプできるプロンプト文字列とテキスト入力フィールドを含むモーダルパネルを表示します。デフォルトの応答を提供できます。ユーザーの回答を変数itに返します。
それを使うタイミング
ユーザーからの回答が予め定められた選択肢からのものではない場合、askコマンドを使用します。入力がタイプされている間隠されている入力を要求するために、ask passwordコマンドを使用します。
例
ask "Enter your name:"
例
ask "How do you feel?" title "Greetings!"
例
ask query with defaultAnswer title "Please Answer"
例
ask password "Enter the secret code"
Syntax
ask
{password} {
Options
}
Options:
{
prompt
| question}
question
[title | titled] titleExpr
[with {answer} | answer] presetAnswer
[hint | placeholder | place holder] placeholder
[message | body] {text} message
{with} [buttons | button {label{s}] label1 {and label2}
[timeout | time out] {after | in} duration
icon iconName
{from} list listOfChoices
question
のテキスト値は、パネルの入力フィールド上のプロンプトとして表示されます。 TitleExpr
は、パネルの上部で大きなフォントで表示されるタイトルです。 presetAnswer
式の文字列値は、デフォルトの応答として回答フィールドに表示されます。 placeholder
が指定された場合、placeholderの値は、回答フィールドが空で選択されていないときに表示されます。 message
テキストは、タイトルの下のパネルに表示されます。
label1
(およびオプションで label2
)が指定されている場合、それらはパネルのボタンを定義します。それ以外の場合、パネルの下部には Cancel と OK の2つのボタンが表示されます。ユーザーが OK ボタンをクリックするか(またはリターンを押すと)、回答フィールドの値が変数itに入ります。ユーザーが Cancel ボタンをクリックすると、変数itの値は空に設定され、結果関数は "Cancel" を返します。
タイムアウトオプションが使用されている場合、duration
は、ユーザーの入力を待ってパネルが表示される時間(明示的に指定されていない場合は秒)を指定します。ユーザーがその時間内にパネルに応答しない場合、パネルは自動的に閉じられます。その場合、変数itは空になり、結果関数はパネルがタイムアウトしたことを示す値に設定されます。
アイコンオプションを使用して、パネルに表示する別のアイコンを提供できます。それが使用されている場合、iconName
は既知のシステムアイコンの名前、またはアイコンファイルへのフルパスのいずれかです。
オプションが指定される順序は柔軟で、すべてのオプションはオプションです(ただし、少なくとも1つのオプションを供給する必要があります)。
askコマンドの実行後、変数itにはフィールドに入力された値(またはパネルのタイムアウトが経過した場合は空)が含まれます。
Ask
コマンドについての詳細は、Using Ask and Answerを参照してください。
put
それが何をするのか
指定された宛先コンテナがない場合、putコマンドは標準出力にテキストを表示します。
それを使うとき
スクリプト中でステータス情報を表示したい場合や、answerコマンドのようなモーダルパネルを表示せずに情報を表示したい場合に、このようにputコマンドを使用します。また、スクリプトの開発中には、スクリプトの異なるポイントでの変数の現在の値を表示するためにもよく使用されます。
例
put "Successfully loaded file " & fileName
例
put n
例
put "The area is: " & pi * radius^2
Syntax
put {
expr
{ ,
expr
...}}
Expr
は有効なSenseTalk表現であれば何でも可能です。複数の表現をコンマで区切って指定すると、それぞれが別の行に表示されます。
ここでは、putコマンドの最も簡単な形式について説明します。putコマンドの他の使用方法については、Containersを参照してください。
beep
command
それは何をするのか
システムのビープ音を再生します。
それを使うとき
beep
コマンドは、ユーザーの注意を引くためや何かが発生したことをユーザーに知らせるために使用します。
例
beep
例
beep 5 -- really get their attention!
Syntax
beep {expr}
Expr
は任意の有効なSenseTalk表現であり、ビープの回数を表す数値を返すことができます。
play
command
それが何をするか
音声ファイルを再生します。
それを使うタイミング
システム音声や他の音声や音楽ファイルの再生を開始するためにplayコマンドを使用します。
例:
play "Glass" -- without full path, plays a system sound
例
play "~/Music/iTunes/iTunes Music/Billy Joel/Piano Man.mp3"
例
play stop -- stops the music
Syntax
play
soundFile
SoundFile
は任意の有効なSenseTalk表現であり、再生する音声の名前、または特別のコマンドpause
、resume
、stop
のいずれかを指定することができます。
sound
function
それが何をするか
現在再生中の音声の名前を返す、または"done"を返します。
それを使うタイミング
再生中の音声を監視するために、sound関数を使用します。
例
wait until the sound is "done"
Syntax
the sound
sound()
ユーザーにファイルまたはフォルダを選択させる
スクリプトが操作するファイルやフォルダを選択または指定するために、ユーザーと対話するいくつかのコマンドがあります:
answer file
コマンドと answer folder
コマンドは、ユーザーが既存のファイルまたはフォルダを選択するための標準的なOpenパネルを表示します。ask file
コマンドと ask folder
コマンドは、ユーザーがファイルシステム内の位置を選択し、新しいファイル名を入力するための標準的なSaveパネルを表示します。
answer file
command
それが何をするか
ユーザーが既存のファイルを選択できるようにOpen Panelを表示し、選択したファイルの完全なパス名を変数 it
で返します。
それを使用するタイミング
ユーザーに既存のファイルの名前を指定させたい場合には、answer file
コマンドを使用します。その後、ファイルを open
コマンドで開いたり、他の方法で使用したりすることができます。
ユーザーが選択したファイルのフルパス名は変数it
で返されます。複数のファイルが選択された場合、リストが返され、ユーザーが選択した各ファイル名はit
の別の項目になります。ファイルが選択されなかった場合(つまり、ユーザーがパネルの「キャンセル」ボタンをクリックした場合)、answer file
コマンドの後の変数it
は空になり、the result
関数は「キャンセル」を返します。
例:
answer file
例
answer file "アカウントファイルを選択" with "Dec03"
例
answer multiple files "データセットを選択" in folder "/Users/mmalone/data"
例
answer file with button label "選択" of type "png", "tif", or "tiff" in folder "~/Pictures" title "画像を選択"
Syntax
ask [file | folder | directory] {Options}
オプション:
{prompt} promptExpr
[title | titled] titleExpr
of type requiredExtension
with defaultFile
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel
answer fileコマンドの最も簡単な形式はanswer file
です。multipleまたはsingleの単語をfileの前に使用して、ユーザーが一度に複数のファイルを選択できるかどうかを指定できます。指定されていない場合、単一のファイルのみを選択できます。
このコマンドの一部として追加のオプションを指定できます。これらのオプションは必須ではなく、任意の順序で指定できますが、オプションを2回以上指定することはできません。
promptまたはtitleオプションが指定されている場合、指定された表現はOpenパネルの上部に表示されるタイトルとして使用されます。指定されていない場合、"Open"が使用されます。両方とも指定されている場合、promptExpr
のみが使用されます。
一つまたは複数のファイルタイプはof typeオプションを使用して指定できます。タイプ間でコンマ、or単語、またはその両方を使用して複数のタイプを列挙することができます。このオプションが含まれている場合、拡張子が指定されたタイプのいずれかと一致するファイルのみが受け入れられます(ファイル拡張子は、名前の最後のピリオド以降のファイル名の一部です)。ファイル拡張子はピリオドを含めても含めなくても指定できます(例えば、"eps"と".eps"の世界はどちらも受け入れられます)。empty
または""を指定して、拡張子がないファイルを含めることができます。
withdefaultFile
が指定されている場合、そのファイルが存在する場合は選択されます。値にフォルダとファイル名の両方が含まれている場合、それはOpenパネルに表示される初期のフォルダになります。
in folderオプションは、Openパネルに表示される初期のフォルダの内容を指定します。
labelオプションが指定されている場合、buttonLabel
はOpenパネルのデフォルトボタンのラベルとして使用されます。指定されていない場合、ボタンのラベルは"Open"になります。
allow multipleが指定されている場合、ユーザーは一度に複数のファイルを選択することができます。このオプションは、answer multiple files構文の代わりとなるオプションです。
answer folder
, answer directory
コマンド
それが何をするか
Openパネルを表示し、ユーザーが既存のフォルダを選択し、そのフォルダのフルパス名を変数it
で返します。
それを使うタイミング
ユーザーにフォルダの名前を提供してもらいたいときはいつでも、answer folder
コマンドを使用します。
ユーザーが選択したフォルダのフルパス名は変数it
で返されます。複数のフォルダが選択された場合、それぞれのフォルダ名がit
の別々の項目としてリストに返されます。フォルダが選 択されない場合(つまり、ユーザーが「Cancel」ボタンをクリックする場合)、answer folder
コマンドの後で変数it
は空になり、result
関数は「Cancel」を返します。
例
answer folder "作業ディレクトリを選択してください:"
例
answer multiple folders "ソースパスを選択してください" \
in folder "~/Documents"
Syntax
answer {multiple | single} [folder | directory] {Options}
オプション:
{prompt} promptExpr
[title | titled] titleExpr
with defaultPath
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel
answer folder
コマンドはanswer file
コマンドとほぼ同じですが、ユーザーにはファイルではなくフォルダを選択できるOpenパネルが表示されます。
このコマンドの一部として、いくつかの追加オプションを指定することができます。これらのオプションは必須ではなく、任意の順序で指定することができますが、一つのオプションを複数回指定することはできません。answer file
コマンドの上にあるオプションの説明を参照してください。ファイルタイプの拡張子はこのコマンドで指定できません。
返される値はスラッシュで終わります、ただしthe folderNamesEndWithSlash
グローバルプロパティがfalseに設定されている場合は除きます。末尾のスラッシュにより、ファイル名を単純に追加するだ けでフルパス名を作成することが容易になります。
ask file
, ask folder
, ask directory
コマンド
それが何をするか
Saveパネルを表示し、ユーザーが作成するファイルまたはフォルダの名前を指定でき、そのファイルのフルパス名を変数it
で返します。
それを使うタイミング
あなたのスクリプトが作成または上書きするファイルまたはフォルダの名前と場所をユーザーに指定させたいとき、ask file
またはask folder
コマンドを使用します。
ユーザーが指定したファイル名のフルパス名は変数it
で返されます。ファイルが選択されない場合(つまり、ユーザーが「Cancel」ボタンをクリックする場合)、ask file
コマンドの後で変数it
は空になり、result
関数は「Cancel」を返します。
すべての標準的なSaveパネルと同様に、ユーザーが既存のファイルを選択すると、ファイルを置き換えるかどうかを尋ねるアラートパネルが表示されます。このパネルでユーザーが「Replace」ボタンをクリックすると、選択されたファイル名が変数it
で返されます。ただし、既存のファイルは何も変更されません。同じ名前で新しいファイルを作成する前に、可能な限り既存のファイルを削除することはあなたのスクリプトに委ねられています。there is a file
演算子を使用してファイルが存在するかどうかを確認できます、例えばif there is a file fileName then ...
のように。
例
ask file "出力ファイル名を入力してください:"
例
ask file "作成する一時ファイル:" with "temp1"
例
ask file "Log Changes" of type ".mylog" in folder "logs"
例
ask folder "新しいフォルダ名を入力してください:" in folder homeFolder
Syntax
ask [file | folder | directory] {Options}
Options:
{prompt} promptExpr
[title | titled] titleExpr
of type requiredExtension
with defaultFile
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel
ask file
コマンドの最もシン プルな形式は単にask file
です。このコマンドの一部として、いくつかの追加オプションを指定できます。これらのオプションは必須ではなく、任意の順序で指定できますが、どのオプションも一度以上指定することはできません。
prompt
またはtitle
オプションが指定された場合、与えられた表現はSaveパネルの上部に表示されるタイトルとして使用されます。指定されていない場合、"Save"という単語が使用されます。どちらも指定された場合、promptExpr
のみが使用されます。
of type requiredExtension
オプションが使用されると、Saveパネルは指定されたファイル拡張子を保存するファイルのタイプとして使用し、返されるファイル名がその拡張子を持つことを確認します(ファイル拡張子は、名前の最後のピリオドの後のファイル名の一部です)。ファイルの拡張子は、ピリオドをつけてもつけなくても指定できます(例えば、"eps"と".eps"はどちらも受け入れられます)。
with``defaultFile
が指定された場合、Saveパネルはその名前がすでにファイル名フィールドに入力された状態で表示されます。値にフォルダ名とファイル名が含まれている場合、それがSaveパネルに最初に表示されるフォルダになります。
in folder
オプションは、Saveパネルに最初に表示されるフォルダの内容を指定します。
label
オプションが指定された場合、buttonLabel
はSaveパネルのデフォルトボタンのラベルとして使用されます。指定されていない場合、ボタンのラベルは"Save"になります。
ask folder
コマンドの場合、返される値は最後がスラッシュで終わります、ただしthe folderNamesEndWithSlash
グローバルプロパティがfalseに設定されている場合を除きます。最後のスラッシュにより、単にファイル名を追加するだけでフルパス名を作成するのが容易になります。