1
0
Fork 0
mirror of https://github.com/ctruLua/ctruLua.git synced 2025-10-27 16:39:29 +00:00

Updated apps that rely on file selection

The editor doesn't use openfile.lua anymore, the main shell is updated
to use filepicker.filePicker's new format. Also, updated the editor to
use resources/VeraMono.ttf instead of its own copy, which was deleted.
This commit is contained in:
Neil Zeke Cecchini 2016-04-02 18:36:27 +02:00
parent 4669a68402
commit 05c9adc2a0
3 changed files with 28 additions and 17 deletions

View file

@ -4,19 +4,23 @@ local gfx = require("ctr.gfx")
-- Open libs -- Open libs
local keyboard = require("keyboard") local keyboard = require("keyboard")
local openfile = require("openfile") local filepicker = require("filepicker")
local color = dofile("color.lua") local color = dofile("color.lua")
local syntax = dofile("syntax.lua") local syntax = dofile("syntax.lua")
-- Load data -- Load data
local font = gfx.font.load("VeraMono.ttf") local font = gfx.font.load(ctr.root .. "resources/VeraMono.ttf")
-- Open file -- Open file
local path, status = openfile("Choose a file to edit", nil, nil, "any") local path, binding, mode, key = filepicker(nil, {__default = {
if not path then return end a = {filepicker.openFile, "Open"},
y = {filepicker.newFile, "New File"}
}
})
if not mode then return end
local lineEnding local lineEnding
local lines = {} local lines = {}
if status == "exist" then if mode == "open" then
for line in io.lines(path, "L") do for line in io.lines(path, "L") do
if not lineEnding then lineEnding = line:match("([\n\r]+)$") end if not lineEnding then lineEnding = line:match("([\n\r]+)$") end
table.insert(lines, line:match("^(.-)[\n\r]*$")) table.insert(lines, line:match("^(.-)[\n\r]*$"))
@ -110,7 +114,7 @@ while ctr.run() do
-- Keyboard input -- Keyboard input
local input = keyboard.read() local input = keyboard.read()
if input then if input then
if input == "BACK" then if input == "\b" then
if cursorX > utf8.len(lines[cursorY])+1 then cursorX = utf8.len(lines[cursorY])+1 end if cursorX > utf8.len(lines[cursorY])+1 then cursorX = utf8.len(lines[cursorY])+1 end
if cursorX > 1 then if cursorX > 1 then
lines[cursorY] = lines[cursorY]:sub(1, utf8.offset(lines[cursorY], cursorX-1)-1).. lines[cursorY] = lines[cursorY]:sub(1, utf8.offset(lines[cursorY], cursorX-1)-1)..
@ -173,7 +177,7 @@ while ctr.run() do
gfx.text(3, 3, "FPS: "..math.ceil(gfx.getFPS())) gfx.text(3, 3, "FPS: "..math.ceil(gfx.getFPS()))
keyboard.draw(5, 115) keyboard.draw(4, 115)
gfx.stop() gfx.stop()

View file

@ -5,21 +5,24 @@ local gfx = require("ctr.gfx")
-- Set up path -- Set up path
local ldir = ctr.root.."libs/" local ldir = ctr.root.."libs/"
package.path = package.path..";".. ldir.."?.lua;".. ldir.."?/init.lua" package.path = package.path..";".. ldir.."?.lua;".. ldir.."?/init.lua"
local filepicker = require("filepicker")
-- Erroring -- Erroring
local function displayError(err) local function displayError(err, trace)
gfx.set3D(false) gfx.set3D(false)
gfx.color.setBackground(0xFF0000B3) gfx.color.setBackground(0xFF0000B3)
gfx.color.setDefault(0xFFFDFDFD) gfx.color.setDefault(0xFFFDFDFD)
gfx.setTextSize(12)
gfx.font.setDefault(gfx.font.load(ctr.root .. "resources/VeraMono.ttf")) gfx.font.setDefault(gfx.font.load(ctr.root .. "resources/VeraMono.ttf"))
while ctr.run() do while ctr.run() do
gfx.start(gfx.TOP)
gfx.text(1, 1, "An error has occured.", 12)
gfx.wrappedText(1, 30, err, gfx.TOP_WIDTH-2, 12)
gfx.text(1, gfx.TOP_HEIGHT-15, "Press Start to continue.", 12)
gfx.stop()
gfx.start(gfx.BOTTOM) gfx.start(gfx.BOTTOM)
gfx.text(1, 1, "An error has occured.")
gfx.wrappedText(1, 30, err, gfx.BOTTOM_WIDTH-2)
gfx.text(1, gfx.BOTTOM_HEIGHT-15, "Press Start to continue.")
gfx.stop()
gfx.start(gfx.TOP)
gfx.wrappedText(2, 6, trace, gfx.TOP_WIDTH - 2)
gfx.stop() gfx.stop()
gfx.render() gfx.render()
@ -34,11 +37,15 @@ while ctr.run() do
gfx.font.setDefault() gfx.font.setDefault()
gfx.color.setDefault(0xFFFDFDFD) gfx.color.setDefault(0xFFFDFDFD)
gfx.color.setBackground(0xFF333333) gfx.color.setBackground(0xFF333333)
local file, ext, mode = require("filepicker")({{name="Lua Script", ext=".lua", a="Execute"}}) local file, ext, mode, key = filepicker(ctr.root, {
if file and mode == "A" then ["%.lua$"] = {
a = {filepicker.openFile, "Run"},
__name = "Lua Script"
}
})
if mode then
fs.setDirectory(file:match("^(.-)[^/]*$")) fs.setDirectory(file:match("^(.-)[^/]*$"))
local ok, err = pcall(dofile, file) xpcall(dofile, function(err) displayError(err, debug.traceback()) end, file)
if not ok then displayError(err) end
else else
break break
end end