This is NibInfoMethods.m in view mode; [Download] [Up]
// Robert Nicholson, Thu Feb 10 14:42:00 GMT 1994 // Copyright, 1994. All rights reserved. #import "NibInfoMethods.h" #import <string.h> @implementation Object(NibInfoMethods) // report header - NIBINFOReportHeader:(const char *)pathname toStream:(NXStream *)s { NXPrintf(s,"Header for nib %s\n",pathname); return self; } // report trailer - NIBINFOReportTrailer:(const char *)pathname toStream:(NXStream *)s { NXPrintf(s,"Trailer for nib %s\n",pathname); return self; } // header line for master object - NIBINFOheaderForObject:anObject toStream:(NXStream *)s { NXPrintf(s,"%s",[[anObject class] name]); if ([anObject respondsTo:@selector(NIBINFOinfoToStream:)]) { [anObject NIBINFOinfoToStream:s]; } NXPrintf(s,"\n"); return self; } // detail information for source of connection. - NIBINFOdetailForSourceToStream:(NXStream *)s { const char *sourceClassName; sourceClassName = [[self class] name]; NXPrintf(s,"\t%s",sourceClassName ? sourceClassName : "NULL"); return self; } // detail information for desintation of connection. - NIBINFOdetailForDestToStream:(NXStream *)s { const char *destClassName; destClassName = [[self class] name]; NXPrintf(s,"->%s",destClassName ? destClassName : "NULL"); return self; } // selector/outlet for connection - NIBINFOselector:(const char *)selector toStream:(NXStream *)s { char *slash=NULL; NXPrintf(s," "); slash = rindex(selector,'/'); if (slash) { NXPrintf(s,"[%s]",slash+1); } else { NXPrintf(s,"[%s]",selector); } NXPrintf(s,"\n"); return self; } #import <dbkit/DBModule.h> // destintation information - NIBINFOinfoToStream:(NXStream *)s { const char *info=NULL; // Unfortunately we are unable to use dynamic binding on // IB's Template classes. eg. WindowTemplate, DBModuleTemplate // MenuTemplate. "Template" classes are substitutes for real classes during // edit mode. They are all Object subclasses. if (!strcmp([[self class] name],"DBModuleTemplate")) { char name[MAXPATHLEN+1]; const char *database; const char *entity; database = (const char *)[[(DBModule *)self database] name]; entity =(const char *)[[(DBModule *)self entity] name]; sprintf(name,"%s->%s",database,entity); info = name; } else { if ([self respondsTo:@selector(title)]) { info=(const char *)[self perform:@selector(title)]; } } if (info && *info) { NXPrintf(s,"(\"%s\") ",info); } else { NXPrintf(s,"(\"N/A\") "); } return self; } @end // customized for View subclasses in order to print frame information. @implementation View(NibInfoMethods) - NIBINFOinfoToStream:(NXStream *)s { [super NIBINFOinfoToStream:s]; NXPrintf(s,"(%f %f %f %f)",NX_X(&frame),NX_Y(&frame),NX_WIDTH(&frame),NX_HEIGHT(&frame)); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.