まえがき
MyAppはアプレットにドロップ可能?
MyAppアプレットをテキストファイルのドロップで起動可能に
まとめ
前回、MyApp.pyをアプレットにビルドしましたが、できたアプレットはMyApp.rsrcも取り込んでいます。XXXX.pyというスクリプトをBuildAppletにドロップすると、XXXX.pyと同じフォルダ内にXXXX.rsrcがあればXXXX.rsrcを取り込んでアプレットを作りますが、XXXX.rsrcがなければBuildAppletのリソースを加えます。
前回までのように、XXXX.rsrcでアバウトウィンドウ、オリジナルのアイコン、'kind'情報を作ることができます。できたアプレットは『SpeakApp初期設定』ファイルのドロップで起動できますが、それ以外のファイルのドロップによる起動はできません。XXXX.rsrcなしに作成したアプレットは、テキストファイルをアプレットにドロップして起動することができます。ここではMyApp.py、MyApp.rsrcで作ったアプレットをファイルのドロップ可能にする方法を書きます。
MyApp.pyをアプレットにビルドしてみます。
前回までのspeak13.sit.bin(約 30k)のものを使います。
「Speak13」フォルダの中のMyApp.pyを、MacPython付属の『BuildApplet』(または『BuildApplication』でも結果は同じです)にドロップして、アプレットにしてみます。すると、以下のような(カエル?ヘビ?)アイコンのアプレットが作られます。
MyApp.rsrcの中でクリエータを 'XXXX' にしていますので、他に 'XXXX' のクリエータのものがないことを確認してからビルドした方がいいです。ファインダのファイル検索で『「クリエータ」が「XXXX」の項目』を検索して、ないことを確認してください。
ここでできたMyAppアプレットは「SpeakApp初期設定」ファイルをダブルクリックしたり、「SpeakApp初期設定」ファイルをMyAppアプレットへドロップすることで起動できます。これはMyAppアプレットの'BNDL'、'FREF'リソースが設定されているからです。
しかし、XXXX.rsrcのようなリソースが同じフォルダにないXXXX.pyをBuildAppletにドロップしてアプレットを作ると、のアイコンになります。
このアプレットにはテキストファイル、フォルダなどをドロップして起動することができます。これでできたアプレットには'BNDL'、'FREF'に「TEXT」「fold」が設定されているからです。
そこで、MyAppアプレットもテキストファイルのドロップで起動可能にしてみます。
MyApp.rsrcをResEditで開いて「BNDL」をダブルクリックして開きます。ID128の行をダブルクリックします。すると以下のウィンドウが開きます。
「Resource」メニューから「Create New File Type」を選びます。ウィンドウ内の最下行に新たに「????」のタイプが作られるので、「????」を「TEXT」にします。「FREF」のTEXTタイプは自動的に作られます。
保存してResEditを終了します。これでもう一度MyApp.pyをBuildAppletにドロップしてアプレットを作ると、できたアプレットはテキストファイルのドロップで起動できます。
でも、MyApp.pyにはsys.argvを使ってドロップされたファイルに対する処理がありませんので、ドロップされたファイルに対する処理は何もしません。sys.argv[1:]なんかでドロップされたファイルに対する処理を書くといいかもしれません。
また、「TEXT」の代わりに「fold」を設定するとフォルダのドロップで起動できます。
わたしのページにあるLightOutPutWinはアプレットにすると、Pythonスクリプトのテキストファイルをドロップで起動し、そのファイルを実行してprintの結果を表示します。MyApp.py、MyApp.rsrc、MacPython IDEのPyConsole.pyを使っています。
XXXX.rsrcなしに作ったアプレットをResEditで開いてみると、「Pyth」には「shlb」「PYC 」、アプレットの「Pyta」には「APPL」はもちろん、「TEXT」「fold」「****」が設定されています。
以上の結果をまとめた speak14.sit.bin(約 30k)を作りました。
何か誤りやご質問、お気付きの点、ご意見やご不満などございましたら、メールで、もしくはMacPython BBS(よ)へ書き込んでいただければ幸いです。