Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81232a2674 | |||
| 55d91d8551 | |||
| f46838ee77 | |||
| b2150a984a | |||
| 74bcc44775 | |||
| 5a38f67e60 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.pyc
|
||||
26
config/solaris.json
Normal file
26
config/solaris.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"devices": {
|
||||
"01": "R1-01/DIA/R1-01-DIA-GDX",
|
||||
"02": "R1-02/DIA/R1-02-DIA-GDX",
|
||||
"03": "R1-03/DIA/R1-03-DIA-GDX",
|
||||
"04": "R1-04/DIA/R1-04-DIA-GDX",
|
||||
"05": "R1-05/DIA/R1-05-DIA-GDX",
|
||||
"06": "R1-06/DIA/R1-06-DIA-GDX",
|
||||
"07": "R1-07/DIA/R1-07-DIA-GDX",
|
||||
"08": "R1-08/DIA/R1-08-DIA-GDX",
|
||||
"09": "R1-09/DIA/R1-09-DIA-GDX",
|
||||
"10": "R1-10/DIA/R1-10-DIA-GDX",
|
||||
"11": "R1-11/DIA/R1-11-DIA-GDX",
|
||||
"12": "R1-12/DIA/R1-12-DIA-GDX",
|
||||
"EVG": "R1-SGD/CTL/R1-SGDCAB10-CTL-EVG1"
|
||||
|
||||
},
|
||||
"units": {
|
||||
},
|
||||
"settings": {
|
||||
"x": ["01", "03", "05", "07", "09", "11"],
|
||||
"y": ["02", "04", "06", "08", "10", "12"],
|
||||
"global_orbit": "10",
|
||||
"global_magnet": "10"
|
||||
}
|
||||
}
|
||||
56
errorhook.py
Normal file
56
errorhook.py
Normal file
@ -0,0 +1,56 @@
|
||||
# Adapted from http://timlehr.com/python-exception-hooks-with-qt-message-box/
|
||||
|
||||
import sys
|
||||
import traceback
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
|
||||
def show_exception_box(log_msg):
|
||||
"""
|
||||
Checks if a QApplication instance is available and shows a messagebox with the exception message
|
||||
If unavailable (non-console application), log an additional notice.
|
||||
"""
|
||||
print "[ERROR]: An unexpected error occured: %s" % log_msg
|
||||
if QtGui.QApplication.instance() is not None:
|
||||
QtGui.QMessageBox.critical(
|
||||
None,
|
||||
"FOFB: Unexpected error",
|
||||
"""
|
||||
<b>An unexpected error occured:</b>
|
||||
<br>
|
||||
<br>
|
||||
%s
|
||||
""" % log_msg.replace("\n", "<br>")
|
||||
)
|
||||
|
||||
|
||||
class UncaughtHook(QtCore.QObject):
|
||||
_exception_caught = QtCore.Signal(object)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(UncaughtHook, self).__init__(*args, **kwargs)
|
||||
|
||||
# this registers the exception_hook() function as hook with the Python interpreter
|
||||
sys.excepthook = self.exception_hook
|
||||
|
||||
# connect signal to execute the message box function always on main thread
|
||||
self._exception_caught.connect(show_exception_box)
|
||||
|
||||
def exception_hook(self, exc_type, exc_value, exc_traceback):
|
||||
"""Function handling uncaught exceptions.
|
||||
It is triggered each time an uncaught exception occurs.
|
||||
"""
|
||||
if issubclass(exc_type, KeyboardInterrupt):
|
||||
# ignore keyboard interrupt to support console applications
|
||||
sys.__excepthook__(exc_type, exc_value, exc_traceback)
|
||||
else:
|
||||
exc_info = (exc_type, exc_value, exc_traceback)
|
||||
log_msg = "\n".join([
|
||||
"".join(traceback.format_tb(exc_traceback)),
|
||||
"%s: %s" % (exc_type.__name__, exc_value)
|
||||
])
|
||||
# trigger message box show
|
||||
self._exception_caught.emit(log_msg)
|
||||
|
||||
# create a global instance of our class to register the hook
|
||||
qt_exception_hook = UncaughtHook()
|
||||
38
fofbcontrol
Executable file
38
fofbcontrol
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python2.7
|
||||
|
||||
import os
|
||||
import sys
|
||||
from signal import signal, SIGINT, SIG_DFL
|
||||
from subprocess import check_output
|
||||
|
||||
from PyQt4.QtGui import QApplication
|
||||
|
||||
# from splash import SplashScreen
|
||||
from mainwindow import MainWindow
|
||||
# import errorhook # noqa - this only needs to register an exception hook
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
signal(SIGINT, SIG_DFL)
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
version = check_output(["git", "describe", "--tags", "--always"])[:-1]
|
||||
|
||||
app = QApplication([])
|
||||
offline = False
|
||||
|
||||
# first - create the main window
|
||||
window = MainWindow(offline=offline)
|
||||
window.setVersion(version)
|
||||
window.show()
|
||||
|
||||
# then - show the splash screen
|
||||
# splash = SplashScreen(window)
|
||||
# splash.setVersion(version)
|
||||
|
||||
# and finally start the main window
|
||||
if len(sys.argv) >= 2:
|
||||
window.start(sys.argv[1])
|
||||
else:
|
||||
window.start("%s/config/solaris.json" % base_dir)
|
||||
|
||||
sys.exit(app.exec_())
|
||||
142
grouping.py
Normal file
142
grouping.py
Normal file
@ -0,0 +1,142 @@
|
||||
import os
|
||||
|
||||
from PyQt4 import QtGui, QtCore, uic
|
||||
|
||||
from labels import cm
|
||||
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
class GroupingWindow(QtGui.QWidget):
|
||||
def __init__(self, main_window, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/grouping.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.list_layout = QtGui.QVBoxLayout()
|
||||
self.ContentFrame.setLayout(self.list_layout)
|
||||
self.liberas = {}
|
||||
self.timeouts = []
|
||||
|
||||
self.connect(self.TimeoutSpinBox, QtCore.SIGNAL("editingFinished()"), self.setTimeout)
|
||||
|
||||
def addLibera(self, dev):
|
||||
print "[ INFO]: grouping: add Libera %s" % dev
|
||||
libera = GroupingWidget(self.main_window, dev)
|
||||
self.connect(self, QtCore.SIGNAL("update"), libera.update)
|
||||
self.liberas[dev] = libera
|
||||
self.list_layout.addWidget(libera)
|
||||
self.addAttribute(dev, "GroupingTimeout")
|
||||
|
||||
def addGlobal(self, orbit, magnet):
|
||||
print "[ INFO]: grouping: global: orbit %s; magnet %s" % (orbit, magnet)
|
||||
w = GlobalWidget(self.main_window, orbit, magnet)
|
||||
self.connect(self, QtCore.SIGNAL("update"), w.update)
|
||||
self.list_layout.addWidget(w)
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
|
||||
self.timeouts = []
|
||||
for dev in self.liberas.keys():
|
||||
self.timeouts.append(cache[dev]["GroupingTimeout"])
|
||||
to_set = set(self.timeouts)
|
||||
common_to = max(to_set, key=self.timeouts.count)
|
||||
|
||||
self.TimeoutLabel.setText(str(common_to))
|
||||
if len(to_set) > 1:
|
||||
self.WarningLabel.show()
|
||||
else:
|
||||
self.WarningLabel.hide()
|
||||
|
||||
def showEvent(self, evt):
|
||||
self.emit(QtCore.SIGNAL("show"))
|
||||
evt.accept()
|
||||
|
||||
def hideEvent(self, evt):
|
||||
self.emit(QtCore.SIGNAL("hide"))
|
||||
evt.accept()
|
||||
|
||||
def setTimeout(self):
|
||||
for dev in self.liberas.keys():
|
||||
self.main_window.devices[dev].write_attribute("GroupingTimeout", self.TimeoutSpinBox.value())
|
||||
|
||||
|
||||
class GroupingWidget(QtGui.QWidget):
|
||||
def __init__(self, main_window, device, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/groupingwidget.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.device = device
|
||||
|
||||
self.IDLabel.setText(device)
|
||||
self.SFP3StatusLabel.setModel(device, "SFP3Status")
|
||||
self.SFP4StatusLabel.setModel(device, "SFP4Status")
|
||||
|
||||
self.SFP3LaneUpFlag.setModel(device, "SFP3Status", 0)
|
||||
self.SFP3ChannelUpFlag.setModel(device, "SFP3Status", 1)
|
||||
self.SFP3IPLLFlag.setModel(device, "SFP3Status", 2)
|
||||
self.SFP3EPLLFlag.setModel(device, "SFP3Status", 3)
|
||||
self.SFP3SoftErrorFlag.setModel(device, "SFP3Status", 4)
|
||||
self.SFP3HardErrorFlag.setModel(device, "SFP3Status", 5)
|
||||
|
||||
self.SFP4LaneUpFlag.setModel(device, "SFP4Status", 0)
|
||||
self.SFP4ChannelUpFlag.setModel(device, "SFP4Status", 1)
|
||||
self.SFP4IPLLFlag.setModel(device, "SFP4Status", 2)
|
||||
self.SFP4EPLLFlag.setModel(device, "SFP4Status", 3)
|
||||
self.SFP4SoftErrorFlag.setModel(device, "SFP4Status", 4)
|
||||
self.SFP4HardErrorFlag.setModel(device, "SFP4Status", 5)
|
||||
|
||||
self.SFP3SoftErrorFlag.setColorMap(cm.RED_BOOL)
|
||||
self.SFP3HardErrorFlag.setColorMap(cm.RED_BOOL)
|
||||
self.SFP4SoftErrorFlag.setColorMap(cm.RED_BOOL)
|
||||
self.SFP4HardErrorFlag.setColorMap(cm.RED_BOOL)
|
||||
|
||||
self.connect(self.ClearSFP3Button, QtCore.SIGNAL("clicked()"), lambda: self.clearStatus(3))
|
||||
self.connect(self.ClearSFP4Button, QtCore.SIGNAL("clicked()"), lambda: self.clearStatus(4))
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
|
||||
def clearStatus(self, sfp):
|
||||
self.main_window.execute_ireg_command(self.device, "SFP%dStatusClear" % sfp)
|
||||
|
||||
|
||||
class GlobalWidget(QtGui.QWidget):
|
||||
def __init__(self, main_window, orbit, magnet, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/globalwidget.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.orbit = orbit
|
||||
self.magnet = magnet
|
||||
|
||||
self.GlobalOrbitIDLabel.setText(orbit)
|
||||
self.GlobalOrbitStateLabel.setModel(orbit, "OrbitStatus")
|
||||
self.GlobalOrbitStateLabel.setColorMap(cm.GREEN_BOOL)
|
||||
|
||||
self.GlobalMagnetIDLabel.setText(magnet)
|
||||
self.GlobalMagnetStateLabel.setModel(orbit, "MagnetStatus")
|
||||
self.GlobalMagnetStateLabel.setColorMap(cm.GREEN_BOOL)
|
||||
|
||||
self.connect(self.GlobalOrbitResetButton, QtCore.SIGNAL("clicked()"), self.resetGlobalOrbit)
|
||||
self.connect(self.GlobalMagnetResetButton, QtCore.SIGNAL("clicked()"), self.resetGlobalMagnet)
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
|
||||
def resetGlobalOrbit(self):
|
||||
self.main_window.execute_ireg_command(self.orbit, "OrbitReconnect")
|
||||
|
||||
def resetGlobalMagnet(self):
|
||||
self.main_window.execute_ireg_command(self.magnet, "MagnetReconnect")
|
||||
240
labels.py
Normal file
240
labels.py
Normal file
@ -0,0 +1,240 @@
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
from tango import DevState
|
||||
|
||||
|
||||
class cm:
|
||||
FOFB_STATE = {
|
||||
1: "#000000",
|
||||
2: "#7CFC00",
|
||||
4: "#FFFF00"
|
||||
}
|
||||
|
||||
RED_BOOL = {
|
||||
0: "#000000",
|
||||
1: "#FF0000"
|
||||
}
|
||||
|
||||
GREEN_BOOL = {
|
||||
0: "#000000",
|
||||
1: "#7CFC00"
|
||||
}
|
||||
|
||||
SER_OFF = {
|
||||
0: "#FF0000",
|
||||
1: "#000000",
|
||||
2: "#000000"
|
||||
}
|
||||
|
||||
SER_MANUAL = {
|
||||
0: "#000000",
|
||||
1: "#000000",
|
||||
2: "#FF8C00"
|
||||
}
|
||||
|
||||
SER_FOFB = {
|
||||
0: "#000000",
|
||||
1: "#7CFC00",
|
||||
2: "#000000"
|
||||
}
|
||||
|
||||
|
||||
class TangoLabel(QtGui.QLabel):
|
||||
def __init__(self, parent=None):
|
||||
QtGui.QLabel.__init__(self, parent)
|
||||
|
||||
self.device = None
|
||||
self.attr = None
|
||||
|
||||
def setModel(self, device, attr):
|
||||
self.window().addAttribute(device, attr)
|
||||
self.device = device
|
||||
self.attr = attr
|
||||
# force the color of the tooltip text
|
||||
if self.toolTip():
|
||||
self.setToolTip("<font color=\"black\">%s<br><br>%s/%s</font>" % (self.toolTip(), device, attr))
|
||||
else:
|
||||
self.setToolTip("<font color=\"black\">%s/%s</font>" % (device, attr))
|
||||
self.connect(self.window(), QtCore.SIGNAL("update"), self.update)
|
||||
|
||||
def update(self, cache):
|
||||
value = cache[self.device][self.attr]
|
||||
if value is None:
|
||||
value = float("-inf")
|
||||
try:
|
||||
fmt = self.window().units[self.device][self.attr]["format"]
|
||||
except (KeyError, TypeError):
|
||||
fmt = "%d"
|
||||
try:
|
||||
unit = self.window().units[self.device][self.attr]["unit"]
|
||||
except (KeyError, TypeError):
|
||||
unit = None
|
||||
value = fmt % value
|
||||
if unit is not None:
|
||||
value = "%s %s" % (value, unit)
|
||||
self.setText(value)
|
||||
|
||||
|
||||
class StateLabel(TangoLabel):
|
||||
ColorMap = {
|
||||
DevState.ON: "#7CFC00",
|
||||
DevState.OFF: "#FFFFFF",
|
||||
DevState.CLOSE: "#FFFFFF",
|
||||
DevState.OPEN: "#7CFC00",
|
||||
DevState.INSERT: "#FFFFFF",
|
||||
DevState.EXTRACT: "#7CFC00",
|
||||
DevState.MOVING: "#80A0FF",
|
||||
DevState.STANDBY: "#FFFF00",
|
||||
DevState.FAULT: "#FF0000",
|
||||
DevState.INIT: "#CCCC7A",
|
||||
DevState.RUNNING: "#80A0FF",
|
||||
DevState.ALARM: "#FF8C00",
|
||||
DevState.DISABLE: "#FF00FF",
|
||||
DevState.UNKNOWN: "#808080"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def setModel(self, device, attr="State"):
|
||||
TangoLabel.setModel(self, device, attr)
|
||||
|
||||
def update(self, cache):
|
||||
state = cache[self.device][self.attr]
|
||||
if state is None:
|
||||
state = DevState.UNKNOWN
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[state])
|
||||
|
||||
|
||||
class BeamLabel(TangoLabel):
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def update(self, cache):
|
||||
value = cache[self.device][self.attr]
|
||||
if value > 0:
|
||||
self.setStyleSheet("background-color: yellow")
|
||||
else:
|
||||
self.setStyleSheet("background-color: gray")
|
||||
|
||||
|
||||
class OperationLabel(QtGui.QLabel):
|
||||
ColorMap = {
|
||||
"on": "#7CFC00",
|
||||
"off": "#000000",
|
||||
"manual": "#FFA500",
|
||||
"skipped": "#ADD8E6",
|
||||
"fault": "#FF0000"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QtGui.QLabel.__init__(self, parent)
|
||||
|
||||
def setState(self, state):
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[state])
|
||||
|
||||
|
||||
class BstLabel(TangoLabel):
|
||||
ColorMap = {
|
||||
"Status: OPEN": "#7CFC00",
|
||||
"Status: UNKNOWN": "#80A0FF",
|
||||
"STATUS: UNKNOWN": "#80A0FF",
|
||||
"Status: CLOSED": "#FFFFFF",
|
||||
None: "#808080"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def update(self, cache):
|
||||
state = cache[self.device][self.attr]
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[state])
|
||||
|
||||
|
||||
class BooleanLabel(TangoLabel):
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
self.true_color = "#7CFC00"
|
||||
self.false_color = "#000000"
|
||||
|
||||
def setColors(self, true_color, false_color):
|
||||
self.true_color = true_color
|
||||
self.false_color = false_color
|
||||
|
||||
def update(self, cache):
|
||||
if cache[self.device][self.attr]:
|
||||
self.setStyleSheet("color: %s" % self.true_color)
|
||||
else:
|
||||
self.setStyleSheet("color: %s" % self.false_color)
|
||||
|
||||
|
||||
class InterlockLabel(TangoLabel):
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def update(self, cache):
|
||||
if cache[self.device][self.attr]:
|
||||
self.setStyleSheet("background:red; color:white")
|
||||
else:
|
||||
self.setStyleSheet("")
|
||||
|
||||
|
||||
class ArrayElementLabel(TangoLabel):
|
||||
ColorMap = {
|
||||
0: "#000000",
|
||||
1: "#7CFC00"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def setModel(self, device, attr, i):
|
||||
self.i = i
|
||||
TangoLabel.setModel(self, device, attr)
|
||||
|
||||
def setColorMap(self, cm):
|
||||
self.ColorMap = cm
|
||||
|
||||
def update(self, cache):
|
||||
value = cache[self.device][self.attr][self.i]
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[value])
|
||||
|
||||
|
||||
class BitLabel(TangoLabel):
|
||||
ColorMap = {
|
||||
0: "#000000",
|
||||
1: "#7CFC00"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def setModel(self, device, attr, i):
|
||||
self.i = i
|
||||
TangoLabel.setModel(self, device, attr)
|
||||
|
||||
def setColorMap(self, cm):
|
||||
self.ColorMap = cm
|
||||
|
||||
def update(self, cache):
|
||||
value = cache[self.device][self.attr]
|
||||
bits = bin(value).split("b")[1][::-1].ljust(self.i + 1, "0")
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[int(bits[self.i])])
|
||||
|
||||
|
||||
class EnumStateLabel(TangoLabel):
|
||||
ColorMap = {
|
||||
0: "#000000",
|
||||
1: "#7CFC00"
|
||||
}
|
||||
|
||||
def __init__(self, parent=None):
|
||||
TangoLabel.__init__(self, parent)
|
||||
|
||||
def setColorMap(self, cm):
|
||||
self.ColorMap = cm
|
||||
|
||||
def update(self, cache):
|
||||
value = cache[self.device][self.attr]
|
||||
self.setStyleSheet("color: %s" % self.ColorMap[value])
|
||||
9
magic_numbers.py
Normal file
9
magic_numbers.py
Normal file
@ -0,0 +1,9 @@
|
||||
MASTER_TIMER = 1000
|
||||
IREG_EXECUTE = 238
|
||||
|
||||
|
||||
class EventID:
|
||||
FOFB_OFF = 100
|
||||
FOFB_ON = 101
|
||||
FOFB_STANDBY = 102
|
||||
UPDATE_DOUBLE_BUFFERS = 103
|
||||
219
mainwindow.py
Normal file
219
mainwindow.py
Normal file
@ -0,0 +1,219 @@
|
||||
import os
|
||||
import json
|
||||
from time import time, sleep
|
||||
|
||||
from PyQt4 import QtGui, QtCore, uic
|
||||
|
||||
import tango
|
||||
|
||||
import magic_numbers
|
||||
from labels import cm
|
||||
from threads import ThreadWrapper
|
||||
|
||||
from grouping import GroupingWindow
|
||||
from seroutput import SERWindow
|
||||
from statuswidget import StatusWidget
|
||||
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
class MainWindow(QtGui.QWidget):
|
||||
def __init__(self, offline=False, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/main.ui" % base_dir, self)
|
||||
|
||||
self.offline = offline
|
||||
self.devices = {}
|
||||
self.units = None
|
||||
self.cache = {}
|
||||
self.virtual = {
|
||||
"delay": 0,
|
||||
"avg_delay": 0,
|
||||
"_delay_sum": 0,
|
||||
"_delay_n": 0
|
||||
}
|
||||
|
||||
self.grouping = GroupingWindow(self)
|
||||
self.ser_output = SERWindow(self)
|
||||
|
||||
self.x_list_layout = QtGui.QVBoxLayout()
|
||||
self.XFrame.setLayout(self.x_list_layout)
|
||||
|
||||
self.y_list_layout = QtGui.QVBoxLayout()
|
||||
self.YFrame.setLayout(self.y_list_layout)
|
||||
|
||||
self.connect(self.FOFBONButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.send_tim_event("EVG", magic_numbers.EventID.FOFB_ON)
|
||||
)
|
||||
self.connect(self.FOFBOFFButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.send_tim_event("EVG", magic_numbers.EventID.FOFB_OFF)
|
||||
)
|
||||
self.connect(self.FOFBStandbyButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.send_tim_event("EVG", magic_numbers.EventID.FOFB_STANDBY)
|
||||
)
|
||||
self.connect(self.SwitchBuffersButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.send_tim_event("EVG", magic_numbers.EventID.UPDATE_DOUBLE_BUFFERS)
|
||||
)
|
||||
self.connect(self.SendEventButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.send_tim_event("EVG", self.EventSpinBox.value())
|
||||
)
|
||||
|
||||
self.connect(self.GroupingButton, QtCore.SIGNAL("clicked()"), self.grouping.show)
|
||||
self.connect(self.SERButton, QtCore.SIGNAL("clicked()"), self.ser_output.show)
|
||||
|
||||
self.update_timer = QtCore.QTimer()
|
||||
self.connect(self.update_timer, QtCore.SIGNAL("timeout()"), self.update)
|
||||
|
||||
self.connect(self, QtCore.SIGNAL("update"), self.grouping.update)
|
||||
self.connect(self, QtCore.SIGNAL("update"), self.ser_output.update)
|
||||
|
||||
self.connect(self, QtCore.SIGNAL("loadingdone"), self.loading_done)
|
||||
self.connect(self, QtCore.SIGNAL("update"), self.update_virtual_in_gui)
|
||||
|
||||
def setModel(self):
|
||||
self.EVGStateLabel.setModel("EVG")
|
||||
|
||||
def start(self, fn, config=None):
|
||||
ThreadWrapper(self.load, args=(fn, config)).start()
|
||||
|
||||
def loading_done(self):
|
||||
# show all startup windows
|
||||
self.show()
|
||||
# fill grouping and magnets
|
||||
for dev in sorted(self.devices.keys()):
|
||||
if dev.upper() != "EVG":
|
||||
self.addLibera(dev)
|
||||
self.grouping.addLibera(dev)
|
||||
self.ser_output.addLibera(dev)
|
||||
self.grouping.addGlobal(self.settings["global_orbit"], self.settings["global_magnet"])
|
||||
# start updates
|
||||
self.update_timer.start(magic_numbers.MASTER_TIMER)
|
||||
|
||||
def closeEvent(self, evt):
|
||||
self.grouping.close()
|
||||
self.ser_output.close()
|
||||
evt.accept()
|
||||
|
||||
def setVersion(self, version):
|
||||
self.VersionLabel.setText("v.%s" % version)
|
||||
|
||||
def load(self, fn, cfg=None):
|
||||
if fn:
|
||||
with open(fn) as f:
|
||||
conf = json.load(f)
|
||||
else:
|
||||
conf = json.loads(cfg)
|
||||
for label, dev in conf["devices"].iteritems():
|
||||
self.addDevice(label, dev)
|
||||
self.units = conf["units"]
|
||||
self.settings = conf["settings"]
|
||||
self.setModel()
|
||||
self.applySettings()
|
||||
self.emit(QtCore.SIGNAL("loadingdone"))
|
||||
|
||||
def addDevice(self, label, dev):
|
||||
self.emit(QtCore.SIGNAL("loadstatus"), "Loading %s = %s" % (label, dev))
|
||||
if not self.offline:
|
||||
self.devices[label] = tango.DeviceProxy(dev)
|
||||
if label not in self.cache:
|
||||
self.cache[label] = {}
|
||||
|
||||
def applySettings(self):
|
||||
pass
|
||||
|
||||
def addAttribute(self, dev, attr):
|
||||
self.emit(QtCore.SIGNAL("loadstatus"), "Add attribute %s of device %s" % (attr, dev))
|
||||
if dev not in self.cache:
|
||||
self.cache[dev] = {}
|
||||
self.cache[dev][attr] = None
|
||||
|
||||
def addLibera(self, dev):
|
||||
print "[ INFO]: Status: add Libera %s" % dev
|
||||
libera = StatusWidget(self, dev)
|
||||
self.connect(self, QtCore.SIGNAL("update"), libera.update)
|
||||
# self.liberas[dev] = libera
|
||||
if dev in self.settings["x"]:
|
||||
self.x_list_layout.addWidget(libera)
|
||||
elif dev in self.settings["y"]:
|
||||
self.y_list_layout.addWidget(libera)
|
||||
|
||||
def update(self):
|
||||
print "[ INFO]: update"
|
||||
try:
|
||||
start = time()
|
||||
threads = {}
|
||||
for dev, attrs in self.cache.iteritems():
|
||||
threads[dev] = {}
|
||||
for attr in attrs.keys():
|
||||
threads[dev][attr] = ThreadWrapper(self.read_attribute, args=(dev, attr))
|
||||
threads[dev][attr].start()
|
||||
|
||||
for dev, attrs in self.cache.iteritems():
|
||||
for attr in attrs.keys():
|
||||
threads[dev][attr].join()
|
||||
self.cache[dev][attr] = threads[dev][attr].result
|
||||
|
||||
self.update_virtual(time() - start)
|
||||
except Exception as e:
|
||||
print "[ERROR]: update failed: %s" % str(e)
|
||||
self.emit(QtCore.SIGNAL("update"), self.cache)
|
||||
|
||||
def read_attribute(self, dev, attr):
|
||||
try:
|
||||
value = self.devices[dev].read_attribute(attr).value
|
||||
if type(value) in (int, float):
|
||||
try:
|
||||
conv = self.units[dev][attr]["conversion"]
|
||||
except (KeyError, TypeError):
|
||||
conv = 1
|
||||
value = value * conv
|
||||
|
||||
# special case for machine state attribute
|
||||
if dev == "statemachine" and attr == "MachineState":
|
||||
if not value:
|
||||
value = "UNKNOWN !!!"
|
||||
|
||||
return value
|
||||
except Exception as e:
|
||||
print "[ERROR]: could not read attribute %s of device %s: %s" % (attr, dev, str(e))
|
||||
return None
|
||||
|
||||
def update_virtual(self, fetch_time):
|
||||
self.virtual["delay"] = fetch_time * 1000.0 # convert to ms
|
||||
self.virtual["_delay_sum"] += self.virtual["delay"]
|
||||
self.virtual["_delay_n"] += 1
|
||||
self.virtual["avg_delay"] = self.virtual["_delay_sum"] / self.virtual["_delay_n"]
|
||||
|
||||
def update_virtual_in_gui(self):
|
||||
# This whole thing is a big, big technical debt
|
||||
self.DelayLabel.setText("%.02f ms" % self.virtual["delay"])
|
||||
if self.virtual["delay"] > magic_numbers.MASTER_TIMER:
|
||||
style = "background:red; color:white"
|
||||
elif self.virtual["delay"] > magic_numbers.MASTER_TIMER / 2.0:
|
||||
style = "background:orange; color:white"
|
||||
else:
|
||||
style = ""
|
||||
self.DelayLabel.setStyleSheet(style)
|
||||
|
||||
self.AvgDelayLabel.setText("avg: %.02f ms" % self.virtual["avg_delay"])
|
||||
if self.virtual["avg_delay"] > magic_numbers.MASTER_TIMER:
|
||||
style = "background:red; color:white"
|
||||
elif self.virtual["avg_delay"] > magic_numbers.MASTER_TIMER / 2.0:
|
||||
style = "background:orange; color:white"
|
||||
else:
|
||||
style = ""
|
||||
self.AvgDelayLabel.setStyleSheet(style)
|
||||
|
||||
def execute_ireg_command(self, dev, cmd):
|
||||
try:
|
||||
print "[ INFO]: ireg_execute %s/%s" % (dev, cmd)
|
||||
self.devices[dev].write_attribute(cmd, magic_numbers.IREG_EXECUTE)
|
||||
except Exception as e:
|
||||
print str(e)
|
||||
|
||||
# def execute_ireg_command_on_axis(self, axis, cmd):
|
||||
# self.execute_ireg_command(self.settings[axis], cmd)
|
||||
|
||||
def send_tim_event(self, dev, evt):
|
||||
print "[ INFO]: sw event %s/%d" % (dev, evt)
|
||||
self.devices[dev].SendSoftwareEvent(evt)
|
||||
112
seroutput.py
Normal file
112
seroutput.py
Normal file
@ -0,0 +1,112 @@
|
||||
import os
|
||||
|
||||
from PyQt4 import QtGui, QtCore, uic
|
||||
|
||||
from labels import cm
|
||||
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
class SERWindow(QtGui.QWidget):
|
||||
def __init__(self, main_window, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/ser.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.list_layout = QtGui.QVBoxLayout()
|
||||
self.ContentFrame.setLayout(self.list_layout)
|
||||
self.liberas = {}
|
||||
|
||||
def addLibera(self, dev):
|
||||
print "[ INFO]: SER: add Libera %s" % dev
|
||||
libera = SERWidget(self.main_window, dev)
|
||||
self.connect(self, QtCore.SIGNAL("update"), libera.update)
|
||||
self.liberas[dev] = libera
|
||||
self.list_layout.addWidget(libera)
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
|
||||
def showEvent(self, evt):
|
||||
self.emit(QtCore.SIGNAL("show"))
|
||||
evt.accept()
|
||||
|
||||
def hideEvent(self, evt):
|
||||
self.emit(QtCore.SIGNAL("hide"))
|
||||
evt.accept()
|
||||
|
||||
|
||||
class SERWidget(QtGui.QWidget):
|
||||
def __init__(self, main_window, device, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/serwidget.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.device = device
|
||||
|
||||
self.IDLabel.setText(device)
|
||||
|
||||
self.M1IDLabel.setModel(device, "SERM1Id")
|
||||
self.M1OffLabel.setModel(device, "SERM1Output")
|
||||
self.M1OffLabel.setColorMap(cm.SER_OFF)
|
||||
self.M1ManualLabel.setModel(device, "SERM1Output")
|
||||
self.M1ManualLabel.setColorMap(cm.SER_MANUAL)
|
||||
self.M1FOFBLabel.setModel(device, "SERM1Output")
|
||||
self.M1FOFBLabel.setColorMap(cm.SER_FOFB)
|
||||
self.M1FOFBValueLabel.setModel(device, "SERM1FOFB")
|
||||
|
||||
self.M2IDLabel.setModel(device, "SERM2Id")
|
||||
self.M2OffLabel.setModel(device, "SERM2Output")
|
||||
self.M2OffLabel.setColorMap(cm.SER_OFF)
|
||||
self.M2ManualLabel.setModel(device, "SERM2Output")
|
||||
self.M2ManualLabel.setColorMap(cm.SER_MANUAL)
|
||||
self.M2FOFBLabel.setModel(device, "SERM2Output")
|
||||
self.M2FOFBLabel.setColorMap(cm.SER_FOFB)
|
||||
self.M2FOFBValueLabel.setModel(device, "SERM2FOFB")
|
||||
|
||||
self.M3IDLabel.setModel(device, "SERM3Id")
|
||||
self.M3OffLabel.setModel(device, "SERM3Output")
|
||||
self.M3OffLabel.setColorMap(cm.SER_OFF)
|
||||
self.M3ManualLabel.setModel(device, "SERM3Output")
|
||||
self.M3ManualLabel.setColorMap(cm.SER_MANUAL)
|
||||
self.M3FOFBLabel.setModel(device, "SERM3Output")
|
||||
self.M3FOFBLabel.setColorMap(cm.SER_FOFB)
|
||||
self.M3FOFBValueLabel.setModel(device, "SERM3FOFB")
|
||||
|
||||
self.M4IDLabel.setModel(device, "SERM4Id")
|
||||
self.M4OffLabel.setModel(device, "SERM4Output")
|
||||
self.M4OffLabel.setColorMap(cm.SER_OFF)
|
||||
self.M4ManualLabel.setModel(device, "SERM4Output")
|
||||
self.M4ManualLabel.setColorMap(cm.SER_MANUAL)
|
||||
self.M4FOFBLabel.setModel(device, "SERM4Output")
|
||||
self.M4FOFBLabel.setColorMap(cm.SER_FOFB)
|
||||
self.M4FOFBValueLabel.setModel(device, "SERM4FOFB")
|
||||
|
||||
self.connect(self.M1ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM1)
|
||||
self.connect(self.M2ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM2)
|
||||
self.connect(self.M3ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM3)
|
||||
self.connect(self.M4ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM4)
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
|
||||
def setM1(self):
|
||||
self.setMagnet(1, self.M1ManualSpinBox.value())
|
||||
|
||||
def setM2(self):
|
||||
self.setMagnet(2, self.M2ManualSpinBox.value())
|
||||
|
||||
def setM3(self):
|
||||
self.setMagnet(3, self.M3ManualSpinBox.value())
|
||||
|
||||
def setM4(self):
|
||||
self.setMagnet(4, self.M4ManualSpinBox.value())
|
||||
|
||||
def setMagnet(self, mid, value):
|
||||
self.main_window.devices[self.device].write_attribute("SERM%dManual" % mid, value)
|
||||
53
statuswidget.py
Normal file
53
statuswidget.py
Normal file
@ -0,0 +1,53 @@
|
||||
import os
|
||||
|
||||
from PyQt4 import QtGui, QtCore, uic
|
||||
|
||||
from labels import cm
|
||||
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
class StatusWidget(QtGui.QWidget):
|
||||
def __init__(self, main_window, device, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
uic.loadUi("%s/ui/status.ui" % base_dir, self)
|
||||
|
||||
self.main_window = main_window
|
||||
self.units = self.main_window.units
|
||||
self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr)
|
||||
|
||||
self.device = device
|
||||
|
||||
self.IDLabel.setText(device)
|
||||
|
||||
self.StateLabel.setModel(device)
|
||||
self.InterlockLabel.setModel(device, "FOFBIlk")
|
||||
self.IDLabel.setText(device)
|
||||
self.FOFBStateLabel.setModel(device, "FOFBState")
|
||||
self.FOFBStateLabel.setColorMap(cm.FOFB_STATE)
|
||||
# self.BuffersLabel.setModel()
|
||||
|
||||
self.S1Label.setModel(device, "FOFBSaturation", 0)
|
||||
self.S1Label.setColorMap(cm.RED_BOOL)
|
||||
self.S2Label.setModel(device, "FOFBSaturation", 1)
|
||||
self.S2Label.setColorMap(cm.RED_BOOL)
|
||||
self.S3Label.setModel(device, "FOFBSaturation", 2)
|
||||
self.S3Label.setColorMap(cm.RED_BOOL)
|
||||
self.S4Label.setModel(device, "FOFBSaturation", 3)
|
||||
self.S4Label.setColorMap(cm.RED_BOOL)
|
||||
|
||||
self.connect(self.InterlockResetButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.main_window.execute_ireg_command(device, "FOFBIlkReset")
|
||||
)
|
||||
self.connect(self.ReconnectButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.main_window.execute_ireg_command(device, "FOFBReconnect")
|
||||
)
|
||||
self.connect(self.ResetPIButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.main_window.execute_ireg_command(device, "FOFBPIReset")
|
||||
)
|
||||
self.connect(self.SaturationResetButton, QtCore.SIGNAL("clicked()"),
|
||||
lambda: self.main_window.execute_ireg_command(device, "FOFBSaturationReset")
|
||||
)
|
||||
|
||||
def update(self, cache):
|
||||
self.emit(QtCore.SIGNAL("update"), cache)
|
||||
19
threads.py
Normal file
19
threads.py
Normal file
@ -0,0 +1,19 @@
|
||||
from threading import Thread
|
||||
|
||||
|
||||
class ThreadWrapper(Thread):
|
||||
""" A thread you can get the result value from """
|
||||
|
||||
def __init__(self, target, args=(), kwargs={}):
|
||||
Thread.__init__(self)
|
||||
self.target = target
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
self.result = None
|
||||
self.error = None
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self.result = self.target(*self.args, **self.kwargs)
|
||||
except Exception as e:
|
||||
self.error = e
|
||||
254
ui/globalwidget.ui
Normal file
254
ui/globalwidget.ui
Normal file
@ -0,0 +1,254 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>349</width>
|
||||
<height>52</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="horizontalSpacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item row="1" column="4">
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="7">
|
||||
<widget class="QLabel" name="GlobalMagnetIDLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="6">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="6" colspan="5">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Global magnet</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="GlobalOrbitResetButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>45</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="10">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="5">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Global orbit</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="8">
|
||||
<widget class="EnumStateLabel" name="GlobalMagnetStateLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="GlobalOrbitIDLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="EnumStateLabel" name="GlobalOrbitStateLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="9">
|
||||
<widget class="QPushButton" name="GlobalMagnetResetButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>45</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>EnumStateLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
141
ui/grouping.ui
Normal file
141
ui/grouping.ui
Normal file
@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>395</width>
|
||||
<height>699</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>FOFB: Libera Grouping</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,1">
|
||||
<item row="2" column="0" colspan="6">
|
||||
<widget class="QFrame" name="ContentFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SFP3</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Grouping timeout</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QSpinBox" name="TimeoutSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>90</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="WarningLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The parameter value is not consistent across instruments!</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color:orange</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>⚠</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SFP4</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="TimeoutLabel">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
534
ui/groupingwidget.ui
Normal file
534
ui/groupingwidget.ui
Normal file
@ -0,0 +1,534 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>351</width>
|
||||
<height>45</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="IDLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3HardErrorFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Hard error</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3SoftErrorFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Soft error</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3EPLLFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>External clock PLL locked</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3IPLLFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Internal clock PLL locked</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3ChannelUpFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Channel up</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP3LaneUpFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Lane up</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="SFP3StatusLabel">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ClearSFP3Button">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4HardErrorFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Hard error</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4SoftErrorFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Soft error</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4EPLLFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>External clock PLL locked</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4IPLLFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Internal clock PLL locked</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4ChannelUpFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Channel up</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="BitLabel" name="SFP4LaneUpFlag">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>15</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Lane up</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="SFP4StatusLabel">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ClearSFP4Button">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>TangoLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BitLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
654
ui/main.ui
Normal file
654
ui/main.ui
Normal file
@ -0,0 +1,654 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>742</width>
|
||||
<height>540</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>SOLARIS FOFB control</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Event control</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="FOFBONButton">
|
||||
<property name="text">
|
||||
<string>FOFB ON</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="FOFBOFFButton">
|
||||
<property name="text">
|
||||
<string>FOFB OFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="FOFBStandbyButton">
|
||||
<property name="text">
|
||||
<string>FOFB STANDBY</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="SwitchBuffersButton">
|
||||
<property name="text">
|
||||
<string>SWITCH BUFFERS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="EventSpinBox">
|
||||
<property name="maximum">
|
||||
<number>256</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="SendEventButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_10">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>EVG</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="StateLabel" name="EVGStateLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="GroupingButton">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Libera Grouping</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="SERButton">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Local magnet output</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff>../../../../../</normaloff>../../../../../</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="VersionLabel">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<italic>true</italic>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>v.0.0.0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="DelayLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0.00 ms</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="AvgDelayLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>avg: 0.00 ms</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_5">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="0,1,0">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>20</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>X</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="XFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_4">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="text">
|
||||
<string>Ki</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="pushButton_4">
|
||||
<property name="text">
|
||||
<string>Kp</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_6">
|
||||
<property name="text">
|
||||
<string>Response matrix</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_9">
|
||||
<property name="text">
|
||||
<string>Golden orbit</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_5">
|
||||
<property name="text">
|
||||
<string>V</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Parameters</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_6">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="0,1,0">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>20</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Y</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="YFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_8">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="pushButton_15">
|
||||
<property name="text">
|
||||
<string>Ki</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="pushButton_16">
|
||||
<property name="text">
|
||||
<string>Kp</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_17">
|
||||
<property name="text">
|
||||
<string>Response matrix</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_18">
|
||||
<property name="text">
|
||||
<string>Golden orbit</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_19">
|
||||
<property name="text">
|
||||
<string>V</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="next">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Parameters</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>StateLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
31
ui/ser.ui
Normal file
31
ui/ser.ui
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>622</width>
|
||||
<height>691</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>FOFB: Local magnet output</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QFrame" name="ContentFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
892
ui/serwidget.ui
Normal file
892
ui/serwidget.ui
Normal file
@ -0,0 +1,892 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>573</width>
|
||||
<height>49</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>79</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="IDLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>M1</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M1IDLabel">
|
||||
<property name="toolTip">
|
||||
<string>Magnet ID</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M1OffLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: OFF</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M1ManualLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: MANUAL</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M1FOFBLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: FOFB</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M1FOFBValueLabel">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>FOFB value</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="M1ManualSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Manual value</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>32767</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>M2</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M2IDLabel">
|
||||
<property name="toolTip">
|
||||
<string>Magnet ID</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M2OffLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: OFF</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M2ManualLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: MANUAL</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M2FOFBLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: FOFB</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M2FOFBValueLabel">
|
||||
<property name="toolTip">
|
||||
<string>FOFB value</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="M2ManualSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Manual value</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>32767</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>M3</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M3IDLabel">
|
||||
<property name="toolTip">
|
||||
<string>Magnet ID</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M3OffLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: OFF</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M3ManualLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: MANUAL</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M3FOFBLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: FOFB</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M3FOFBValueLabel">
|
||||
<property name="toolTip">
|
||||
<string>FOFB value</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="M3ManualSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Manual value</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>32767</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::VLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_15">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>M4</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M4IDLabel">
|
||||
<property name="toolTip">
|
||||
<string>Magnet ID</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M4OffLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: OFF</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M4ManualLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: MANUAL</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="M4FOFBLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>15</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Output: FOFB</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_14">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="TangoLabel" name="M4FOFBValueLabel">
|
||||
<property name="toolTip">
|
||||
<string>FOFB value</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="M4ManualSpinBox">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Manual value</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>32767</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-32768</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>EnumStateLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>TangoLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
453
ui/status.ui
Normal file
453
ui/status.ui
Normal file
@ -0,0 +1,453 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>292</width>
|
||||
<height>107</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_3">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="margin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="IDLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>00</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QPushButton" name="InterlockResetButton">
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>7</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>FOFB</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EnumStateLabel" name="FOFBStateLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>7</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Buffers</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="StateLabel" name="BuffersLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QPushButton" name="ReconnectButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reconnect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<widget class="QPushButton" name="ResetPIButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset PI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<widget class="QPushButton" name="SaturationResetButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="StateLabel" name="StateLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="5">
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="1" column="3">
|
||||
<widget class="ArrayElementLabel" name="S3Label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>41</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>PI controller</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="ArrayElementLabel" name="S1Label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>41</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Global orbit data P</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="ArrayElementLabel" name="S2Label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>41</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Multiplication SU.dP</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="ArrayElementLabel" name="S4Label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>41</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>24</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Multiplication V.PI[SU.dP]</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>∙</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Saturation</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="5">
|
||||
<widget class="InterlockLabel" name="InterlockLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>INTERLOCK</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>StateLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>InterlockLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>ArrayElementLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>EnumStateLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>labels</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Loading…
x
Reference in New Issue
Block a user