#344 element redraws and shorter assert messages

This commit is contained in:
Mikayla Fischler
2023-09-29 19:34:10 -04:00
parent 70831b49d2
commit ed4180a072
35 changed files with 610 additions and 556 deletions

View File

@@ -25,25 +25,20 @@ local flasher = require("graphics.flasher")
---@param args indicator_led_pair_args
---@return graphics_element element, element_id id
local function indicator_led_pair(args)
assert(type(args.label) == "string", "graphics.elements.indicators.ledpair: label is a required field")
assert(type(args.off) == "number", "graphics.elements.indicators.ledpair: off is a required field")
assert(type(args.c1) == "number", "graphics.elements.indicators.ledpair: c1 is a required field")
assert(type(args.c2) == "number", "graphics.elements.indicators.ledpair: c2 is a required field")
assert(type(args.label) == "string", "indicators.ledpair: label is a required field")
assert(type(args.off) == "number", "indicators.ledpair: off is a required field")
assert(type(args.c1) == "number", "indicators.ledpair: c1 is a required field")
assert(type(args.c2) == "number", "indicators.ledpair: c2 is a required field")
if args.flash then
assert(util.is_int(args.period), "graphics.elements.indicators.ledpair: period is a required field if flash is enabled")
assert(util.is_int(args.period), "indicators.ledpair: period is a required field if flash is enabled")
end
-- single line
args.height = 1
-- determine width
args.width = math.max(args.min_label_width or 0, string.len(args.label)) + 2
-- flasher state
local flash_on = true
-- blit translations
local co = colors.toBlit(args.off)
local c1 = colors.toBlit(args.c1)
local c2 = colors.toBlit(args.c2)
@@ -51,7 +46,6 @@ local function indicator_led_pair(args)
-- create new graphics element base object
local e = element.new(args)
-- init value for initial check in on_update
e.value = 1
-- called by flasher when enabled
@@ -86,7 +80,6 @@ local function indicator_led_pair(args)
elseif new_state <= 1 then
flash_on = false
flasher.stop(flash_callback)
e.w_blit("\x8c", co, e.fg_bg.blit_bkg)
end
elseif new_state == 2 then
@@ -102,13 +95,18 @@ local function indicator_led_pair(args)
---@param val integer indicator state
function e.set_value(val) e.on_update(val) end
-- write label and initial indicator light
e.on_update(1)
if string.len(args.label) > 0 then
e.w_set_cur(3, 1)
e.w_write(args.label)
-- draw label and indicator light
function e.redraw()
e.on_update(e.value)
if string.len(args.label) > 0 then
e.w_set_cur(3, 1)
e.w_write(args.label)
end
end
-- initial draw
e.redraw()
return e.complete()
end