bedit: Added scrolling around the screen and basic event handling
This commit is contained in:
+31
-3
@@ -2,6 +2,7 @@ local fs = require("filesystem")
|
|||||||
local shell = require("shell")
|
local shell = require("shell")
|
||||||
local gpu = require("component").gpu
|
local gpu = require("component").gpu
|
||||||
local event = require("event")
|
local event = require("event")
|
||||||
|
local computer = require("computer")
|
||||||
|
|
||||||
local resX, resY = gpu.getResolution()
|
local resX, resY = gpu.getResolution()
|
||||||
local textBuffer = gpu.allocateBuffer(resX, resY - 1)
|
local textBuffer = gpu.allocateBuffer(resX, resY - 1)
|
||||||
@@ -58,9 +59,15 @@ gpu.setForeground(0xFFFFFF)
|
|||||||
gpu.setBackground(0x000000)
|
gpu.setBackground(0x000000)
|
||||||
gpu.set(4, resY, "Exit")
|
gpu.set(4, resY, "Exit")
|
||||||
gpu.set(13, resY, "Save")
|
gpu.set(13, resY, "Save")
|
||||||
|
|
||||||
|
local textOffsetX = 0
|
||||||
|
local textOffsetY = 0
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
|
local renderBufferFlag = false -- Flag to render the whole text buffer
|
||||||
-- Handle events
|
-- Handle events
|
||||||
local eventArgs = {event.pull("key_down")}
|
repeat
|
||||||
|
local eventArgs = {event.pull("key_down", 0.05)}
|
||||||
|
|
||||||
if eventArgs[1] == "key_down" then
|
if eventArgs[1] == "key_down" then
|
||||||
-- Mouse events might be added later, that's why this if statement is here
|
-- Mouse events might be added later, that's why this if statement is here
|
||||||
@@ -68,14 +75,35 @@ while true do
|
|||||||
-- Special commands
|
-- Special commands
|
||||||
print(eventArgs[4], keyboard.keys[eventArgs[4]])
|
print(eventArgs[4], keyboard.keys[eventArgs[4]])
|
||||||
if keyboard.keys[eventArgs[4]] == "x" then
|
if keyboard.keys[eventArgs[4]] == "x" then
|
||||||
break
|
goto exit
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
renderText(0, 0)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Cleanup
|
-- Cleanup
|
||||||
|
::exit::
|
||||||
gpu.freeBuffer(textBuffer)
|
gpu.freeBuffer(textBuffer)
|
||||||
gpu.setActiveBuffer(0)
|
gpu.setActiveBuffer(0)
|
||||||
terminal.clear()
|
terminal.clear()
|
||||||
|
|||||||
Reference in New Issue
Block a user