home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AtYourService / DefaultHandler.m < prev    next >
Encoding:
Text File  |  1992-12-13  |  3.9 KB  |  153 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import <appkit/nextstd.h>
  5. #import "DefaultHandler.h"
  6. #import <appkit/publicWraps.h>
  7. #import <defaults/defaults.h>
  8. #import <appkit/Matrix.h>
  9. #import <appkit/Form.h>
  10. #import <appkit/Cell.h>
  11. #import <appkit/Button.h>
  12. #import <strings.h>
  13. extern id NXApp;
  14.  
  15. @implementation DefaultHandler
  16.  
  17. /*
  18.  * The DefaultHandler object contains the data associated with sort
  19.  * defaults,  and the routines that access them.
  20.  */
  21.  
  22. + initialize
  23. {
  24. static NXDefaultsVector Defaults= {
  25.     {  "FieldSort",  "No" },
  26.     {  "Separator", " " },
  27.     {  "Start", "" },
  28.     {  "End", "" },
  29.     {NULL}
  30.     };
  31.  
  32.     NXRegisterDefaults("AtYourService", Defaults);
  33.     return self;
  34. }
  35.  
  36. - writeDefaults:sender
  37. {
  38.     int useFields=(int) [inSwitch selectedCell];
  39.     if (useFields) {
  40.         const char *opt;
  41.         NXWriteDefault("AtYourService", "FieldSort", "Yes");
  42.         opt = [separator stringValue];
  43.         if ( *opt ) {
  44.             char sep[2];
  45.             
  46.             sep[0] = *opt;
  47.             sep[1] = '\0';
  48.             if ( strlen(opt) > 1 ) {
  49.                 [separator setStringValue:sep];
  50.                 NXBeep();
  51.                 }
  52.             NXWriteDefault("AtYourService", "Separator", sep);
  53.             }
  54.         opt = [start stringValue];
  55.         if ( *opt ) {
  56.             char thisOption[100];
  57.           /*
  58.            * Sort asks for number of fields to skip,  we ask for
  59.            * first significant field,  so we have to minus one here.
  60.            */
  61.             float startVal;
  62.             startVal=[start floatValue];
  63.             startVal--;
  64.             sprintf(thisOption,"%g",startVal);
  65.             NXWriteDefault("AtYourService", "Start", thisOption);
  66.             }
  67.         opt = [end stringValue];
  68.         if ( *opt ) NXWriteDefault("AtYourService", "End", opt);
  69.     }
  70.     else NXWriteDefault("AtYourService", "FieldSort", "No");
  71.     return self;
  72. }
  73.  
  74. - readDefaults:sender
  75. {
  76.     int useFields;
  77.     useFields=(strncmp(NXGetDefaultValue("AtYourService","FieldSort"),"Yes",3) == 0);
  78.     [inForm setEnabled:useFields];
  79.     [separator setEnabled:useFields];
  80.     [inSwitch selectCellAt:useFields:0];
  81.     
  82.     [start setStringValue:NXGetDefaultValue("AtYourService","Start")];
  83.     [end setStringValue:NXGetDefaultValue("AtYourService","End")];
  84.     [separator setStringValue:NXGetDefaultValue("AtYourService","Separator")];
  85.     
  86.     // This method is called at startup.  Set up the entry types for the panel
  87.     [start setEntryType:NX_FLOATTYPE];
  88.     [end setEntryType:NX_FLOATTYPE];
  89.     return self;
  90. }
  91.  
  92. - changeState:sender
  93. {
  94.   /*
  95.    * This method enables/disables the row selection based on whether
  96.    * row-based sorting will be done
  97.    */
  98.     [inForm setEnabled:[inSwitch selectedRow]];
  99.     [separator setEnabled:[inSwitch selectedRow]];
  100.     return self;
  101. }
  102.  
  103. - (char *) sortFields
  104. {
  105.   /*
  106.    * Return the sort field information
  107.    */
  108.     char options[100];
  109.     strcpy(options,"");
  110.     if ( [inSwitch selectedRow] ) {
  111.         const char *opt;
  112.         opt = [separator stringValue];
  113.         if ( *opt ) {
  114.             char sep[2];
  115.             
  116.             sep[0] = *opt;
  117.             sep[1] = '\0';
  118.             strcat(options," -t");
  119.             strcat(options,sep);
  120.             if ( strlen(opt) > 1 ) {
  121.                 [separator setStringValue:sep];
  122.                 NXBeep();
  123.                 }
  124.             }
  125.         opt = [start stringValue];
  126.         if ( *opt ) {
  127.             char thisOption[100];
  128.           /*
  129.            * Sort asks for number of fields to skip,  we ask for
  130.            * first significant field,  so we have to minus one here.
  131.            */
  132.             float startVal;
  133.             startVal=[start floatValue];
  134.             startVal--;
  135.             sprintf(thisOption," +%g",startVal);
  136.             strcat(options,thisOption);
  137.             }
  138.         opt = [end stringValue];
  139.         if ( *opt ) {
  140.             strcat(options," -");
  141.             strcat(options,opt);
  142.             }
  143.         }
  144.     return options;
  145. }
  146.  
  147. - showPanel:sender
  148. {
  149.     [optionPanel makeKeyAndOrderFront:self];
  150.     return self;
  151. }
  152. @end
  153.