2011年1月12日水曜日

XcodeでMacRuby・2日目

いや3日目はないかもしれないけど。なんせcocoaフレームワークを調べないといけないから初心者には大変。

本日は昨日のプロジェクトに以下のコードを追加した。

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
end
file_openで「ファイルを開く」ダイアログを表示して、取得したファイルの名前をViewに挿入する、というだけなんだけど、時間がかかりましたよ。 しかも元ネタもちゃんとあって、MacRubyの本家サイトの「recipe」のひとつがまさにこのネタ。
Browse for folder or file dialog
ただこれは「フォルダ」を指定するタイプで、それをファイル指定に書き換えるのに時間がかかった。 dialog.runModalForTypesってのが元からあったらしいんだけど、ドキュメント読むと10.6では使うな、と書かれていて、runModalにたどり着いた、と。しかしこのままだとどんなファイルでも開いてしまうので、setAllowedfileTypesで
setAllowedfileTypes=["txt","rb"]
と書けばこの拡張子のファイルだけ開けるようになるはず・・・なんだけど全然働いていない。

setAllowedfileTypesでググってみたら、OpenPanelを直接呼び出す場合はsetAllowedfileTypesは無効らしい、とわかった。

この手のドタバタ迷走劇は新しい言語とかフレームワークを勉強している時によくあることで、それを楽しむくらいの気持ちがないととてもじゃないけどど素人はプログラミングの勉強なんてできません。理由がわかってすっきりできただけでもありがたや、でございます。

さて、XcodeでMacRuby、けっこう厳しいですね(^^;)。
  1. ブレークポイントは設置できない。Objective-Cのプロジェクトを作ってまで確認しましたよ。
  2. ソースの補完が意外とじゃま。Objective-Cの書式に補完してくれますからね。初心者には引数とかで参考になるからいいけど、慣れてきたらうるさいでしょう。って補完しないように設定できるか普通。
  3. 何か間違いがあっても何も言わずに(警告も出ずに)ビルドが無事終了する。期待通りの動きをしないことで、自分のミスがわかる。これはきつい。OpenPanelをOepnPanelとtypoしてもスルーですからねー。

とまあ、ちょっとクサしてはみたものの、もんのすごく楽しい経験であるのは確かです、MacRuby。1.0目指して開発中のプロジェクトだから、この先の完成度が高まることを期待して、私のようなエンドユーザは遊ばせてもらえばいいわけでしょう。

GUI付きの「アプリケーション」を作るだけでなく、AppleScriptの替りにあれこれおもしろいことができそうだ、という辺りも研究したい。

明日はダイアログから指定されたファイルを開いて、Viewに表示する、というところまで進みたいもんだ。どんなファイルでもテキストとして開いてしまう最強のツールができあがるぞ。わっはっは。

0 件のコメント:

コメントを投稿