Compare commits
1 Commits
0622e8b455
...
add-excamp
Author | SHA1 | Date | |
---|---|---|---|
7fd94fc4c6 |
@@ -1,3 +1,7 @@
|
||||
# Syscalls
|
||||
|
||||
Syscalls library for Lua
|
||||
|
||||
## Examples
|
||||
|
||||
you can find it in tests folder
|
||||
|
145
tests/calc.lua
Normal file
145
tests/calc.lua
Normal file
@@ -0,0 +1,145 @@
|
||||
local syscalls = require("syscalls")
|
||||
|
||||
local systemColors = syscalls.GetSystemColors()
|
||||
local skinHeight = syscalls.GetSkinHeight()
|
||||
|
||||
local display = "0"
|
||||
local ans = "0"
|
||||
|
||||
local buttons = {
|
||||
{"1", "2", "3", "+", "-"},
|
||||
{"4", "5", "6", "*", "/"},
|
||||
{"7", "8", "9", "%", ""},
|
||||
{"0", ".", "Ans", "="}
|
||||
}
|
||||
|
||||
local function DrawDisplay()
|
||||
syscalls.DrawText(
|
||||
display,
|
||||
20,
|
||||
20 + skinHeight,
|
||||
systemColors.workText
|
||||
)
|
||||
end
|
||||
|
||||
local function redraw()
|
||||
syscalls.StartRedraw()
|
||||
|
||||
syscalls.CreateWindow(
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
256,
|
||||
"lua example Calc",
|
||||
systemColors.workArea,
|
||||
syscalls.windowStyle.WithSkinFixSizes
|
||||
)
|
||||
|
||||
DrawDisplay()
|
||||
|
||||
--local t = syscalls.ThreadInfo()
|
||||
|
||||
local i = 2
|
||||
local h = math.floor(150 / #buttons)
|
||||
|
||||
for rowN, row in pairs(buttons) do
|
||||
|
||||
local w = math.floor(200 / #row)
|
||||
|
||||
for col, v in pairs(row) do
|
||||
|
||||
local x = math.floor((col-1) * w)
|
||||
local y = math.floor((rowN-1) * h + 50 + skinHeight)
|
||||
|
||||
syscalls.DefineButton(
|
||||
x,
|
||||
y,
|
||||
w,
|
||||
h,
|
||||
i,
|
||||
systemColors.workButton
|
||||
)
|
||||
|
||||
syscalls.DrawText(
|
||||
v,
|
||||
x,
|
||||
y,
|
||||
systemColors.workButtonText
|
||||
)
|
||||
|
||||
i=i+1
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
syscalls.EndRedraw()
|
||||
end
|
||||
|
||||
local function CheckButton(ButtonID)
|
||||
local i = 2
|
||||
for k, v in pairs(buttons) do
|
||||
for j, s in pairs(v) do
|
||||
if ButtonID ~= i then
|
||||
i = i + 1
|
||||
else
|
||||
return s
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
local function checkInput(s)
|
||||
if s == "=" then
|
||||
display = assert(load( "return " .. display))()
|
||||
ans = display
|
||||
elseif s == "Ans" then
|
||||
display = display .. ans
|
||||
elseif s then
|
||||
if display == "0" then
|
||||
display = s
|
||||
else
|
||||
display = display .. s
|
||||
end
|
||||
end
|
||||
|
||||
syscalls.DrawRectangle(20, 20 + skinHeight, 200, 30, systemColors.workArea)
|
||||
DrawDisplay()
|
||||
end
|
||||
|
||||
-- main
|
||||
|
||||
redraw()
|
||||
|
||||
local exit = false
|
||||
while not exit do
|
||||
local event = syscalls.WaitEvent()
|
||||
|
||||
if event == syscalls.Event.Redraw then
|
||||
redraw()
|
||||
elseif event == syscalls.Event.Button then
|
||||
local ButtonID = syscalls.GetButton()
|
||||
|
||||
if ButtonID == syscalls.buttons.close then
|
||||
exit = true
|
||||
else
|
||||
local s = CheckButton(ButtonID)
|
||||
|
||||
checkInput(s)
|
||||
end
|
||||
elseif event == syscalls.Event.Key then
|
||||
local key, a = syscalls.GetKey()
|
||||
|
||||
key = key:sub(1, 1)
|
||||
|
||||
for _, row in pairs(buttons) do
|
||||
for _, v in pairs(row) do
|
||||
if v == key then
|
||||
checkInput(key)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user