|
|
1.1 ! root 1: /* ! 2: Coordinator.m ! 3: by Joe Freeman, David LaVallee ! 4: Subprocess Example, Release 2.0 ! 5: NeXT Computer, Inc. ! 6: ! 7: You may freely copy, distribute and reuse the code in this example. ! 8: NeXT disclaims any warranty of any kind, expressed or implied, as to ! 9: its fitness for any particular use. ! 10: */ ! 11: ! 12: #import "Coordinator.h" ! 13: #import "CommandScroll.h" ! 14: #import "Subprocess.h" ! 15: #import <appkit/nextstd.h> ! 16: #import <appkit/Application.h> ! 17: #import <appkit/Panel.h> ! 18: #import <objc/NXStringTable.h> ! 19: ! 20: @implementation Coordinator ! 21: ! 22: - showInfo:sender ! 23: { ! 24: if (!infoPanel) ! 25: { ! 26: infoPanel = ! 27: [NXApp loadNibSection:"InfoPanel.nib" owner:NXApp withNames:NO]; ! 28: } ! 29: [infoPanel orderFront:self]; ! 30: return self; ! 31: } ! 32: ! 33: /*========================================================== ! 34: * ! 35: * Subprocess Delegation ! 36: * ! 37: *==========================================================*/ ! 38: ! 39: - subprocessOutput:(char *)buffer ! 40: { ! 41: [commandView appendString:buffer]; ! 42: return self; ! 43: } ! 44: ! 45: - subprocessDone ! 46: { ! 47: [NXApp terminate:self]; ! 48: return self; ! 49: } ! 50: ! 51: - subprocessError:(const char *)errorString ! 52: // uses stringTable to localize error messages as appropriate, ! 53: // and then displays the message in an alert panel ! 54: { ! 55: const char *returnedString; ! 56: ! 57: if ((returnedString = [stringTable valueForStringKey:errorString])) ! 58: { ! 59: NXRunAlertPanel(0, returnedString, 0, 0, 0); ! 60: } ! 61: else ! 62: { ! 63: NXRunAlertPanel(0, errorString, 0, 0, 0); ! 64: } ! 65: return self; ! 66: } ! 67: ! 68: /*========================================================== ! 69: * ! 70: * CommandScroll Delegation ! 71: * ! 72: *==========================================================*/ ! 73: ! 74: - userEntered:(char *)buffer ! 75: { ! 76: [theSubprocess send:buffer withNewline:NO]; ! 77: return self; ! 78: } ! 79: ! 80: /*========================================================== ! 81: * ! 82: * Application Object Delegation ! 83: * ! 84: *==========================================================*/ ! 85: ! 86: - appDidInit:sender ! 87: { ! 88: theSubprocess = ! 89: [[Subprocess alloc] ! 90: init:"/bin/sh" withDelegate:self andPtySupport:YES andStdErr:YES]; ! 91: return self; ! 92: } ! 93: ! 94: - appWillTerminate:sender ! 95: { ! 96: [theSubprocess terminate:sender]; ! 97: return self; ! 98: } ! 99: ! 100: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.