|
|
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.