home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / Connectivity / DialOnDemand-0.1-MIHS-src / MyObject.m < prev    next >
Encoding:
Text File  |  1995-10-24  |  3.3 KB  |  143 lines

  1.  
  2. #import "MyObject.h"
  3. #import "StringList.h"
  4.  
  5. @implementation MyObject
  6.  
  7. -awakeFromNib;
  8. {
  9.     static NXDefaultsVector defaults = {
  10.     {"Command", "/etc/ppp/bin/pppd"},
  11.     {NULL}
  12.     };
  13.  
  14.     NXRegisterDefaults("DialOnDemand", defaults);
  15.     [[fileScroller window] setFrameAutosaveName:"FileWindow"];
  16.     [[command window] setFrameAutosaveName:"PrefPanel"];
  17.  
  18.     [NXApp setDelegate:self];
  19.     [[Application workspace] beginListeningForApplicationStatusChanges];
  20.  
  21.     [fileScroller setTarget:self];
  22.     [fileScroller setAction:@selector(clickScroller:)];
  23.     
  24.     strcpy(filePath, [[NXBundle mainBundle] directory]);
  25.     strcat(filePath, "/");
  26.     strcat(filePath, "fileList");
  27.     fileStream = NXOpenTypedStreamForFile(filePath, NX_READONLY);
  28.     if (fileStream == NULL) { 
  29.     fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
  30.     [fileList write:fileStream];
  31.     NXCloseTypedStream(fileStream);
  32.     fileStream = NXOpenTypedStreamForFile(filePath, NX_READONLY);
  33.     if (fileStream == NULL) {
  34.         NXRunAlertPanel(NULL, "Can't create file list inside app wrapper",
  35.         NULL, NULL, NULL);
  36.         [NXApp terminate:self];
  37.     }
  38.     }
  39.     [fileList read:fileStream];
  40.     [fileScroller loadColumnZero];
  41.     NXCloseTypedStream(fileStream);
  42.     
  43.     [command setStringValue:NXGetDefaultValue("DialOnDemand", "Command")];
  44.     [fileName selectText:self];
  45.     return self;
  46. }
  47.  
  48. - addFileName:sender;
  49. {
  50.     if (strlen([fileName stringValue]) > 0)
  51.     [fileList addStringIfAbsent:[fileName stringValue]];
  52.     [fileScroller loadColumnZero];
  53.     fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
  54.     [fileList write:fileStream];
  55.     NXCloseTypedStream(fileStream);
  56.     [fileName selectText:self];
  57.     return self;
  58. }
  59.  
  60. - delFileName:sender;
  61. {
  62.     [fileList removeString:[fileName stringValue]];
  63.     [fileScroller loadColumnZero];
  64.     fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
  65.     [fileList write:fileStream];
  66.     NXCloseTypedStream(fileStream);
  67.     [fileName selectText:self];
  68.     return self;
  69. }
  70.  
  71. - cancelFileOp:sender;
  72. {
  73.     [fileName setStringValue:NXUniqueString("")];
  74.     [fileName selectText:self];
  75.     return self;
  76. }
  77.  
  78. - clickScroller:sender;
  79. {
  80.     if ([fileScroller selectedCell]) {
  81.     [fileName setStringValue:[[fileScroller selectedCell] stringValue]];
  82.     }
  83.     return self;
  84. }
  85.  
  86. - commandDefault:sender;
  87. {
  88.     NXWriteDefault("DialOnDemand", "Command", [command stringValue]);
  89.     return self;
  90. }
  91.  
  92. - selectCommand:sender;
  93. {
  94.         id openPanel = [OpenPanel new];
  95.  
  96.     if ([openPanel runModal] == NX_OKTAG) {
  97.     [command setStringValue:[openPanel filename]];
  98.     }
  99.  
  100.     return self;
  101. }
  102.  
  103. - selectApp:sender;
  104. {
  105.         id openPanel = [OpenPanel new];
  106.  
  107.     [openPanel chooseDirectories:YES];
  108.     if ([openPanel runModal] == NX_OKTAG) {
  109.     [fileName setStringValue:[openPanel filename]];
  110.     }
  111.  
  112.     return self;
  113. }
  114.  
  115. - infoPanel:sender;
  116. {
  117.     if (!infoPanel) {
  118.     [NXApp loadNibSection:"Info.nib" owner:self];
  119.     }
  120.     [infoPanel orderFront:self];
  121.     return self;
  122. }
  123.  
  124. -appWillTerminate:sender;
  125. {
  126.     [[Application workspace] endListeningForApplicationStatusChanges];
  127.     return (id)1;
  128. }
  129.  
  130. -app:sender applicationWillLaunch:(const char *)appName;
  131. {
  132.     int i;
  133.     
  134.     for (i = 0; i < [fileList count]; i++) {
  135.     if (strstr(appName, [fileList stringAt:i]) != NULL) {
  136.         system(NXGetDefaultValue("DialOnDemand", "Command"));
  137.     }
  138.     }
  139.     return self;
  140. }
  141.  
  142. @end
  143.