90118f14cf
Change-Id: Ie8794e8a487f73952dae43e036787b6972fdbbee
83 lines
2.7 KiB
Lua
Executable file
83 lines
2.7 KiB
Lua
Executable file
--[[
|
|
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2017 William Wilgus
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
* KIND, either express or implied.
|
|
*
|
|
****************************************************************************/
|
|
]]
|
|
if not rb.lcd_framebuffer then rb.splash(rb.HZ, "No Support!") return nil end
|
|
|
|
require("printtable")
|
|
local _clr = require("color")
|
|
|
|
local _LCD = rb.lcd_framebuffer()
|
|
--------------------------------------------------------------------------------
|
|
-- displays text in menu_t calls function in same indice of func_t when selected
|
|
function print_menu(menu_t, func_t, selected, settings, copy_screen)
|
|
|
|
local i, start, vcur, screen_img
|
|
|
|
if selected then vcur = selected + 1 end
|
|
if vcur and vcur <= 1 then vcur = 2 end
|
|
|
|
if not settings then
|
|
settings = {}
|
|
settings.justify = "center"
|
|
settings.wrap = true
|
|
settings.hfgc = _clr.set( 0, 000, 000, 000)
|
|
settings.hbgc = _clr.set(-1, 255, 255, 255)
|
|
settings.ifgc = _clr.set(-1, 000, 255, 060)
|
|
settings.ibgc = _clr.set( 0, 000, 000, 000)
|
|
settings.iselc = _clr.set( 1, 000, 200, 100)
|
|
settings.default = true
|
|
end
|
|
|
|
settings.hasheader = true
|
|
settings.co_routine = nil
|
|
settings.msel = false
|
|
settings.start = start
|
|
settings.curpos = vcur
|
|
|
|
while not i or i > 0 do
|
|
if copy_screen == true then
|
|
--make a copy of screen for restoration
|
|
screen_img = screen_img or rb.new_image()
|
|
screen_img:copy(_LCD)
|
|
else
|
|
screen_img = nil
|
|
end
|
|
|
|
_LCD:clear(settings.ibgc)
|
|
|
|
settings.start = start
|
|
settings.curpos = vcur
|
|
|
|
i, start, vcur = print_table(menu_t, #menu_t, settings)
|
|
--vcur = vcur + 1
|
|
collectgarbage("collect")
|
|
if copy_screen == true then _LCD:copy(screen_img) end
|
|
|
|
if func_t and func_t[i] then
|
|
if func_t[i](i, menu_t) == true then break end
|
|
else
|
|
break
|
|
end
|
|
end
|
|
if settings.default == true then settings = nil end
|
|
return screen_img
|
|
end
|