home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / Apps / Clocks / Julian / Source / MyObject.m < prev    next >
Encoding:
Text File  |  1995-06-12  |  2.8 KB  |  135 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "MyObject.h"
  5. #import "Julian.h"
  6. #import <appkit/Slider.h>
  7. #import <appkit/Button.h>
  8. #import <appkit/TextField.h>
  9. #import <dpsclient/wraps.h>
  10. #import <stdio.h>
  11. #import <stdlib.h>
  12.  
  13.  
  14. #define MONTH    0
  15. #define DAY     1
  16. #define YEAR    2
  17. #define HOUR    3
  18. #define MIN        4
  19. #define SEC        5
  20.  
  21. char *dowStr[] = {"","Sun","Mon","Tues","Wed","Thur","Fri","Sat"};
  22.  
  23. @implementation MyObject
  24. - init
  25. {
  26. char *aStr;
  27.     [super init];
  28.     aStr = (char*) malloc(15);
  29.     currentDay = 1;
  30.     currentMonth = 1;
  31.     currentYear = 1991;
  32.     currentHour = 0;
  33.     currentMin = 0;
  34.     currentSec = 0;
  35.     sprintf(aStr,"%li",[Julian julianDay:currentDay: currentMonth: currentYear]);
  36.     [julianField setStringValue:aStr];
  37.     return self;
  38. }
  39.  
  40.  
  41.  
  42. - sliderControl:sender
  43. {
  44. int i;
  45. long julianDate;
  46. double julianDay;
  47. int operator;
  48. char julianStr[37];
  49. char iStr[5];
  50. BOOL state;
  51. int calDay,calMonth,calYear;
  52.  
  53.     operator = [sender selectedTag];
  54.      i = [sender intValue];
  55.      sprintf(iStr,"%i",i);
  56.      
  57.     switch(operator){
  58.          case     MONTH:    
  59.             currentMonth = i;
  60.             [monthField setStringValue:iStr];
  61.             break;                                                                
  62.         case     DAY:
  63.             currentDay = i; 
  64.             [dayField setStringValue:iStr];
  65.             break;
  66.         case    YEAR:
  67.             currentYear = i;
  68.             [yearField setStringValue:iStr];
  69.             break;
  70.          case     HOUR:    
  71.             currentHour = i;
  72.             [hourField setStringValue:iStr];
  73.             break;    
  74.                                                                         
  75.         case     MIN:
  76.             currentMin = i; 
  77.             [minField setStringValue:iStr];
  78.             break;
  79.         case    SEC:
  80.             currentSec = i;
  81.             [secField setStringValue:iStr];
  82.             break;
  83.      }
  84.      
  85.     julianDate = [Julian julianDay:currentDay:currentMonth:currentYear];
  86.     julianDay = [Julian julianDay        : currentDay
  87.                                                 : currentMonth
  88.                                                 : currentYear
  89.                                                 : currentHour
  90.                                                 : currentMin
  91.                                                 : currentSec
  92.                                                 ];
  93.     sprintf(julianStr,"%li",julianDate);
  94.     [julianField setStringValue:julianStr];
  95.     
  96.     sprintf(julianStr,"%f",julianDay);
  97.     [julianDayField setStringValue:julianStr];
  98.     
  99.     [dowField setStringValue:dowStr[ [Julian dow:julianDate]]];
  100.     sprintf(julianStr,"%03i",[Julian doy:currentDay
  101.                                                     :currentMonth
  102.                                                     :currentYear]);
  103.     [doyField setStringValue:julianStr];
  104.     
  105.     sprintf(julianStr,"%03i",(int) ([Julian wkd:currentDay
  106.                                                     :currentMonth
  107.                                                     :currentYear] - 
  108.                                                     [Julian wkd:1
  109.                                                     :1
  110.                                                     :currentYear]));
  111.     [wkdField setStringValue:julianStr];
  112.     
  113.     state = [Julian validDay:currentDay:currentMonth:currentYear];
  114.     if( state == 0 )
  115.     {
  116.         [validField setStringValue:"INVALID"];
  117.     }
  118.     else
  119.     {
  120.         [validField setStringValue:"OK"];
  121.     }
  122.     // now reconvert to jday
  123.     [Julian calendarDay:julianDate:&calDay:&calMonth:&calYear];
  124.     sprintf(julianStr,"%i",calDay);
  125.     [resultDayField setStringValue:julianStr];
  126.     sprintf(julianStr,"%i",calMonth);
  127.     [resultMonthField setStringValue:julianStr];
  128.     sprintf(julianStr,"%i",calYear);
  129.     [resultYearField setStringValue:julianStr];
  130.      return self;
  131. }
  132.  
  133.  
  134. @end
  135.