This is ColCell.m in view mode; [Download] [Up]
/* * For legal stuff see the file COPYRIGHT */ #import "ColCell.h" #import "Session.h" /* this is bogus!!! fix it!! TBD */ #import "Expense.h" /* this is bogus!!! fix it!! TBD */ #define DATE_OFFSET 3.0 /* For sessions */ #define TIME_OFFSET 62.0 #define MINS_OFFSET 104.0 #define TASK_OFFSET 136.0 /* For expenses */ #define AMOUNT_OFFSET 62.0 #define DESC_OFFSET 116.0 /* Font info */ static NXCoord ascender, descender, lineHeight; @implementation ColCell - (void)setCellData:obj { [self setStringValue:""]; data = obj; } - cellData { return data; } - setFont:fontObj { [super setFont:fontObj]; /* * save this info so we don't have to look it up every time we draw * Note: support for a TextCell is a font object */ NXTextFontInfo(support, &ascender, &descender, &lineHeight); return self; } /* * Override the drawing method to put the data in two columns */ - drawInside:(const NXRect *)cellFrame inView:controlView { NXCoord baseX, baseY; char buf[80]; baseX = NX_X(cellFrame); baseY = NX_Y(cellFrame) + lineHeight - descender; [super drawInside:cellFrame inView:controlView]; PSsetgray(NX_BLACK); /********* CLEAN THIS UP!! *********/ if ( [data class] == [Session class] ) { PSmoveto( baseX + DATE_OFFSET, baseY ); PSshow( [data startDateString] ); PSmoveto( baseX + TIME_OFFSET, baseY ); PSshow( [data startTimeString] ); PSmoveto( baseX + MINS_OFFSET, baseY ); sprintf( buf, "%d", [data minutes] ); PSshow( buf ); PSmoveto( baseX + TASK_OFFSET, baseY ); PSshow( [data description] ); } else { /* otherwise, it's an Expense object */ PSmoveto( baseX + DATE_OFFSET, baseY ); PSshow( [data dateString] ); PSmoveto( baseX + AMOUNT_OFFSET, baseY ); sprintf( buf, "%.2f", [data amount] ); PSshow( buf ); PSmoveto( baseX + DESC_OFFSET, baseY ); PSshow( [data description] ); } return self; } - copyFromZone:(NXZone *)zone { ColCell *copy; copy = [super copyFromZone:zone]; copy->data = data; return copy; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.