125 lines
3.7 KiB
Lua
125 lines
3.7 KiB
Lua
local updaterActive = false
|
|
local function basaltUpdateEvent(event, p1, p2, p3, p4)
|
|
if (event == "mouse_click") then
|
|
activeFrame:mouseClickHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (event == "mouse_drag") then
|
|
activeFrame:mouseClickHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (event == "mouse_up") then
|
|
activeFrame:mouseClickHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (event == "mouse_scroll") then
|
|
activeFrame:mouseClickHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (event == "key") or (event == "char") then
|
|
activeFrame:keyHandler(event, p1)
|
|
activeFrame:backgroundKeyHandler(event, p1)
|
|
end
|
|
for _, value in pairs(frames) do
|
|
value:eventHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (updaterActive) then
|
|
activeFrame:draw()
|
|
drawHelper.update()
|
|
end
|
|
end
|
|
|
|
function basalt.autoUpdate(isActive)
|
|
parentTerminal.clear()
|
|
updaterActive = isActive or true
|
|
activeFrame:draw()
|
|
drawHelper.update()
|
|
while updaterActive do
|
|
local event, p1, p2, p3, p4 = os.pullEventRaw() -- change to raw later
|
|
local ok, err = pcall(basaltUpdateEvent(event, p1, p2, p3, p4))
|
|
if not(ok)then
|
|
parentTerminal.clear()
|
|
error(err)
|
|
end
|
|
end
|
|
end
|
|
|
|
function basalt.update(event, p1, p2, p3, p4)
|
|
if (event ~= "nil") then
|
|
basaltUpdateEvent(event, p1, p2, p3, p4)
|
|
else
|
|
activeFrame:draw()
|
|
drawHelper.update()
|
|
end
|
|
end
|
|
|
|
function basalt.stop()
|
|
updaterActive = false
|
|
end
|
|
|
|
function basalt.getFrame(name)
|
|
for _, value in pairs(frames) do
|
|
if (value.name == name) then
|
|
return value
|
|
end
|
|
end
|
|
end
|
|
|
|
function basalt.getActiveFrame()
|
|
return activeFrame
|
|
end
|
|
|
|
function basalt.setActiveFrame(frame)
|
|
if (frame:getType() == "Frame") then
|
|
activeFrame = frame
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function basalt.createFrame(name)
|
|
local frame = Frame(name)
|
|
return frame
|
|
end
|
|
|
|
function basalt.removeFrame(name)
|
|
for key, value in pairs(frames) do
|
|
if (value.name == name) then
|
|
frames[key] = nil
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
if (basalt.debugger) then
|
|
basalt.debugFrame = basalt.createFrame("basaltDebuggingFrame"):showBar():setBackground(colors.lightGray):setBar("Debug", colors.black, colors.gray)
|
|
basalt.debugList = basalt.debugFrame:addList("debugList"):setSize(basalt.debugFrame.width - 2, basalt.debugFrame.height - 3):setPosition(2, 3):setScrollable(true):show()
|
|
basalt.debugFrame:addButton("back"):setAnchor("right"):setSize(1, 1):setText("\22"):onClick(function()
|
|
basalt.oldFrame:show()
|
|
end) :setBackground(colors.red):show()
|
|
basalt.debugLabel = basalt.debugFrame:addLabel("debugLabel"):onClick(function()
|
|
basalt.oldFrame = activeFrame
|
|
basalt.debugFrame:show()
|
|
end) :setBackground(colors.black):setForeground(colors.white):setAnchor("bottom"):setZIndex(20):show()
|
|
end
|
|
|
|
if (basalt.debugger) then
|
|
function basalt.debug(...)
|
|
local args = { ... }
|
|
if (activeFrame.name ~= "basaltDebuggingFrame") then
|
|
if (activeFrame ~= basalt.debugLabel.frame) then
|
|
basalt.debugLabel:setParent(activeFrame)
|
|
end
|
|
end
|
|
local str = ""
|
|
for key, value in pairs(args) do
|
|
str = str .. tostring(value) .. (#args ~= key and ", " or "")
|
|
end
|
|
basalt.debugLabel:setText("[Debug] " .. str)
|
|
basalt.debugList:addItem(str)
|
|
if (basalt.debugList:getItemCount() > 50) then
|
|
basalt.debugList:removeItem(1)
|
|
end
|
|
basalt.debugList:setValue(basalt.debugList:getItem(basalt.debugList:getItemCount()))
|
|
basalt.debugLabel:show()
|
|
end
|
|
end
|
|
|
|
return basalt |