NSTableView View-Basedをコードで作りたい (2) [AppleScript辞書はつくれるか?]
on tableView:aTableView viewForTableColumn:aColumn row:aRow
~
end tableView:viewForTableColumn:row:
前回は上記の中に色々と入れていましたが、ここはシンプルにしていた方が良いみたいなので、改良します。
いろいろなサイトでは、ここで振り分けをしているのが多かったが、多様性が失われてしまうように思えました。
別なやり方として、データソースに直接オブジェクトをぶっ込んでしまいのが良いかと思ったのですが、
それぞれのコードが見にくくなるし、どこをいじっているのかわからず、扱い辛くなる気がします。
ですので、簡単なレシピ(設計図)から、オブジェクトを作り貼り付けていく方法でいきたいと思います。
レシピは、クラスと必要最低限の要素を必要な分だけ書けば良いようにしてみた。
[ソース]
かなり乱暴なオブジェクトの作成方法にしているが、これで自由度だけは増しています。
レシピで使えるコードは下記の通り
[レシピコード]
対応できたオブジェクトクラスはまだ少ないのですが、必要な分を増やしていけばなんとかいけそうでしょう。
レシピの数からテーブルビューのコラム数を自動的に作成するとこはできるけど、データソースの要素を自動的に作るのができなかったのが悔やまれる。
しょうがなくIF文でなんとかはしているが、3列や4列はまだしも十数列以上のコラムに対応しようとすると結構無理が出てくる気がする。
特筆すべき部分といえば
・convertTextToNumberハンドラでは、
テキスト内の数字を抜き出し、数字としてリスト化をしています。
"{{123,456},{789.0,1111.1}}" を{123, 456, 789, 1111.1} と抜き出します。
words of "あいう123,456.7と8 -9" というふうにワード別に分けてから数字だけ抜き出すのが一番簡単と思われましたが、
小数点(ピリオド)は数字と隣り合わせだとちゃんと認識したのですが、マイナス(-)はちゃんと認識してくれなかった。
数字の前にあっても、マイナスではなく文字として扱われてしまった。なんとか解決したが、ここは注意しなければいけないようだ。
・returnColorハンドラでは、カラー情報を扱っています。
テキストデータからデフォルトカラーまたは、任意の数値から色を作成します。
デフォルトカラーは、
"blackColor","blueColor","clearColor","cyanColor",
"darkGrayColor","grayColor","greenColor","lightGrayColor",
"magentaColor","orangeColor","purpleColor","redColor",
"whiteColor","yellowColor"
があり、
任意のカラー設定では、カラーの順番を表すテキストで、順番どうりに数字を割り当てて色を作ります。
例)"red_green_blue_alpha_(1.0,1.0,0.0,1.0)" で赤色
"red:0.0,green:0.2,blue:1.0,alpha:1.0"で青色
省略して"green=1.0"で緑と表現してもOKです。
このハンドラでは、red・green・blue・alphaの色を表す単語と数字だけを認識しますので、他の文字や記号は無視されますので、自由でわかりやすい書き方ができます。
コメント 0