This is OpenPanel.m in view mode; [Download] [Up]
/* Implementation of OpenPanel class * * Copyright (C) 1994, 1995 The Board of Trustees of * The Leland Stanford Junior University. All Rights Reserved. * * Authors: Jeff Kamerer * * This file is part of an Objective-C class library for a window system * * OpenPanel.m,v 1.27 1995/04/10 17:54:14 pfkeb Exp * */ #include "OpenPanel.h" #include "Application.h" #include "TextField.h" #include "NXBrowser.h" #include <objc/List.h> #include <stdlib.h> #include <string.h> @implementation OpenPanel - initContent:(const NXRect *)contentRect style:(int)aStyle backing:(int)backingType buttonMask:(int)mask defer:(BOOL)flag { [super initContent:contentRect style:aStyle backing:backingType buttonMask:mask defer:flag]; instancename = "OpenPanel"; [_titleText setStringValue:"Open"]; return self; } - ok:sender { List *aList = nil; int i, num; const char *formString; char *aFilename; aList = [browser getSelectedCells:aList]; num = [aList count]; if ( !num ) { return self; } filenames = malloc((num + 1) * sizeof(char *)); for (i = 0; i < num; i++) { filenames[i] = malloc((strlen([[aList objectAt:i] stringValue]) + 2) *sizeof(char)); *(char *)filenames[i] = '\0'; strcpy((char *)filenames[i], [[aList objectAt:i] stringValue]); } (char *)filenames[num] = NULL; [aList free]; /***** keep some old code in here in case someone asks for filename instead of filenames, even though it is not an 'NX' OpenPanel method ***********/ formString = [form stringValue]; aFilename = malloc((strlen(directory) + strlen(formString) + 2) * sizeof(char)); if (formString[0] == '\0') { return self; } strcpy(aFilename, directory); strcat(aFilename, "/"); strcat(aFilename, formString); strcpy(filename, aFilename); free(aFilename); /*************************/ [self performClose:self]; [NXApp stopModal:NX_OKTAG]; return self; } - allowMultipleFiles:(BOOL)flag { _allowMultipleFiles = flag; return self; } - (int)runModalForDirectory:(const char *)path file:(const char *)name types:(const char *const *)fileTypes { /* need to set resources first, then */ filetypes = fileTypes; return [self runModal]; } - (int)runModalForTypes:(const char *const *)fileTypes { filetypes = fileTypes; return [self runModal]; } - (int)runModalForDirectory:(const char *)path file:(const char *)name { /* Needs to set the widget resources, then */ filetypes = NULL; return [self runModal]; } - (const char *const *)filenames { return filenames; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.