問題タブ [sdef]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xcode - 優れたSDEFエディターはどこで入手できますか?
私は、アップルスクリプト可能である必要があるObjectiveCプログラムを書いています。そのため、SDFファイルを作成して編集する必要があります。XMLを書く必要がなければ、XMLを書く必要はないので、誰かが私に優れたエディターを紹介してくれることを期待しています... SDEF EDitorを見つけましたが、いくつかのオプションが必要です。遊んで...
驚いたことに、applescriptエディタ自体はSDEFファイルを編集することを許可していません... hrm ...
ありがとう
cocoa - Applescript は arRsync sdef コマンドを受け入れませんか?
「arRsync」と呼ばれるrsync用のオープンソースGUIフロントエンドを使用しています。うまく機能しますが、自動化する方法はありません。
私がやろうとしているのは、Applescript を使用して、次の単純なスクリプトを使用して (アプリケーションで定義した) プリセットを実行することです。
tell application "arRsync" to runPreset "presetTest1"
問題は、Applescript が「runPreset」をコマンドではなく変数と見なすことです。上記のテル/エンドテルのバリエーションも試しましたが、サイコロはありません。「runPreset」コマンドは arRsync.sdef の一部です
ここでarRsyncプロジェクトを見つけることができます
アプリ内で両方の Info.plist ファイルを開き、[スクリプト可能] ボックスにチェックを入れてみました (または、プロパティ リスト エディターを使用していない場合は [true] に設定します)。
Cocoaに関しては、私はスクリプトの初心者です:pヘルプは大歓迎です
cocoa - Cocoa NSString と AppleScript テキスト型に関する AppScript の問題?
私のアプリケーションの 1 つで、いくつかの新しいプロパティをdocument
標準 AppleScript スイートのクラスに追加しました。これらのプロパティには、 type のものもtext
あれば、 type のものもありboolean
ます。「sdef」ファイルを作成し、アプリのリソースに if を追加しました。
しかし、アプリを起動すると、コンソールに次のようなメッセージが表示されます。
スイート 'Standard Suite' のクラス 'window' のタイプ 'text' 属性 'title' に対する .sdef 警告: このプロパティのタイプは NSString から派生していないため、AppleScript の名前参照は機能しない可能性があります。
そして、実際にtext
AppleScript 内の型でそのような新しいプロパティから値を取得しようとすると、失敗します。アプリ内の正しいメソッドが呼び出され、正しい値が としてNSString
返されますが、AppleScript はエラーを返します。コンソールに再びメッセージが表示されます。
スクリプト コマンドの結果を返す際にエラーが発生しました: 結果オブジェクト...「要求された NSString 値」...タイプ「テキスト」の Apple イベント記述子に変換できませんでした。クラス '__NSCFString' のこのインスタンスは、-objectSpecifier が送信されたときに nil を返し (オーバーライドされていませんか?)、スクリプト クラス 'text' に対して宣言された強制型はありません。
NSString
これはおそらく、Cocoaオブジェクトを AppleScriptオブジェクトに変換できなかったことを意味しtext
ます。
新しいブール値のプロパティの 1 つから値を取得しようとすると、問題なく動作します。
NSString
オブジェクトを AppleScriptオブジェクトに変換するには、正確に何をする必要がありtext
ますか?
objective-c - Applescript 対応アプリケーションと Cocoa の問題
AppleScript に関する限り、私はまったくの初心者です。だからここにいる...
これは私がこれまでに行ったことです:
- SimpleScriptingのアップル リファレンスを調べた
- IDENTICAL
.sdef
ファイルを実装 - 新しいプロパティを設定する
myname
- プリンシパル クラス (in
info.plist
) をppApplication
(から継承するメイン クラスNSApplication
)に設定します。 myname
プロパティへのアクセサを設定します
私のsdefファイル:
私のppApplicationクラス:
さて、問題は次のとおりです。
次のスクリプトを実行しようとしているとき ( AppleScript Editorで)
エラーが発生しthe variable myname is not defined
ます。
でも :
Xcode に戻って [ビルド設定] に戻り、製品名を - たとえば - myApplicationX に変更して再コンパイルすると、上記のコード (に変更tell application "myApplicationX"
) が機能します。
それで、私は何を間違っていますか?AppleScript エディタが、アクティブなアプリケーションのコンパイルではなく、以前のコンパイルと「対話」する可能性はありますか? 製品名を変更せずにこれに対処するにはどうすればよいですか?
objective-c - Applescript対応のCocoa:オブジェクトのNSArrayへの参照?
わかった。だから、言いましょう:
- のを返す際の
myCollection
クラス、クラスmyObject
、およびプロパティobjects
がありますmyCollection
NSArray
myObject
.sdef
とクラスのファイルを適切に設定したとするmyCollection
と、そこでもプロパティmyObject
を定義するにはどうすればよいですか?objects
つまり、これまでのところ、私はそのようなことをすることができます:
私が欲しいのはmyObject
、配列の要素としてsにアクセスできるようにすることです。
これはこれまでの私の.sdef(ほぼ...)です:
どうすればいいですか?
cocoa - NSApplicationDelegateを使用しているときに、AppleのSimpleScriptingの例を機能させることができません
簡単なObjective-Cアプリケーションを作成しようとしています。ステータスバーに単語を表示し、AppleScriptを介して単語を更新できるアプリが必要です。正直なところ、私はAppleScriptについてはほとんど知らず、Objective-Cについても何も知りません。しかし、メニュー項目があり、「quit」などのコアAppleScriptコマンドに応答するメニューバーアプリを入手するのに2時間しかかからなかったので、それほど難しいことではありません。残念ながら、私は次の6時間かけて、このアプリケーションにAppleScriptを介して取得および設定できる単純なプロパティを与える方法を見つけようとしました。
これが私の.hコードです:
このfoobaz
メソッドは、読み取り可能なプロパティを作成するために使用していたものです(*window
XCodeによって提供された定型文の一部であり、当面の問題には関係ありません)。これが私の.sdefファイルです:
だから私はここでAppleのSimpleScriptingの例のようにセットアップしました:https ://developer.apple.com/library/mac/#samplecode/SimpleScripting/Introduction/Intro.html
ただし、スクリプトエディタでこれを実行してみました。
そして、Appleの例とは異なり、コアプロパティのリストを取得するだけで、foobaz
何も言及されていません。Appleの例では、カスタムプロパティを実行すると、コアプロパティの横に表示されます。
これについて100のバリエーションを試し、100の例を読んだように感じますが、何も機能しません。どんな助けでも大歓迎です。
applescript - アプリケーション (NSApp) クラスの AppleScript 要素 (1 対多の関係) をサポートするにはどうすればよいですか?
ここに私が持っているものがあります:
1) 「Info.plist」に適切な「権限」エントリを含めます。
- 「スクリプト可能」: はい
- 「スクリプト定義ファイル名」: myApp.sdef
2) クラス拡張「要素」タグ内に要素「要素」タグを含めます。
3) 要素クラス タグを含めます。
4) デリゲートに「NSApplication」スクリプト機能サポートを転送するデリゲート メソッドを含めます。
}
5) 「ObjectItem」クラスを作成し、そこにオブジェクト指定子を配置します。
6) アプリケーションのデリゲート内に KVO アクセサー メソッドをポストします。
7) 要素の getter メソッドからオブジェクトを返す AppleScript を作成します。
8) 結果: エラー「変数オブジェクトが定義されていません。」「オブジェクト」からの番号 -2753
9) 髪を抜く
macos - -objectSpecifier でキー Key を使用して NSUniqueIDSpecifier を返すと、valueIn が返されないWithUniqueID: 評価される
クラス NSUniqueIdentifierのリファレンス ドキュメントでは、一意の ID 指定子が次のスキームで評価されると主張しています。
コンテナーが、
valueIn<Key>WithUniqueID:
スクリプトのキー値コーディングによって確立された関連パターンと一致するセレクターを持つメソッドを実装する場合、そのメソッドが呼び出されます。この方法は非常に高速である可能性があり、比較的簡単に実装できます。スクリプト オブジェクト指定子を評価する場合と同様に、指定されたオブジェクトのコンテナーには、オブジェクト指定子を評価する機会が与えられます。コンテナー クラスがメソッドを実装する場合
indicesOfObjectsByEvaluatingObjectSpecifier:
、メソッドが呼び出されます。この方法は非常に高速になる可能性がありますが、実装は比較的困難です。関連する 'ID' 属性が ID と一致する最初の
NSWhoseSpecifier
オブジェクトを指定するオブジェクトが合成され、評価されます。オブジェクトは、コンテナ内のNSWhoseSpecifier
すべてのキー付き要素を検索して、一致を探す必要があります。検索は非常に遅くなる可能性があります。
ただし、valueIn<Key>WithUniqueID:
呼び出されることはありません。例を挙げると、オブジェクト指定子を次のように記述するクラスがあります。
コンテナー クラスで定義した- (id)valueInAllObjectsWithUniqueID:(NSString *)uniqueID
メソッドは、私が定義したメソッドです。
コンテナに対応するクラスでは、-respondsToSelector:
これをさらにデバッグするためにオーバーライドし、上記の呼び出しのindicesOfObjectsByEvaluatingObjectSpecifier:
直後にスクリプト システムがクエリを実行する唯一の関連メソッドがある-objectSpecifier
ことを確認します (コンテナ クラスの説明と nil 以外の結果を返すことが確認されました)オブジェクト指定子が評価された直後にメソッド呼び出しを受け取るコンテナーのクラスと一致するコンテナー指定子)。
何か案は?これは OSX Mavericks (10.9.4) にあります。
applescript - Applescript Sdef: 割り当て可能なコマンドを定義するには?
私のスクリプト可能な Mac アプリでは、次の構文を可能にしたいと考えています。
それは可能ですか?これを Sdef でどのように指定しますか?
私が思いつく唯一の方法は、名前set preference with key
でコマンドを定義することですが、Apple のScripting Interface Guidelinesでは、ここにあるような予約済みの名前でコマンドを開始するべきではないと述べていset
ます。他に方法はありますか?それとも、この場合、私のアイデアを使用しても安全ですか?
現在、代わりにこれを使用してこれを回避していますが、より一般的な「セット」用語が好きなほど、その構文は好きではありません。
より良い提案は大歓迎です。
macos - App.sdef から現在のアプリ情報を取得する
Linux で dbus を使用する場合と同様に、Mac アプリの現在のステータスに関する情報にアクセスしようとしています。
私がこれをやろうとしているアプリは Spotify です。パッケージの内容を検索したところ、/Resources ディレクトリに Spotify.sdef ファイルがあることがわかりました。これらの「スクリプト定義」について調査したところ、Spotify.sdef ファイルに記述されているデータ (つまり、タイトルとアーティスト情報) にアクセスできる方法があると思います。私は Cocoa 開発の経験がまったくないので、完全に間違っているかもしれません。
アプリケーションのパッケージ コンテンツ内の「スクリプト定義」ファイルからアクセスできると思われるデータにアクセスする際に、誰かが正しい方向に向けてくれると非常にありがたいです。私の最終的な目標は、単純な端末コマンドを使用して、現在 Spotify で再生されている曲を確認できるようにすることです。