home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Graphics / Gnuplot / Source / Preferences.m < prev    next >
Encoding:
Text File  |  1993-03-18  |  5.1 KB  |  268 lines

  1.  
  2. static char RCSId[]="$Id: Preferences.m,v 1.1.1.1 1993/03/18 03:35:22 davis Exp $";
  3.  
  4.  
  5. #import <appkit/Application.h>
  6. #import <appkit/Button.h>
  7. #import <appkit/Listener.h>
  8. #import <appkit/Matrix.h>
  9. #import <appkit/Panel.h>
  10.  
  11. #import <defaults/defaults.h>
  12.  
  13. #import "Gnuplot.h"
  14. #import "Preferences.h"
  15.  
  16. #define    OWNER    "Gnuplot"        /* Owner of defaults    */
  17.  
  18. static NXDefaultsVector GnuplotDefaults = {
  19.     {"ConstantUpdate", "1"},        /* Update after every change    */
  20.     {"NewDocument", "1"},        /* Create a new doc at launch    */
  21.     {"DefaultInspector", "0"},        /* Default Pane is General    */
  22.     {"ReadInitFile", "1"},        /* Currently unused        */
  23.     {"InitFile", "~/.gnuplot"},        /* Currently unused        */
  24.     {"HalvePlot", "1"},            /* Make plots half-size        */
  25.     {NULL}
  26. };
  27.  
  28.  
  29. @implementation Preferences
  30.  
  31. - init
  32. {
  33.     [super init];
  34.     NXRegisterDefaults(OWNER, GnuplotDefaults);
  35.  
  36.     window = nil;
  37.  
  38.     /*  Set instance variables to their defaults.  */
  39.  
  40.     constantUpdate = *NXGetDefaultValue(OWNER, "ConstantUpdate") - '0';
  41.     [Gnuplot setConstantUpdate:constantUpdate];
  42.  
  43.     newDocument = (*NXGetDefaultValue(OWNER, "NewDocument") != '0');
  44.     defaultInspector = *NXGetDefaultValue(OWNER, "DefaultInspector") - '0';
  45.  
  46.     halvePlot = (*NXGetDefaultValue(OWNER, "HalvePlot") != '0');
  47.     [Gnuplot setHalvePlot:halvePlot];
  48.  
  49.     isInitFile = (*NXGetDefaultValue(OWNER, "ReadInitFile") != '0');
  50.     initFile = NXCopyStringBufferFromZone(NXGetDefaultValue(OWNER, "InitFile"),
  51.                       [self zone]);
  52.     return self;
  53. }
  54.  
  55.  
  56. - free
  57. {
  58.     return [super free];
  59. }
  60.  
  61.  
  62. - awakeFromNib
  63. {
  64.     [window setFrameUsingName:"PreferencesPanel"];
  65.     [window setFrameAutosaveName:"PreferencesPanel"];
  66.  
  67.     [constantUpdateMatrix selectCellWithTag:constantUpdate];
  68.  
  69.     [newDocumentButton setState:newDocument];
  70.     [defaultInspectorMatrix selectCellWithTag:defaultInspector];
  71.     [halvePlotMatrix selectCellWithTag:halvePlot? 1:0];
  72.  
  73.     /*  
  74.      *  The services "preferences" are not actually stored in the 
  75.      *  defaults database.  We check to see if the services are 
  76.      *  enabled and set the controls based on that.
  77.      */
  78.     [addDataToCurrentButton setState:
  79.          NXIsServicesMenuItemEnabled ("Gnuplot/Add Data to Current Plot")];
  80.  
  81.     [addDataToNewButton setState:
  82.          NXIsServicesMenuItemEnabled ("Gnuplot/Plot Data in New Plot")];
  83.  
  84. //    [initFileButton setState:isInitFile];
  85. //    [initFileField setStringValue:initFile];
  86.  
  87.     return self;
  88. }
  89.  
  90.  
  91. - showPanel:sender
  92. {
  93.     if (!window) {
  94.     [NXApp loadNibSection: "Preferences.nib" 
  95.             owner: self
  96.             withNames: NO
  97.              fromZone: [self zone]];
  98.     }
  99.  
  100.     [window makeKeyAndOrderFront:self];
  101.     return self;
  102. }
  103.  
  104.  
  105.  
  106. - doSetConstantUpdate:sender
  107. {
  108.     char aString[2];
  109.  
  110.     constantUpdate = [constantUpdateMatrix selectedTag];
  111.     aString[0] = '0' + constantUpdate;
  112.     aString[1] = '\0';
  113.     NXWriteDefault (OWNER, "ConstantUpdate", aString);
  114.  
  115.     [Gnuplot setConstantUpdate:constantUpdate];
  116.     return self;
  117. }
  118.  
  119.  
  120.  
  121. - (int)constantUpdate
  122. {
  123.     return constantUpdate;
  124. }
  125.  
  126.  
  127. - doSetNewDocument:sender
  128. {
  129.     const char *aString;
  130.  
  131.     if (newDocument = [newDocumentButton state]) aString = "1";
  132.     else aString = "0";
  133.     NXWriteDefault (OWNER, "NewDocument", aString);
  134.  
  135.     return self;
  136. }
  137.  
  138.  
  139.  
  140. - (BOOL) newDocument
  141. {
  142.     return newDocument;
  143. }
  144.  
  145.  
  146. - doSetDefaultInspector:sender
  147. {
  148.     char aString[2];
  149.  
  150.     defaultInspector = [defaultInspectorMatrix selectedTag];
  151.     aString[0] = '0' + defaultInspector;
  152.     aString[1] = '\0';
  153.     NXWriteDefault (OWNER, "DefaultInspector", aString);
  154.     return self;
  155. }
  156.  
  157.  
  158. - (int)defaultInspector
  159. {
  160.     return defaultInspector;
  161. }
  162.  
  163.  
  164. - doSetHalvePlot:sender
  165. {
  166.     const char *aString;
  167.  
  168.     if (halvePlot = [halvePlotMatrix selectedTag]) aString = "1";
  169.     else aString = "0";
  170.     NXWriteDefault (OWNER, "HalvePlot", aString);
  171.  
  172.     [Gnuplot setHalvePlot:halvePlot];
  173.  
  174.     return self;
  175. }
  176.  
  177.  
  178. - (BOOL)halvePlot
  179. {
  180.     return halvePlot;
  181. }
  182.  
  183.  
  184.  
  185. - doSetAddDataToCurrent:sender
  186. {
  187.     NXSetServicesMenuItemEnabled ("Gnuplot/Add Data to Current Plot",
  188.                   [addDataToCurrentButton state]);
  189.     [addDataToCurrentButton setState:NXIsServicesMenuItemEnabled
  190.                      ("Gnuplot/Add Data to Current Plot")];
  191.     return self;
  192. }
  193.  
  194.  
  195.  
  196. - (BOOL)addDataToCurrent
  197. {
  198.     return NXIsServicesMenuItemEnabled ("Gnuplot/Add Data to Current Plot");
  199. }
  200.  
  201.  
  202.  
  203. - doSetAddDataToNew:sender
  204. {
  205.     NXSetServicesMenuItemEnabled ("Gnuplot/Plot Data in New Plot",
  206.                   [addDataToNewButton state]);
  207.     [addDataToNewButton setState:NXIsServicesMenuItemEnabled
  208.                  ("Gnuplot/Plot Data in New Plot")];
  209.     return self;
  210. }
  211.  
  212.  
  213.  
  214. - (BOOL)addDataToNew
  215. {
  216.     return NXIsServicesMenuItemEnabled ("Gnuplot/Plot Data in New Plot");
  217. }
  218.  
  219.  
  220.  
  221. - doSetIsInitFile:sender
  222. {
  223.     const char *aString;
  224.  
  225.     if (isInitFile = [initFileButton state]) aString = "1";
  226.     else aString = "0";
  227.     NXWriteDefault (OWNER, "ReadInitFile", aString);
  228.  
  229.     return self;
  230. }
  231.  
  232.  
  233. - doSetInitFileWithOpenPanel:sender
  234. {
  235.     return self;
  236. }
  237.  
  238.  
  239.  
  240. - (BOOL) isInitFile
  241. {
  242.     return isInitFile;
  243. }
  244.  
  245.  
  246. - doSetInitFile:sender
  247. {
  248.     NXWriteDefault (OWNER, "ReadInitFile", [initFileField stringValue]);
  249.     return self;
  250. }
  251.  
  252.  
  253.  
  254. - (const char *) initFile
  255. {
  256.     return initFile;
  257. }
  258.  
  259.  
  260. // Shuts up the compiler about unused RCSId
  261. - (const char *) rcsid
  262. {
  263.     return RCSId;
  264. }
  265.  
  266.  
  267. @end
  268.