This is NuiController.m in view mode; [Download] [Up]
const char *PlzDir=0; #import "NuiController.h" #import "MyBrowserCell.h" @implementation NuiController - convert:sender { ConvertCallback(cd); return self; } - strassenverzeichnis:sender { StrassenverzeichnisCallback(cd); return self; } - listSelected:sender { if (callback && [[wahl selectedCell] stringValue]) { (*callback)(cd); } return self; } - listSelectedDouble:sender { if (callback) { (*callback)(cd); } [button performClick:self]; return self; } - (MyString)getListSelection { return [list objectAt:[[wahl selectedCell] tag]]; } - (const char *)getStrasse { return [strasse stringValue]; } - (const char *)getOrt { return [ort stringValue]; } - setCallback:(CallbackFunction *)cb; { callback=cb; return self; } - setOrtTo:(char *)derOrt { return [ort setStringValue:derOrt]; } - setPlz_neuTo:(char *)diePlz { return [plz_neu setStringValue:diePlz]; } - setStrasseTo:(char *)dieStrasse { return [strasse setStringValue:dieStrasse]; } - setListTo:(MyString *)stringList withLen:(long)len { int i,j,n; List *l,*nl; [list makeObjectsPerform:@selector(freeObjects)]; [list freeObjects]; for (i=0; i<len; i++) { l = stringList[i]; n = [l count]; nl = [[List alloc] initCount:n]; for (j=0; j<n; j++) { [nl addObject:[[l objectAt:j] copy]]; } [list addObject:nl]; } [wahl loadColumnZero]; return self; } - enableStrassenverzeichnis:(BOOL)flag { [menuStrassen setEnabled:flag]; return self; } - appDidInit:sender { [wahl setCellClass:[MyBrowserCell class]]; list = [[List alloc] init]; PlzDir = NXGetDefaultValue ([NXApp appName], "PlzDir"); if (!PlzDir) { PlzDir="/NextLibrary/Plz"; NXWriteDefault([NXApp appName], "PlzDir", PlzDir); } if (!*PlzDir) { PlzDir="/NextLibrary/Plz"; NXWriteDefault([NXApp appName], "PlzDir", PlzDir); } [plzdir setStringValue:PlzDir]; [wahl setDoubleAction:@selector(listSelectedDouble:)]; cd = NeXTInterface(self); return self; } - getPlzDirFrom:sender { PlzDir=[sender stringValue]; if (!*PlzDir) { PlzDir="/NextLibrary/Plz"; [sender setStringValue:PlzDir]; } NXWriteDefault([NXApp appName], "PlzDir", PlzDir); return self; } - (int)browser:sender fillMatrix:matrix inColumn:(int)column { return [list count]; } - browser:sender loadCell:cell atRow:(int)row inColumn:(int)column /* This delegate method loads the cell for a given row. The stringValue * for that row comes from the list. */ { char s[300]; MyString stringlist; MyStringSegment *segment; int len,i; if (list) { *s='\0'; if (row < [list count]) { stringlist = [list objectAt:row]; len = [stringlist count]; for (i=0; i<len; i++) { segment=[stringlist objectAt:i]; if ([segment typ] != SEPARATOR && [segment typ] != FREE) { strcat(s,[segment string]); } if ([segment typ] == FREE) NXLogError("freed string segment!\n"); } [cell setStringValue:s]; [cell setLeaf:YES]; [cell setTag:row]; } } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.