GUIs for beamlines

This commit is contained in:
2024-02-15 16:13:12 +01:00
parent f1126fe289
commit a28ff8be06
19 changed files with 1640 additions and 906 deletions
+21
View File
@@ -0,0 +1,21 @@
{
"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"
}
+77
View File
@@ -0,0 +1,77 @@
{
"menuFlags":{
"hasFile": 0,
"loadInitFile": 0,
"hasDaq": 0,
"hasH5": 0,
"hasEpics": 0
},
"hdf": {
"destination" : "./"
},
"G1":{
"standby": [-6.867, 6.867, 9.155, 6.867, 6.867, 9.155, 6.867, -6.867, 6.867, -6.867],
"ref" : [-43.813, 43.177, 157.28, 20.017, 30.544, 157,79, 42.203, -42.467, 52.179, -77.032],
"pwrref" : [0.789, 0.764, 17.341, 0.164, 0.366, 17.482, 0.737, 0.736, 1.096, 2.464],
"iocDevice" : ["AME1", "AME2", "QME10"]
},
"SH":{
"standby": [-6.8, 6.8, 6.8, -6.8, 6.8, 6.8, -6.8, -6.8,
6.8, 0],
"ref" : [-34.048, 26.68, 26.68, -34.05, 87.764, 37.424, -47.207, -38.156,
36.977, 87.642],
"pwrref" : [0.504, 0.292, 0.289, 0.498, 5.434, 0.577, 0.912, 0.608,
0.578, 3.712],
"iocDevice" : ["QMA7", "AMA2", "QMA12"]
},
"G2":{
"standby" : [-6.867, 6.867, -6.867, 6.867, -6.867, -7.553, 7.553, -7.553,
7.553, 7.553, -7.553, 10.758, 10.758, 23.804],
"ref": [-41.056, 36.548, -30.490, 52.433, -27.636, -37.412, 41.966, -37.296,
51.200, 53.657, -41.966, 109.543, 109.405, 251.492],
"pwrref" : [0.699, 0.545, 0.389, 1.152, 0.323, 0.374, 0.467, 0.378,
0.700, 0.772, 0.464, 7.114, 7.112, 21.727],
"iocDevice" : ["QMB2", "QMB4", "AMF1"]
},
"O2":{
"standby": [-6.867, 6.867, 6.867, -6.867, 9.155, 6.867, -6.867, 6.867,
-6.867, 6.867],
"ref" : [-40.85, 26.974, 26.974, -40.851, 45.988, 30.890, -29.542, 33.742,
-45.960, 20.165],
"pwrref" : [0.681, 0.297, 0.295, 0.677, 1.013, 0.401, 0.363, 0.475,
0.887, 0.169],
"iocDevice" : ["QMC2", "AMC1", "QMC7"]
},
"PIF":{
"standby": [-6.800, 6.800, 6.800, -6.800, 6.800, 6.800, -6.800, 6.800,
-6.800, 6.800],
"ref" : [-36.159, 34.434, 42.277, -43, 135, 61, -62, 37,
-55, 30],
"pwrref" : [0.16, 0.16, 0.28, 0.31, 3.7, 0.6, 0.73, 0.25,
0.59, 0.145],
"iocDevice" : ["QMD2", "AMD1", "QMD9"]
},
"G3":{
"standby": [-6.800, 6.800, -6.800],
"ref" : [-40.388, 68.393, -34.805],
"pwrref" : [0.64, 1.8, 0.46],
"iocDevice" : ["QMD10", "QMD11", "QMD12"]
},
"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"
},
"Master": "Controlroom
}
+18
View File
@@ -0,0 +1,18 @@
{
"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}}
},
"headerMagnetSector": ["G1"],
"Master": "Gantry 1"
}
+18
View File
@@ -0,0 +1,18 @@
{
"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}}
},
"headerMagnetSector": ["G2"],
"Master": "Gantry 2"
}
+18
View File
@@ -0,0 +1,18 @@
{
"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}}
},
"headerMagnetSector": ["PIF", "G3"],
"Master": "Gantry 3"
}
+18
View File
@@ -0,0 +1,18 @@
{
"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}}
},
"headerMagnetSector": ["O2"],
"Master": "OPTIS2"
}
+18
View File
@@ -0,0 +1,18 @@
{
"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}}
},
"headerMagnetSector": ["PIF"],
"Master": "PIF"
}
+103 -103
View File
@@ -2,79 +2,23 @@
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.7)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x00\xa7\
\x00\x00\x00\x80\
\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\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x35\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\x2c\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x79\x70\x65\x72\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\x67\x68\x6c\x69\x67\x68\x74\x73\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\x20\x61\x6e\x64\x20\x2e\x2e\x2e\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\x79\x70\x65\x72\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\x67\x68\x6c\x69\x67\
\x68\x74\x73\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\x68\x75\x73\x68\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\
\x70\x3e\x0a\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\
@@ -88,16 +32,19 @@ 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\x80\
\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\x35\x20\x6f\
\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\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\
\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\
@@ -116,18 +63,87 @@ qt_resource_data = b"\
\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\
\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\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\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\
@@ -135,53 +151,37 @@ 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\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\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\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\
"
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\x05\xb5\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x0a\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x03\xdb\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x86\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
"
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\x3b\x71\x36\x5d\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x05\xb5\
\x00\x00\x01\x8d\x3b\x71\x36\x75\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x0a\
\x00\x00\x01\x8d\x3b\x71\x36\x78\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x03\xdb\
\x00\x00\x01\x8d\x3b\x71\x36\x90\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x86\
\x00\x00\x01\x8d\x3b\x71\x36\x94\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
\x00\x00\x01\x8d\x3b\x78\x4e\xc0\
\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\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
qt_version = QtCore.qVersion().split('.')
if qt_version < ['5', '8', '0']:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:
+4 -4
View File
@@ -1,11 +1,11 @@
<html><head><title>Hyper Power Usage and Saving Highlights at Proscan, HUSH!</title></head>
<html><head><title>Handsome Power Usage and Saving Hierarchy at Proscan, HUSH!</title></head>
<body>
<h5 style="color:gray;">January 2024, Jan Chrin and ...</h5>
<h4> <span style="color: red;">H</span>yper <span style="color: gray;">Power</span> <span style="color: red;">U</span>sage and <span style="color: red;">S</span>aving <span style="color: red;">H</span>ighlights at Proscan, <span style="color: red;">HUSH!</span></h4>
<h5 style="color:gray;">January 2024, Jan Chrin</h5>
<h4> <span style="color: red;">H</span>andsome <span style="color: gray;">Power</span> <span style="color: red;">U</span>sage and <span style="color: red;">S</span>aving <span style="color: red;">H</span>ierarchy at Proscan, <span style="color: red;">HUSH!</span></h4>
<h2 style="color:blue;">About</h2>
<p>This <b>hush</b> application inherits from the Window base class.<br>
<p>This <b>HUSH!</b> application inherits from the Window base class.<br>
<p>information concerning this application, such as configuration parameters or other, may be entered, e.g., <a href="page1.html">here</a></p>
<h2 style="color:blue;">The Panel</h2>
+57 -4
View File
@@ -9,13 +9,40 @@
"hdf": {
"destination" : "./"
},
"header" : ["COMET","BMA1","G1","SH","G2","O2","PIF","G3","MASTER"],
"B1B2":{
"status": "PRO-HUSH:SHIFT-TYPE",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMA1", "QMA2", "QMA3", "QMA4", "QMA5"],
"attribute" : ["SOL:2", "IST:2", "PWR:2"],
"standby": [-9.155, 9.155, -6.867, -6.867, 6.867],
"ref" : [-91.464, 102.359, -97.096, -44.269, 37.113],
"pwrref" : [9.065, 5.142, 4.061, 0.867, 0.597],
"iocDevice" : ["QMA1", "QMA2", "QMA5"]
},
"G1":{
"status": "BME1:STA:2",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QME1", "QME2", "AME1", "QME4", "QME5",
"AME2", "QME7", "QME8", "QME10", "QME11"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.867, 6.867, 9.155, 6.867, 6.867, 9.155, 6.867, -6.867, 6.867, -6.867],
"ref" : [-43.813, 43.177, 157.28, 20.017, 30.544, 157,79, 42.203, -42.467, 52.179, -77.032],
"pwrref" : [0.789, 0.764, 17.341, 0.164, 0.366, 17.482, 0.737, 0.736, 1.096, 2.464],
"iocDevice" : ["AME1", "AME2", "QME10"]
},
"SH":{
"status": "BMA1:STA:2",
"colorObj" : "Machine",
"color": "gray",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 gray)",
"device" : ["QMA6", "QMA7", "QMA8", "QMA9", "AMA2", "QMA10", "QMA11",
"QMA12", "QMA13", "AMA3"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.8, 6.8, 6.8, -6.8, 6.8, 6.8, -6.8, -6.8,
6.8, 0],
"ref" : [-34.048, 26.68, 26.68, -34.05, 87.764, 37.424, -47.207, -38.156,
@@ -25,6 +52,13 @@
"iocDevice" : ["QMA7", "AMA2", "QMA12"]
},
"G2":{
"status": "BMB1:STA:2",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMB1", "QMB2", "QMB3", "QMB4", "QMB5", "QMF1", "QMF2",
"QMF3", "QMF4", "QMF6", "QMF7", "AMF1", "AMF2", "AMF3"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby" : [-6.867, 6.867, -6.867, 6.867, -6.867, -7.553, 7.553, -7.553,
7.553, 7.553, -7.553, 10.758, 10.758, 23.804],
"ref": [-41.056, 36.548, -30.490, 52.433, -27.636, -37.412, 41.966, -37.296,
@@ -34,6 +68,13 @@
"iocDevice" : ["QMB2", "QMB4", "AMF1"]
},
"O2":{
"status": "BMC1:STA:2",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMC1", "QMC2", "QMC3", "QMC4", "AMC1", "QMC5", "QMC6",
"QMC7", "QMC8", "QMC9"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.867, 6.867, 6.867, -6.867, 9.155, 6.867, -6.867, 6.867,
-6.867, 6.867],
"ref" : [-40.85, 26.974, 26.974, -40.851, 45.988, 30.890, -29.542, 33.742,
@@ -43,6 +84,13 @@
"iocDevice" : ["QMC2", "AMC1", "QMC7"]
},
"PIF":{
"status": "BMD1:STA:2",
"colorObj" : "Athos",
"color": "#2e5894",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #2e5894)",
"device" : ["QMD1", "QMD2", "QMD3", "QMD4", "AMD1","QMD5", "QMD6", "QMD7",
"QMD8", "QMD9"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.800, 6.800, 6.800, -6.800, 6.800, 6.800, -6.800, 6.800,
-6.800, 6.800],
"ref" : [-36.159, 34.434, 42.277, -43, 135, 61, -62, 37,
@@ -52,13 +100,16 @@
"iocDevice" : ["QMD2", "AMD1", "QMD9"]
},
"G3":{
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMD10", "QMD11", "QMD12"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.800, 6.800, -6.800],
"ref" : [-40.388, 68.393, -34.805],
"pwrref" : [0.64, 1.8, 0.46],
"iocDevice" : ["QMD10", "QMD11", "QMD12"]
},
},
"Parameters":{
"drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
@@ -74,5 +125,7 @@
},
"IOC": {
"resultsTabTitle" : "IOC"
}
},
"headerMagnetSector": ["B1B2","G1","SH","G2","O2","PIF", "G3"],
"Master": "Controlroom"
}
+67 -74
View File
@@ -1,39 +1,31 @@
"""Hush.py module for energy saving accounting
"""
import inspect
import logging
import os
import platform
import random
import sys
import time
from qtpy import QtCore, QtGui
from qtpy.QtGui import QColor, QFont, QIcon
from qtpy.QtCore import __version__ as QT_VERSION_STR
from qtpy.QtCore import (
PYQT_VERSION_STR, QFile, QIODevice, Qt, QThread, Signal, Slot)
from qtpy.QtWidgets import (
QApplication, QDockWidget, QGridLayout, QGroupBox, QHBoxLayout, QLabel,
QMainWindow, QMessageBox, QProgressBar, QPushButton, QSizePolicy,
QSpacerItem, QTabWidget, QTableWidget, QTableWidgetItem, QVBoxLayout,
QWidget)
PYQT_VERSION_STR, Signal, Slot)
from qtpy.QtWidgets import QApplication, QMessageBox
from apps4ops.bdbase.base import BaseWindow
from apps4ops.bdbase.enumkind import MsgSeverity, UserMode, Facility
from apps4ops.bdbase.enumkind import UserMode, Facility
from apps4ops.bdbase.helpbrowser import HelpBrowser
from apps4ops.proscan.sendelogproscan import QSendToELOG
from apps4ops.proscan.enumkind import ElogPROSCAN
from src.gui import AppGui
from apps4ops.proscan.sendelogproscan import QSendToELOG
from pyrcc5 import hush_resources
from src.gui import AppGui
_pymodule = os.path.basename(__file__)
_appname, _appext = _pymodule.split(".")
_appversion = "1.0.0"
#_title = """Power Usage & Saving Hierarchy""" #, HUSH!"""
# _title = """Power Usage & Saving Hierarchy""" #, HUSH!"""
_title = """HUSH!"""
def _line():
"""Macro to return the current line number.
@@ -45,71 +37,75 @@ def _line():
"""
return inspect.currentframe().f_back.f_lineno
class StartMain(BaseWindow):
"""Main class, inherits from apps4ops BaseWindow
"""
trigger_log_message = Signal(str, str, int, str, dict)
def __init__(self, parent=None):
super(StartMain, self).__init__(
parent=parent, pymodule=_pymodule, appversion=_appversion,
title=_title, user_mode=UserMode.OPERATION, facility=Facility.PROSCAN,
has_optics=False, has_procedure=False)
def __init__(self, parent=None):
# super(StartMain, self).__init__(
# Using Python 3 style super() without arguments
super().__init__(
parent=parent, pymodule=_pymodule, appversion=_appversion,
title=_title, user_mode=UserMode.OPERATION,
facility=Facility.PROSCAN, has_optics=False, has_procedure=False)
self.appname = _appname
self.title = _title
self.gui = AppGui(self)
#print(self.input_parameters)
def prepare_elog_message(self):
elog = ElogPROSCAN()
self.system_idx = elog.system.NONE
self.eintrag_idx = elog.eintrag.INFO
self.effekt_idx = elog.effekt.NO
self.attach_files = []
_simulation = self.input_parameters['simulation']
simulation = self.input_parameters["simulation"]
if self.all_data:
if self.all_data['Input data'] is not None:
if self.all_data["Input data"] is not None:
try:
_simulation = self.all_data['Input data']['simulation']
simulation = self.all_data["Input data"]["simulation"]
except KeyError:
_simulation = self.input_parameters['simulation']
simulation = self.input_parameters["simulation"]
pass
self.logbook = "Sandkasten" if _simulation else "Proscan"
self.title = _title
sector = ["<br>G1: ","<br>SH: ","<br>G2: ", "<br>O2: ","<br>PIF: ",
"<br>G3: ","<br>------------------<br>Tot: "]
pvlist = ['PG1-HUSH:TOTSAVE', 'PSH-HUSH:TOTSAVE', 'PG2-HUSH:TOTSAVE',
'PO2-HUSH:TOTSAVE', 'PPIF-HUSH:TOTSAVE', 'PG3-HUSH:TOTSAVE',
'PRO-HUSH:TOTSAVE']
value, stat, stat_list =self.cafe.getScalarList(pvlist, cacheFlag=True)
message = "Power saved for the current year stands at {:.3f} MWh:".format(
value[-1])
self.logbook = "Sandkasten" if simulation else "Proscan"
self.title = _title
sector = ["<br>G1: ", "<br>SH: ", "<br>G2: ", "<br>O2: ", "<br>PIF: ",
"<br>G3: ", "<br>------------------<br>Tot: "]
pvlist = ["PG1-HUSH:TOTSAVE", "PSH-HUSH:TOTSAVE", "PG2-HUSH:TOTSAVE",
"PO2-HUSH:TOTSAVE", "PPIF-HUSH:TOTSAVE", "PG3-HUSH:TOTSAVE",
"PRO-HUSH:TOTSAVE"]
value, stat, stat_list = self.cafe.getScalarList(
pvlist, cacheFlag=True)
if stat != self.cyca.ICAFE_NORMAL:
self.check_status_list(_pymodule, "getScalarListCache",
pvlist, stat_list, _line())
message = ("Power saved for the current year stands at " +
"{:.3f} MWh:").format(value[-1])
for label, val in zip(sector, value):
message += label + "{:.3f}".format(val) + " MWh"
message += label + "{:.3f} MwH".format(val)
self.message = message
print(self.message, flush=True)
return
@Slot()
def send_to_elog(self):
@Slot()
def save_fig_thread_finished():
time.sleep(0.2)
if self.all_data:
QSendToELOG(self, logbook=self.logbook,
eintragIdx=self.eintrag_idx,
@@ -118,16 +114,14 @@ class StartMain(BaseWindow):
title=self.title,
message=self.message,
attachFile=self.attach_files)
time.sleep(1.0)
return
#if not self.verify_send_to_elog():
# if not self.verify_send_to_elog():
# return
self.prepare_elog_message()
print(self.message, flush=True)
if not self.all_data:
@@ -140,12 +134,12 @@ class StartMain(BaseWindow):
attachFile=self.attach_files)
return
folder_name = self.elog_dest
if not os.path.exists(folder_name):
os.makedirs(folder_name)
_folder_name = self.elog_dest
if not os.path.exists(_folder_name):
os.makedirs(_folder_name)
'''
time_in_seconds = 0
'''
time_in_seconds = self.all_data['Ambient data']['Time in seconds']
if self.all_data['Processed data']['Reanalysis time']:
reanalysis_time = self.all_data['Processed data'][
@@ -153,19 +147,18 @@ class StartMain(BaseWindow):
else:
reanalysis_time = None
'''
reanalysis_time = None
self.folder_name = _folder_name
self.folder_name = folder_name
save_fig_thread = self.SaveFigureThread(
self, self.folder_name, time_in_seconds, reanalysis_time)
save_fig_thread.finished.connect(save_fig_thread_finished)
save_fig_thread.start()
time.sleep(0.05)
@Slot()
def closeEvent(self, event):
@@ -190,7 +183,7 @@ class StartMain(BaseWindow):
<p>IOC Administrator: H. Lutz </p>
<p>1st Responsible: J. Chrin
or 3301 (Control Room) </p>
<p>Initiates energy saving procedures and records power saved</p>
<p>Python {2} - Qt {3} - PyQt {4} <br>
cafe {5} - epics {6} on {7}""".format(
@@ -204,24 +197,24 @@ class StartMain(BaseWindow):
def show_help(self):
""" Invoke help pages from hush_resources
"""
index_html ="index.html" #self.appname + "/index.html"
help_base = ":" # + self.appname
index_html = "index.html" # self.appname + "/index.html"
help_base = ":" # + self.appname
help_page = HelpBrowser(help_base, index_html, self)
help_page.show()
#########################################################################
if __name__ == "__main__":
app = QApplication(sys.argv)
splash = BaseWindow.initialize_application(
app, appname=_appname, delay=20, facility=Facility.PROSCAN)
app, appname=_appname, delay=25, facility=Facility.PROSCAN)
myapp = StartMain()
myapp.show()
if splash is not None:
splash.finish(myapp)
app.exec_()
+2 -2
View File
@@ -1,5 +1,5 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.0.0
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -43,7 +43,7 @@ _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.7.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
echo $PYTHONPATH
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
configBase="config"
configSector=${configBase}/g1
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
then
# non-interactive
echo "Non-interactive script"
else
# interactive
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
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
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_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.8.0
echo $PYTHONPATH
STDOUT_DIR="/tmp"
#Set to 0 if you do not wish std::out to write to logger
STDOUT_FLAG=1
if [ "$#" -gt "0" ]; then
appName=$0
if [ "$appName" == "-bash" ]; then
appName=$appNameDefault
fi
else
appName=$appNameDefault
fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
rm -f $STDOUT_DIR/${nameLog}.log---
fi
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
rm -f $STDOUT_DIR/${nameLog}.log--
fi
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
rm -f $STDOUT_DIR/${nameLog}.log-
fi
if test -f "$STDOUT_DIR/${nameLog}.log"; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
fi
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
configBase="config"
configSector=${configBase}/g2
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
then
# non-interactive
echo "Non-interactive script"
else
# interactive
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
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
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_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.8.0
echo $PYTHONPATH
STDOUT_DIR="/tmp"
#Set to 0 if you do not wish std::out to write to logger
STDOUT_FLAG=1
if [ "$#" -gt "0" ]; then
appName=$0
if [ "$appName" == "-bash" ]; then
appName=$appNameDefault
fi
else
appName=$appNameDefault
fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
rm -f $STDOUT_DIR/${nameLog}.log---
fi
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
rm -f $STDOUT_DIR/${nameLog}.log--
fi
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
rm -f $STDOUT_DIR/${nameLog}.log-
fi
if test -f "$STDOUT_DIR/${nameLog}.log"; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
fi
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
configBase="config"
configSector=${configBase}/g3
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
then
# non-interactive
echo "Non-interactive script"
else
# interactive
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
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
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_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.8.0
echo $PYTHONPATH
STDOUT_DIR="/tmp"
#Set to 0 if you do not wish std::out to write to logger
STDOUT_FLAG=1
if [ "$#" -gt "0" ]; then
appName=$0
if [ "$appName" == "-bash" ]; then
appName=$appNameDefault
fi
else
appName=$appNameDefault
fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
rm -f $STDOUT_DIR/${nameLog}.log---
fi
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
rm -f $STDOUT_DIR/${nameLog}.log--
fi
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
rm -f $STDOUT_DIR/${nameLog}.log-
fi
if test -f "$STDOUT_DIR/${nameLog}.log"; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
fi
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
configBase="config"
configSector=${configBase}/o2
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
then
# non-interactive
echo "Non-interactive script"
else
# interactive
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
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
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_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.8.0
echo $PYTHONPATH
STDOUT_DIR="/tmp"
#Set to 0 if you do not wish std::out to write to logger
STDOUT_FLAG=1
if [ "$#" -gt "0" ]; then
appName=$0
if [ "$appName" == "-bash" ]; then
appName=$appNameDefault
fi
else
appName=$appNameDefault
fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
rm -f $STDOUT_DIR/${nameLog}.log---
fi
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
rm -f $STDOUT_DIR/${nameLog}.log--
fi
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
rm -f $STDOUT_DIR/${nameLog}.log-
fi
if test -f "$STDOUT_DIR/${nameLog}.log"; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
fi
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
configBase="config"
configSector=${configBase}/pif
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
then
# non-interactive
echo "Non-interactive script"
else
# interactive
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
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
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_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.8.0
echo $PYTHONPATH
STDOUT_DIR="/tmp"
#Set to 0 if you do not wish std::out to write to logger
STDOUT_FLAG=1
if [ "$#" -gt "0" ]; then
appName=$0
if [ "$appName" == "-bash" ]; then
appName=$appNameDefault
fi
else
appName=$appNameDefault
fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
if test -f "$STDOUT_DIR/${nameLog}.log---"; then
rm -f $STDOUT_DIR/${nameLog}.log---
fi
if test -f "$STDOUT_DIR/${nameLog}.log--"; then
cp $STDOUT_DIR/${nameLog}.log-- $STDOUT_DIR/${nameLog}.log---
rm -f $STDOUT_DIR/${nameLog}.log--
fi
if test -f "$STDOUT_DIR/${nameLog}.log-"; then
cp $STDOUT_DIR/${nameLog}.log- $STDOUT_DIR/${nameLog}.log--
rm -f $STDOUT_DIR/${nameLog}.log-
fi
if test -f "$STDOUT_DIR/${nameLog}.log"; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
fi
+103 -103
View File
@@ -2,79 +2,23 @@
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.7)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x00\xa7\
\x00\x00\x00\x80\
\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\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x35\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\x2c\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x79\x70\x65\x72\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\x67\x68\x6c\x69\x67\x68\x74\x73\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\x20\x61\x6e\x64\x20\x2e\x2e\x2e\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\x79\x70\x65\x72\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\x67\x68\x6c\x69\x67\
\x68\x74\x73\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\x68\x75\x73\x68\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\
\x70\x3e\x0a\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\
@@ -88,16 +32,19 @@ 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\x80\
\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\x35\x20\x6f\
\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\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\
\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\
@@ -116,18 +63,87 @@ qt_resource_data = b"\
\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\
\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\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\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\
@@ -135,53 +151,37 @@ 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\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\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\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\
"
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\x05\xb5\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x0a\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x03\xdb\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x86\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
"
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\x3b\x71\x36\x5d\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x05\xb5\
\x00\x00\x01\x8d\x3b\x71\x36\x75\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x0a\
\x00\x00\x01\x8d\x3b\x71\x36\x78\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x03\xdb\
\x00\x00\x01\x8d\x3b\x71\x36\x90\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x86\
\x00\x00\x01\x8d\x3b\x71\x36\x94\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\xab\
\x00\x00\x01\x8d\x3b\x78\x4e\xc0\
\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\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
qt_version = QtCore.qVersion().split('.')
if qt_version < ['5', '8', '0']:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:
+606 -616
View File
File diff suppressed because it is too large Load Diff