Add viewLog
This commit is contained in:
@@ -73,8 +73,8 @@ local L={
|
||||
hollowLogo= 0xF008C,
|
||||
toUp= 0xF008D,
|
||||
toDown= 0xF008E,
|
||||
toLeft= 0xF008F,
|
||||
toRight= 0xF0090,
|
||||
toLeft= 0xF0090,
|
||||
toRight= 0xF008F,
|
||||
checkMark= 0xF0091,
|
||||
crossMark= 0xF0092,
|
||||
musicMark= 0xF0093,
|
||||
|
||||
@@ -377,6 +377,15 @@ local commands={} do
|
||||
"Usage: openurl [url]",
|
||||
},
|
||||
}
|
||||
commands.viewlog={
|
||||
code=goScene('viewLog'),
|
||||
description="View crashes' log",
|
||||
details={
|
||||
"Open crashes' log to view right at the spot",
|
||||
"",
|
||||
"Usage: viewLog"
|
||||
}
|
||||
}
|
||||
commands.scrinfo={
|
||||
code=function()
|
||||
for _,v in next,SCR.info() do
|
||||
|
||||
125
parts/scenes/viewLog.lua
Normal file
125
parts/scenes/viewLog.lua
Normal file
@@ -0,0 +1,125 @@
|
||||
local fullLog,currentLog
|
||||
|
||||
local gc=love.graphics
|
||||
local scene={}
|
||||
local textBox=WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=540,font=20,fix=true}
|
||||
|
||||
function scene.enter()
|
||||
fullLog=(FILE.load('/conf/error.log','-string -canskip') or '/conf/error.log not found'):split('\n\n')
|
||||
TABLE.reverse(fullLog)
|
||||
|
||||
currentLog=1
|
||||
textBox:setTexts(fullLog[1]:split('\n'))
|
||||
|
||||
if fullLog[1]=='/conf/error.log not found' then
|
||||
local _w=scene.widgetList
|
||||
_w.del .hide=true
|
||||
_w.delA.hide=true
|
||||
_w.next.hide=true
|
||||
_w.prev.hide=true
|
||||
_w.home.hide=true
|
||||
_w.endd.hide=true
|
||||
textBox.font=25
|
||||
textBox:reset()
|
||||
else
|
||||
textBox.font=15
|
||||
textBox:reset()
|
||||
end
|
||||
end
|
||||
|
||||
local sureTime=-1e99
|
||||
local function deleteAllExcludeLast10()
|
||||
local function task_redButton()
|
||||
scene.widgetList.del.color=COLOR.R
|
||||
for _=1,120 do coroutine.yield() end
|
||||
scene.widgetList.del.color=COLOR.Z
|
||||
end
|
||||
|
||||
if TIME()-sureTime<1 then
|
||||
sureTime=-1e99
|
||||
scene.widgetList.del.color=COLOR.Z
|
||||
do
|
||||
local temp=TABLE.sub(TABLE.copy(fullLog),1,10)
|
||||
fullLog=TABLE.copy(temp)
|
||||
temp=table.concat(temp,'\n\n')..'\n\n'
|
||||
FILE.save(temp,'/conf/error.log','-string')
|
||||
scene.keyDown('home')
|
||||
TASK.removeTask_code(task_redButton)
|
||||
end
|
||||
else
|
||||
sureTime=TIME()
|
||||
MES.new('warn',text.sureDelete)
|
||||
TASK.removeTask_code(task_redButton)
|
||||
TASK.new(task_redButton)
|
||||
end
|
||||
end
|
||||
local function deleteAll()
|
||||
local function task_redButton()
|
||||
scene.widgetList.delA.color=COLOR.R
|
||||
for _=1,120 do coroutine.yield() end
|
||||
scene.widgetList.delA.color=COLOR.Z
|
||||
end
|
||||
|
||||
if TIME()-sureTime<1 then
|
||||
sureTime=-1e99
|
||||
scene.widgetList.delA.color=COLOR.Z
|
||||
love.filesystem.remove('/conf/error.log')
|
||||
TASK.removeTask_code(task_redButton)
|
||||
SCN.swapTo('viewLog','none')
|
||||
else
|
||||
sureTime=TIME()
|
||||
MES.new('warn',text.sureDelete)
|
||||
TASK.removeTask_code(task_redButton)
|
||||
TASK.new(task_redButton)
|
||||
end
|
||||
end
|
||||
|
||||
function scene.wheelMoved(_,y)
|
||||
WHEELMOV(y)
|
||||
end
|
||||
|
||||
function scene.keyDown(key)
|
||||
if key=='left' then
|
||||
currentLog=math.max(1,currentLog-1)
|
||||
textBox:setTexts(fullLog[currentLog]:split('\n'))
|
||||
elseif key=='right' then
|
||||
currentLog=math.min(currentLog+1,#fullLog)
|
||||
textBox:setTexts(fullLog[currentLog]:split('\n'))
|
||||
elseif key=='home' then
|
||||
currentLog=1
|
||||
textBox:setTexts(fullLog[1]:split('\n'))
|
||||
elseif key=='end' then
|
||||
currentLog=#fullLog
|
||||
textBox:setTexts(fullLog[#fullLog]:split('\n'))
|
||||
elseif key=='up' then
|
||||
textBox:scroll(-5)
|
||||
elseif key=='down' then
|
||||
textBox:scroll(5)
|
||||
elseif key=='pageup' then
|
||||
textBox:scroll(-20)
|
||||
elseif key=='pagedown' then
|
||||
textBox:scroll(20)
|
||||
elseif key=='escape' then
|
||||
SCN.back()
|
||||
end
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
setFont(40)
|
||||
gc.print(currentLog..' / '..#fullLog,1000,800)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
textBox,
|
||||
WIDGET.newButton{name='prev',x=1140,y= 90,w=170,h=80,sound='click',font=60,fText=CHAR.key.left ,code=pressKey('left')},
|
||||
WIDGET.newButton{name='next',x=1140,y=190,w=170,h=80,sound='click',font=60,fText=CHAR.key.right ,code=pressKey('right')},
|
||||
WIDGET.newButton{name='home',x=1140,y=290,w=170,h=80,sound='click',font=60,fText=CHAR.key.macHome,code=pressKey('home')},
|
||||
WIDGET.newButton{name='endd',x=1140,y=390,w=170,h=80,sound='click',font=60,fText=CHAR.key.macEnd ,code=pressKey('end')},
|
||||
|
||||
WIDGET.newKey {name='del' ,x= 260,y=640,w=450,h=80,sound=false, font=30,fText='Delete all log exclude last 10',color='Z',code=deleteAllExcludeLast10},
|
||||
WIDGET.newKey {name='delA',x= 620,y=640,w=250,h=80,sound=false, font=30,fText='DELETE ALL!',color='Z',code=deleteAll},
|
||||
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
Reference in New Issue
Block a user