スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

既存のアプリケーションをAppleScriptに対応する実装例

わかりづらい…。
最も最適な実装が見当たらず。
なんとなく、Objectに対して直接アクセスできそうなこととかはわかるけど、
自動で変換して動いてくれるワケではなさそうで…。

scrCmd.h(の一部)

#import <Foundation/Foundation.h>

@interface scrSetSongLen : NSScriptCommand
-(id)performDefaultImplementation;
@end



scrCmd.m(の一部)

#import "AppDelegate.h"
#import "scrCmd.h"

@implementation scrSetSongLen
-(id)performDefaultImplementation
{
AppDelegate *dele = [[NSApplication sharedApplication] delegate];

[dele setSongLen:[self directParameter]];
return nil;
}
@end



directParameterの戻り値はsdefの定義によって変わると思われる。
numberではNSNumberだった。fileではNSURL。
[hoge path]でPOSIXなパスに変換する必要あり。

simpleplayではAooDelegateで集中管理しているけどそれが正しい設計思想なのかは不明。


simpleplay.sdef

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary title="simpleplay">
<suite name="simpleplay Suite" code="spsu" description="simpleplay Scripts">
<command name="doplay" code="spsuplay" description="play the file">
<cocoa class="scrPlayFile"/>
<direct-parameter description="The filename" type="file"/>
</command>
<command name="seeksec" code="spsussec" description="seek n second ">
<cocoa class="scrSeekSeconds"/>
<direct-parameter description="n seconds" type="number"/>
</command>
<command name="seekframe" code="spsusfrm" description="seek n frames ">
<cocoa class="scrSeekFrames"/>
<direct-parameter description="n frames" type="number"/>
</command>
<command name="setlen" code="spsuslen" description="set length of song to n seconds ">
<cocoa class="scrSetSongLen"/>
<direct-parameter description="n seconds" type="number"/>
</command>
</suite>
</dictionary>



codeは4文字とか8文字で他と被らないように適当に、みたいな感じかな。
Sdef Editorを使ったけど、XMLの仕様が分からないと厳しいかも。

これでは各コマンドに対してclassを一つ一つ作っているけど、methodで呼び出せる気がする…。

Xcodeのプロジェクト設定。
Xcodeプロジェクト設定(sdef)


sdef更新時にはAppleScriptエディタを一度終了させないと
新しいコマンドを認識できないことも。

Xcodeとかの思想だとGUIでサクサク作れそうな感じなんだけど、手作業でした。
ただ、AppleScriptが見捨てられているかといったらScripting Bridgeとかがあったり、そうでも無さそうで…。
スポンサーサイト

コメント

非公開コメント

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。