From fc198cd9d2398b84794fb74c6a897e4e58c51a53 Mon Sep 17 00:00:00 2001 From: Mikayla Fischler Date: Wed, 6 Mar 2024 11:43:31 -0500 Subject: [PATCH] #405 supervisor and coordinator front panel themes --- coordinator/renderer.lua | 10 +- coordinator/startup.lua | 2 +- coordinator/ui/components/pkt_entry.lua | 20 ++-- coordinator/ui/layout/front_panel.lua | 14 +-- coordinator/ui/style.lua | 127 ++++++++-------------- graphics/themes.lua | 114 +++++++++++++++++++ supervisor/panel/components/pdg_entry.lua | 20 ++-- supervisor/panel/components/rtu_entry.lua | 22 ++-- supervisor/panel/front_panel.lua | 56 +++++----- supervisor/panel/style.lua | 46 +------- supervisor/renderer.lua | 12 +- supervisor/startup.lua | 2 +- 12 files changed, 249 insertions(+), 196 deletions(-) create mode 100644 graphics/themes.lua diff --git a/coordinator/renderer.lua b/coordinator/renderer.lua index c926b2e..c05afee 100644 --- a/coordinator/renderer.lua +++ b/coordinator/renderer.lua @@ -97,8 +97,8 @@ function renderer.init_displays() term.setCursorPos(1, 1) -- set overridden colors - for i = 1, #style.fp.colors do - term.setPaletteColor(style.fp.colors[i].c, style.fp.colors[i].hex) + for i = 1, #style.fp_theme.colors do + term.setPaletteColor(style.fp_theme.colors[i].c, style.fp_theme.colors[i].hex) end end @@ -152,9 +152,9 @@ function renderer.close_fp() engine.fp_ready = false -- restore colors - for i = 1, #style.theme.colors do - local r, g, b = term.nativePaletteColor(style.theme.colors[i].c) - term.setPaletteColor(style.theme.colors[i].c, r, g, b) + for i = 1, #style.fp_theme.colors do + local r, g, b = term.nativePaletteColor(style.fp_theme.colors[i].c) + term.setPaletteColor(style.fp_theme.colors[i].c, r, g, b) end -- reset terminal diff --git a/coordinator/startup.lua b/coordinator/startup.lua index 10294f8..45583b9 100644 --- a/coordinator/startup.lua +++ b/coordinator/startup.lua @@ -22,7 +22,7 @@ local sounder = require("coordinator.sounder") local apisessions = require("coordinator.session.apisessions") -local COORDINATOR_VERSION = "v1.2.11" +local COORDINATOR_VERSION = "v1.2.12" local CHUNK_LOAD_DELAY_S = 30.0 diff --git a/coordinator/ui/components/pkt_entry.lua b/coordinator/ui/components/pkt_entry.lua index d6ba4be..42f19a4 100644 --- a/coordinator/ui/components/pkt_entry.lua +++ b/coordinator/ui/components/pkt_entry.lua @@ -17,8 +17,10 @@ local ALIGN = core.ALIGN local cpair = core.cpair -local text_fg_bg = style.text_colors -local lg_wh = style.lg_white +local s_hi_box = style.fp_theme.highlight_box +local s_hi_bright = style.fp_theme.highlight_box_bright + +local label_fg = style.fp.label_fg -- create a pocket list entry ---@param parent graphics_element parent @@ -28,22 +30,22 @@ local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=s_hi_bright} local ps_prefix = "pkt_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=text_fg_bg} - local pkt_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=text_fg_bg,nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=text_fg_bg} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=s_hi_box} + local pkt_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=s_hi_box,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=s_hi_box} pkt_addr.register(ps, ps_prefix .. "addr", pkt_addr.set_value) TextBox{parent=entry,x=10,y=2,text="FW:",width=3,height=1} - local pkt_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=lg_wh} + local pkt_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=label_fg} pkt_fw_v.register(ps, ps_prefix .. "fw", pkt_fw_v.set_value) TextBox{parent=entry,x=35,y=2,text="RTT:",width=4,height=1} - local pkt_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_wh} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_wh} + local pkt_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=label_fg} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=label_fg} pkt_rtt.register(ps, ps_prefix .. "rtt", pkt_rtt.update) pkt_rtt.register(ps, ps_prefix .. "rtt_color", pkt_rtt.recolor) diff --git a/coordinator/ui/layout/front_panel.lua b/coordinator/ui/layout/front_panel.lua index ffd2a09..d2eb8ff 100644 --- a/coordinator/ui/layout/front_panel.lua +++ b/coordinator/ui/layout/front_panel.lua @@ -36,7 +36,7 @@ local led_grn = style.led_grn local function init(panel, num_units) local ps = iocontrol.get_db().fp.ps - TextBox{parent=panel,y=1,text="SCADA COORDINATOR",alignment=ALIGN.CENTER,height=1,fg_bg=style.fp.header} + TextBox{parent=panel,y=1,text="SCADA COORDINATOR",alignment=ALIGN.CENTER,height=1,fg_bg=style.fp_theme.header} local page_div = Div{parent=panel,x=1,y=3} @@ -68,7 +68,7 @@ local function init(panel, num_units) ---@diagnostic disable-next-line: undefined-field local comp_id = util.sprintf("(%d)", os.getComputerID()) - TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp_label} + TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp.disabled_fg} local monitors = Div{parent=main_page,width=16,height=17,x=18,y=2} @@ -89,7 +89,7 @@ local function init(panel, num_units) -- about footer -- - local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp_label} + local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp.disabled_fg} local fw_v = TextBox{parent=about,x=1,y=1,text="FW: v00.00.00",alignment=ALIGN.LEFT,height=1} local comms_v = TextBox{parent=about,x=1,y=2,text="NT: v00.00.00",alignment=ALIGN.LEFT,height=1} @@ -103,7 +103,7 @@ local function init(panel, num_units) -- API page local api_page = Div{parent=page_div,x=1,y=1,hidden=true} - local api_list = ListBox{parent=api_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=style.fp_text,nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} + local api_list = ListBox{parent=api_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=style.fp.text_fg,nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} local _ = Div{parent=api_list,height=1,hidden=true} -- padding -- assemble page panes @@ -113,11 +113,11 @@ local function init(panel, num_units) local page_pane = MultiPane{parent=page_div,x=1,y=1,panes=panes} local tabs = { - { name = "CRD", color = style.fp_text }, - { name = "API", color = style.fp_text }, + { name = "CRD", color = style.fp.text }, + { name = "API", color = style.fp.text }, } - TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=style.bw_fg_bg} + TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=style.fp_theme.highlight_box_bright} -- link pocket API list management to PGI pgi.link_elements(api_list, pkt_entry) diff --git a/coordinator/ui/style.lua b/coordinator/ui/style.lua index 1861407..baad776 100644 --- a/coordinator/ui/style.lua +++ b/coordinator/ui/style.lua @@ -2,94 +2,24 @@ -- Graphics Style Options -- -local core = require("graphics.core") +local core = require("graphics.core") +local themes = require("graphics.themes") ---@class crd_style local style = {} local cpair = core.cpair --- GLOBAL -- - --- add color mappings for front panel -colors.ivory = colors.pink -colors.yellow_hc = colors.purple -colors.red_off = colors.brown -colors.yellow_off = colors.magenta -colors.green_off = colors.lime - -- front panel styling -style.fp = {} +style.fp_theme = themes.sandstone +style.fp = themes.get_fp_style(style.fp_theme) -style.fp.root = cpair(colors.black, colors.ivory) -style.fp.header = cpair(colors.black, colors.lightGray) - -style.fp.colors = { - { c = colors.red, hex = 0xdf4949 }, -- RED ON - { c = colors.orange, hex = 0xffb659 }, - { c = colors.yellow, hex = 0xf9fb53 }, -- YELLOW ON - { c = colors.lime, hex = 0x16665a }, -- GREEN OFF - { c = colors.green, hex = 0x6be551 }, -- GREEN ON - { c = colors.cyan, hex = 0x34bac8 }, - { c = colors.lightBlue, hex = 0x6cc0f2 }, - { c = colors.blue, hex = 0x0096ff }, - { c = colors.purple, hex = 0xb156ee }, -- YELLOW HIGH CONTRAST - { c = colors.pink, hex = 0xdcd9ca }, -- IVORY - { c = colors.magenta, hex = 0x85862c }, -- YELLOW OFF - -- { c = colors.white, hex = 0xdcd9ca }, - { c = colors.lightGray, hex = 0xb1b8b3 }, - { c = colors.gray, hex = 0x575757 }, - -- { c = colors.black, hex = 0x191919 }, - { c = colors.brown, hex = 0x672223 } -- RED OFF -} +style.led_grn = cpair(colors.green, colors.green_off) -- main GUI styling ---@class theme -local deepslate = { - text = colors.white, - text_inv = colors.black, - label = colors.lightGray, - label_dark = colors.gray, - disabled = colors.gray, - bg = colors.black, - accent_light = colors.gray, - accent_dark = colors.lightGray, - - fuel_color = colors.lightGray, - - header = cpair(colors.white, colors.gray), - - text_fg = cpair(colors.white, colors._INHERIT), - label_fg = cpair(colors.lightGray, colors._INHERIT), - disabled_fg = cpair(colors.gray, colors._INHERIT), - - highlight_box = cpair(colors.white, colors.gray), - highlight_box_bright = cpair(colors.black, colors.lightGray), - field_box = cpair(colors.white, colors.gray), - - colors = { - { c = colors.red, hex = 0xeb6a6c }, - { c = colors.orange, hex = 0xf2b86c }, - { c = colors.yellow, hex = 0xd9cf81 }, - { c = colors.lime, hex = 0x80ff80 }, - { c = colors.green, hex = 0x70e19b }, - { c = colors.cyan, hex = 0x7ccdd0 }, - { c = colors.lightBlue, hex = 0x99ceef }, - { c = colors.blue, hex = 0x60bcff }, - { c = colors.purple, hex = 0xc38aea }, - { c = colors.pink, hex = 0xff7fb8 }, - { c = colors.magenta, hex = 0xf980dd }, - { c = colors.white, hex = 0xd9d9d9 }, - { c = colors.lightGray, hex = 0x949494 }, - { c = colors.gray, hex = 0x575757 }, - { c = colors.black, hex = 0x262626 }, - { c = colors.brown, hex = 0xb18f6a } - } -} - ----@type theme local smooth_stone = { text = colors.black, text_inv = colors.white, @@ -132,6 +62,49 @@ local smooth_stone = { } } +---@type theme +local deepslate = { + text = colors.white, + text_inv = colors.black, + label = colors.lightGray, + label_dark = colors.gray, + disabled = colors.gray, + bg = colors.black, + accent_light = colors.gray, + accent_dark = colors.lightGray, + + fuel_color = colors.lightGray, + + header = cpair(colors.white, colors.gray), + + text_fg = cpair(colors.white, colors._INHERIT), + label_fg = cpair(colors.lightGray, colors._INHERIT), + disabled_fg = cpair(colors.gray, colors._INHERIT), + + highlight_box = cpair(colors.white, colors.gray), + highlight_box_bright = cpair(colors.black, colors.lightGray), + field_box = cpair(colors.white, colors.gray), + + colors = { + { c = colors.red, hex = 0xeb6a6c }, + { c = colors.orange, hex = 0xf2b86c }, + { c = colors.yellow, hex = 0xd9cf81 }, + { c = colors.lime, hex = 0x80ff80 }, + { c = colors.green, hex = 0x70e19b }, + { c = colors.cyan, hex = 0x7ccdd0 }, + { c = colors.lightBlue, hex = 0x99ceef }, + { c = colors.blue, hex = 0x60bcff }, + { c = colors.purple, hex = 0xc38aea }, + { c = colors.pink, hex = 0xff7fb8 }, + { c = colors.magenta, hex = 0xf980dd }, + { c = colors.white, hex = 0xd9d9d9 }, + { c = colors.lightGray, hex = 0x949494 }, + { c = colors.gray, hex = 0x575757 }, + { c = colors.black, hex = 0x262626 }, + { c = colors.brown, hex = 0xb18f6a } + } +} + style.theme = deepslate -- style.theme = smooth_stone @@ -165,10 +138,6 @@ style.ind_yel = cpair(colors.yellow, colors.gray) style.ind_red = cpair(colors.red, colors.gray) style.ind_wht = style.wh_gray -style.fp_text = cpair(colors.black, colors.ivory) -style.fp_label = cpair(colors.lightGray, colors.ivory) -style.led_grn = cpair(colors.green, colors.green_off) - -- UI COMPONENTS -- style.reactor = { diff --git a/graphics/themes.lua b/graphics/themes.lua new file mode 100644 index 0000000..f5ba50e --- /dev/null +++ b/graphics/themes.lua @@ -0,0 +1,114 @@ +-- +-- Graphics Themes +-- + +local core = require("graphics.core") + +local cpair = core.cpair + +---@class graphics_themes +local themes = {} + +-- add color mappings for front panel +colors.ivory = colors.pink +colors.yellow_hc = colors.purple +colors.red_off = colors.brown +colors.yellow_off = colors.magenta +colors.green_off = colors.lime + +---@class fp_theme +themes.sandstone = { + text = colors.black, + label = colors.lightGray, + label_dark = colors.gray, + disabled = colors.lightGray, + bg = colors.ivory, + + header = cpair(colors.black, colors.lightGray), + + highlight_box = cpair(colors.black, colors.lightGray), + highlight_box_bright = cpair(colors.black, colors.white), + + colors = { + { c = colors.red, hex = 0xdf4949 }, -- RED ON + { c = colors.orange, hex = 0xffb659 }, + { c = colors.yellow, hex = 0xf9fb53 }, -- YELLOW ON + { c = colors.lime, hex = 0x16665a }, -- GREEN OFF + { c = colors.green, hex = 0x6be551 }, -- GREEN ON + { c = colors.cyan, hex = 0x34bac8 }, + { c = colors.lightBlue, hex = 0x6cc0f2 }, + { c = colors.blue, hex = 0x0096ff }, + { c = colors.purple, hex = 0xb156ee }, -- YELLOW HIGH CONTRAST + { c = colors.pink, hex = 0xdcd9ca }, -- IVORY + { c = colors.magenta, hex = 0x85862c }, -- YELLOW OFF + { c = colors.white, hex = 0xf0f0f0 }, + { c = colors.lightGray, hex = 0xb1b8b3 }, + { c = colors.gray, hex = 0x575757 }, + { c = colors.black, hex = 0x191919 }, + { c = colors.brown, hex = 0x672223 } -- RED OFF + } +} + +---@type fp_theme +themes.basalt = { + text = colors.white, + label = colors.gray, + label_dark = colors.ivory, + disabled = colors.lightGray, + bg = colors.ivory, + + header = cpair(colors.white, colors.gray), + + highlight_box = cpair(colors.white, colors.gray), + highlight_box_bright = cpair(colors.black, colors.lightGray), + + colors = { + { c = colors.red, hex = 0xdc6466 }, -- RED ON + { c = colors.orange, hex = 0xffb659 }, + { c = colors.yellow, hex = 0xebdf75 }, -- YELLOW ON + { c = colors.lime, hex = 0x496b41 }, -- GREEN OFF + { c = colors.green, hex = 0x81db6d }, -- GREEN ON + { c = colors.cyan, hex = 0x5ec7d1 }, + { c = colors.lightBlue, hex = 0x7dc6f2 }, + { c = colors.blue, hex = 0x56aae6 }, + { c = colors.purple, hex = 0xe9cd68 }, -- YELLOW HIGH CONTRAST + { c = colors.pink, hex = 0x4d4e52 }, -- IVORY + { c = colors.magenta, hex = 0x6b6c36 }, -- YELLOW OFF + { c = colors.white, hex = 0xbfbfbf }, + { c = colors.lightGray, hex = 0x848794 }, + { c = colors.gray, hex = 0x5c5f68 }, + { c = colors.black, hex = 0x262626 }, + { c = colors.brown, hex = 0x653839 } -- RED OFF + } +} + +-- get style fields for a front panel based on the provided theme +---@param theme fp_theme +function themes.get_fp_style(theme) + ---@class fp_style + local style = { + root = cpair(theme.text, theme.bg), + + text = cpair(theme.text, theme.bg), + text_fg = cpair(theme.text, colors._INHERIT), + + label_fg = cpair(theme.label, colors._INHERIT), + label_d_fg = cpair(theme.label_dark, colors._INHERIT), + + disabled_fg = cpair(theme.disabled, colors._INHERIT) + } + + return style +end + + + + + + + + + + + +return themes diff --git a/supervisor/panel/components/pdg_entry.lua b/supervisor/panel/components/pdg_entry.lua index 6cb07f7..7156285 100644 --- a/supervisor/panel/components/pdg_entry.lua +++ b/supervisor/panel/components/pdg_entry.lua @@ -17,8 +17,10 @@ local ALIGN = core.ALIGN local cpair = core.cpair -local black_lg = style.black_lg -local lg_white = style.lg_white +local s_hi_box = style.theme.highlight_box +local s_hi_bright = style.theme.highlight_box_bright + +local label_fg = style.fp.label_fg -- create a pocket diagnostics list entry ---@param parent graphics_element parent @@ -26,22 +28,22 @@ local lg_white = style.lg_white local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=s_hi_bright} local ps_prefix = "pdg_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} - local pdg_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=black_lg,nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=s_hi_box} + local pdg_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=s_hi_box,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=s_hi_box} pdg_addr.register(databus.ps, ps_prefix .. "addr", pdg_addr.set_value) TextBox{parent=entry,x=10,y=2,text="FW:",width=3,height=1} - local pdg_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=lg_white} + local pdg_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=label_fg} pdg_fw_v.register(databus.ps, ps_prefix .. "fw", pdg_fw_v.set_value) TextBox{parent=entry,x=35,y=2,text="RTT:",width=4,height=1} - local pdg_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_white} + local pdg_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=label_fg} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=label_fg} pdg_rtt.register(databus.ps, ps_prefix .. "rtt", pdg_rtt.update) pdg_rtt.register(databus.ps, ps_prefix .. "rtt_color", pdg_rtt.recolor) diff --git a/supervisor/panel/components/rtu_entry.lua b/supervisor/panel/components/rtu_entry.lua index 240c596..518dfe9 100644 --- a/supervisor/panel/components/rtu_entry.lua +++ b/supervisor/panel/components/rtu_entry.lua @@ -17,8 +17,10 @@ local ALIGN = core.ALIGN local cpair = core.cpair -local black_lg = style.black_lg -local lg_white = style.lg_white +local s_hi_box = style.theme.highlight_box +local s_hi_bright = style.theme.highlight_box_bright + +local label_fg = style.fp.label_fg -- create an RTU list entry ---@param parent graphics_element parent @@ -26,26 +28,26 @@ local lg_white = style.lg_white local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=s_hi_bright} local ps_prefix = "rtu_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} - local rtu_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=black_lg,nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=s_hi_box} + local rtu_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=ALIGN.CENTER,width=8,height=1,fg_bg=s_hi_box,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=s_hi_box} rtu_addr.register(databus.ps, ps_prefix .. "addr", rtu_addr.set_value) TextBox{parent=entry,x=10,y=2,text="UNITS:",width=7,height=1} - local unit_count = DataIndicator{parent=entry,x=17,y=2,label="",unit="",format="%2d",value=0,width=2,fg_bg=style.gray_white} + local unit_count = DataIndicator{parent=entry,x=17,y=2,label="",unit="",format="%2d",value=0,width=2,fg_bg=style.fp.label_d_fg} unit_count.register(databus.ps, ps_prefix .. "units", unit_count.set_value) TextBox{parent=entry,x=21,y=2,text="FW:",width=3,height=1} - local rtu_fw_v = TextBox{parent=entry,x=25,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} + local rtu_fw_v = TextBox{parent=entry,x=25,y=2,text=" ------- ",width=9,height=1,fg_bg=label_fg} rtu_fw_v.register(databus.ps, ps_prefix .. "fw", rtu_fw_v.set_value) TextBox{parent=entry,x=36,y=2,text="RTT:",width=4,height=1} - local rtu_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_white} + local rtu_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=label_fg} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=label_fg} rtu_rtt.register(databus.ps, ps_prefix .. "rtt", rtu_rtt.update) rtu_rtt.register(databus.ps, ps_prefix .. "rtt_color", rtu_rtt.recolor) diff --git a/supervisor/panel/front_panel.lua b/supervisor/panel/front_panel.lua index 8e37400..fccb5b0 100644 --- a/supervisor/panel/front_panel.lua +++ b/supervisor/panel/front_panel.lua @@ -29,18 +29,18 @@ local ALIGN = core.ALIGN local cpair = core.cpair -local bw_fg_bg = style.bw_fg_bg +local s_hi_box = style.theme.highlight_box +local s_hi_bright = style.theme.highlight_box_bright -local black_lg = style.black_lg -local lg_white = style.lg_white -local gry_wht = style.gray_white +local label_fg = style.fp.label_fg +local label_d_fg = style.fp.label_d_fg local ind_grn = style.ind_grn -- create new front panel view ---@param panel graphics_element main displaybox local function init(panel) - TextBox{parent=panel,y=1,text="SCADA SUPERVISOR",alignment=ALIGN.CENTER,height=1,fg_bg=style.header} + TextBox{parent=panel,y=1,text="SCADA SUPERVISOR",alignment=ALIGN.CENTER,height=1,fg_bg=style.theme.header} local page_div = Div{parent=panel,x=1,y=3} @@ -66,13 +66,13 @@ local function init(panel) ---@diagnostic disable-next-line: undefined-field local comp_id = util.sprintf("(%d)", os.getComputerID()) - TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp_label} + TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp.disabled_fg} -- -- about footer -- - local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp_label} + local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp.disabled_fg} local fw_v = TextBox{parent=about,x=1,y=1,text="FW: v00.00.00",alignment=ALIGN.LEFT,height=1} local comms_v = TextBox{parent=about,x=1,y=2,text="NT: v00.00.00",alignment=ALIGN.LEFT,height=1} @@ -90,25 +90,25 @@ local function init(panel) for i = 1, supervisor.config.UnitCount do local ps_prefix = "plc_" .. i .. "_" - local plc_entry = Div{parent=plc_list,height=3,fg_bg=bw_fg_bg} + local plc_entry = Div{parent=plc_list,height=3,fg_bg=s_hi_bright} - TextBox{parent=plc_entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} - TextBox{parent=plc_entry,x=1,y=2,text="UNIT "..i,alignment=ALIGN.CENTER,width=8,height=1,fg_bg=black_lg} - TextBox{parent=plc_entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} + TextBox{parent=plc_entry,x=1,y=1,text="",width=8,height=1,fg_bg=s_hi_box} + TextBox{parent=plc_entry,x=1,y=2,text="UNIT "..i,alignment=ALIGN.CENTER,width=8,height=1,fg_bg=s_hi_box} + TextBox{parent=plc_entry,x=1,y=3,text="",width=8,height=1,fg_bg=s_hi_box} local conn = LED{parent=plc_entry,x=10,y=2,label="LINK",colors=ind_grn} conn.register(databus.ps, ps_prefix .. "conn", conn.update) - local plc_addr = TextBox{parent=plc_entry,x=17,y=2,text=" --- ",width=5,height=1,fg_bg=gry_wht} + local plc_addr = TextBox{parent=plc_entry,x=17,y=2,text=" --- ",width=5,height=1,fg_bg=label_d_fg} plc_addr.register(databus.ps, ps_prefix .. "addr", plc_addr.set_value) TextBox{parent=plc_entry,x=23,y=2,text="FW:",width=3,height=1} - local plc_fw_v = TextBox{parent=plc_entry,x=27,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} + local plc_fw_v = TextBox{parent=plc_entry,x=27,y=2,text=" ------- ",width=9,height=1,fg_bg=label_fg} plc_fw_v.register(databus.ps, ps_prefix .. "fw", plc_fw_v.set_value) TextBox{parent=plc_entry,x=37,y=2,text="RTT:",width=4,height=1} - local plc_rtt = DataIndicator{parent=plc_entry,x=42,y=2,label="",unit="",format="%4d",value=0,width=4,fg_bg=lg_white} - TextBox{parent=plc_entry,x=47,y=2,text="ms",width=4,height=1,fg_bg=lg_white} + local plc_rtt = DataIndicator{parent=plc_entry,x=42,y=2,label="",unit="",format="%4d",value=0,width=4,fg_bg=label_fg} + TextBox{parent=plc_entry,x=47,y=2,text="ms",width=4,height=1,fg_bg=label_fg} plc_rtt.register(databus.ps, ps_prefix .. "rtt", plc_rtt.update) plc_rtt.register(databus.ps, ps_prefix .. "rtt_color", plc_rtt.recolor) @@ -124,29 +124,29 @@ local function init(panel) -- coordinator page local crd_page = Div{parent=page_div,x=1,y=1,hidden=true} - local crd_box = Div{parent=crd_page,x=2,y=2,width=49,height=4,fg_bg=bw_fg_bg} + local crd_box = Div{parent=crd_page,x=2,y=2,width=49,height=4,fg_bg=s_hi_bright} local crd_conn = LED{parent=crd_box,x=2,y=2,label="CONNECTION",colors=ind_grn} crd_conn.register(databus.ps, "crd_conn", crd_conn.update) - TextBox{parent=crd_box,x=4,y=3,text="COMPUTER",width=8,height=1,fg_bg=gry_wht} - local crd_addr = TextBox{parent=crd_box,x=13,y=3,text="---",width=5,height=1,fg_bg=gry_wht} + TextBox{parent=crd_box,x=4,y=3,text="COMPUTER",width=8,height=1,fg_bg=label_d_fg} + local crd_addr = TextBox{parent=crd_box,x=13,y=3,text="---",width=5,height=1,fg_bg=label_d_fg} crd_addr.register(databus.ps, "crd_addr", crd_addr.set_value) TextBox{parent=crd_box,x=22,y=2,text="FW:",width=3,height=1} - local crd_fw_v = TextBox{parent=crd_box,x=26,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} + local crd_fw_v = TextBox{parent=crd_box,x=26,y=2,text=" ------- ",width=9,height=1,fg_bg=label_fg} crd_fw_v.register(databus.ps, "crd_fw", crd_fw_v.set_value) TextBox{parent=crd_box,x=36,y=2,text="RTT:",width=4,height=1} - local crd_rtt = DataIndicator{parent=crd_box,x=41,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} - TextBox{parent=crd_box,x=47,y=2,text="ms",width=4,height=1,fg_bg=lg_white} + local crd_rtt = DataIndicator{parent=crd_box,x=41,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=label_fg} + TextBox{parent=crd_box,x=47,y=2,text="ms",width=4,height=1,fg_bg=label_fg} crd_rtt.register(databus.ps, "crd_rtt", crd_rtt.update) crd_rtt.register(databus.ps, "crd_rtt_color", crd_rtt.recolor) -- pocket diagnostics page local pkt_page = Div{parent=page_div,x=1,y=1,hidden=true} - local pdg_list = ListBox{parent=pkt_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=cpair(colors.black,colors.ivory),nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} + local pdg_list = ListBox{parent=pkt_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=style.fp.text_fg,nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} local _ = Div{parent=pdg_list,height=1,hidden=true} -- padding -- assemble page panes @@ -156,14 +156,14 @@ local function init(panel) local page_pane = MultiPane{parent=page_div,x=1,y=1,panes=panes} local tabs = { - { name = "SVR", color = cpair(colors.black, colors.ivory) }, - { name = "PLC", color = cpair(colors.black, colors.ivory) }, - { name = "RTU", color = cpair(colors.black, colors.ivory) }, - { name = "CRD", color = cpair(colors.black, colors.ivory) }, - { name = "PKT", color = cpair(colors.black, colors.ivory) }, + { name = "SVR", color = style.fp.text }, + { name = "PLC", color = style.fp.text }, + { name = "RTU", color = style.fp.text }, + { name = "CRD", color = style.fp.text }, + { name = "PKT", color = style.fp.text }, } - TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=bw_fg_bg} + TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=style.theme.highlight_box_bright} -- link RTU/PDG list management to PGI pgi.link_elements(rtu_list, rtu_entry, pdg_list, pdg_entry) diff --git a/supervisor/panel/style.lua b/supervisor/panel/style.lua index 49bfb4f..7237bfb 100644 --- a/supervisor/panel/style.lua +++ b/supervisor/panel/style.lua @@ -2,52 +2,16 @@ -- Graphics Style Options -- -local core = require("graphics.core") +local core = require("graphics.core") +local themes = require("graphics.themes") +---@class svr_style local style = {} local cpair = core.cpair --- GLOBAL -- - --- remap global colors -colors.ivory = colors.pink -colors.yellow_hc = colors.purple -colors.red_off = colors.brown -colors.yellow_off = colors.magenta -colors.green_off = colors.lime - -style.root = cpair(colors.black, colors.ivory) -style.header = cpair(colors.black, colors.lightGray) - -style.colors = { - { c = colors.red, hex = 0xdf4949 }, -- RED ON - { c = colors.orange, hex = 0xffb659 }, - { c = colors.yellow, hex = 0xf9fb53 }, -- YELLOW ON - { c = colors.lime, hex = 0x16665a }, -- GREEN OFF - { c = colors.green, hex = 0x6be551 }, -- GREEN ON - { c = colors.cyan, hex = 0x34bac8 }, - { c = colors.lightBlue, hex = 0x6cc0f2 }, - { c = colors.blue, hex = 0x0008fe }, -- LCD BLUE - { c = colors.purple, hex = 0xe3bc2a }, -- YELLOW HIGH CONTRAST - { c = colors.pink, hex = 0xdcd9ca }, -- IVORY - { c = colors.magenta, hex = 0x85862c }, -- YELLOW OFF - -- { c = colors.white, hex = 0xdcd9ca }, - { c = colors.lightGray, hex = 0xb1b8b3 }, - { c = colors.gray, hex = 0x575757 }, - -- { c = colors.black, hex = 0x191919 }, - { c = colors.brown, hex = 0x672223 } -- RED OFF -} - --- COMMON COLOR PAIRS -- - -style.text_fg_bg = cpair(colors.black, colors.ivory) -style.bw_fg_bg = cpair(colors.black, colors.white) -style.fp_label = cpair(colors.lightGray, colors.ivory) - -style.black_lg = cpair(colors.black, colors.lightGray) -style.lg_white = cpair(colors.lightGray, colors.white) -style.gray_white = cpair(colors.gray, colors.white) +style.theme = themes.basalt +style.fp = themes.get_fp_style(style.theme) style.ind_grn = cpair(colors.green, colors.green_off) diff --git a/supervisor/renderer.lua b/supervisor/renderer.lua index 73333d0..42fe771 100644 --- a/supervisor/renderer.lua +++ b/supervisor/renderer.lua @@ -31,13 +31,13 @@ function renderer.try_start_ui() term.setCursorPos(1, 1) -- set overridden colors - for i = 1, #style.colors do - term.setPaletteColor(style.colors[i].c, style.colors[i].hex) + for i = 1, #style.theme.colors do + term.setPaletteColor(style.theme.colors[i].c, style.theme.colors[i].hex) end -- init front panel view status, msg = pcall(function () - ui.display = DisplayBox{window=term.current(),fg_bg=style.root} + ui.display = DisplayBox{window=term.current(),fg_bg=style.fp.root} panel_view(ui.display) end) @@ -70,9 +70,9 @@ function renderer.close_ui() ui.display = nil -- restore colors - for i = 1, #style.colors do - local r, g, b = term.nativePaletteColor(style.colors[i].c) - term.setPaletteColor(style.colors[i].c, r, g, b) + for i = 1, #style.theme.colors do + local r, g, b = term.nativePaletteColor(style.theme.colors[i].c) + term.setPaletteColor(style.theme.colors[i].c, r, g, b) end -- reset terminal diff --git a/supervisor/startup.lua b/supervisor/startup.lua index 72c0c97..a35081c 100644 --- a/supervisor/startup.lua +++ b/supervisor/startup.lua @@ -21,7 +21,7 @@ local supervisor = require("supervisor.supervisor") local svsessions = require("supervisor.session.svsessions") -local SUPERVISOR_VERSION = "v1.2.11" +local SUPERVISOR_VERSION = "v1.2.12" local println = util.println local println_ts = util.println_ts