home *** CD-ROM | disk | FTP | other *** search
/ Dream 41 / Amiga_Dream_41.iso / Amiga / Programmation / c / gcc / objam02.lha / objam / test / objtritonTest.m < prev    next >
Encoding:
Text File  |  1995-04-16  |  1.8 KB  |  59 lines

  1. // This program opens a Triton window containing a listview gadget with the
  2. // contents of a specified directory and waits for the user to close it.
  3.  
  4. #include <stdio.h>
  5. #import <objtriton/TRApplication.h>
  6. #import <objam/FileList.h>
  7. #import <objam/ArgumentParser.h>
  8.  
  9. // Our own custom class
  10.  
  11. @interface DirWin: TRWindow { id list; }
  12.   -initDir:(const char *)n; -free; -tritonMessage:(struct TR_Message *)trMsg; @end
  13. @implementation DirWin
  14. - initDir:(const char *)n {
  15.   if(![super init]) return [self free];
  16.   if(!(list=[FileList new])) return [self free];
  17.   if(![list name:n]) return [self free];
  18.   if(![list addDirectory:n]) return [self free];
  19.   if(![self open:WindowTitle([list name]),WindowID(1),ListSS([list execList],1,0,0),EndProject])
  20.     return [self free];
  21.   return self; }
  22. - free {
  23.   [self close];
  24.   if(list) [list free];
  25.   return [super free]; }
  26. - tritonMessage:(struct TR_Message *)trMsg {
  27.   if(trMsg->trm_Class==TRMS_CLOSEWINDOW) [OAApp terminate:self];
  28.   return self; }
  29. @end
  30.  
  31. id argParser;
  32.  
  33. void fail(const char *txt)
  34. {
  35.   puts(txt);
  36.   if(OAApp) [OAApp free];
  37.   if(argParser) [argParser free];
  38.   exit(20);
  39. }
  40.  
  41. int main(void)
  42. {
  43.   char *defDir="";
  44.   char **dirNamePtr=&defDir;
  45.  
  46.   // Set up everything
  47.   if(!(OAApp=[[Application alloc] init:"objtritonTest"])) fail("Can't create ObjectiveAmiga application.");
  48.   if(!(TRApp=[[TRApplication alloc] init])) fail("Can't create Triton application.");
  49.   if(![TRApp runFromAppKit]) fail("Can't run Triton application.");
  50.   if(!(argParser=[[ArgumentParser alloc] init:dirNamePtr with:"DIR=DIRNAME"]))
  51.     fail("Can't create argument parser.");
  52.   if(!([argParser parseCommandline])) fail("Can't parse args.");
  53.   if(!([[DirWin alloc] initDir:*dirNamePtr])) fail("Can't open window.");
  54.   [argParser free];
  55.  
  56.   // Run the Application; this message won't return
  57.   [OAApp run];
  58. }
  59.