diff --git a/halyde/apps/bedit.lua b/halyde/apps/bedit.lua index f08eb7a..3d64ddc 100644 --- a/halyde/apps/bedit.lua +++ b/halyde/apps/bedit.lua @@ -2,6 +2,7 @@ local fs = require("filesystem") local shell = require("shell") local gpu = require("component").gpu local event = require("event") +local computer = require("computer") local resX, resY = gpu.getResolution() local textBuffer = gpu.allocateBuffer(resX, resY - 1) @@ -58,24 +59,51 @@ gpu.setForeground(0xFFFFFF) gpu.setBackground(0x000000) gpu.set(4, resY, "Exit") gpu.set(13, resY, "Save") -while true do - -- Handle events - local eventArgs = {event.pull("key_down")} - if eventArgs[1] == "key_down" then - -- Mouse events might be added later, that's why this if statement is here - if keyboard.getCtrlDown() then - -- Special commands - print(eventArgs[4], keyboard.keys[eventArgs[4]]) - if keyboard.keys[eventArgs[4]] == "x" then - break +local textOffsetX = 0 +local textOffsetY = 0 + +while true do + local renderBufferFlag = false -- Flag to render the whole text buffer + -- Handle events + repeat + local eventArgs = {event.pull("key_down", 0.05)} + + if eventArgs[1] == "key_down" then + -- Mouse events might be added later, that's why this if statement is here + if keyboard.getCtrlDown() then + -- Special commands + print(eventArgs[4], keyboard.keys[eventArgs[4]]) + if keyboard.keys[eventArgs[4]] == "x" then + goto exit + end + end + + if keyboard.keys[eventArgs[4]] == "up" and textOffsetY > 0 then + textOffsetY = textOffsetY - 1 + renderBufferFlag = true + end + if keyboard.keys[eventArgs[4]] == "down" then + textOffsetY = textOffsetY + 1 + renderBufferFlag = true + end + if keyboard.keys[eventArgs[4]] == "left" and textOffsetX > 0 then + textOffsetX = textOffsetX - 1 + renderBufferFlag = true + end + if keyboard.keys[eventArgs[4]] == "right" then + textOffsetX = textOffsetX + 1 + renderBufferFlag = true end end + until not next(eventArgs) + if renderBufferFlag then + renderText(textOffsetX, textOffsetY) end - renderText(0, 0) end -- Cleanup +::exit:: gpu.freeBuffer(textBuffer) gpu.setActiveBuffer(0) terminal.clear()