Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. -- simple calculator on LUA for KolibriOS
  2.  
  3. --init global variables
  4. disp=0 --display
  5. stack=0 --stack
  6. will=0 --operation
  7.  
  8. function drawwin()
  9. --here we draw window
  10. paintstart()
  11. --begin redraw
  12. window(10,10,153,180,65069280)
  13. --define window
  14. textout(3,13,0,"LuaCalc")
  15. --print title
  16. textout(6, 30, 0, disp)
  17. --and display
  18.  
  19. --then we need make buttons and print labels of buttons
  20. makebutton(6,60,20,20,17,13619151)
  21. textout(9,63,0,"7")
  22. makebutton(6,90,20,20,14,13619151)
  23. textout(9,93,0,"4")
  24. makebutton(6,120,20,20,11,13619151)
  25. textout(9,123,0,"1")
  26. makebutton(6,150,50,20,10,13619151)
  27. textout(9,153,0,"0")
  28.  
  29.  
  30. makebutton(36,60,20,20,18,13619151)
  31. textout(39,63,0,"8")
  32. makebutton(36,90,20,20,15,13619151)
  33. textout(39,93,0,"5")
  34. makebutton(36,120,20,20,12,13619151)
  35. textout(39,123,0,"2")
  36.  
  37.  
  38. makebutton(66,60,20,20,19,13619151)
  39. textout(69,63,0,"9")
  40. makebutton(66,90,20,20,16,13619151)
  41. textout(69,93,0,"6")
  42. makebutton(66,120,20,20,13,13619151)
  43. textout(69,123,0,"3")
  44.  
  45.  
  46. makebutton(96,60,20,20,20,13619151)
  47. textout(99,63,0,"*")
  48. makebutton(96,90,20,20,21,13619151)
  49. textout(99,93,0,"/")
  50. makebutton(96,120,20,20,22,13619151)
  51. textout(99,123,0,"-")
  52. makebutton(96,150,20,20,23,13619151)
  53. textout(99,153,0,"+")
  54.  
  55. makebutton(126,60,20,20,30,13619151)
  56. textout(129,63,0,"C")
  57. makebutton(126,90,20,20,31,13619151)
  58. textout(129,93,0,"CE")
  59. makebutton(126,120,20,50,32,13619151)
  60. textout(129,123,0,"=")
  61.  
  62. paintend()
  63. --and finish redraw
  64. end
  65.  
  66.  
  67. --main loop
  68. while 1==1 do --loop until exit
  69.         event=waitevent() --check the event
  70.         if event==1 then drawwin() end --redraw needed
  71.         if event==2 then key=getkey()  end --get keyboard scancode
  72.         if event==3 then button=getbutton() --button pressed
  73.                 if button==1 then sysexit() end --close button
  74.                 if button==10 then disp=disp*10 end --numerical buttons - 0
  75.                 if button==11 then disp=disp*10+1 end --1
  76.                 if button==12 then disp=disp*10+2 end --2
  77.                 if button==13 then disp=disp*10+3 end --3
  78.                 if button==14 then disp=disp*10+4 end
  79.                 if button==15 then disp=disp*10+5 end
  80.                 if button==16 then disp=disp*10+6 end
  81.                 if button==17 then disp=disp*10+7 end
  82.                 if button==18 then disp=disp*10+8 end
  83.                 if button==19 then disp=disp*10+9 end --and 9
  84.                 if button==30 then disp=0  
  85.                 stack=0 end  -- C button - clear disp and memory
  86.                 if button==31 then disp=0 end -- CE button - clear disp
  87.                 if button==20 then will=1
  88.                 stack=disp
  89.                 disp=0         
  90.                 end -- next is multiple
  91.                 if button==21 then will=2
  92.                 stack=disp
  93.                 disp=0         
  94.                 end --next is divison
  95.                 if button==22 then will=3
  96.                 stack=disp
  97.                 disp=0         
  98.                 end -- next is substraction
  99.                 if button==23 then will=4
  100.                 stack=disp
  101.                 disp=0
  102.                 end -- next is addition
  103.                 if button==32 then --evalute
  104.                 if will==1 then disp=stack*disp end
  105.                 if will==2 then disp=stack/disp end
  106.                 if will==3 then disp=stack-disp end
  107.                 if will==4 then disp=stack+disp end
  108.                 end
  109.                 drawwin() --redraw... we need it after pressing buttons
  110.         end
  111. end
  112.