112 lines
2.8 KiB
Lua
112 lines
2.8 KiB
Lua
|
-- simple calculator on LUA for KolibriOS
|
||
|
|
||
|
--init global variables
|
||
|
disp=0 --display
|
||
|
stack=0 --stack
|
||
|
will=0 --operation
|
||
|
|
||
|
function drawwin()
|
||
|
--here we draw window
|
||
|
paintstart()
|
||
|
--begin redraw
|
||
|
window(10,10,153,180,65069280)
|
||
|
--define window
|
||
|
textout(3,13,0,"LuaCalc")
|
||
|
--print title
|
||
|
textout(6, 30, 0, disp)
|
||
|
--and display
|
||
|
|
||
|
--then we need make buttons and print labels of buttons
|
||
|
makebutton(6,60,20,20,17,13619151)
|
||
|
textout(9,63,0,"7")
|
||
|
makebutton(6,90,20,20,14,13619151)
|
||
|
textout(9,93,0,"4")
|
||
|
makebutton(6,120,20,20,11,13619151)
|
||
|
textout(9,123,0,"1")
|
||
|
makebutton(6,150,50,20,10,13619151)
|
||
|
textout(9,153,0,"0")
|
||
|
|
||
|
|
||
|
makebutton(36,60,20,20,18,13619151)
|
||
|
textout(39,63,0,"8")
|
||
|
makebutton(36,90,20,20,15,13619151)
|
||
|
textout(39,93,0,"5")
|
||
|
makebutton(36,120,20,20,12,13619151)
|
||
|
textout(39,123,0,"2")
|
||
|
|
||
|
|
||
|
makebutton(66,60,20,20,19,13619151)
|
||
|
textout(69,63,0,"9")
|
||
|
makebutton(66,90,20,20,16,13619151)
|
||
|
textout(69,93,0,"6")
|
||
|
makebutton(66,120,20,20,13,13619151)
|
||
|
textout(69,123,0,"3")
|
||
|
|
||
|
|
||
|
makebutton(96,60,20,20,20,13619151)
|
||
|
textout(99,63,0,"*")
|
||
|
makebutton(96,90,20,20,21,13619151)
|
||
|
textout(99,93,0,"/")
|
||
|
makebutton(96,120,20,20,22,13619151)
|
||
|
textout(99,123,0,"-")
|
||
|
makebutton(96,150,20,20,23,13619151)
|
||
|
textout(99,153,0,"+")
|
||
|
|
||
|
makebutton(126,60,20,20,30,13619151)
|
||
|
textout(129,63,0,"C")
|
||
|
makebutton(126,90,20,20,31,13619151)
|
||
|
textout(129,93,0,"CE")
|
||
|
makebutton(126,120,20,50,32,13619151)
|
||
|
textout(129,123,0,"=")
|
||
|
|
||
|
paintend()
|
||
|
--and finish redraw
|
||
|
end
|
||
|
|
||
|
|
||
|
--main loop
|
||
|
while 1==1 do --loop until exit
|
||
|
event=waitevent() --check the event
|
||
|
if event==1 then drawwin() end --redraw needed
|
||
|
if event==2 then key=getkey() end --get keyboard scancode
|
||
|
if event==3 then button=getbutton() --button pressed
|
||
|
if button==1 then sysexit() end --close button
|
||
|
if button==10 then disp=disp*10 end --numerical buttons - 0
|
||
|
if button==11 then disp=disp*10+1 end --1
|
||
|
if button==12 then disp=disp*10+2 end --2
|
||
|
if button==13 then disp=disp*10+3 end --3
|
||
|
if button==14 then disp=disp*10+4 end
|
||
|
if button==15 then disp=disp*10+5 end
|
||
|
if button==16 then disp=disp*10+6 end
|
||
|
if button==17 then disp=disp*10+7 end
|
||
|
if button==18 then disp=disp*10+8 end
|
||
|
if button==19 then disp=disp*10+9 end --and 9
|
||
|
if button==30 then disp=0
|
||
|
stack=0 end -- C button - clear disp and memory
|
||
|
if button==31 then disp=0 end -- CE button - clear disp
|
||
|
if button==20 then will=1
|
||
|
stack=disp
|
||
|
disp=0
|
||
|
end -- next is multiple
|
||
|
if button==21 then will=2
|
||
|
stack=disp
|
||
|
disp=0
|
||
|
end --next is divison
|
||
|
if button==22 then will=3
|
||
|
stack=disp
|
||
|
disp=0
|
||
|
end -- next is substraction
|
||
|
if button==23 then will=4
|
||
|
stack=disp
|
||
|
disp=0
|
||
|
end -- next is addition
|
||
|
if button==32 then --evalute
|
||
|
if will==1 then disp=stack*disp end
|
||
|
if will==2 then disp=stack/disp end
|
||
|
if will==3 then disp=stack-disp end
|
||
|
if will==4 then disp=stack+disp end
|
||
|
end
|
||
|
drawwin() --redraw... we need it after pressing buttons
|
||
|
end
|
||
|
end
|