SMF Script 8 — File Browser

SMFScript8v8.13 / SMFScript8v8.13 / system / calc.mrc

calc.mrc — 3.54 KB — Download this file

alias calculate {
  dialog -mn calc calc
  if (%calc.mem) did -a calc 11 X
}
dialog calc {
  title "SMF Calculator 0.99b"
  size -1 -1 248 261
  button "",16,1 1 -3 -3,cancel
  edit "",17,9 10 228 25,right,read,autohs
  edit "",18,9 40 136 23,read,autohs,right
  edit "",11,148 40 43 23,read,center
  button "CE",12,195 40 41 23
  button "7",7,10 68 41 41
  button "8",8,56 68 41 41
  button "9",9,103 68 41 41
  button "/",13,149 68 41 41
  button "RM",10,195 68 41 41
  button "4",4,10 114 41 41
  button "5",5,56 114 41 41
  button "6",6,103 114 41 41
  button "X",14,149 114 41 41
  button "M-",15,195 114 41 41
  button "1",1,10 160 41 41
  button "2",2,56 160 41 41
  button "3",3,103 160 41 41
  button "-",19,149 160 41 41
  button "M+",20,195 160 41 41
  button "0",21,10 205 41 41
  button "+/-",22,56 205 41 41
  button ".",23,103 205 41 41
  button "+",24,149 205 41 41
  button "=",25,195 205 41 41
}
on *:dialog:calc:sclick:*:{
  if (%calc.tmp.e) && ($did != 20) && ($did != 16) { did -r calc 17,18 | unset %calc.tmp.* }
  if ($did = 16) unset %calc.tmp.*
  if ($did = 12) { did -r calc 17,18 | unset %calc.tmp.* }
  if ($did = 21) || ($did < 10) {
    if ($did = 21) var %calc.tmp.n = 0 | else var %calc.tmp.n = $did
    if (%calc.tmp.r) { did -ra calc 17 %calc.tmp.n | unset %calc.tmp.r }
    else did -ra calc 17 $did(17).text $+ %calc.tmp.n
  }
  if ($did = 13) || ($did = 14) || ($did = 19) || ($did = 24) {
    if (%calc.tmp.e) { did -r calc 17,18 | unset %calc.tmp.* | return }
    if ($replace(%calc.tmp.1,0,1) = $null) && ($replace($did(17).text,0,1) = $null) return
    if ($did = 13) set -u0 %calc.tmp.tc /
    if ($did = 14) set -u0 %calc.tmp.tc *
    if ($did = 19) set -u0 %calc.tmp.tc -
    if ($did = 24) set -u0 %calc.tmp.tc +
    if ($replace(%calc.tmp.1,0,1)) && (%calc.tmp.2 = $null) {
      set %calc.tmp.2 $did(17).text
      set %calc.tmp.1 $calc(%calc.tmp.1 %calc.tmp.c %calc.tmp.2)
      if (e !isin %calc.tmp.1) {
        did -ra calc 18 $did(18).text $+ %calc.tmp.2 $+ %calc.tmp.tc
        did -ra calc 17 %calc.tmp.1
        unset %calc.tmp.2
        set %calc.tmp.c %calc.tmp.tc
        set %calc.tmp.r -
      }
      else {
        did -ra calc 18 $did(18).text $+ %calc.tmp.2 = $gettok(%calc.tmp.1,1,101) E
        did -ra calc 17 $gettok(%calc.tmp.1,1,101) E
        unset %calc.tmp.*
        set %calc.tmp.e -
      }
    }
    if (%calc.tmp.1 = $null) {
      set %calc.tmp.1 $did(17).text
      did -a calc 18 $did(17).text $+ %calc.tmp.tc
      set %calc.tmp.c %calc.tmp.tc
      set %calc.tmp.r -
    }
  }
  if ($did = 25) && ($replace(%calc.tmp.1,0,1)) {
    if (%calc.tmp.r) {
      did -ra calc 18 $left($did(18).text,-1) $+ = $+ %calc.tmp.1
      set %calc.tmp.e -
    }
    if ($replace($did(17).text,0,1)) && (%calc.tmp.r = $null) {
      set %calc.tmp.2 $did(17).text
      set %calc.tmp.1 $calc(%calc.tmp.1 %calc.tmp.c %calc.tmp.2)
      did -ra calc 18 $did(18).text $+ %calc.tmp.2 $+ = $+ %calc.tmp.1
      did -ra calc 17 %calc.tmp.1
      unset %calc.tmp.2
      set %calc.tmp.e -
    }
  }
  if ($did = 22) { if ($left($did(17).text,1) = -) did -ra calc 17 $remove($did(17).text,-) | elseif ($did(17).text) did -ra calc 17 - $+ $did(17).text }
  if ($did = 23) && ($replace($did(17).text,0,1)) && ($chr(46) !isin $did(17).text) did -ra calc 17 $did(17).text $+ .
  if ($did = 10) && (%calc.mem) did -ra calc 17 %calc.mem
  if ($did = 15) { unset %calc.mem | did -r calc 11 }
  if ($did = 20) && ($did(17).text) { set %calc.mem $did(17).text | did -ra calc 11 X }
}