Skip to content
Snippets Groups Projects
Commit 6b66dc3d authored by Krisztián Löki's avatar Krisztián Löki
Browse files

Error explanation in labels instead of in tooltip

parent c006def2
No related branches found
No related tags found
No related merge requests found
from org.csstudio.display.builder.runtime.script import PVUtil, ScriptUtil
from org.csstudio.display.builder.runtime.pv import PVFactory
from org.csstudio.display.builder.model.properties import NamedWidgetColor
from org.csstudio.display.builder.model.persist import WidgetColorService
......@@ -8,8 +9,25 @@ cond_no_error = 0
cond_error = 1
cond_warning = 2
def get_code():
try:
code_pv_name = PVUtil.getString(pvs[0])
code_pv = PVFactory.getPV(code_pv_name)
code = code_pv.read()
PVFactory.releasePV(code_pv)
code = code.value
return code
except Exception as err:
ScriptUtil.getLogger().severe(str(err))
except:
ScriptUtil.getLogger().severe("Unknown exception while trying to get error code of TCP350")
return None
try:
code_str = PVUtil.getString(pvs[0])
code_str = get_code()
msgs = dict({
"000000" : (cond_no_error, ""),
......@@ -111,31 +129,53 @@ try:
try:
err_info = msgs[code_str]
except KeyError:
err_info = (cond_error, "\n{}: Unknown error code".format(code_str))
err_info = (cond_error, "Unknown error code")
except Exception as err:
ScriptUtil.getLogger().severe(str(err))
except:
pass
tooltip = "$(pv_name)\n$(pv_value)"
code_widget = ScriptUtil.findWidgetByName(widget, "Code")
msg_widget = ScriptUtil.findWidgetByName(widget, "Message")
cause_widget = ScriptUtil.findWidgetByName(widget, "Causes")
remedy_widget = ScriptUtil.findWidgetByName(widget, "Remedies")
if err_info is not None:
msg = err_info[1]
if isinstance(msg, list):
tooltip = tooltip + "\n{code}: {msg}\nPossible causes:\n{causes}\nRemedy:\n{remedies}".format(code = code_str, msg = msg[0], causes = msg[1], remedies = msg[2])
cond = err_info[0]
msgs = err_info[1]
if isinstance(msgs, list):
msg = msgs[0]
cause = msgs[1]
remedy = msgs[2]
else:
tooltip = tooltip + "\n{}".format(msg)
msg = msgs
cause = ""
remedy = ""
cond = err_info[0]
if cond == cond_error:
color = WidgetColorService.getColor("RED-BACKGROUND")
elif cond == cond_warning:
# color = WidgetColorService.getColor("ORANGE")
color = WidgetColorService.getColor("YELLOW-BACKGROUND")
if cond:
if cond == cond_error:
color = WidgetColorService.getColor("RED-BACKGROUND")
elif cond == cond_warning:
# color = WidgetColorService.getColor("ORANGE")
color = WidgetColorService.getColor("YELLOW-BACKGROUND")
if not cause:
cause = "N/A"
if not remedy:
remedy = "N/A"
else:
color = WidgetColorService.getColor("Read_Background")
else:
color = WidgetColorService.getColor("Read_Background")
color = WidgetColorService.getColor("Read_Background")
msg = ""
cause = ""
remedy = ""
widget.setPropertyValue("tooltip", tooltip)
widget.setPropertyValue("background_color", color)
code_widget.setPropertyValue("text", code_str)
code_widget.setPropertyValue("background_color", color)
msg_widget.setPropertyValue("text", msg)
cause_widget.setPropertyValue("text", cause)
remedy_widget.setPropertyValue("text", remedy)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment