diff --git a/config/control/#hush.json# b/config/control/#hush.json# new file mode 100755 index 0000000..57da2f1 --- /dev/null +++ b/config/control/#hush.json# @@ -0,0 +1,20 @@ +{ + + "Parameters":{ + "drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}}, + "delayRamp" : {"flag" : 1, "data":{ "widget": "QDoubleSpinBox", "text" : "Ramp delay (s):", + "value" : 0.1, "min": 0.00, "max": 0.20, "step": 0.01, + "tooltip":"Wait time between sending set point to each magnet in 'Restore'/'Standby' "}}, + "drawLine2" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}} + + }, + "Expert":{ + "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, + "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} + }, + "IOC": { + "resultsTabTitle" : "IOC" + }, + "headerMagnetSector": ["B1B2","G1","SH","G2","O2","PIF", "G3"], + "Master": "Controlroom" +} diff --git a/help/hush_resources.py b/help/hush_resources.py index fe63827..4bdbebd 100644 --- a/help/hush_resources.py +++ b/help/hush_resources.py @@ -9,6 +9,229 @@ from PyQt5 import QtCore qt_resource_data = b"\ +\x00\x00\x00\xa7\ +\x3c\ +\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ +\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ +\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ +\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\ +\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ +\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ +\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ +\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ +\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ +\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ +\x68\x74\x6d\x6c\x3e\x0a\ +\x00\x00\x0b\x58\ +\x3c\ +\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ +\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\ +\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\ +\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\ +\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\ +\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\ +\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\ +\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x46\x65\ +\x62\x72\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\ +\x20\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\ +\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\ +\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\ +\x61\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\ +\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\ +\x72\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\ +\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\ +\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\ +\x73\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x3c\x73\x70\x61\x6e\x20\ +\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\ +\x61\x79\x3b\x22\x3e\x61\x6e\x64\x3c\x2f\x73\x70\x61\x6e\x3e\x20\ +\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\ +\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\ +\x6e\x3e\x61\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\ +\x22\x3e\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\ +\x68\x79\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\ +\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\ +\x61\x79\x3b\x22\x3e\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\ +\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\ +\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\ +\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\ +\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\ +\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x48\ +\x55\x53\x48\x21\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\ +\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x73\x20\x65\x6e\x65\x72\x67\ +\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x64\x75\ +\x72\x65\x73\x20\x61\x6e\x64\x20\x72\x65\x63\x6f\x72\x64\x73\x20\ +\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x2e\ +\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\ +\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x61\x63\x6b\x3b\ +\x20\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x69\x74\x61\x6c\ +\x69\x63\x3b\x22\x3e\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\ +\x67\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\ +\x6f\x6e\x6c\x79\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x20\x77\ +\x68\x65\x6e\x20\x50\x52\x4f\x53\x43\x41\x4e\x20\x69\x73\x20\x69\ +\x6e\x20\x22\x50\x72\x6f\x64\x75\x6b\x74\x69\x6f\x6e\x22\x20\x6d\ +\x6f\x64\x65\x2e\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\x20\x20\x3c\x2f\ +\x70\x3e\x0a\x3c\x21\x2d\x2d\x61\x20\x68\x72\x65\x66\x3d\x22\x70\ +\x61\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\ +\x2f\x61\x3e\x3c\x2f\x70\x2d\x2d\x3e\x0a\x0a\x3c\x68\x32\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\ +\x3b\x22\x3e\x54\x68\x65\x20\x52\x65\x70\x6f\x73\x69\x74\x6f\x72\ +\x79\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x61\ +\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6d\x70\x72\ +\x69\x73\x65\x73\x20\x74\x77\x6f\x20\x63\x6f\x6d\x70\x6f\x6e\x65\ +\x6e\x74\x73\x3a\x0a\x20\x20\x3c\x75\x6c\x3e\x0a\x3c\x6c\x69\x3e\ +\x0a\x20\x20\x41\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\ +\x6e\x65\x20\x28\x53\x4d\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\ +\x67\x20\x61\x74\x20\x74\x68\x65\x20\x49\x4f\x43\x20\x6c\x65\x76\ +\x65\x6c\x20\x74\x68\x61\x74\x20\x69\x73\x20\x72\x65\x73\x70\x6f\ +\x6e\x73\x69\x62\x6c\x65\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\ +\x6f\x77\x65\x72\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\ +\x75\x6e\x74\x69\x6e\x67\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\ +\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\ +\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x68\x74\x74\x70\x73\x3a\ +\x2f\x2f\x67\x69\x74\x6c\x61\x62\x2e\x70\x73\x69\x2e\x63\x68\x2f\ +\x70\x72\x6f\x73\x63\x61\x6e\x5f\x61\x70\x70\x73\x34\x6f\x70\x73\ +\x2f\x48\x55\x53\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\ +\x0a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\ +\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\ +\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\ +\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\ +\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x3c\x2f\x6c\x69\ +\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\x20\x41\x20\x48\ +\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\x70\x6c\x69\x63\ +\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\x74\x68\x61\x74\ +\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x69\x6e\x74\x65\ +\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x49\x4f\ +\x43\x20\x28\x66\x6f\x72\x20\x65\x78\x70\x65\x72\x74\x20\x75\x73\ +\x65\x29\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\x61\x63\x63\ +\x6f\x75\x6e\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x66\x69\x67\x75\ +\x72\x65\x73\x2c\x20\x61\x6e\x64\x20\x70\x72\x6f\x76\x69\x64\x65\ +\x73\x20\x61\x20\x70\x61\x6e\x65\x6c\x20\x74\x6f\x20\x65\x6e\x61\ +\x62\x6c\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x74\ +\x6f\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\x68\x65\x69\ +\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\x74\x6f\x72\ +\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x3c\x62\x72\x3e\x0a\x20\x20\ +\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\ +\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x68\x74\x74\ +\x70\x73\x3a\x2f\x2f\x67\x69\x74\x2e\x70\x73\x69\x2e\x63\x68\x2f\ +\x65\x70\x69\x63\x73\x5f\x69\x6f\x63\x62\x6f\x6f\x74\x5f\x70\x72\ +\x6f\x73\x63\x61\x6e\x2f\x50\x52\x4f\x5f\x68\x75\x73\x68\x3c\x2f\ +\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x20\x3c\ +\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\ +\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x2f\x70\x72\x6f\x73\x63\ +\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\ +\x6e\x73\x2f\x68\x75\x73\x68\x2f\x69\x6f\x63\x2f\x6c\x61\x74\x65\ +\x73\x74\x2f\x50\x52\x4f\x5f\x68\x75\x73\x68\x2f\x3c\x2f\x73\x70\ +\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\ +\x3e\x0a\x3c\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\ +\x22\x3e\x54\x68\x65\x20\x47\x72\x61\x70\x68\x69\x63\x61\x6c\x20\ +\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x3c\x2f\ +\x68\x32\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\ +\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\ +\x3b\x22\x3e\x4f\x70\x65\x72\x61\x74\x6f\x72\x20\x50\x61\x6e\x65\ +\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x52\x61\x6d\x70\x20\x44\x65\ +\x6c\x61\x79\x3a\x20\x43\x61\x6e\x20\x74\x61\x6b\x65\x20\x6f\x6e\ +\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x72\x6f\x6d\x20\x30\x2e\x30\ +\x73\x20\x74\x6f\x20\x30\x2e\x32\x73\x2e\x20\x3c\x62\x72\x3e\x0a\ +\x20\x20\x44\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x64\x65\ +\x6c\x61\x79\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x73\x65\x74\x74\ +\x69\x6e\x67\x20\x69\x6e\x64\x69\x76\x69\x64\x75\x61\x6c\x20\x71\ +\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x77\x68\x65\x6e\x20\x69\ +\x6e\x69\x74\x69\x61\x74\x69\x6e\x67\x20\x73\x74\x61\x6e\x64\x62\ +\x79\x2f\x72\x65\x73\x74\x6f\x72\x65\x2e\x0a\x20\x20\x41\x20\x76\ +\x61\x6c\x75\x65\x20\x6f\x66\x20\x30\x2e\x30\x73\x20\x6d\x65\x61\ +\x6e\x73\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x71\x75\x61\x64\ +\x72\x75\x70\x6c\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x73\x20\x61\ +\x72\x65\x20\x73\x65\x74\x20\x73\x69\x6d\x75\x6c\x74\x61\x6e\x65\ +\x6f\x75\x73\x6c\x79\x2e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\ +\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\ +\x6c\x75\x65\x3b\x22\x3e\x45\x78\x70\x65\x72\x74\x20\x50\x61\x6e\ +\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x53\x65\x6c\x65\x63\x74\ +\x69\x6e\x67\x20\x74\x68\x65\x20\x44\x72\x79\x20\x52\x75\x6e\x20\ +\x6f\x70\x74\x69\x6f\x6e\x20\x64\x69\x73\x61\x62\x6c\x65\x73\x20\ +\x73\x65\x74\x74\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x73\x20\x74\ +\x6f\x20\x65\x70\x69\x63\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x20\ +\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x2e\x20\x55\x73\x65\x64\x20\ +\x66\x6f\x72\x20\x74\x65\x73\x74\x69\x6e\x67\x2e\x20\x3c\x62\x72\ +\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\ +\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x3b\x22\ +\x3e\x53\x61\x76\x69\x6e\x67\x20\x4f\x76\x65\x72\x76\x69\x65\x77\ +\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\ +\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x72\x6f\ +\x63\x65\x73\x73\x20\x76\x61\x72\x61\x69\x62\x6c\x65\x73\x20\x72\ +\x65\x6c\x61\x74\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x70\x6f\ +\x77\x65\x72\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\ +\x6e\x74\x69\x6e\x67\x20\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\ +\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\ +\x62\x6c\x61\x63\x6b\x3b\x20\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\ +\x65\x3a\x69\x74\x61\x6c\x69\x63\x3b\x22\x3e\x50\x6f\x77\x65\x72\ +\x20\x53\x61\x76\x69\x6e\x67\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\ +\x6e\x67\x20\x69\x73\x20\x6f\x6e\x6c\x79\x20\x61\x63\x74\x69\x76\ +\x61\x74\x65\x64\x20\x77\x68\x65\x6e\x20\x50\x52\x4f\x53\x43\x41\ +\x4e\x20\x69\x73\x20\x69\x6e\x20\x22\x50\x72\x6f\x64\x75\x6b\x74\ +\x69\x6f\x6e\x22\x20\x6d\x6f\x64\x65\x2e\x3c\x2f\x73\x70\x61\x6e\ +\x3e\x0a\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\ +\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x49\x6e\x69\x74\x69\x61\x6c\x20\ +\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\ +\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\ +\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x20\x77\x68\x65\ +\x6e\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x61\x72\x65\ +\x20\x69\x6e\x20\x74\x68\x65\x20\x75\x73\x75\x61\x6c\x20\x70\x6f\ +\x77\x65\x72\x65\x64\x2d\x6f\x6e\x20\x73\x74\x61\x74\x65\x2e\x3c\ +\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\ +\x72\x3e\x3c\x74\x64\x3e\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\ +\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x63\ +\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\ +\x75\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\ +\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x53\x61\x76\x69\x6e\x67\ +\x20\x28\x4d\x57\x68\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\ +\x3e\x54\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\ +\x65\x72\x20\x76\x61\x6c\x75\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\ +\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\ +\x54\x69\x6d\x65\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\x20\x4d\ +\x6f\x64\x65\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x69\ +\x6d\x65\x20\x65\x6c\x61\x70\x73\x65\x64\x20\x69\x6e\x20\x63\x75\ +\x72\x72\x65\x6e\x74\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x65\x72\ +\x69\x6f\x64\x20\x28\x64\x61\x79\x73\x20\x68\x6f\x75\x72\x73\x3a\ +\x6d\x69\x6e\x75\x74\x65\x73\x3a\x73\x65\x63\x6f\x6e\x64\x73\x29\ +\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\ +\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x54\x6f\x74\x20\x53\x61\x76\x65\ +\x64\x20\x28\x4d\x57\x68\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\ +\x64\x3e\x54\x68\x65\x20\x61\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\ +\x64\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x20\x69\x6e\ +\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\x79\x65\ +\x61\x72\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\ +\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x20\x0a\x20\x20\x0a\x20\x20\x0a\ +\x20\x20\x0a\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\ +\x2f\x68\x74\x6d\x6c\x3e\x0a\ +\x00\x00\x00\xa7\ +\x3c\ +\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ +\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ +\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ +\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\ +\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ +\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ +\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ +\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ +\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ +\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ +\x68\x74\x6d\x6c\x3e\x0a\ +\x00\x00\x00\xa7\ +\x3c\ +\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ +\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ +\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ +\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\ +\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ +\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ +\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ +\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ +\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ +\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ +\x68\x74\x6d\x6c\x3e\x0a\ \x00\x00\x00\x80\ \x3c\ \x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ @@ -32,118 +255,10 @@ qt_resource_data = b"\ \x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ \x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ \x68\x74\x6d\x6c\x3e\x0a\ -\x00\x00\x00\xa7\ -\x3c\ -\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ -\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ -\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ -\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\ -\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ -\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ -\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ -\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ -\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ -\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ -\x68\x74\x6d\x6c\x3e\x0a\ -\x00\x00\x00\xa7\ -\x3c\ -\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ -\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ -\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ -\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\ -\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ -\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ -\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ -\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ -\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ -\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ -\x68\x74\x6d\x6c\x3e\x0a\ -\x00\x00\x00\xa7\ -\x3c\ -\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ -\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\ -\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\ -\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\ -\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\ -\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\ -\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\ -\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\ -\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\ -\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\ -\x68\x74\x6d\x6c\x3e\x0a\ -\x00\x00\x03\x29\ -\x3c\ -\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\ -\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\ -\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\ -\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\ -\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\ -\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\ -\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\ -\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x61\ -\x6e\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\ -\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\ -\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\ -\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\x61\ -\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\x20\ -\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\ -\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\x6e\ -\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\ -\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\x73\ -\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x3c\x73\x70\ -\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\ -\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\x6e\x3e\x61\ -\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\ -\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\x68\x79\x20\ -\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\x20\x3c\x73\x70\x61\ -\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\ -\x72\x65\x64\x3b\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\ -\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\ -\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\ -\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\ -\x68\x69\x73\x20\x3c\x62\x3e\x48\x55\x53\x48\x21\x3c\x2f\x62\x3e\ -\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x69\x6e\x68\ -\x65\x72\x69\x74\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x57\ -\x69\x6e\x64\x6f\x77\x20\x62\x61\x73\x65\x20\x63\x6c\x61\x73\x73\ -\x2e\x3c\x62\x72\x3e\x20\x20\x0a\x3c\x70\x3e\x69\x6e\x66\x6f\x72\ -\x6d\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6e\x63\x65\x72\x6e\x69\x6e\ -\x67\x20\x74\x68\x69\x73\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\ -\x6f\x6e\x2c\x20\x73\x75\x63\x68\x20\x61\x73\x20\x63\x6f\x6e\x66\ -\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x70\x61\x72\x61\x6d\x65\ -\x74\x65\x72\x73\x20\x6f\x72\x20\x6f\x74\x68\x65\x72\x2c\x20\x6d\ -\x61\x79\x20\x62\x65\x20\x65\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\ -\x2e\x67\x2e\x2c\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\ -\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\ -\x61\x3e\x3c\x2f\x70\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\ -\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\ -\x54\x68\x65\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x32\x3e\x0a\x0a\ -\x3c\x70\x3e\x54\x68\x65\x73\x65\x20\x77\x65\x62\x20\x70\x61\x67\ -\x65\x73\x20\x61\x72\x65\x20\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\ -\x70\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x61\x70\ -\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x6f\x77\x6e\x65\x72\x2e\ -\x3c\x62\x72\x3e\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\ -\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\ " qt_resource_name = b"\ \x00\x0a\ -\x08\x8a\x34\x9c\ -\x00\x70\ -\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ -\x00\x0a\ -\x08\x7a\x34\x9c\ -\x00\x70\ -\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ -\x00\x0a\ -\x08\x5a\x34\x9c\ -\x00\x70\ -\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ -\x00\x0a\ -\x08\x6a\x34\x9c\ -\x00\x70\ -\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ -\x00\x0a\ \x08\x4a\x34\x9c\ \x00\x70\ \x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ @@ -151,33 +266,49 @@ qt_resource_name = b"\ \x0c\xba\xf2\x7c\ \x00\x69\ \x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ +\x00\x0a\ +\x08\x6a\x34\x9c\ +\x00\x70\ +\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ +\x00\x0a\ +\x08\x5a\x34\x9c\ +\x00\x70\ +\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ +\x00\x0a\ +\x08\x8a\x34\x9c\ +\x00\x70\ +\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ +\x00\x0a\ +\x08\x7a\x34\x9c\ +\x00\x70\ +\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\ -\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\ -\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\ -\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xb2\ +\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x07\ +\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xe1\ +\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x5d\ +\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\ -\x00\x00\x01\x8d\x9c\xeb\xd9\x5b\ -\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\ -\x00\x00\x01\x8d\x9c\xeb\xd9\x5c\ -\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\ -\x00\x00\x01\x8d\x9c\xeb\xd9\x5e\ -\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\ -\x00\x00\x01\x8d\x9c\xeb\xd9\x5f\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x8d\x9c\xeb\xd9\x61\ -\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\ -\x00\x00\x01\x8d\xa7\xc7\x77\x2b\ +\x00\x00\x01\x8d\xc6\x98\xaa\x4d\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xb2\ +\x00\x00\x01\x8d\xc6\x98\xaa\x50\ +\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x07\ +\x00\x00\x01\x8d\xc6\x98\xaa\x52\ +\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xe1\ +\x00\x00\x01\x8d\xc6\x98\xaa\x54\ +\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x5d\ +\x00\x00\x01\x8d\xc6\x98\xaa\x55\ +\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\ +\x00\x00\x01\x8d\xd0\x41\x77\x24\ " qt_version = QtCore.qVersion().split('.') diff --git a/help/index.html b/help/index.html index c868595..d6dd583 100755 --- a/help/index.html +++ b/help/index.html @@ -1,16 +1,61 @@
This HUSH! application inherits from the Window base class.
-
information concerning this application, such as configuration parameters or other, may be entered, e.g., here
+The HUSH! application initiates energy saving procedures and records the power saved.
+ Power Saving Accounting is only activated when PROSCAN is in "Produktion" mode.
+
The application comprises two components: +
| Initial Power (kw): | The nominal power value when quadruples are in the usual powered-on state. |
| Power (kw): | The current power value. |
| Saving (MWh): | The running power saved in the current saving period. |
| Time in Saving Mode: | Time elapsed in current saving period (days hours:minutes:seconds). |
| Tot Saved (MWh): | The accumulated power saved in the calendar year. |
+ +
+ + -These web pages are to be completed by the application owner.
diff --git a/hush.py b/hush.py
index b4ca6b4..d024dbe 100644
--- a/hush.py
+++ b/hush.py
@@ -21,7 +21,7 @@ from src.gui import AppGui
_pymodule = os.path.basename(__file__)
_appname, _appext = _pymodule.split(".")
-_appversion = "1.0.0"
+_appversion = "2.0.0"
# _title = """Power Usage & Saving Hierarchy""" #, HUSH!"""
_title = """HUSH!"""
@@ -57,8 +57,7 @@ class StartMain(BaseWindow):
self.gui = AppGui(self)
def prepare_elog_message(self):
-
-
+
self.system_idx = self.elog_enum.system.NONE
self.eintrag_idx = self.elog_enum.eintrag.INFO
self.effekt_idx = self.elog_enum.effekt.NO
@@ -177,12 +176,10 @@ class StartMain(BaseWindow):
"""{0} v {1}
Copyright © Paul Scherrer Institut (PSI). All rights reserved.
-Author: J. Chrin, Spring 2023
-(EPICS db adapted from A. Kovach, 2016)
+
Author: J. Chrin, February 2024
+(EPICS db adapted from A. Kovach, 2016)
IOC Administrator: H. Lutz
-1st Responsible: J. Chrin - or 3301 (Control Room)
- +1st Responsible: J. Chrin
Initiates energy saving procedures and records power saved
Python {2} - Qt {3} - PyQt {4}
cafe {5} - epics {6} on {7}""".format(
diff --git a/hush.sh b/hush.sh
index d18fb7e..606d90b 100755
--- a/hush.sh
+++ b/hush.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.2.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -20,15 +20,29 @@ else
echo "Interactive/sourced script"
fi
-# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+# Select Python Version here. Currently one of 3.5, 3.7, 3.8, 3.10
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -42,13 +56,13 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
-#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
-#/sf/bd/applications/OnlineModel/default/scripts/VA:
-
-#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.9.0
+#C_EXT version
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
diff --git a/hush_g1.sh b/hush_g1.sh
index 674799c..b34a078 100755
--- a/hush_g1.sh
+++ b/hush_g1.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.1.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -20,20 +20,34 @@ else
echo "Interactive/sourced script"
fi
-# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+# Select Python Version here. Currently one of 3.5, 3.7, 3,8, 3,10
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
- echo "Using default version $PYTHON_VERSION"
+ echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
-
+
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
@@ -46,8 +60,11 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
diff --git a/hush_g2.sh b/hush_g2.sh
index dc594e0..1e31929 100755
--- a/hush_g2.sh
+++ b/hush_g2.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.1.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -21,14 +21,28 @@ else
fi
# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -46,8 +60,11 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
diff --git a/hush_g3.sh b/hush_g3.sh
index 8e87ba7..bfb784c 100755
--- a/hush_g3.sh
+++ b/hush_g3.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.1.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -20,19 +20,33 @@ else
echo "Interactive/sourced script"
fi
-# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+# Select Python Version here. Currently one of 3.5, 3.7, 3.8, 3.10
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
- fi
+ fi
fi
@@ -46,9 +60,11 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
-
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
diff --git a/hush_o2.sh b/hush_o2.sh
index 6ac82df..62e060b 100755
--- a/hush_o2.sh
+++ b/hush_o2.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.1.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -21,14 +21,28 @@ else
fi
# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -36,6 +50,7 @@ if [ "$1" ]; then
fi
+
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
@@ -46,9 +61,12 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
diff --git a/hush_pif.sh b/hush_pif.sh
index 486c78b..8c4ebcc 100755
--- a/hush_pif.sh
+++ b/hush_pif.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-cd /proscan/bd/applications/hush/hla/1.1.0
+cd /proscan/bd/applications/hush/hla/1.3.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -21,14 +21,28 @@ else
fi
# Select Python Version here. Currently one of 3.5, 3.7
-PYTHON_VERSION=3.7
+PYTHON_VERSION=3.10
+
+# Only neede for verison-specific packages, e.g., bigtree-
+# Not required for elog.
+PYTHON_VERSION_DIR=310
+EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
- PYTHON_VERSION=3.7
+ PYTHON_VERSION=3.7
+ PYTHON_VERSION_DIR=37
+ elif [ "$1" == "3.8" -o "$1" == "38" ]; then
+ PYTHON_VERSION=3.8
+ PYTHON_VERSION_DIR=38
+ #EXTRA_PYTHON_PATH_FLAG=1
+ elif [ "$1" == "3.10" -o "$1" == "310" ]; then
+ PYTHON_VERSION=3.10
+ PYTHON_VERSION_DIR=310
+ #EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -36,6 +50,8 @@ if [ "$1" ]; then
fi
+
+
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
@@ -46,9 +62,12 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
-export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
+export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.10.0
+if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
+ export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.10.0/common/python${PYTHON_VERSION_DIR}
+fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
diff --git a/pyrcc5/hush_resources.py b/pyrcc5/hush_resources.py
index fe63827..4bdbebd 100644
--- a/pyrcc5/hush_resources.py
+++ b/pyrcc5/hush_resources.py
@@ -9,6 +9,229 @@
from PyQt5 import QtCore
qt_resource_data = b"\
+\x00\x00\x00\xa7\
+\x3c\
+\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
+\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
+\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
+\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\
+\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
+\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
+\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
+\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
+\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
+\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
+\x68\x74\x6d\x6c\x3e\x0a\
+\x00\x00\x0b\x58\
+\x3c\
+\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
+\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
+\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
+\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
+\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
+\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
+\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
+\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x46\x65\
+\x62\x72\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\
+\x20\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\
+\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
+\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\
+\x61\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\
+\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\
+\x72\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\
+\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\
+\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\
+\x73\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x3c\x73\x70\x61\x6e\x20\
+\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
+\x61\x79\x3b\x22\x3e\x61\x6e\x64\x3c\x2f\x73\x70\x61\x6e\x3e\x20\
+\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
+\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\
+\x6e\x3e\x61\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
+\x22\x3e\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\
+\x68\x79\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\
+\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
+\x61\x79\x3b\x22\x3e\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\
+\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
+\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\
+\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
+\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\
+\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x48\
+\x55\x53\x48\x21\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
+\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x73\x20\x65\x6e\x65\x72\x67\
+\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x64\x75\
+\x72\x65\x73\x20\x61\x6e\x64\x20\x72\x65\x63\x6f\x72\x64\x73\x20\
+\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x2e\
+\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\
+\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x61\x63\x6b\x3b\
+\x20\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x69\x74\x61\x6c\
+\x69\x63\x3b\x22\x3e\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\
+\x67\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\
+\x6f\x6e\x6c\x79\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x20\x77\
+\x68\x65\x6e\x20\x50\x52\x4f\x53\x43\x41\x4e\x20\x69\x73\x20\x69\
+\x6e\x20\x22\x50\x72\x6f\x64\x75\x6b\x74\x69\x6f\x6e\x22\x20\x6d\
+\x6f\x64\x65\x2e\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\x20\x20\x3c\x2f\
+\x70\x3e\x0a\x3c\x21\x2d\x2d\x61\x20\x68\x72\x65\x66\x3d\x22\x70\
+\x61\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\
+\x2f\x61\x3e\x3c\x2f\x70\x2d\x2d\x3e\x0a\x0a\x3c\x68\x32\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\
+\x3b\x22\x3e\x54\x68\x65\x20\x52\x65\x70\x6f\x73\x69\x74\x6f\x72\
+\x79\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x61\
+\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6d\x70\x72\
+\x69\x73\x65\x73\x20\x74\x77\x6f\x20\x63\x6f\x6d\x70\x6f\x6e\x65\
+\x6e\x74\x73\x3a\x0a\x20\x20\x3c\x75\x6c\x3e\x0a\x3c\x6c\x69\x3e\
+\x0a\x20\x20\x41\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\
+\x6e\x65\x20\x28\x53\x4d\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\
+\x67\x20\x61\x74\x20\x74\x68\x65\x20\x49\x4f\x43\x20\x6c\x65\x76\
+\x65\x6c\x20\x74\x68\x61\x74\x20\x69\x73\x20\x72\x65\x73\x70\x6f\
+\x6e\x73\x69\x62\x6c\x65\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\
+\x6f\x77\x65\x72\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\
+\x75\x6e\x74\x69\x6e\x67\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\
+\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\
+\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x68\x74\x74\x70\x73\x3a\
+\x2f\x2f\x67\x69\x74\x6c\x61\x62\x2e\x70\x73\x69\x2e\x63\x68\x2f\
+\x70\x72\x6f\x73\x63\x61\x6e\x5f\x61\x70\x70\x73\x34\x6f\x70\x73\
+\x2f\x48\x55\x53\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\
+\x0a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
+\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\
+\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\
+\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\
+\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x3c\x2f\x6c\x69\
+\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\x20\x41\x20\x48\
+\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\x70\x6c\x69\x63\
+\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\x74\x68\x61\x74\
+\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x69\x6e\x74\x65\
+\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x49\x4f\
+\x43\x20\x28\x66\x6f\x72\x20\x65\x78\x70\x65\x72\x74\x20\x75\x73\
+\x65\x29\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\x61\x63\x63\
+\x6f\x75\x6e\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x66\x69\x67\x75\
+\x72\x65\x73\x2c\x20\x61\x6e\x64\x20\x70\x72\x6f\x76\x69\x64\x65\
+\x73\x20\x61\x20\x70\x61\x6e\x65\x6c\x20\x74\x6f\x20\x65\x6e\x61\
+\x62\x6c\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x74\
+\x6f\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\x68\x65\x69\
+\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\x74\x6f\x72\
+\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x3c\x62\x72\x3e\x0a\x20\x20\
+\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
+\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x68\x74\x74\
+\x70\x73\x3a\x2f\x2f\x67\x69\x74\x2e\x70\x73\x69\x2e\x63\x68\x2f\
+\x65\x70\x69\x63\x73\x5f\x69\x6f\x63\x62\x6f\x6f\x74\x5f\x70\x72\
+\x6f\x73\x63\x61\x6e\x2f\x50\x52\x4f\x5f\x68\x75\x73\x68\x3c\x2f\
+\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x20\x3c\
+\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\
+\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x2f\x70\x72\x6f\x73\x63\
+\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\
+\x6e\x73\x2f\x68\x75\x73\x68\x2f\x69\x6f\x63\x2f\x6c\x61\x74\x65\
+\x73\x74\x2f\x50\x52\x4f\x5f\x68\x75\x73\x68\x2f\x3c\x2f\x73\x70\
+\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\
+\x3e\x0a\x3c\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\x73\x74\
+\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\
+\x22\x3e\x54\x68\x65\x20\x47\x72\x61\x70\x68\x69\x63\x61\x6c\x20\
+\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x3c\x2f\
+\x68\x32\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\
+\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\
+\x3b\x22\x3e\x4f\x70\x65\x72\x61\x74\x6f\x72\x20\x50\x61\x6e\x65\
+\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x52\x61\x6d\x70\x20\x44\x65\
+\x6c\x61\x79\x3a\x20\x43\x61\x6e\x20\x74\x61\x6b\x65\x20\x6f\x6e\
+\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x72\x6f\x6d\x20\x30\x2e\x30\
+\x73\x20\x74\x6f\x20\x30\x2e\x32\x73\x2e\x20\x3c\x62\x72\x3e\x0a\
+\x20\x20\x44\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x64\x65\
+\x6c\x61\x79\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x73\x65\x74\x74\
+\x69\x6e\x67\x20\x69\x6e\x64\x69\x76\x69\x64\x75\x61\x6c\x20\x71\
+\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x77\x68\x65\x6e\x20\x69\
+\x6e\x69\x74\x69\x61\x74\x69\x6e\x67\x20\x73\x74\x61\x6e\x64\x62\
+\x79\x2f\x72\x65\x73\x74\x6f\x72\x65\x2e\x0a\x20\x20\x41\x20\x76\
+\x61\x6c\x75\x65\x20\x6f\x66\x20\x30\x2e\x30\x73\x20\x6d\x65\x61\
+\x6e\x73\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x71\x75\x61\x64\
+\x72\x75\x70\x6c\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x73\x20\x61\
+\x72\x65\x20\x73\x65\x74\x20\x73\x69\x6d\x75\x6c\x74\x61\x6e\x65\
+\x6f\x75\x73\x6c\x79\x2e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\
+\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\
+\x6c\x75\x65\x3b\x22\x3e\x45\x78\x70\x65\x72\x74\x20\x50\x61\x6e\
+\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x53\x65\x6c\x65\x63\x74\
+\x69\x6e\x67\x20\x74\x68\x65\x20\x44\x72\x79\x20\x52\x75\x6e\x20\
+\x6f\x70\x74\x69\x6f\x6e\x20\x64\x69\x73\x61\x62\x6c\x65\x73\x20\
+\x73\x65\x74\x74\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x73\x20\x74\
+\x6f\x20\x65\x70\x69\x63\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x20\
+\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x2e\x20\x55\x73\x65\x64\x20\
+\x66\x6f\x72\x20\x74\x65\x73\x74\x69\x6e\x67\x2e\x20\x3c\x62\x72\
+\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
+\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x3b\x22\
+\x3e\x53\x61\x76\x69\x6e\x67\x20\x4f\x76\x65\x72\x76\x69\x65\x77\
+\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\
+\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x72\x6f\
+\x63\x65\x73\x73\x20\x76\x61\x72\x61\x69\x62\x6c\x65\x73\x20\x72\
+\x65\x6c\x61\x74\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x70\x6f\
+\x77\x65\x72\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\
+\x6e\x74\x69\x6e\x67\x20\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\
+\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
+\x62\x6c\x61\x63\x6b\x3b\x20\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\
+\x65\x3a\x69\x74\x61\x6c\x69\x63\x3b\x22\x3e\x50\x6f\x77\x65\x72\
+\x20\x53\x61\x76\x69\x6e\x67\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\
+\x6e\x67\x20\x69\x73\x20\x6f\x6e\x6c\x79\x20\x61\x63\x74\x69\x76\
+\x61\x74\x65\x64\x20\x77\x68\x65\x6e\x20\x50\x52\x4f\x53\x43\x41\
+\x4e\x20\x69\x73\x20\x69\x6e\x20\x22\x50\x72\x6f\x64\x75\x6b\x74\
+\x69\x6f\x6e\x22\x20\x6d\x6f\x64\x65\x2e\x3c\x2f\x73\x70\x61\x6e\
+\x3e\x0a\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\
+\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x49\x6e\x69\x74\x69\x61\x6c\x20\
+\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\
+\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\
+\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x20\x77\x68\x65\
+\x6e\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x61\x72\x65\
+\x20\x69\x6e\x20\x74\x68\x65\x20\x75\x73\x75\x61\x6c\x20\x70\x6f\
+\x77\x65\x72\x65\x64\x2d\x6f\x6e\x20\x73\x74\x61\x74\x65\x2e\x3c\
+\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\
+\x72\x3e\x3c\x74\x64\x3e\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\
+\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x63\
+\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\
+\x75\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\
+\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x53\x61\x76\x69\x6e\x67\
+\x20\x28\x4d\x57\x68\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\
+\x3e\x54\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\
+\x65\x72\x20\x76\x61\x6c\x75\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\
+\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\
+\x54\x69\x6d\x65\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\x20\x4d\
+\x6f\x64\x65\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x69\
+\x6d\x65\x20\x65\x6c\x61\x70\x73\x65\x64\x20\x69\x6e\x20\x63\x75\
+\x72\x72\x65\x6e\x74\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x65\x72\
+\x69\x6f\x64\x20\x28\x64\x61\x79\x73\x20\x68\x6f\x75\x72\x73\x3a\
+\x6d\x69\x6e\x75\x74\x65\x73\x3a\x73\x65\x63\x6f\x6e\x64\x73\x29\
+\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\
+\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x54\x6f\x74\x20\x53\x61\x76\x65\
+\x64\x20\x28\x4d\x57\x68\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\
+\x64\x3e\x54\x68\x65\x20\x61\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\
+\x64\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x20\x69\x6e\
+\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\x79\x65\
+\x61\x72\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\
+\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x20\x0a\x20\x20\x0a\x20\x20\x0a\
+\x20\x20\x0a\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\
+\x2f\x68\x74\x6d\x6c\x3e\x0a\
+\x00\x00\x00\xa7\
+\x3c\
+\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
+\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
+\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
+\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
+\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
+\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
+\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
+\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
+\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
+\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
+\x68\x74\x6d\x6c\x3e\x0a\
+\x00\x00\x00\xa7\
+\x3c\
+\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
+\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
+\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
+\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
+\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
+\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
+\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
+\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
+\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
+\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
+\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\x80\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
@@ -32,118 +255,10 @@ qt_resource_data = b"\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
-\x00\x00\x00\xa7\
-\x3c\
-\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
-\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
-\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
-\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
-\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
-\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
-\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
-\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
-\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
-\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
-\x68\x74\x6d\x6c\x3e\x0a\
-\x00\x00\x00\xa7\
-\x3c\
-\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
-\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
-\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
-\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
-\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
-\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
-\x22\x70\x61\x67\x65\x34\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
-\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
-\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
-\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
-\x68\x74\x6d\x6c\x3e\x0a\
-\x00\x00\x00\xa7\
-\x3c\
-\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
-\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
-\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
-\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x31\x20\x6f\
-\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
-\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
-\x22\x70\x61\x67\x65\x32\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
-\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
-\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
-\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
-\x68\x74\x6d\x6c\x3e\x0a\
-\x00\x00\x03\x29\
-\x3c\
-\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
-\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
-\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
-\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
-\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
-\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
-\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
-\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x61\
-\x6e\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\
-\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\
-\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
-\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\x61\
-\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\x20\
-\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
-\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\x6e\
-\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
-\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\x73\
-\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x3c\x73\x70\
-\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
-\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\x6e\x3e\x61\
-\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
-\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\
-\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\x68\x79\x20\
-\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\x20\x3c\x73\x70\x61\
-\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
-\x72\x65\x64\x3b\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\
-\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
-\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
-\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\
-\x68\x69\x73\x20\x3c\x62\x3e\x48\x55\x53\x48\x21\x3c\x2f\x62\x3e\
-\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x69\x6e\x68\
-\x65\x72\x69\x74\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x57\
-\x69\x6e\x64\x6f\x77\x20\x62\x61\x73\x65\x20\x63\x6c\x61\x73\x73\
-\x2e\x3c\x62\x72\x3e\x20\x20\x0a\x3c\x70\x3e\x69\x6e\x66\x6f\x72\
-\x6d\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6e\x63\x65\x72\x6e\x69\x6e\
-\x67\x20\x74\x68\x69\x73\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\
-\x6f\x6e\x2c\x20\x73\x75\x63\x68\x20\x61\x73\x20\x63\x6f\x6e\x66\
-\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x70\x61\x72\x61\x6d\x65\
-\x74\x65\x72\x73\x20\x6f\x72\x20\x6f\x74\x68\x65\x72\x2c\x20\x6d\
-\x61\x79\x20\x62\x65\x20\x65\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\
-\x2e\x67\x2e\x2c\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\
-\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\
-\x61\x3e\x3c\x2f\x70\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
-\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
-\x54\x68\x65\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x32\x3e\x0a\x0a\
-\x3c\x70\x3e\x54\x68\x65\x73\x65\x20\x77\x65\x62\x20\x70\x61\x67\
-\x65\x73\x20\x61\x72\x65\x20\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\
-\x70\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x61\x70\
-\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x6f\x77\x6e\x65\x72\x2e\
-\x3c\x62\x72\x3e\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\
-\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\
"
qt_resource_name = b"\
\x00\x0a\
-\x08\x8a\x34\x9c\
-\x00\x70\
-\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
-\x00\x0a\
-\x08\x7a\x34\x9c\
-\x00\x70\
-\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
-\x00\x0a\
-\x08\x5a\x34\x9c\
-\x00\x70\
-\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
-\x00\x0a\
-\x08\x6a\x34\x9c\
-\x00\x70\
-\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
-\x00\x0a\
\x08\x4a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
@@ -151,33 +266,49 @@ qt_resource_name = b"\
\x0c\xba\xf2\x7c\
\x00\x69\
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
+\x00\x0a\
+\x08\x6a\x34\x9c\
+\x00\x70\
+\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
+\x00\x0a\
+\x08\x5a\x34\x9c\
+\x00\x70\
+\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
+\x00\x0a\
+\x08\x8a\x34\x9c\
+\x00\x70\
+\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
+\x00\x0a\
+\x08\x7a\x34\x9c\
+\x00\x70\
+\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
-\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
-\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
-\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
-\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
+\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xb2\
+\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x07\
+\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xe1\
+\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x5d\
+\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
-\x00\x00\x01\x8d\x9c\xeb\xd9\x5b\
-\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
-\x00\x00\x01\x8d\x9c\xeb\xd9\x5c\
-\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
-\x00\x00\x01\x8d\x9c\xeb\xd9\x5e\
-\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
-\x00\x00\x01\x8d\x9c\xeb\xd9\x5f\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x8d\x9c\xeb\xd9\x61\
-\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
-\x00\x00\x01\x8d\xa7\xc7\x77\x2b\
+\x00\x00\x01\x8d\xc6\x98\xaa\x4d\
+\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xb2\
+\x00\x00\x01\x8d\xc6\x98\xaa\x50\
+\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x07\
+\x00\x00\x01\x8d\xc6\x98\xaa\x52\
+\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xe1\
+\x00\x00\x01\x8d\xc6\x98\xaa\x54\
+\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x5d\
+\x00\x00\x01\x8d\xc6\x98\xaa\x55\
+\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
+\x00\x00\x01\x8d\xd0\x41\x77\x24\
"
qt_version = QtCore.qVersion().split('.')
diff --git a/src/gui.py b/src/gui.py
index dc6d803..fe93188 100644
--- a/src/gui.py
+++ b/src/gui.py
@@ -1,5 +1,6 @@
'''The GUI module for Savings Overview and magnet control
'''
+import decimal
import getpass
import os
import random
@@ -14,15 +15,21 @@ from qtpy.QtWidgets import (
QMessageBox, QPushButton, QTabBar, QTabWidget, QTableWidgetItem,
QTextEdit, QWidget)
-import elog
+from common.packages import elog
from apps4ops.bdbase.utils import _line
from apps4ops.bdbase.enumkind import MsgSeverity
from caqtwidgets.pvwidgets import (
- CAQLabel, CAQLineEdit, CAQMenu, CAQMessageButton, CAQTableWidget, QHLine)
+ CAQLabel, CAQLineEdit, CAQMenu, CAQMessageButton, CAQTableWidget,
+ CAQTextEntry, QHLine)
_pymodule = os.path.basename(__file__)
+file_path = elog.__file__
+
+# storing the directory in dir variable
+dir = os.path.dirname(file_path)
+print(dir)
class AppGui(QWidget):
'''The GUI class
@@ -36,7 +43,7 @@ class AppGui(QWidget):
self.check_status = self.parent.check_status
self.check_status_list = self.parent.check_status_list
self.elog_enum = self.parent.elog_enum
-
+ self.input_parameters = self.parent.input_parameters
# Required for caqtwidgets
self.settings = self.parent.settings
self.show_log_message = self.parent.show_log_message
@@ -50,12 +57,12 @@ class AppGui(QWidget):
self.gui_frame.expert_parameters_group.setFixedWidth(260)
self.gui_frame.expert_parameters_group.setFixedHeight(130)
self.gui_frame.operator_parameters_group.setFixedWidth(260)
- if "Controlroom" in self.settings.data["Master"]:
- self.gui_frame.operator_parameters_group.setFixedHeight(160)
- else:
- self.gui_frame.operator_parameters_group.setFixedHeight(130)
+ #if "Controlroom" in self.settings.data["Master"]:
+ # self.gui_frame.operator_parameters_group.setFixedHeight(160)
+ #else:
+ self.gui_frame.operator_parameters_group.setFixedHeight(130)
self.gui_frame.measurement_tab_wgt.setFixedWidth(440)
- self.gui_frame.measurement_tab_wgt.setFixedHeight(240)
+ self.gui_frame.measurement_tab_wgt.setFixedHeight(200)
# self.gui_frame.operator_wgt.setFixedHeight(240)
# self.gui_frame.expert_wgt.setFixedHeight(240)
@@ -69,22 +76,21 @@ class AppGui(QWidget):
self.gui_frame.central_tab_widget.tabBar().setTabText(0, "Control")
#self.gui_frame.central_tab_widget.tabBar().setTabText(1, "IOC")
- #wgt = self.gui_frame.central_tab_widget.widget(1)
- #lay = self.gui_frame.central_tab_widget.widget(1).layout()
-
+
if "Controlroom" in self.assigned_master:
+ '''
shift_type = CAQMenu(self, pv_name="PRO-HUSH:SHIFT-TYPE")
self.gui_frame.operator_parameters_group.layout().insertWidget(
0, QLabel(" Shift Type:"))
self.gui_frame.operator_parameters_group.layout().insertWidget(
1, shift_type)
-
+ '''
self.gui_frame.results_wgt.setFixedWidth(1400)
- self.gui_frame.results_wgt.setFixedHeight(400)
+ self.gui_frame.results_wgt.setFixedHeight(860)
self.gui_frame.results_wgt.setLayout(self.gui_frame.results_layout)
-
self.gui_frame.results_layout.addWidget(
self.reset_ioc_sm(), 0, 0, 1, 1)
+
sec_prefix_list = [
sub[0: sub.index("-")] for sub in self.sec_state_list]
@@ -101,8 +107,14 @@ class AppGui(QWidget):
label.setScaledContents(True)
self.gui_frame.results_layout.addWidget(label, 0, 2, 1, 1, Qt.AlignTop)
-
self.gui_frame.results_layout.setContentsMargins(15, 15, 15, 15)
+ self.gui_frame.results_layout.setVerticalSpacing(20)
+ self.gui_frame.results_layout.setHorizontalSpacing(10)
+
+ self.gui_frame.results_layout.addWidget(
+ self.reset_lastpwr(), 1, 0, 1, 1,
+ Qt.AlignmentFlag(Qt.AlignTop|Qt.AlignCenter))
+
self.expert_labels = self.parent.expert_labels
self.settings = self.parent.settings
@@ -113,8 +125,6 @@ class AppGui(QWidget):
self.table_pwr_dict = {}
self.offtime_dict = {}
- # self.I_min = 0.002 HIPA
-
self.cafe.openPrepare()
self.cafe.open(["PRO-HUSH:LASTPWR", "PRO-HUSH:TOTPWR",
"PRO:LASTSAVE", "PPO-HUSH:TOTSAVE"])
@@ -122,39 +132,51 @@ class AppGui(QWidget):
self.cafe.openNowAndWait(0.1)
self.magnet_tab_wgt = self.group_sector_qtabwidget()
+ self.magnet_tab_wgt.setFixedHeight(380)
self.gui_frame.measurement_layout.addWidget(
- self.magnet_tab_wgt, 0, 2, 6, 20, alignment=Qt.AlignTop)
+ self.magnet_tab_wgt, 0, 2, 3, 2, alignment=Qt.AlignTop)
- idx = self.magnet_tab_wgt.count() - 1
+ self.submastership_dict = {
+ "G1": None, "G2": None, "O2": None, "PIF": None, "G3": None}
+
+ _row = self.gui_frame.measurement_layout.rowCount()
+ self.gui_frame.measurement_layout.addWidget(
+ self.group_submaster_status(), _row, 2, 2, 2,
+ Qt.AlignTop|Qt.AlignHCenter)
+
+ self.sh_idx = self.magnet_tab_wgt.count() - 1
for i in range(0, self.magnet_tab_wgt.count()):
tabtext = self.magnet_tab_wgt.tabText(i)
if tabtext == "SH":
- idx = i
+ self.sh_idx = i
break
- self.magnet_tab_wgt.setCurrentIndex(idx)
+ self.magnet_tab_wgt.setCurrentIndex(self.sh_idx)
status_wgt = self.group_sector_status()
status_wgt.setFixedHeight(340)
+
+ #qf = QFrame()
+ #qf.setFixedHeight(15)
+ #self.gui_frame.measurement_layout.addWidget(qf, 2, 0, 1, 1)
self.gui_frame.measurement_layout.addWidget(
- status_wgt, 3, 0, 2, 1, alignment=Qt.AlignTop) # | Qt.AlignHCenter)
+ status_wgt, 1, 0, 4, 1, alignment=Qt.AlignTop) # | Qt.AlignHCenter)
- qf = QFrame()
- qf.setFixedHeight(5)
- self.gui_frame.measurement_layout.addWidget(
- qf, 2, 0, 1, 1, alignment=Qt.AlignTop)
+ #qf = QFrame()
+ #qf.setFixedHeight(1)
+ #self.gui_frame.measurement_layout.addWidget(qf, 5, 0, 1, 1)
qf1 = QFrame()
- qf1.setFixedWidth(10)
+ qf1.setFixedWidth(1)
self.gui_frame.measurement_layout.addWidget(
- qf1, 4, 1, 2, 1, alignment=Qt.AlignTop)
+ qf1, 5, 1, 1, 1, alignment=Qt.AlignTop)
- #qf2 = QFrame()
- #qf2.setFixedWidth(1)
- #self.gui_frame.measurement_layout.addWidget(
- # qf2, 0, 22, 1, 1, alignment=Qt.AlignTop)
+ qf2 = QFrame()
+ qf2.setFixedWidth(1)
+ self.gui_frame.measurement_layout.addWidget(
+ qf2, 0, 7, 1, 1, alignment=Qt.AlignTop)
# Overload from guiheader.py
self.sector_disruptor_dict = {}
@@ -166,12 +188,20 @@ class AppGui(QWidget):
self.sector_disruptor_dict["G3"] = "Geschlossen"
def enable_disable_beamline(sect, sector_line, value):
-
+ def is_submaster(local_sector):
+ if local_sector in self.submastership_dict:
+ return bool(
+ "MASTERSHIP" in self.submastership_dict[local_sector])
+ #"UNDEF" in self.submastership_dict[local_sector])
+ #"Geschlossen" in self.submastership_dict[local_sector])
+ else:
+ return self.gui_header.is_master()
+
self.sector_disruptor_dict[sect] = value
#print("sect/value", sect, value)
for sector in sector_line:
if "Geschlossen" not in self.sector_disruptor_dict[
- sector] or not self.gui_header.is_master():
+ sector] or not is_submaster(sector): #not self.gui_header.is_master():
#print("sector/value", sector, value)
#print("isMaster", self.gui_header.is_master())
#print("master", self.gui_header.mastership)
@@ -185,7 +215,6 @@ class AppGui(QWidget):
sector].restore_value_button.isEnabled():
self.table_sol_dict[
sector].restore_value_button.setEnabled(False)
-
else:
print("Geschlossen? sector/value/ismaster", sector, value,
self.gui_header.mastership)
@@ -291,27 +320,56 @@ class AppGui(QWidget):
"B1B2"].restore_value_button.isEnabled():
self.table_sol_dict[
"B1B2"].restore_value_button.setEnabled(True)
-
+
+ '''
if "B1B2" in self.settings.data["headerMagnetSector"]:
self.gui_header.shift_type.trigger_monitor_str.connect(
receive_b1b2_update)
#holds shifttype
pvd = self.cafe.getPVCache(
self.settings.data["B1B2"]["status"], dt="str")
- receive_b1b2_update(pvd.value[0], pvd.alarmStatus, pvd.alarmSeverity)
+ receive_b1b2_update(pvd.value[0], pvd.alarmStatus, pvd.alarmSeverity)
+ '''
# end overload from guiheader.py
- @Slot()
+
+ @Slot()
+ def receive_master_update(value, status, alarm_severity):
+ idx = self.sh_idx
+ for key, wgt_val in self.gui_header.master_to_wgt.items():
+ #master = self.gui_header.beam_current_wgt_group[wgt_val]
+ if value in key:
+ for i in range(0, self.magnet_tab_wgt.count()):
+ tabtext = self.magnet_tab_wgt.tabText(i)
+ if tabtext == wgt_val:
+ idx = i
+ break
+ self.magnet_tab_wgt.setCurrentIndex(idx)
+
+ self.gui_header.beam_current_wgt_dict[
+ "MASTER"].trigger_monitor_str.connect(receive_master_update)
+ pvd = self.cafe.getPVCache(
+ self.settings.data["MASTER"]["status"], dt="str")
+ try:
+ self.gui_header.beam_current_wgt_dict[
+ "MASTER"].trigger_monitor_str.emit(pvd.value[0], pvd.status,
+ pvd.alarmSeverity)
+ except Exception as ex:
+ print("EMIT FAILED", str(ex))
+ #print("EMIT SUCCEEDED ===========>")
+ #receive_master_update(pvd.value[0], pvd.status, pvd.alarmSeverity)
+
+ @Slot(int)
def simulation_update(state):
if bool(state):
color = self.gui_header.sim_color
else:
color = self.gui_header.op_color
- print("SIM STATE CHANGED", state, color, flush=True)
+
self.gui_header.pf_off_color = color
- ###JC CHANGE BACK#
+ ###JC COMMENT OUT TO MAKE VISIBLE WHEN TESTING#
self.gui_header.color_pframe(color)
- print("SIM STATE CHANGED//", state, color, flush=True)
+ #print("SIMULATION IS TRUE??", self.input_parameters["simulation"])
self.gui_frame.simulation_checkbox.stateChanged.connect(
simulation_update)
@@ -373,6 +431,77 @@ class AppGui(QWidget):
print("MONITOR======>", sector, state)
break
+ '''
+ @Slot(str, int, int)
+ def receive_submaster_update(self, value, status, alarm_severity):
+ print("VALUE=========================", value, flush=True)
+ sender = self.sender()
+ print("sender, value", sender, value, flush=True)
+ print("sender.sector", sender.sector, flush=True)
+ self.submastership_dict[sender.sector] = value
+ print("VALUE ===============================", self.submastership_dict[sender.sector], flush=True)
+ '''
+
+ def group_submaster_status(self):
+ @Slot(str, int, int)
+ def receive_submaster_update(value, status, alarm_severity):
+ print("VALUE=========================", value, flush=True)
+ sender = self.sender()
+ print("sender, value", sender, value, flush=True)
+ print("sender.sector", sender.sector, flush=True)
+ self.submastership_dict[sender.sector] = value
+ print("VALUE ===============================", self.submastership_dict[sender.sector], flush=True)
+
+ pv_id = "mastershipStatus"
+ qgrid = QGridLayout()
+ qgb = QGroupBox("Mastership Status")
+ no_beamlines = 0
+ for i, sector in enumerate(self.settings.data["headerMagnetSector"]):
+ if "mastershipStatus" in self.settings.data[sector]:
+ no_beamlines += 1
+ qgb_inner = QGroupBox(sector)
+ #qgb_inner.setFixedHeight(80)
+ qgb_inner.setObjectName("INNER")
+ text_color = self.settings.data[sector]["color"]
+ #print("text color", text_color)
+ sss = ("QGroupBox {" + "color: {0};".format(text_color) +
+ " font-weight: bold;}")
+ qgb_inner.setStyleSheet(sss)
+ #ql = QLabel(sector)
+ pv_name = self.settings.data[sector][pv_id]
+ print(type(pv_name))
+ #pv_name = u"{0}".format(pv_name)
+ print("pv_name", pv_name, "in sector", sector)
+ pv_name = pv_name.encode('utf-8')
+ print(type(pv_name))
+ pv_name = pv_name.decode('ascii')
+ qw = CAQLabel(self, pv_name=str(pv_name))
+ qw.sector = sector
+ #self.submastership_dict[sector] = None
+ qw.trigger_monitor_str.connect(receive_submaster_update)
+ print(i, sector)
+
+ value = self.cafe.getCache(
+ self.settings.data[sector][pv_id], dt='str')
+ qw.trigger_monitor_str.emit(value, 1, 0)
+ print("emitted", flush=True)
+ qw.setFixedWidth(120)
+ qw.setText("submastership")
+ qw_layout = QHBoxLayout()
+ qw_layout.addWidget(qw)
+ qgb_inner.setLayout(qw_layout)
+ #qgrid.addWidget(ql, 0, i, 1, 1, Qt.AlignBottom)
+ qgrid.addWidget(qgb_inner, 0, i, 1, 1,
+ Qt.AlignTop|Qt.AlignHCenter)
+
+
+
+ qgb.setContentsMargins(9, 9, 9, 9)
+ qgb.setObjectName("OUTER")
+ qgb.setLayout(qgrid)
+ qgb.setFixedWidth((150 * no_beamlines) + 20)
+ return qgb
+
def group_sector_status(self):
qgrid = QGridLayout()
@@ -755,8 +884,9 @@ class AppGui(QWidget):
sum_pwr = sum(list(row_pwr_dict.values()))
pv_last_pwr = "P" + target.sector + "-HUSH:LASTPWR"
- stat = self.cafe.set(pv_last_pwr, sum_pwr)
- self.check_status(_pymodule, "set", pv_last_pwr, stat, _line())
+ if not self.input_parameters["simulation"]:
+ stat = self.cafe.set(pv_last_pwr, sum_pwr)
+ self.check_status(_pymodule, "set", pv_last_pwr, stat, _line())
def ca_table_sector_widget(self, sector: str = ""):
device_list = self.settings.data[sector]["device"]
@@ -783,24 +913,43 @@ class AppGui(QWidget):
#print(pv_dict['SOL:2'], flush=True)
#print(_standby_values, flush=True)
- table_sol = CAQTableWidget(
- self, pv_list=pv_dict["SOL:2"], show_units=True, notify_freq_hz=0,
- notify_unison=False, scale_factor=1, show_timestamp=False,
- init_column=True, pv_list_show=device_list, standby_column=True,
- standby_values=standby_values, set_delay=delay)
- table_sol.restore_value_button.setToolTip(
- ("Restore devices to their pre-standby values"))
- table_sol.init_value_button.setToolTip(
- ("Shows initial, pre-standby values. Update is also " +
- "executed automatically before the standby procedure."))
- table_sol.standby_value_button.sector = sector
- table_sol.standby_value_button.clicked.disconnect()
- table_sol.standby_value_button.clicked.connect(self.on_sector_standby)
- table_sol.restore_value_button.sector = sector
- table_sol.restore_value_button.clicked.disconnect()
- table_sol.restore_value_button.clicked.connect(self.on_sector_restore)
+ init_column = True
+ standby_column = True
+ if "B1B2" in sector:
+ init_column = False
+ standby_column = False
+ standby_values = None
+
+
+ table_sol = CAQTableWidget(
+ self, pv_list=pv_dict["SOL:2"], show_units=True, notify_freq_hz=1,
+ notify_unison=True, scale_factor=1, show_timestamp=False,
+ init_column=False)
+ else:
+
+ table_sol = CAQTableWidget(
+ self, pv_list=pv_dict["SOL:2"], show_units=True, notify_freq_hz=0,
+ notify_unison=False, scale_factor=1, show_timestamp=False,
+ init_column=init_column, pv_list_show=device_list,
+ standby_column=standby_column, standby_values=standby_values,
+ set_delay=delay)
+
+ if init_column:
+ table_sol.restore_value_button.setToolTip(
+ ("Restore devices to their pre-standby values"))
+ table_sol.init_value_button.setToolTip(
+ ("Shows initial, pre-standby values. Update is also " +
+ "executed automatically before the standby procedure."))
+
+ if standby_column:
+ table_sol.standby_value_button.sector = sector
+ table_sol.standby_value_button.clicked.disconnect()
+ table_sol.standby_value_button.clicked.connect(self.on_sector_standby)
+ table_sol.restore_value_button.sector = sector
+ table_sol.restore_value_button.clicked.disconnect()
+ table_sol.restore_value_button.clicked.connect(self.on_sector_restore)
self.table_sol_dict[sector] = table_sol
@@ -813,11 +962,13 @@ class AppGui(QWidget):
self, pv_list=pv_dict["PWR"], show_units=False, notify_freq_hz=1,
suffix="kW",
notify_unison=True, scale_factor=0.001, show_timestamp=False,
- init_column=True, init_list=pv_dict["PWR"], pv_list_show=[False])
+ init_column=init_column, init_list=pv_dict["PWR"],
+ pv_list_show=[False])
- table_pwr.init_value_button.setToolTip(
- ("Shows initial, pre-standby values. Update is also " +
- "executed automatically before the standby procedure."))
+ if init_column:
+ table_pwr.init_value_button.setToolTip(
+ ("Shows initial, pre-standby values. Update is also " +
+ "executed automatically before the standby procedure."))
self.table_pwr_dict[sector] = table_pwr
@@ -828,7 +979,11 @@ class AppGui(QWidget):
f = header_value.font()
f.setPixelSize(13)
header_item.setFont(f)
- header_item.setText("Device")
+ if init_column:
+ header_item.setText("Device")
+ else:
+ header_item.setText("PV")
+
header_init.setFont(f)
header_init.setText("Init. Value")
header_standby.setFont(f)
@@ -837,14 +992,20 @@ class AppGui(QWidget):
header_value.setText("SOL:2")
table_sol.setContentsMargins(15, 0, 15, 10)
table_sol.setHorizontalHeaderItem(0, header_item)
- table_sol.setHorizontalHeaderItem(1, header_init)
- table_sol.setHorizontalHeaderItem(2, header_standby)
- table_sol.setHorizontalHeaderItem(3, header_value)
+ if init_column:
+ table_sol.setHorizontalHeaderItem(1, header_init)
+ table_sol.setColumnWidth(1, 88)
+ if standby_column:
+ table_sol.setHorizontalHeaderItem(2, header_standby)
+ table_sol.setHorizontalHeaderItem(3, header_value)
+ table_sol.setColumnWidth(2, 80)
+ table_sol.setColumnWidth(3, 88)
table_sol.setColumnWidth(0, 80)
- table_sol.setColumnWidth(1, 88)
- table_sol.setColumnWidth(2, 80)
- table_sol.setColumnWidth(3, 88)
- table_sol.setFixedWidth(386)
+
+ if init_column:
+ table_sol.setFixedWidth(386)
+ else:
+ table_sol.setFixedWidth(220)
ioc_magnets = []
for i, device in enumerate(device_list):
@@ -871,11 +1032,16 @@ class AppGui(QWidget):
header_value.setFont(f)
header_value.setText("PWR")
table_pwr.setContentsMargins(15, 0, 15, 10)
- table_pwr.setHorizontalHeaderItem(0, header_init)
- table_pwr.setHorizontalHeaderItem(1, header_value)
- table_pwr.setColumnWidth(0, 88)
- table_pwr.setColumnWidth(1, 88)
- table_pwr.setFixedWidth(226)
+ if init_column:
+ table_pwr.setHorizontalHeaderItem(0, header_init)
+ table_pwr.setHorizontalHeaderItem(1, header_value)
+ table_pwr.setColumnWidth(0, 88)
+ table_pwr.setColumnWidth(1, 88)
+ table_pwr.setFixedWidth(226)
+ else:
+ header_value.setText("PWR:2")
+ table_pwr.setHorizontalHeaderItem(0, header_value)
+ table_pwr.setFixedWidth(140)
if "Controlroom" in self.assigned_master and "B1B2" not in sector:
for i in ioc_magnets:
@@ -886,7 +1052,7 @@ class AppGui(QWidget):
pv_status = self.settings.data[sector]["status"]
beamline_status = self.cafe.getCache(pv_status)
- if beamline_status is not None:
+ if beamline_status is not None and init_column:
# in HIPA this was I < self.I_min:
if "Geschlossen" in beamline_status:
try:
@@ -911,8 +1077,9 @@ class AppGui(QWidget):
#B1B2 is not is not in state machine
if "B1B2" in table_pwr.init_value_button.sector:
retrun
- stat = self.cafe.set(pv, init_sum)
- self.check_status(_pymodule, "set", pv, stat, _line())
+ if not self.input_parameters["simulation"]:
+ stat = self.cafe.set(pv, init_sum)
+ self.check_status(_pymodule, "set", pv, stat, _line())
def on_init_update():
table_pwr.init_value_button.setEnabled(False)
@@ -920,10 +1087,11 @@ class AppGui(QWidget):
time.sleep(0.1)
table_pwr.init_value_button.setEnabled(True)
- table_sol.init_value_button.sector = sector
- table_sol.init_value_button.clicked.connect(on_sol_update)
- table_pwr.init_value_button.sector = sector
- table_pwr.init_value_button.clicked.connect(on_init_update)
+ if init_column:
+ table_sol.init_value_button.sector = sector
+ table_sol.init_value_button.clicked.connect(on_sol_update)
+ table_pwr.init_value_button.sector = sector
+ table_pwr.init_value_button.clicked.connect(on_init_update)
hbox = QHBoxLayout()
hbox.addWidget(table_sol)
@@ -1006,8 +1174,9 @@ class AppGui(QWidget):
if not sector_prefix:
return
pv1 = sector_prefix + "-HUSH:SEQ-ONOFF"
- stat = self.cafe.set(pv1, 0)
- self.check_status(_pymodule, "set", pv1, stat, _line())
+ if not self.input_parameters["simulation"]:
+ stat = self.cafe.set(pv1, 0)
+ self.check_status(_pymodule, "set", pv1, stat, _line())
time.sleep(0.05)
QApplication.processEvents()
return
@@ -1018,10 +1187,11 @@ class AppGui(QWidget):
pv1 = sector_prefix + "-HUSH:SEQ-ONOFF"
pv2 = sector_prefix + "-HUSH:TOTSAVE"
pv3 = sector_prefix + "-HUSH:OFFTIME"
- stat = self.cafe.set(pv1, 0)
- self.check_status(_pymodule, "set", pv1, stat, _line())
- off_time = self.cafe.get(pv3)
- self.check_status(_pymodule, "get", pv3, None, _line())
+ if not self.input_parameters["simulation"]:
+ stat = self.cafe.set(pv1, 0)
+ self.check_status(_pymodule, "set", pv1, stat, _line())
+ off_time = self.cafe.get(pv3)
+ self.check_status(_pymodule, "get", pv3, None, _line())
iloop = 0
if off_time is not None:
@@ -1033,11 +1203,13 @@ class AppGui(QWidget):
QApplication.processEvents()
else:
time.sleep(0.1)
+
print("SECTOR ILOOP", sector_prefix, iloop)
- stat = self.cafe.set(pv1, 1)
- self.check_status(_pymodule, "set", pv1, stat, _line())
- stat = self.cafe.set(pv2, 0)
- self.check_status(_pymodule, "set", pv2, stat, _line())
+ if not self.input_parameters["simulation"]:
+ stat = self.cafe.set(pv1, 1)
+ self.check_status(_pymodule, "set", pv1, stat, _line())
+ stat = self.cafe.set(pv2, 0)
+ self.check_status(_pymodule, "set", pv2, stat, _line())
return
def reset_ioc_saving(self, sector_prefix_list: list = None):
@@ -1050,10 +1222,11 @@ class AppGui(QWidget):
qpb.setFixedWidth(160)
qtext = QTextEdit()
- qtext.setText("""
The Reset Account Button resets Total Power Saved (MWh) to zero.
- This is typically executed at the end of the calendar year.
- The present energy saving figures will be entered into the elogbook.
- The button prompts the user for confirmation before proceeding.
+ qtext.setText("""
The Reset Account Button resets Total
+ Power Saved (MWh) to zero.
This is typically executed
+ at the end of the calendar year.
The present energy
+ saving figures will be entered into the elogbook.
The
+ button prompts the user for confirmation before proceeding.
""")
qtext.setReadOnly(True)
qtext.setStyleSheet("background-color: QColor(0, 0, 50, 10);")
@@ -1127,3 +1300,78 @@ class AppGui(QWidget):
qw.setFixedHeight(280)
return qw
+
+
+
+ def reset_lastpwr(self):
+ sector_label = [None] * len(self.sec_state_list)
+ pv_initpwr = [None] * len(self.sec_state_list)
+ pv_lastpwr = [None] * len(self.sec_state_list)
+
+
+
+ qgrid = QGridLayout()
+ qsection = QLabel("Section")
+ qsection.setAlignment(Qt.AlignmentFlag(Qt.AlignBottom|Qt.AlignHCenter))
+ qnominal = QLabel("Nominal \n Value (kW)")
+ qnominal.setAlignment(Qt.AlignmentFlag(Qt.AlignBottom|Qt.AlignHCenter))
+ qset = QLabel("Set Value (kW)")
+ qset.setAlignment(Qt.AlignmentFlag(Qt.AlignBottom|Qt.AlignHCenter))
+ #f = qsection.font()
+ #f.setPixelSize(16)
+ #qsection.setFont(f)
+ #qnominal.setFont(f)
+ #qset.setFont(f)
+
+ qgrid.addWidget(qsection, 0, 0, 1, 1)
+ qgrid.addWidget(qnominal, 0, 1, 1, 1)
+ qgrid.addWidget(qset, 0, 2, 1, 1)
+
+ for i, pv in enumerate(self.sec_state_list):
+ pvsplit = pv.split("-")
+ sector = pvsplit[0][1:]
+ sum_pwr = round(sum(self.settings.data[sector]["pwrref"]), 3)
+ pv_initpwr_value = decimal.Decimal(format(sum_pwr, '.3f'))
+ pv_lastpwr_name = pv.replace("STATE", "LASTPWR")
+
+ qsector = QLabel(sector + ":")
+ f = qsector.font()
+ f.setPixelSize(14)
+ qsector.setFont(f)
+ color = "black"
+ try:
+ color = self.settings.data[sector]["color"]
+ except KeyError as ex:
+ print(ex, self.settings.data[sector])
+
+ weight = "bold" if sector in self.settings.data[
+ "headerMagnetSector"] else "medium"
+ color_str = "color : {0}; font-weight:{1};".format(color, weight)
+ incolor = "QLabel {" + color_str + "}"
+
+ qsector.setStyleSheet(incolor)
+
+ sector_label[i] = qsector
+ ql = QLabel(str(pv_initpwr_value))
+ ql.setFont(f)
+ pv_initpwr[i] = ql
+ pv_lastpwr[i] = CAQTextEntry(self, pv_name=pv_lastpwr_name)
+
+ qgrid.addWidget(sector_label[i], i + 1, 0, 1, 1, Qt.AlignCenter)
+ qgrid.addWidget(pv_initpwr[i], i + 1, 1, 1, 1, Qt.AlignRight)
+ qgrid.addWidget(pv_lastpwr[i], i + 1, 2, 1, 1, Qt.AlignLeft)
+
+
+ qgrid.setContentsMargins(9, 9, 9, 9)
+ qgrid.setSpacing(10)
+
+ qw = QGroupBox("Last Power")
+ qw.setContentsMargins(5, 10, 5, 0)
+ qw.setAlignment(Qt.AlignTop)
+ qw.setObjectName("OUTER")
+ qw.setLayout(qgrid)
+ qw.setFixedWidth(250)
+ qw.setFixedHeight(280)
+
+ return qw
+