home link download back number special issue

HMDT - Special Issue / Sketch BP / グリッドパネル


- Overview -

グリッドパネル

グリッドパネルの構成

グリッドパネルは、グリッドの設定を行うんためのパネルだ。GridPanel.nib と そのコントローラ である SKTGridPanelController クラス、グリッドのサンプル表示を行う SKTGridView クラスから構成されるよ。


GridPanel.nib

GridPanel.nib は以下のようになってるんだ。メインは SKTGridView だな。

ウィンドウは UtilityWindow 化された NSPanel クラスだ。これで、フローティングウィンドウとして扱われる。

ウィンドウの中にあるのは、いちばん大きいのは SKTGridView。その下に、グリッド間隔を調節するための NSSlider、グリッドを見せる、グリッドに吸い付く、を設定するための NSButton、グリッドの色を設定するための NSColorWell なんだ。

GridPanel.nib の File's Owner は SKTGridPanelController なんだ。WindowController だからね。

じゃ、SKTGridPanelContrller と、その他のコンポーネントの関係を見てみよう。まず、SKTGridPanelController の outlet を見ると、NSTextField ('Color:') を除くすべてのコンポーネントへの参照が存在することが分かるんだ。

それぞれ、windowshowsGridCheckBoxsnapsToGridCheckBoxgridSpacingSlidergridViewgridColorWell っていう名前になってる。つまり、Grid Panel の中の要素をいじりたいと思ったら、SKTGridPanelController をたたけばいいわけだ。こいつらはすべて private のフィールドとして格納されてから、SKTGridPanelController が提供するメソッド経由でしかアクセスできないけどね。

で、次は action の方だ。

まず、NSPanel の delegate になってるのが分かる。あと、SKTGridView の controller にもなってるね。

受け付ける action は、チェックボックスがクリックされたときに showsGridCheckboxActionsnapsToGridCheckboxAction が呼ばれる。あと、スライダーが変化したときに gridSpacingSliderAction が、色が変化したときには gridColorWellAction がそれぞれ呼ばれるってわけだ。


SKTGridPanelController クラス

SKTGridPanelController は、NSWindowController のサブクラスだ。さらに、以下のようなフィールドを持っている。

Sketch/SKTGridPanelController.h
@interface SKTGridPanelController : NSWindowController {
    @private
    IBOutlet NSButton *snapsToGridCheckbox;
    IBOutlet NSButton *showsGridCheckbox;
    IBOutlet NSSlider *gridSpacingSlider;
    IBOutlet NSColorWell *gridColorWell;
    IBOutlet SKTGridView *gridView;

    SKTGraphicView *_inspectingGraphicView;
}

はじめの 5 つは、ウィンドウに配置されている GUI 要素。そして、最後の _inspectingGraphicView は、メインのウィンドウにある、Graphic オブジェクトを配置するための SKTGraphicView だ。


SKTGridView クラス

SKTGridView は、グリッドのサンプルを表示するための NSView を継承したクラスだ。

Sketch/SKTGridView.h
@interface SKTGridView : NSView

おもな仕事はグリッドを表示すること。以上。


Home | Link | Download | Back Number | Speciall Issue

Sketch BP

mailto: mkino@xd5.so-net.ne.jp

HMDT