mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
fixed bug with spinbox
This commit is contained in:
parent
fc14141321
commit
01a364b5cf
@ -13,7 +13,7 @@ local util = require("scada-common.util")
|
|||||||
---@field y? integer 1 if omitted
|
---@field y? integer 1 if omitted
|
||||||
---@field fg_bg? cpair foreground/background colors
|
---@field fg_bg? cpair foreground/background colors
|
||||||
|
|
||||||
-- new spinbox control
|
-- new spinbox control (minimum value is 0)
|
||||||
---@param args spinbox_args
|
---@param args spinbox_args
|
||||||
local function spinbox(args)
|
local function spinbox(args)
|
||||||
-- properties
|
-- properties
|
||||||
@ -25,11 +25,13 @@ local function spinbox(args)
|
|||||||
assert(util.is_int(wn_prec), "graphics.element.controls.spinbox_numeric: whole number precision must be an integer")
|
assert(util.is_int(wn_prec), "graphics.element.controls.spinbox_numeric: whole number precision must be an integer")
|
||||||
assert(util.is_int(fr_prec), "graphics.element.controls.spinbox_numeric: fractional precision must be an integer")
|
assert(util.is_int(fr_prec), "graphics.element.controls.spinbox_numeric: fractional precision must be an integer")
|
||||||
|
|
||||||
|
local fmt = "%" .. (wn_prec + fr_prec + 1) .. "." .. fr_prec .. "f"
|
||||||
|
local fmt_init = "%0" .. (wn_prec + fr_prec + 1) .. "." .. fr_prec .. "f"
|
||||||
local dec_point_x = args.whole_num_precision + 1
|
local dec_point_x = args.whole_num_precision + 1
|
||||||
|
|
||||||
assert(type(args.arrow_fg_bg) == "table", "graphics.element.spinbox_numeric: arrow_fg_bg is a required field")
|
assert(type(args.arrow_fg_bg) == "table", "graphics.element.spinbox_numeric: arrow_fg_bg is a required field")
|
||||||
|
|
||||||
local initial_str = util.sprintf("%" .. wn_prec .. "." .. fr_prec .. "f", value)
|
local initial_str = util.sprintf(fmt_init, value)
|
||||||
|
|
||||||
---@diagnostic disable-next-line: discard-returns
|
---@diagnostic disable-next-line: discard-returns
|
||||||
initial_str:gsub("%d", function(char) table.insert(digits, char) end)
|
initial_str:gsub("%d", function(char) table.insert(digits, char) end)
|
||||||
@ -55,12 +57,18 @@ local function spinbox(args)
|
|||||||
e.window.write(" " .. util.strrep("\x1f", fr_prec))
|
e.window.write(" " .. util.strrep("\x1f", fr_prec))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- zero the value
|
||||||
|
local function zero()
|
||||||
|
for i = 1, #digits do digits[i] = 0 end
|
||||||
|
value = 0
|
||||||
|
end
|
||||||
|
|
||||||
-- print out the current value
|
-- print out the current value
|
||||||
local function show_num()
|
local function show_num()
|
||||||
e.window.setBackgroundColor(e.fg_bg.bkg)
|
e.window.setBackgroundColor(e.fg_bg.bkg)
|
||||||
e.window.setTextColor(e.fg_bg.fgd)
|
e.window.setTextColor(e.fg_bg.fgd)
|
||||||
e.window.setCursorPos(1, 2)
|
e.window.setCursorPos(1, 2)
|
||||||
e.window.write(util.sprintf("%" .. wn_prec + fr_prec + 1 .. "." .. fr_prec .. "f", value))
|
e.window.write(util.sprintf(fmt, value))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- init with the default value
|
-- init with the default value
|
||||||
@ -91,6 +99,9 @@ local function spinbox(args)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- min 0
|
||||||
|
if value < 0 then zero() end
|
||||||
|
|
||||||
show_num()
|
show_num()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user