This is HDController.m in view mode; [Download] [Up]
/* HDController.m by Paul Kunz January 1993 * Application delegate to make Hippo.bundle into HippoDraw application. * Also serves as example on how to incorporate Hippo into an application. * * Copyright (C) 1993 The Board of Trustees of * The Leland Stanford Junior University. All Rights Reserved. */ #import "HDController.h" const char HDController_h_rcsid[] = HDCONTROLLER_H_ID; const char HDController_m_rcsid[] = "$Id: HDController.m,v 1.10 1993/08/04 21:54:45 pfkeb Exp $"; #import <appkit/appkit.h> #import "HDrawApp.h" #import "sym/MailSpeaker.h" @implementation HDController - init { NXBundle *bundle; BOOL ok; char buffer[MAXPATHLEN+1]; ok = [[NXBundle mainBundle] getPath:buffer forResource:"Hippo" ofType:"bundle"]; if ( ok ) { bundle = [[NXBundle alloc] initForDirectory:buffer]; if (bundle) { hippoDraw = [[[bundle classNamed:"HDrawApp"] alloc] init]; } else { ok = NO; } } if (!ok) { NXRunAlertPanel( "Error", "Can not find or load Hippo bundle", "Ok", NULL, NULL ); } return self; } - appDidInit:(Application *)sender { return [hippoDraw appDidInit:sender]; } - addToAvailFuncs:sender { return [hippoDraw addToAvailFuncs:sender]; } - (BOOL)validateCommand:(MenuCell *)menuCell { return [hippoDraw validateCommand:menuCell]; } - info:sender { [hippoDraw info:sender]; return self; } - legal:sender { [hippoDraw legal:sender]; return self; } - cernPanel:sender { [hippoDraw cernPanel:sender]; return self; } - new:sender { return [hippoDraw new:sender]; } - open:sender { return [hippoDraw open:sender]; } - openTuple:sender { return [hippoDraw openTuple:sender]; } - openTupleAsText:sender { return [hippoDraw openTupleAsText:sender]; } - closeTuple:sender { return [hippoDraw closeTuple:sender]; } - setCurrentGraphic:sender { return [hippoDraw setCurrentGraphic:sender]; } - terminate:sender { return [hippoDraw terminate:sender]; } - orderFrontTools:sender { return [hippoDraw orderFrontTools:sender]; } - orderFrontInspector:sender { return [hippoDraw orderFrontTupleInsp:sender]; } - showTupleAsTable:sender { return [hippoDraw showTupleAsTable:sender]; } - showHelpPanel:sender { NXHelpPanel *panel = [NXHelpPanel new]; [panel makeKeyAndOrderFront:self]; return self; } - (int)app:sender openFile:(const char *)path type:(const char *)type /* * This method is performed whenever a user double-clicks on an icon * in the Workspace Manager representing a Draw program document. */ { return [hippoDraw app:sender openFile:path type:type]; } - (BOOL)appAcceptsAnotherFile:(Application *)sender /* * We accept any number of appOpenFile:type: messages. */ { return YES; } - app:sender powerOffIn:(int)ms andSave:(int)andSave { return [hippoDraw app:sender powerOffIn:ms andSave:andSave]; } - (BOOL)menuItemUpdate:(MenuCell *)menuCell { return [hippoDraw menuItemUpdate:menuCell]; } - mailSpeaker { id worksp; id speaker; port_t mail; worksp = [Application workspace]; if ( ![worksp launchApplication:"Mail"] ) { NXRunAlertPanel("Error", "Can not find Mail.app for unknown reason.", "OK", NULL, NULL); return nil; } speaker = [MailSpeaker new]; mail = NXPortFromName("MailSendDemo", ""); // ACK for now it works [speaker setSendPort:mail]; return speaker; } - sendBug:sender { id speaker; int theWin; speaker = [self mailSpeaker]; [speaker openSend:&theWin]; [speaker setSubject:"Bug report" inWindow:theWin]; [speaker setTo:"Hippo_Bug@ebnextk.slac.stanford.edu" inWindow:theWin]; [speaker free]; return self; } - sendSuggestion:sender { id speaker; int theWin; speaker = [self mailSpeaker]; [speaker openSend:&theWin]; [speaker setSubject:"Suggestion" inWindow:theWin]; [speaker setTo:"Hippo_Comment@ebnextk.slac.stanford.edu" inWindow:theWin]; [speaker free]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.