This is ResourcePanel.m in view mode; [Download] [Up]
/* * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved. * * (b) If this Sample Code is distributed as part of the Display PostScript * System Software Development Kit from Adobe Systems Incorporated, * then this copy is designated as Development Software and its use is * subject to the terms of the License Agreement attached to such Kit. * * (c) If this Sample Code is distributed independently, then the following * terms apply: * * (d) This file may be freely copied and redistributed as long as: * 1) Parts (a), (d), (e) and (f) continue to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * (e) PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED. * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY) * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT * OF THIRD PARTY RIGHTS. */ /* * ResourcePanel.m * * This panel displays the unavailable resources. * * Version: 2.0 * Author: Ken Fromm * History: * 03-07-91 Added this comment. */ #import "ResourcePanel.h" #import <appkit/Application.h> #import <appkit/NXBrowser.h> #import <appkit/NXBrowserCell.h> #import <appkit/Matrix.h> #import <objc/List.h> #import <strings.h> @implementation ResourcePanel - setTypeBrowser:anObject { typeBrowser = anObject; [typeBrowser useScrollBars:NO]; [typeBrowser setDelegate:self]; [typeBrowser setTarget:self]; [typeBrowser setAction:@selector(browserAction:)]; return self; } - setFileBrowser:anObject { fileBrowser = anObject; [fileBrowser setDelegate:self]; return self; } - browserAction:sender { [fileBrowser reloadColumn:0]; return self; } - (int) runModalWithList:(ResourceList *) aList { return [self runModalWithList:aList andName:NULL]; } - (int) runModalWithList:(ResourceList *) aList andName:(NXAtom) name { int result; const char *filename; list = aList; if (name) { filename = strrchr(name, '/'); if (filename) filename++; else filename = name; [nameField setStringValue:filename]; } else [nameField setStringValue:"<filename unavailable>"]; [typeBrowser reloadColumn:0]; [[typeBrowser matrixInColumn:0] selectCellAt:0 :0]; [fileBrowser reloadColumn:0]; [self makeKeyAndOrderFront:self]; result = [NXApp runModalFor:self]; [self orderOut:self]; list = NULL; return result; } - endModal:sender { [NXApp stopModal:[sender selectedTag]]; return self; } /* * NXBrowser Delegate method. */ - (int) browser:sender fillMatrix:matrix inColumn:(int) column { id cell; int i, j, row, rows, count; const char *type; rows = 0; if (list) { if (sender == typeBrowser && column == 0) { for (i = 0; i < RES_NUMTYPES; i++) { count = [list->types[i] count]; if (count) { type = GetTypeComment(i); [matrix addRow]; cell = [matrix cellAt:rows++ :0]; [cell setStringValueNoCopy:type]; [[cell setLeaf:YES] setLoaded:YES]; } } } else if (sender == fileBrowser && column == 0) { count = 0; row = [[typeBrowser matrixInColumn:0] selectedRow]; for (i = 0; i < RES_NUMTYPES; i++) { if (list->types[i]) { if (count == row) break; count++; } } if (i < RES_NUMTYPES) { count = [list->types[i] count]; for (j = 0; j < count; j++) { [matrix addRow]; cell = [matrix cellAt:rows++ :0]; [cell setStringValueNoCopy:(const char *) [list->types[i] objectAt:j]]; [[[cell setLeaf:YES] setLoaded:YES] setSelectable:NO]; } } } } return rows; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.