This is MiscDimpleCell.m in view mode; [Download] [Up]
//
// MiscDimpleCell.m -- An NXBrowserCell subclass that adds a mark image so
// a list can have an appearance similar to the IB
// connection inspector list.
//
// Written by David Fedchenko. Copyright 1994 by David Fedchenko.
// Version 1.0 All rights reserved.
//
// This notice may not be removed from this source code.
//
// This object is included in the MiscKit by permission from the author
// and its use is governed by the MiscKit license, found in the file
// "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
// for a list of all applicable permissions and restrictions.
//
#import "MiscDimpleCell.h"
@implementation MiscDimpleCell
static id MDMarkImage;
static id MDAltMarkImage;
+ initialize
{
id idBundle;
char buf[MAXPATHLEN + 1];
[super initialize];
idBundle = [NXBundle bundleForClass:[self class]];
[idBundle getPath:buf forResource:"Dimple" ofType:"tiff"];
MDMarkImage = [[NXImage alloc] initFromFile:buf];
[idBundle getPath:buf forResource:"DimpleH" ofType:"tiff"];
MDAltMarkImage = [[NXImage alloc] initFromFile:buf];
return self;
}
+ setMarkImage:anImage
{
id idT = MDMarkImage;
MDMarkImage = anImage;
return idT;
}
+ markImage
{
return MDMarkImage;
}
+ setAltMarkImage:anImage
{
id idT = MDAltMarkImage;
MDAltMarkImage = anImage;
return idT;
}
+ altMarkImage
{
return MDAltMarkImage;
}
- setMarked:(BOOL)flag
{
fMarked = flag;
if (fMarked)
{
[self setLeaf:YES];
}
return self;
}
-(BOOL) marked
{
return fMarked;
}
- drawInside:(const NXRect *)cellFrame inView:controlView
{
[super drawInside:cellFrame inView:controlView];
[self drawMark:cellFrame];
return self;
}
- highlight:(const NXRect *)cellFrame inView:aView lit:(BOOL)lit
{
[super highlight:cellFrame inView:aView lit:lit];
[self drawMark:cellFrame];
return self;
}
- drawMark:(const NXRect *)cellFrame
{
NXRect rect;
id idImage;
if ([self isLeaf])
{
idImage = ([self state] || [self isHighlighted])
? [[self class] altMarkImage]
: [[self class] markImage];
[idImage getSize:&rect.size];
rect.origin.x = NX_WIDTH(cellFrame) - rect.size.width - 5.0;
rect.origin.y = NX_Y(cellFrame) + NX_HEIGHT(cellFrame)
- ((NX_HEIGHT(cellFrame) - rect.size.height) / 2);
if (fMarked)
{
[idImage composite:NX_SOVER toPoint:&rect.origin];
}
else
{
PSsetgray(([self state] || [self isHighlighted])
? NX_WHITE : NX_LTGRAY);
rect.origin.y -= rect.size.height;
NXRectFill(&rect);
}
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.