diff --git a/.vscode/settings.json b/.vscode/settings.json index 673ad4e..9e81f80 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,7 @@ }, "Lua.hint.setType": true, "Lua.diagnostics.disable": [ - "duplicate-set-field" + "duplicate-set-field", + "inject-field" ] } diff --git a/coordinator/ui/layout/main_view.lua b/coordinator/ui/layout/main_view.lua index a1b3b5b..c0e2769 100644 --- a/coordinator/ui/layout/main_view.lua +++ b/coordinator/ui/layout/main_view.lua @@ -2,8 +2,6 @@ -- Main SCADA Coordinator GUI -- -local util = require("scada-common.util") - local iocontrol = require("coordinator.iocontrol") local style = require("coordinator.ui.style") @@ -77,7 +75,7 @@ local function init(main) assert(cnc_bottom_align_start >= cnc_y_start, "main display not of sufficient vertical resolution (add an additional row of monitors)") - TextBox{parent=main,y=cnc_bottom_align_start,text=util.strrep("\x8c", header.get_width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=cpair(colors.lightGray,colors.gray)} + TextBox{parent=main,y=cnc_bottom_align_start,text=string.rep("\x8c", header.get_width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=cpair(colors.lightGray,colors.gray)} cnc_bottom_align_start = cnc_bottom_align_start + 2 diff --git a/graphics/elements/controls/hazard_button.lua b/graphics/elements/controls/hazard_button.lua index fcec4bd..0c03fc3 100644 --- a/graphics/elements/controls/hazard_button.lua +++ b/graphics/elements/controls/hazard_button.lua @@ -1,7 +1,6 @@ -- Hazard-bordered Button Graphics Element local tcd = require("scada-common.tcd") -local util = require("scada-common.util") local core = require("graphics.core") local element = require("graphics.element") @@ -44,7 +43,7 @@ local function hazard_button(args) e.window.setTextColor(accent) e.window.setBackgroundColor(args.fg_bg.bkg) e.window.setCursorPos(1, 1) - e.window.write("\x99" .. util.strrep("\x89", args.width - 2) .. "\x99") + e.window.write("\x99" .. string.rep("\x89", args.width - 2) .. "\x99") -- center left e.window.setCursorPos(1, 2) @@ -62,7 +61,7 @@ local function hazard_button(args) e.window.setTextColor(accent) e.window.setBackgroundColor(args.fg_bg.bkg) e.window.setCursorPos(1, 3) - e.window.write("\x99" .. util.strrep("\x98", args.width - 2) .. "\x99") + e.window.write("\x99" .. string.rep("\x98", args.width - 2) .. "\x99") end -- on request timeout: recursively calls itself to double flash button text diff --git a/graphics/elements/controls/spinbox_numeric.lua b/graphics/elements/controls/spinbox_numeric.lua index 1cdfa26..41940b5 100644 --- a/graphics/elements/controls/spinbox_numeric.lua +++ b/graphics/elements/controls/spinbox_numeric.lua @@ -61,14 +61,14 @@ local function spinbox(args) e.window.setBackgroundColor(args.arrow_fg_bg.bkg) e.window.setTextColor(color) e.window.setCursorPos(1, 1) - e.window.write(util.strrep("\x1e", wn_prec)) + e.window.write(string.rep("\x1e", wn_prec)) e.window.setCursorPos(1, 3) - e.window.write(util.strrep("\x1f", wn_prec)) + e.window.write(string.rep("\x1f", wn_prec)) if fr_prec > 0 then e.window.setCursorPos(1 + wn_prec, 1) - e.window.write(" " .. util.strrep("\x1e", fr_prec)) + e.window.write(" " .. string.rep("\x1e", fr_prec)) e.window.setCursorPos(1 + wn_prec, 3) - e.window.write(" " .. util.strrep("\x1f", fr_prec)) + e.window.write(" " .. string.rep("\x1f", fr_prec)) end end diff --git a/graphics/elements/indicators/coremap.lua b/graphics/elements/indicators/coremap.lua index 997bec8..1b47d6a 100644 --- a/graphics/elements/indicators/coremap.lua +++ b/graphics/elements/indicators/coremap.lua @@ -63,7 +63,7 @@ local function core_map(args) e.window.setTextColor(e.fg_bg.bkg) e.window.setBackgroundColor(args.parent.get_fg_bg().bkg) e.window.setCursorPos(1, e.frame.h) - e.window.write(util.strrep("\x8f", e.frame.w)) + e.window.write(string.rep("\x8f", e.frame.w)) e.window.setTextColor(e.fg_bg.fgd) e.window.setBackgroundColor(e.fg_bg.bkg) end diff --git a/graphics/elements/indicators/icon.lua b/graphics/elements/indicators/icon.lua index 710fa5b..3e01de6 100644 --- a/graphics/elements/indicators/icon.lua +++ b/graphics/elements/indicators/icon.lua @@ -1,7 +1,5 @@ -- Icon Indicator Graphics Element -local util = require("scada-common.util") - local element = require("graphics.element") ---@class icon_sym_color @@ -44,8 +42,8 @@ local function icon(args) table.insert(state_blit_cmds, { text = " " .. sym_color.symbol .. " ", - fgd = util.strrep(sym_color.color.blit_fgd, 3), - bkg = util.strrep(sym_color.color.blit_bkg, 3) + fgd = string.rep(sym_color.color.blit_fgd, 3), + bkg = string.rep(sym_color.color.blit_bkg, 3) }) end diff --git a/graphics/elements/indicators/state.lua b/graphics/elements/indicators/state.lua index cff1798..1ee461f 100644 --- a/graphics/elements/indicators/state.lua +++ b/graphics/elements/indicators/state.lua @@ -51,8 +51,8 @@ local function state_indicator(args) table.insert(state_blit_cmds, { text = text, - fgd = util.strrep(state_def.color.blit_fgd, string.len(text)), - bkg = util.strrep(state_def.color.blit_bkg, string.len(text)) + fgd = string.rep(state_def.color.blit_fgd, string.len(text)), + bkg = string.rep(state_def.color.blit_bkg, string.len(text)) }) end diff --git a/graphics/elements/indicators/vbar.lua b/graphics/elements/indicators/vbar.lua index 36cc74d..8b72f82 100644 --- a/graphics/elements/indicators/vbar.lua +++ b/graphics/elements/indicators/vbar.lua @@ -27,11 +27,11 @@ local function vbar(args) local e = element.new(args) -- blit strings - local fgd = util.strrep(e.fg_bg.blit_fgd, e.frame.w) - local bkg = util.strrep(e.fg_bg.blit_bkg, e.frame.w) + local fgd = string.rep(e.fg_bg.blit_fgd, e.frame.w) + local bkg = string.rep(e.fg_bg.blit_bkg, e.frame.w) local spaces = util.spaces(e.frame.w) - local one_third = util.strrep("\x8f", e.frame.w) - local two_thirds = util.strrep("\x83", e.frame.w) + local one_third = string.rep("\x8f", e.frame.w) + local two_thirds = string.rep("\x83", e.frame.w) -- handle data changes ---@param fraction number 0.0 to 1.0 @@ -86,8 +86,8 @@ local function vbar(args) -- change bar color ---@param fg_bg cpair new bar colors function e.recolor(fg_bg) - fgd = util.strrep(fg_bg.blit_fgd, e.frame.w) - bkg = util.strrep(fg_bg.blit_bkg, e.frame.w) + fgd = string.rep(fg_bg.blit_fgd, e.frame.w) + bkg = string.rep(fg_bg.blit_bkg, e.frame.w) -- re-draw last_num_bars = 0 diff --git a/graphics/elements/rectangle.lua b/graphics/elements/rectangle.lua index 1d8afae..e3d66e1 100644 --- a/graphics/elements/rectangle.lua +++ b/graphics/elements/rectangle.lua @@ -70,45 +70,45 @@ local function rectangle(args) -- form the basic line strings and top/bottom blit strings local spaces = util.spaces(e.frame.w) - local blit_fg = util.strrep(e.fg_bg.blit_fgd, e.frame.w) + local blit_fg = string.rep(e.fg_bg.blit_fgd, e.frame.w) local blit_fg_sides = blit_fg local blit_bg_sides = "" - local blit_bg_top_bot = util.strrep(border_blit, e.frame.w) + local blit_bg_top_bot = string.rep(border_blit, e.frame.w) -- partial bars local p_a, p_b, p_s if args.thin == true then if args.even_inner == true then - p_a = "\x9c" .. util.strrep("\x8c", inner_width) .. "\x93" - p_b = "\x8d" .. util.strrep("\x8c", inner_width) .. "\x8e" + p_a = "\x9c" .. string.rep("\x8c", inner_width) .. "\x93" + p_b = "\x8d" .. string.rep("\x8c", inner_width) .. "\x8e" else - p_a = "\x97" .. util.strrep("\x83", inner_width) .. "\x94" - p_b = "\x8a" .. util.strrep("\x8f", inner_width) .. "\x85" + p_a = "\x97" .. string.rep("\x83", inner_width) .. "\x94" + p_b = "\x8a" .. string.rep("\x8f", inner_width) .. "\x85" end p_s = "\x95" .. util.spaces(inner_width) .. "\x95" else if args.even_inner == true then - p_a = util.strrep("\x83", inner_width + width_x2) - p_b = util.strrep("\x8f", inner_width + width_x2) + p_a = string.rep("\x83", inner_width + width_x2) + p_b = string.rep("\x8f", inner_width + width_x2) else - p_a = util.spaces(border_width) .. util.strrep("\x8f", inner_width) .. util.spaces(border_width) - p_b = util.spaces(border_width) .. util.strrep("\x83", inner_width) .. util.spaces(border_width) + p_a = util.spaces(border_width) .. string.rep("\x8f", inner_width) .. util.spaces(border_width) + p_b = util.spaces(border_width) .. string.rep("\x83", inner_width) .. util.spaces(border_width) end p_s = spaces end - local p_inv_fg = util.strrep(border_blit, border_width) .. util.strrep(e.fg_bg.blit_bkg, inner_width) .. - util.strrep(border_blit, border_width) - local p_inv_bg = util.strrep(e.fg_bg.blit_bkg, border_width) .. util.strrep(border_blit, inner_width) .. - util.strrep(e.fg_bg.blit_bkg, border_width) + local p_inv_fg = string.rep(border_blit, border_width) .. string.rep(e.fg_bg.blit_bkg, inner_width) .. + string.rep(border_blit, border_width) + local p_inv_bg = string.rep(e.fg_bg.blit_bkg, border_width) .. string.rep(border_blit, inner_width) .. + string.rep(e.fg_bg.blit_bkg, border_width) if args.thin == true then - p_inv_fg = e.fg_bg.blit_bkg .. util.strrep(e.fg_bg.blit_bkg, inner_width) .. util.strrep(border_blit, border_width) - p_inv_bg = border_blit .. util.strrep(border_blit, inner_width) .. util.strrep(e.fg_bg.blit_bkg, border_width) + p_inv_fg = e.fg_bg.blit_bkg .. string.rep(e.fg_bg.blit_bkg, inner_width) .. string.rep(border_blit, border_width) + p_inv_bg = border_blit .. string.rep(border_blit, inner_width) .. string.rep(e.fg_bg.blit_bkg, border_width) - blit_fg_sides = border_blit .. util.strrep(e.fg_bg.blit_bkg, inner_width) .. e.fg_bg.blit_bkg + blit_fg_sides = border_blit .. string.rep(e.fg_bg.blit_bkg, inner_width) .. e.fg_bg.blit_bkg end -- form the body blit strings (sides are border, inside is normal) @@ -135,7 +135,7 @@ local function rectangle(args) if args.thin == true then e.window.blit(p_a, p_inv_bg, p_inv_fg) else - local _fg = util.trinary(args.even_inner == true, util.strrep(e.fg_bg.blit_bkg, e.frame.w), p_inv_bg) + local _fg = util.trinary(args.even_inner == true, string.rep(e.fg_bg.blit_bkg, e.frame.w), p_inv_bg) local _bg = util.trinary(args.even_inner == true, blit_bg_top_bot, p_inv_fg) if width_x2 % 3 == 1 then @@ -156,13 +156,13 @@ local function rectangle(args) if args.border.even and y == ((e.frame.h - border_width) + 1) then if args.thin == true then if args.even_inner == true then - e.window.blit(p_b, blit_bg_top_bot, util.strrep(e.fg_bg.blit_bkg, e.frame.w)) + e.window.blit(p_b, blit_bg_top_bot, string.rep(e.fg_bg.blit_bkg, e.frame.w)) else - e.window.blit(p_b, util.strrep(e.fg_bg.blit_bkg, e.frame.w), blit_bg_top_bot) + e.window.blit(p_b, string.rep(e.fg_bg.blit_bkg, e.frame.w), blit_bg_top_bot) end else local _fg = util.trinary(args.even_inner == true, blit_bg_top_bot, p_inv_fg) - local _bg = util.trinary(args.even_inner == true, util.strrep(e.fg_bg.blit_bkg, e.frame.w), blit_bg_top_bot) + local _bg = util.trinary(args.even_inner == true, string.rep(e.fg_bg.blit_bkg, e.frame.w), blit_bg_top_bot) if width_x2 % 3 == 1 then e.window.blit(p_a, _fg, _bg) diff --git a/scada-common/util.lua b/scada-common/util.lua index 597ba69..a9a9f5b 100644 --- a/scada-common/util.lua +++ b/scada-common/util.lua @@ -76,25 +76,12 @@ function util.strval(val) end end --- repeat a string n times ----@nodiscard ----@param str string ----@param n integer ----@return string -function util.strrep(str, n) - local repeated = "" - - for _ = 1, n do repeated = repeated .. str end - - return repeated -end - -- repeat a space n times ---@nodiscard ---@param n integer ---@return string function util.spaces(n) - return util.strrep(" ", n) + return string.rep(" ", n) end -- pad text to a minimum width