home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR22 / JORF21_2.ZIP / CAL.J < prev    next >
Text File  |  1993-07-05  |  4KB  |  144 lines

  1. Class:Cal      | Declare class Calc
  2.   Date         |
  3.   Day          | Current day
  4.   Month        | Current entry value
  5.   Year         | Current year
  6.   Row          | Current Row
  7.   Col          | Current Col
  8.   DspDay       | Last displayed day
  9.   DspMonth     | Last displayed month
  10.   DspYear      | Last displayed year
  11.   DspRow       | Last displayed row
  12.   DspCol       | Last displayed col
  13.  
  14. Cal:start
  15.   New(Cal:Cal)
  16.   Cal->Date   = Date:Get
  17.   Event:Add("Cal")
  18.  
  19.   Win:Add ("Calendar",0,0,9,20)
  20.   Cal:Show(Cal)
  21.   While (Ok)
  22.     If (Kbd:Get()=='Esc_Key')
  23.       Break
  24.   Return (Cal->Date)
  25.  
  26. Cal:Ctrl_Page_Down_Key
  27.   Cal->Date = Date:Add(Cal->Date,0,0,1)
  28.   Cal:Show( Cal )
  29.   Return (Ok)
  30.  
  31. Cal:Ctrl_Page_Up_Key
  32.   Cal->Date = Date:Sub(Cal->Date,0,0,1)
  33.   Cal:Show( Cal )
  34.   Return (Ok)
  35.  
  36. Cal:Down_Arrow_Key
  37.   Cal->Date = Date:Add(Cal->Date,7,0,0)
  38.   Cal:Show( Cal )
  39.   Return (Ok)
  40.  
  41. Cal:End_Key
  42.   Cal->Date = Date:Add(Cal->Date,6-(Date:Str(Cal->Date,'n')%7),0,0)
  43.   Cal:Show( Cal )
  44.   Return (Ok)
  45.  
  46. Cal:Enter_Key
  47.   Msg:Add
  48.     Date is {Cal->Date}
  49.   Return ("Esc_Key")
  50.  
  51. Cal:Home_Key
  52.   Cal->Date = Date:Sub(Cal->Date,(Date:Str(Cal->Date,'n')%7),0,0)
  53.   Cal:Show( Cal )
  54.   Return (Ok)
  55.  
  56. Cal:Left_Arrow_Key
  57.   Cal->Date = Date:Sub(Cal->Date,1,0,0)
  58.   Cal:Show( Cal )
  59.   Return (Ok)
  60.  
  61. Cal:Page_Down_Key
  62.   Cal->Date = Date:Add(Cal->Date,0,1,0)
  63.   Cal:Show( Cal )
  64.   Return (Ok)
  65.  
  66. Cal:Page_Up_Key
  67.   Cal->Date = Date:Sub(Cal->Date,0,1,0)
  68.   Cal:Show( Cal )
  69.   Return (Ok)
  70.  
  71. Cal:Right_Arrow_Key
  72.   Cal->Date = Date:Add(Cal->Date,1,0,0)
  73.   Cal:Show( Cal )
  74.   Return (Ok)
  75.  
  76. Cal:Show(Cal)
  77.   New (Month, Day, Dow, Pos, Cnt, End)
  78.  
  79.   If (Date:Str(Cal->Date,'y') != Cal->DspYear)
  80.     Cal->DspMonth=0
  81.  
  82.   If (Date:Str(Cal->Date,'m') != Cal->DspMonth)
  83.     If (Cal->DspDay)
  84.       Move:To(Cal->DspRow,Cal->DspCol)
  85.       Str:Put(To:Str(Cal->DspDay,"##"))
  86.       Cal->DspDay=0
  87.     Month=Date:Str(Cal->Date,"S")+' '+Date:Str(Cal->Date,"YYYY")
  88.     Move:To(1,1)
  89.     Str:Put(Str:AtSet(Null,1,' ',Win:Ptr->Wid))
  90.     Move:To(1,(Win:Ptr->Wid-Str:Len(Month)+1)/2)
  91.     Str:Put(Month)
  92.     Move:To(2,1)
  93.     Str:Put("____________________")
  94.     Move:To(3,1)
  95.     Str:Put("Su Mo Tu We Th Fr Sa")
  96.     Dow  =Date:Str(Cal->Date,'n') % 7
  97.     Day  =Date:Str(Cal->Date,'d')
  98.     End  =Date:Add(Cal->Date,0,1)
  99.     End  =Date:Sub(End,Day)
  100.     End  =Date:Str(End,'d')
  101.     Pos  =Date:Str(Date:Sub(Cal->Date,Day-1),'n') % 7
  102.     Move:To (4,1)
  103.     Str:Put(Str:AtSet(Null,1,' ',Win:Ptr->Wid))
  104.     For (Cnt = 1 thru End)
  105.       Move:To(0,(Pos*3)+1)
  106.       Str:Put(To:Str(Cnt,"##"))
  107.       ++Pos
  108.       If (Pos > 6)
  109.         Move:By(1,0)
  110.         Move:To(0,1)
  111.         Str:Put(Str:AtSet(Null,1,' ',Win:Ptr->Wid))
  112.         Move:To(0,1)
  113.         Pos=0
  114.     If (Pos == 0 Or Win:Ptr->CurRow < 9)
  115.       Move:To (9,1)
  116.       Str:Put(Str:AtSet(Null,1,' ',Win:Ptr->Wid))
  117.     Cal->DspYear  = Date:Str( Cal->Date, 'y' )
  118.     Cal->DspMonth = Date:Str( Cal->Date, 'm' )
  119.     Cal->DspDay   = 0
  120.  
  121.   If (Date:Str(Cal->Date,'d') != Cal->DspDay)
  122.     If (Cal->DspDay)
  123.       Move:To(Cal->DspRow,Cal->DspCol)
  124.       Str:Put(To:Str(Cal->DspDay,"##"))
  125.       Cal->DspDay=0
  126.     Day  =Date:Str( Cal->Date, 'd' )
  127.     Dow  =Date:Str( Cal->Date, 'n' ) % 7
  128.     Cal->DspDay = Day
  129.     Cal->DspRow = 4 + To:Int( ( Day - Dow + 5) / 7 )
  130.     Cal->DspCol = ( Dow * 3 ) + 1
  131.  
  132.     Win:Attr( 5 )
  133.     Move:To( Cal->DspRow, Cal->DspCol )
  134.     Str:Put( To:Str( Cal->DspDay, "##" ) )
  135.     Win:Attr( 1 )
  136.  
  137.   Return(Ok)
  138.  
  139. Cal:Up_Arrow_Key
  140.   Cal->Date = Date:Sub(Cal->Date,7,0,0)
  141.   Cal:Show( Cal )
  142.   Return (Ok)
  143.  
  144.