本日は昨日のプロジェクトに以下のコードを追加した。
class Controller < NSWindowController attr_accessor :textView def file_open(sender) dialog = NSOpenPanel.openPanel dialog.allowsMultipleSelection = false dialog.canChooseFiles = true if dialog.runModal == NSOKButton open_file_string = dialog.filename end textView.insertText open_file_string end endfile_openで「ファイルを開く」ダイアログを表示して、取得したファイルの名前をViewに挿入する、というだけなんだけど、時間がかかりましたよ。 しかも元ネタもちゃんとあって、MacRubyの本家サイトの「recipe」のひとつがまさにこのネタ。
Browse for folder or file dialogただこれは「フォルダ」を指定するタイプで、それをファイル指定に書き換えるのに時間がかかった。 dialog.runModalForTypesってのが元からあったらしいんだけど、ドキュメント読むと10.6では使うな、と書かれていて、runModalにたどり着いた、と。しかしこのままだとどんなファイルでも開いてしまうので、setAllowedfileTypesで
setAllowedfileTypes=["txt","rb"]
と書けばこの拡張子のファイルだけ開けるようになるはず・・・なんだけど全然働いていない。setAllowedfileTypesでググってみたら、OpenPanelを直接呼び出す場合はsetAllowedfileTypesは無効らしい、とわかった。
この手のドタバタ迷走劇は新しい言語とかフレームワークを勉強している時によくあることで、それを楽しむくらいの気持ちがないととてもじゃないけどど素人はプログラミングの勉強なんてできません。理由がわかってすっきりできただけでもありがたや、でございます。
さて、XcodeでMacRuby、けっこう厳しいですね(^^;)。
- ブレークポイントは設置できない。Objective-Cのプロジェクトを作ってまで確認しましたよ。
- ソースの補完が意外とじゃま。Objective-Cの書式に補完してくれますからね。初心者には引数とかで参考になるからいいけど、慣れてきたらうるさいでしょう。って補完しないように設定できるか普通。
- 何か間違いがあっても何も言わずに(警告も出ずに)ビルドが無事終了する。期待通りの動きをしないことで、自分のミスがわかる。これはきつい。OpenPanelをOepnPanelとtypoしてもスルーですからねー。
とまあ、ちょっとクサしてはみたものの、もんのすごく楽しい経験であるのは確かです、MacRuby。1.0目指して開発中のプロジェクトだから、この先の完成度が高まることを期待して、私のようなエンドユーザは遊ばせてもらえばいいわけでしょう。
GUI付きの「アプリケーション」を作るだけでなく、AppleScriptの替りにあれこれおもしろいことができそうだ、という辺りも研究したい。
明日はダイアログから指定されたファイルを開いて、Viewに表示する、というところまで進みたいもんだ。どんなファイルでもテキストとして開いてしまう最強のツールができあがるぞ。わっはっは。
0 件のコメント:
コメントを投稿