2011-08-04 12 views
3

私はTextMateから来て、私が自宅でより多くの気分にさせるためにBBEditをスクリプトしようとしています。私ができる必要があることの1つは、参照を持つオブジェクトに特定のプロパティがあるかどうかを確認することです。例えばAppleScriptオブジェクトに特定のプロパティがあるかどうか確認できますか?

tell application "BBEdit" 
    tell front window 
     get selected items 
    end tell 
end tell 

後者は「選択したアイテムのプロパティを持っていないので、これはではなく、ディスクブラウザウィンドウに、プロジェクトウィンドウに成功します。オブジェクトにそのようなプロパティがあるかどうかを確認するにはどうすればよいですか?

注意:スクリプトエディタ(プロパティを取得)でオブジェクトを検査してプロパティを確認する方法はわかっていますが、実行時にそれらのプロパティを知る必要があります。

+0

注:私は選択後ではありません。すべてのドキュメントにそのプロパティがあるので、簡単です。これは 'selected items'です。これは_window_型のサブセットだけです。 –

答えて

1

クラスについてはどうですか?

tell application "BBEdit" 
    if class of window 1 is disk browser window then 
    # ... 
    else 
    # ... 
    end if 
end tell 
+0

ねえ、それはかなりよく見ています。 –

0

私がこれまで持っている唯一の解決策は、エラーハンドラでそれをラップすることです:

try 
    set sel to selected items 
on error errMsg number errNum 
    if errNum is -1700 then 
     -- Code that handles no selected items attribute 
     return 
    end 
    error errMsg number errNum 
end try 
-- Code that handles when selected items attribute exists 
1

私がチェックすることはできませんので、私はBBEditのを持っていないが、Windowsのさまざまな種類が存在する場合、各ウィンドウのタイプが異なるプロパティを持っている場合は、最初にウィンドウタイプをチェックすることはできませんか?次に、どのような種類のプロパティを取得できるかを知ることができます。あなたのタイプや種類、あるいはあなたが決定を下すのに役立つものをあなたに伝えるウィンドウの基本的な特性がいくつかあります。

+0

すべての種類のウィンドウが 'window'から継承するので、私は最前面の' window'をフェッチできますが、ウィンドウの種類は分かりません。あなたにそのようなことを伝える財産は見えません。私はダックタイピングのpython風のアプローチから来ていると思います:どのタイプのウィンドウであろうと気にしません: 'selected items'属性があるかどうか気になります。 –

+0

また、最後のコメントをサポートしています: 'selected items'属性を持つすべてのタイプのウィンドウを知る必要はありません。フロントウィンドウにそれがあるかどうかを知りたいと思います。 BBEditがこのプロパティを持つより多くのタイプのウィンドウを追加すると、それがあるタイプのウィンドウでハードコーディングする必要があります。 –

0

BBEditではdocumentswindowsの間に違いがあります。 Windowsdocumentsの要素ですが、windowsにはselectionというプロパティしかないので、最初にウィンドウのタイプをチェックし、エラーを完全にキャッチしないようにします(結果としてクリーンなコードにする)。

さらにselectioninsertion pointであっても、常にselectionが使用可能なオブジェクトを返すので、「選択したアイテム」ではなく、BBEditではハードプロパティであることをお試しください。

+0

私は後に 'selection'プロパティではありません:' selected items'です。これは、ウィンドウの種類の特定のサブセット(プロジェクトウィンドウなど)にのみ表示されます。 –

関連する問題