home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Examples / UNIX / Subprocess / Coordinator.m < prev    next >
Text File  |  1992-06-01  |  2KB  |  101 lines

  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.  *=================================================&Bp=====*/
  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
  101.