Compare commits

..

No commits in common. "develop" and "master" have entirely different histories.

18 changed files with 0 additions and 3874 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
*.pyc

View File

@ -1,26 +0,0 @@
{
"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"
}
}

View File

@ -1,56 +0,0 @@
# 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()

View File

@ -1,38 +0,0 @@
#!/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_())

View File

@ -1,142 +0,0 @@
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
View File

@ -1,240 +0,0 @@
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])

View File

@ -1,9 +0,0 @@
MASTER_TIMER = 1000
IREG_EXECUTE = 238
class EventID:
FOFB_OFF = 100
FOFB_ON = 101
FOFB_STANDBY = 102
UPDATE_DOUBLE_BUFFERS = 103

View File

@ -1,219 +0,0 @@
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)

View File

@ -1,112 +0,0 @@
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)

View File

@ -1,53 +0,0 @@
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)

View File

@ -1,19 +0,0 @@
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

View File

@ -1,254 +0,0 @@
<?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>

View File

@ -1,141 +0,0 @@
<?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>

View File

@ -1,534 +0,0 @@
<?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>

View File

@ -1,654 +0,0 @@
<?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>

View File

@ -1,31 +0,0 @@
<?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>

View File

@ -1,892 +0,0 @@
<?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>

View File

@ -1,453 +0,0 @@
<?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>