MAC OS X Cocoa NSToolbar 的使用

原创 2005年03月04日 15:29:00

//向NSToolbar控件添加自定义的NSToolbarItem项
- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier:
(NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted {
     // Required delegate method   Given an item identifier, self method
returns an item
     // The toolbar will use self method to obtain toolbar items that can
be displayed in the customization sheet, or in the toolbar itself
     NSToolbarItem *toolbarItem = [[[NSToolbarItem alloc]
initWithItemIdentifier: itemIdent] autorelease];

     if ([itemIdent isEqual: SquareDotViewItemIdentifier]) {
 SquareDotView *dv = [[SquareDotView alloc] initWithFrame:
NSMakeRect(0,0,100,32)];

 [toolbarItem setView: dv];

 // set a reasonable minimum size
 [toolbarItem setMinSize: NSMakeSize(100,32)];
 // set a maximum size that allows us to stretch.
 [toolbarItem setMaxSize: NSMakeSize(300,32)];

 [toolbarItem setLabel: @"Dot View"];
 [toolbarItem setPaletteLabel: @"A Dot View"];
 [toolbarItem setToolTip: @"This is a dot view"];
     }
   .....
}

//返回单击后能被选中且为高亮显示的NSToolbarItem的集合。
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
{// return an array of all  the items that can be highlight display after selected
   return [NSArray arrayWithObjects:
  NSColorToolbarItemIdentifier,
  NSFontToolbarItemIdentifier,nil];
}

//返回程序加载后的默认的NSToolbarItem的集合。
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
{ // return an array of the items found in the default toolbar
    return [NSArray arrayWithObjects:
       NSToolbarSeparatorItemIdentifier,
  NSFontToolbarItemIdentifier,
  NSToolbarCustomizeToolbarItemIdentifier,
  nil];
}


//以下是作为NSToolbarItem出现的自定义类
The "SquareDotView" class:


@interface SquareDotView : NSView {
@private
     float sdSide;
     NSPoint sdLocation;
}
@end

@implementation SquareDotView

#define START_SIDE  10
#define START_LOCATION  NSMakePoint(10,10)

- (id)initWithFrame:(NSRect)frame {
     self = [super initWithFrame:frame];
     if (self) {
 sdSide = START_SIDE;
 sdLocation = START_LOCATION;
     }
     return self;
}

- (void)mouseDown:(NSEvent *)theEvent {
     sdLocation = [self convertPoint: [theEvent locationInWindow]
fromView: nil];
     [self setNeedsDisplay: YES];
}

- (void)drawRect:(NSRect)rect {
     [[NSColor redColor] set];
     [[NSBezierPath bezierPathWithRect: NSMakeRect(sdLocation.x,
sdLocation.y, sdSide, sdSide)] fill];

     [[NSColor blackColor] set];
     [[NSBezierPath bezierPathWithRect: [self bounds]] stroke];
}

- (id)initWithCoder:(NSCoder *)coder {
     self = [super initWithCoder: coder];
     if (self) {
 [coder decodeValuesOfObjCTypes: "fff", &sdSide, &sdLocation.x,
&sdLocation.y];
     }
     return self;
}

- (void)encodeWithCoder:(NSCoder *)coder {
     [super encodeWithCoder: coder];
     if (self) {
 [coder encodeValuesOfObjCTypes: "fff", &sdSide, &sdLocation.x,
&sdLocation.y];
     }
}

@end

Cocoa Programming for Mac OS X 第二章(Let's Get Started)摘录

1.Instance variables that are pointers to other objects are called outlets. Methods that can be trig...
  • Koupoo
  • Koupoo
  • 2011年08月20日 10:05
  • 456

Cocoa Programming for Mac OS X ,2th Edition

  • 2008年07月16日 13:22
  • 15.28MB
  • 下载

Cocoa Programming for Mac OS X 第十三章(User Defaults)摘录

Many applications have Preferences panels that allow the user to choose a preferred appearance or be...
  • Koupoo
  • Koupoo
  • 2011年08月22日 13:38
  • 665

Cocoa Programming for Mac OS X 第十六章(Localization)摘录

If the application you create is useful, you will want to share it with all the people of the world....
  • Koupoo
  • Koupoo
  • 2011年08月22日 15:17
  • 615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MAC OS X Cocoa NSToolbar 的使用
举报原因:
原因补充:

(最多只允许输入30个字)