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

  1. Class:Calc      | Declare class Calc
  2.   Entry         | Current entry value
  3.   Op            | Last operation key
  4.   Result        | Result of last calc
  5.  
  6. Calc:start
  7.   New(Calc:Calc)
  8.   Calc->Entry  = "0"
  9.   Calc->Result = "0"
  10.   Mem:Ptr->Calc=Calc
  11.   Event:Add(Null)
  12.  
  13.   Win:Add ("Calculator",0,0,8,17)
  14.     Button:"&=",    Row:8, Col:14, Wid:3, Len:1 Action:"Calc:Do('=')"
  15.  
  16.     Input:"Res"  Row:1, Col:2, Wid:11, Len:1
  17.       Field:"Mem:Ptr->Calc->Result" Before:"Null"
  18.     Input:"Ent"  Row:2, Col:2, Wid:9, Len:1
  19.       Field:"Mem:Ptr->Calc->Entry" Before:"Null"
  20.     Input:""        Row:2, Col:15, Wid:1, Len:1
  21.       Field:"Mem:Ptr->Calc->Op"    Before:"Null"
  22.     HLine:"" Row:3
  23.     Button:"&C",    Row:4, Col:2,  Wid:3, Len:1 Action:"Calc:Do('C')"
  24.     Button:"c&E",   Row:4, Col:6,  Wid:3, Len:1 Action:"Calc:Do('E')"
  25.     Button:"e&Xit", Row:4, Col:10, Wid:3, Len:1 Action:"Calc:Do('X')"
  26.     Button:"&/",    Row:4, Col:14, Wid:3, Len:1 Action:"Calc:Do('/')"
  27.  
  28.     Button:"&7",    Row:5, Col:2,  Wid:3, Len:1 Action:"Calc:Do('7')"
  29.     Button:"&8",    Row:5, Col:6,  Wid:3, Len:1 Action:"Calc:Do('8')"
  30.     Button:"&9",    Row:5, Col:10, Wid:3, Len:1 Action:"Calc:Do('9')"
  31.     Button:"&*",    Row:5, Col:14, Wid:3, Len:1 Action:"Calc:Do('*')"
  32.  
  33.     Button:"&4",    Row:6, Col:2,  Wid:3, Len:1 Action:"Calc:Do('4')"
  34.     Button:"&5",    Row:6, Col:6 , Wid:3, Len:1 Action:"Calc:Do('5')"
  35.     Button:"&6",    Row:6, Col:10, Wid:3, Len:1 Action:"Calc:Do('6')"
  36.     Button:"&-",    Row:6, Col:14, Wid:3, Len:1 Action:"Calc:Do('-')"
  37.  
  38.     Button:"&1",    Row:7, Col:2,  Wid:3, Len:1 Action:"Calc:Do('1')"
  39.     Button:"&2",    Row:7, Col:6 , Wid:3, Len:1 Action:"Calc:Do('2')"
  40.     Button:"&3",    Row:7, Col:10, Wid:3, Len:1 Action:"Calc:Do('3')"
  41.     Button:"&+",    Row:7, Col:14, Wid:3, Len:1 Action:"Calc:Do('+')"
  42.  
  43.     Button:"&0",    Row:8, Col:2,  Wid:3, Len:1 Action:"Calc:Do('0')"
  44.     Button:"&.",    Row:8, Col:6,  Wid:3, Len:1 Action:"Calc:Do('.')"
  45.     Button:"C&S",   Row:8, Col:10, Wid:3, Len:1 Action:"Calc:Do('S')"
  46.   Return (Mem:Ptr->Calc->Result)
  47.  
  48. Calc:Do(KeyLetter)
  49.   New (Calc)
  50.   Calc=Mem:Ptr->Calc
  51.  
  52.   Switch KeyLetter
  53.     Case "X"
  54.       Kbd:put('Esc_Key')
  55.     Case "C"
  56.       Calc->Result="0"
  57.       Calc->Entry ="0"
  58.       Calc->Op    =Null
  59.     Case "E"
  60.       Calc->Entry ="0"
  61.     Case "S"
  62.       If (Calc->Entry!="0")
  63.         Calc->Entry = 0-Calc->Entry
  64.       Else
  65.         If (Calc->Result!="0")
  66.           Calc->Result = 0-Calc->Result
  67.     Case "-"
  68.     Case "+"
  69.     Case "/"
  70.     Case "*"
  71.     Case "="
  72.       If (Calc->Entry!="0")
  73.         Switch (Calc->Op)
  74.           Case "-"
  75.             Calc->Result = To:Num(Calc->Result) - To:Num(Calc->Entry)
  76.           Case "+"
  77.             Calc->Result = To:Num(Calc->Result) + To:Num(Calc->Entry)
  78.           Case "*"
  79.             Calc->Result = To:Num(Calc->Result) * To:Num(Calc->Entry)
  80.           Case "/"
  81.             Calc->Result = To:Num(Calc->Result) / To:Num(Calc->Entry)
  82.           Else
  83.             Calc->Result = Calc->Entry
  84.       Calc->Entry  = "0"
  85.       Calc->Op     = KeyLetter
  86.     Else
  87.       If Str:In("1234567890.",KeyLetter)
  88.         If (Calc->Op == "=" Or Calc->Entry=="0")
  89.           Calc->Entry = KeyLetter
  90.           If (Calc->Op=="=")
  91.             Calc->Op    = Null
  92.         Else
  93.           Calc->Entry = Calc->Entry + KeyLetter
  94.   Kbd:Put("Home_Key")
  95.   Win:Dsp
  96.   Return Ok
  97.  
  98.