4 Commits

Author SHA1 Message Date
fa33a4479d Added precision to and modified CAQTextEdit 2023-08-21 15:40:32 +02:00
54b332f69d Reconnect btn to 11px 2023-07-27 09:51:46 +02:00
0ff5ca7b49 rm unwanted backup files 2023-07-17 14:37:52 +02:00
76a6f28136 update to caqtable 2023-07-17 14:31:01 +02:00
6 changed files with 109 additions and 10268 deletions

View File

@@ -708,12 +708,14 @@ class PVGateway(QWidget):
def receive_monitor_dbr_time(self, pvdata, alarm_severity):
print("called from gateway", self.pv_name, alarm_severity)
print("called from gateway", self.pv_name, alarm_severity, flush=True)
pvdata.show()
def receive_monitor_update(self, value, status, alarm_severity):
'''Triggered by monitor signal. For Widget to overload.'''
self.mutex_post_display.lock()
_current_qt_dynamic_property = self.qt_dynamic_property_get()
@@ -765,6 +767,8 @@ class PVGateway(QWidget):
'''Callback function to be invoked on change of pv value.
cafe.getCache and cafe.set operations permitted within callback.
'''
self.mutex.lock()
pv_name = pvname

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -131,7 +131,6 @@ class CAQLineEdit(QLineEdit, PVGateway):
_width_scaling_factor = 1.15
self.setFixedHeight((fm.lineSpacing()*1.8))
self.setFixedWidth(((qrect.width()) * _width_scaling_factor))
if self.pv_within_daq_group:
self.qt_property_initial_values(qt_object_name=self.PV_DAQ_CA)
@@ -540,12 +539,14 @@ class CAQTextEntry(QLineEdit, PVGateway):
trigger_monitor = Signal(object, int)
trigger_connect = Signal(int, str, int)
def __init__(self, parent=None, pv_name: str = "", monitor_callback=None,
def __init__(self, parent=None, pv_name: str="", monitor_callback=None,
pv_within_daq_group: bool = False, color_mode=None,
show_units=False, prefix: str = "", suffix: str = ""):
show_units=False, prefix: str="", suffix: str="",
precision: int=0):
super().__init__(parent, pv_name, monitor_callback, pv_within_daq_group,
color_mode, show_units, prefix, suffix,
connect_callback=self.py_connect_callback)
connect_callback=self.py_connect_callback,
precision=precision)
self.is_initialize_complete() #waits a fraction of a second
@@ -575,13 +576,21 @@ class CAQTextEntry(QLineEdit, PVGateway):
def configure_widget(self):
self.setFocusPolicy(Qt.StrongFocus)
fm = QFontMetricsF(QFont("Sans Serif", 12))
f = QFont("Sans Serif")
f.setPixelSize(11)
fm = QFontMetricsF(f)
qrect = fm.boundingRect(self.suggested_text)
_width_scaling_factor = 1.15
self.setFixedHeight((fm.lineSpacing()*1.8))
self.setFixedWidth(((qrect.width()+10) * _width_scaling_factor))
_width_scaling_factor = 1.2
self.setFixedHeight(18) #(fm.lineSpacing()*1.6))
self.setFixedWidth((qrect.width()+20) * _width_scaling_factor)
self.qt_property_initial_values(qt_object_name=self.PV_CONTROLLER)
@@ -599,7 +608,7 @@ class CAQTextEntry(QLineEdit, PVGateway):
else:
valStr = ("{: .%sf}" % self.precision)
strText = valStr.format(round(val, self.precision))
print(strText, " precision ", self.precision)
#print(strText, " precision ", self.precision)
self.setText(strText)
else:
#Do this for TextInfo cache
@@ -644,7 +653,7 @@ class CAQTextEntry(QLineEdit, PVGateway):
class CAQSpinBox(QSpinBox, PVGateway):
'''Channel access enabled QTextEntry widget'''
'''Channel access enabled QSpinBox widget'''
trigger_monitor_float = Signal(float, int, int)
trigger_monitor_int = Signal(int, int, int)
trigger_monitor_str = Signal(str, int, int)
@@ -1105,25 +1114,21 @@ class reconnectQPushButton(QPushButton, QThread):
def reconnect(self):
QApplication.processEvents()
print("Reconnect")
self.isdirty = True
if self._handles_to_reconnect:
print("handles to reconnect", self._handles_to_reconnect, flush=True)
self.parent.cafe.reconnect(self._handles_to_reconnect)
print("handles reconnected", self._handles_to_reconnect, flush=True)
self.isdirty = False
#Uncheck reconnected channels
for i in range(0, len(self.parent.pv_gateway)):
#print(i, len(self.parent.pv_gateway), flush=True)
#print( "ischecked", self.parent.item(
# i, self.parent.no_columns-1).checkState(), Qt.Checked )
#print("Connected", self.parent.cafe.isConnected(
# self.parent.pv_gateway[i].handle), flush=True)
if self.parent.item(
i, self.parent.no_columns-1).checkState() == Qt.Checked:
if self.parent.cafe.isConnected(
self.parent.pv_gateway[i].handle):
#print("isConnected", flush=True)
self.parent.item(
i, self.parent.no_columns-1).setCheckState(False)
else:
@@ -1159,12 +1164,15 @@ class CAQTableWidget(QTableWidget):
return newDataFlag
def paint_rows(self, row_range: list = [], reset=False, last_row=[" ", " "],
def paint_rows(self, row_range: list=[], reset=False, last_row=[" ", " "],
columns=[0]):
_qcolor_last_line = QColor("#d1e8e9")
self.font_pts11 = QTableWidgetItem().font()
self.font_pts11.setPixelSize(11)
self.font_pts8 = QTableWidgetItem().font()
self.font_pts8.setPointSize(8)
if not row_range:
row_range = [0, self.rowCount()-1]
if reset:
_qcolor = self.item(0, self.columnCount()-1).background()
_start = 0
@@ -1175,44 +1183,45 @@ class CAQTableWidget(QTableWidget):
_end = row_range[1]
for _row in range(_start, _end):
_cell = QTableWidgetItem("{0}".format(_row+1))
if not reset:
_cell.setFont(self.font_pts11)
_cell.setBackground(_qcolor)
#if not reset:
#_cell.setFont(self.font_pts8)
if 1 in columns:
self.item(_row, 0).setBackground(_qcolor)
self.item(_row, 0).setFont(self.font_pts11)
self.item(_row, 0).setFont(self.font_pts8)
if 0 in columns:
_cell = QTableWidgetItem("{0}".format(_row+1))
#if not reset:
_cell.setFont(self.font_pts8)
#_cell.setTextAlignment(Qt.AlignCenter)
self.setVerticalHeaderItem(_row, _cell)
#last row
if reset and 0 in columns:
_cell = QTableWidgetItem("{0}".format(last_row[0]))
_cell.setFont(self.font_pts11)
_cell.setFont(self.font_pts8)
self.setVerticalHeaderItem(self.rowCount()-1, _cell)
self.item(self.rowCount()-1, 0).setTextAlignment(Qt.AlignCenter)
self.item(self.rowCount()-1, 0).setText(str(last_row[1]))
self.item(self.rowCount()-1, 0).setBackground(_qcolor)
self.item(self.rowCount()-1, 0).setFont(self.font_pts11)
self.item(self.rowCount()-1, 0).setFont(self.font_pts8)
elif last_row[0] != " ":
_cell = QTableWidgetItem("{0}".format(last_row[0]))
_cell.setBackground(_qcolor_last_line)
_cell.setFont(self.font_pts11)
_cell.setFont(self.font_pts8)
self.setVerticalHeaderItem(self.rowCount()-1, _cell)
if columns:
self.item(self.rowCount()-1, 0).setTextAlignment(Qt.AlignCenter)
self.item(self.rowCount()-1, 0).setText(str(last_row[1]))
self.item(self.rowCount()-1, 0).setBackground(_qcolor_last_line)
self.item(self.rowCount()-1, 0).setFont(self.font_pts11)
self.item(self.rowCount()-1, 0).setFont(self.font_pts8)
def widget_update(self):
""" Called when self.notif_unison is True """
for _row, pvgate in enumerate(self.pv_gateway):
if not pvgate.notify_unison:
@@ -1305,6 +1314,8 @@ class CAQTableWidget(QTableWidget):
self.item(_row, val_col_no).setBackground(
QColor(pvgate.bg_readback))
#self.item(_row, val_col_no).setBackground(
# QColor('#aeae66'))
if self.show_timestamp:
self.item(_row, ts_col_no).setBackground(
QColor(pvgate.bg_readback))
@@ -1436,6 +1447,8 @@ class CAQTableWidget(QTableWidget):
connect_triggers=False, notify_freq_hz=self.notify_freq_hz,
notify_unison=self.notify_unison, precision=self.precision)
self.pv_gateway[i].is_initialize_complete()
self.pv_gateway[i].trigger_connect.connect(
self.receive_connect_update)
@@ -1590,8 +1603,6 @@ class CAQTableWidget(QTableWidget):
return status, status_list, _pvs_to_set
def restore_init_values(self, pv_list: list = []):
_text = self.restore_value_button.text()
@@ -1830,6 +1841,9 @@ class CAQTableWidget(QTableWidget):
_column_width_timestamp = 210
_column_width_checkbox = 22
item_font = QTableWidgetItem().font()
item_font.setPixelSize(13)
self.setRowCount(len(self.pv_gateway)+1)
self.setColumnCount(self.no_columns)
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
@@ -1857,7 +1871,6 @@ class CAQTableWidget(QTableWidget):
f = qtwt.font()
f.setPointSize(8)
qtwt.setFont(f)
self.setItem(i, _pv_column, qtwt)
self.item(i, _pv_column).setTextAlignment(Qt.AlignHCenter |
Qt.AlignVCenter)
@@ -1884,9 +1897,9 @@ class CAQTableWidget(QTableWidget):
self.init_layout = QHBoxLayout(self.init_widget)
self.init_value_button = QPushButton()
self.init_value_button.setText("Update")
_f = self.init_value_button.font()
_f.setPointSize(8)
self.init_value_button.setFont(_f)
f = self.init_value_button.font()
f.setPointSize(8)
self.init_value_button.setFont(f)
self.init_value_button.setFixedWidth(64)
self.init_value_button.clicked.connect(self.update_init_values)
self.init_value_button.setToolTip(
@@ -1908,9 +1921,9 @@ class CAQTableWidget(QTableWidget):
self.restore_value_button.setStyleSheet(
"QPushButton{background-color: rgb(212, 219, 157);}")
self.restore_value_button.setText("Restore")
_f = self.restore_value_button.font()
_f.setPointSize(8)
self.restore_value_button.setFont(_f)
f = self.restore_value_button.font()
f.setPointSize(8)
self.restore_value_button.setFont(f)
self.restore_value_button.setFixedWidth(80)
self.restore_value_button.clicked.connect(self.restore_init_values)
self.restore_value_button.setToolTip(
@@ -1932,9 +1945,9 @@ class CAQTableWidget(QTableWidget):
self.standby_value_button.setStyleSheet(
"QPushButton{background-color: rgb(212, 219, 157);}")
self.standby_value_button.setText("Standby")
_f = self.standby_value_button.font()
_f.setPointSize(8)
self.standby_value_button.setFont(_f)
f = self.standby_value_button.font()
f.setPointSize(8)
self.standby_value_button.setFont(f)
self.standby_value_button.setFixedWidth(80)
self.standby_value_button.clicked.connect(self.set_standby_values)
self.standby_value_button.setToolTip(
@@ -1958,10 +1971,10 @@ class CAQTableWidget(QTableWidget):
f = self.reconnect_button.font()
if 'Timestamp' in self.columns_dict.keys():
f.setPointSize(8)
f.setPixelSize(11) #previous 13
self.reconnect_button.setFixedWidth(100)
else:
f.setPointSize(7) #6
f.setPixelSize(11) #6
self.reconnect_button.setFixedWidth(66) #58
self.reconnect_button.setFont(f)
@@ -1985,22 +1998,43 @@ class CAQTableWidget(QTableWidget):
self.cb_item_all)
if 'PV' in self.columns_dict.keys():
header_item = QTableWidgetItem("Process Variable")
f = header_item.font()
f.setPixelSize(13)
header_item.setFont(f)
self.setHorizontalHeaderItem(self.columns_dict['PV'], header_item)
if 'Init' in self.columns_dict.keys():
self.setHorizontalHeaderItem(self.columns_dict['Init'],
QTableWidgetItem("Initial Value"))
self.setHorizontalHeaderItem(self.columns_dict['Value'],
QTableWidgetItem("Value"))
header_item = QTableWidgetItem("Initial Value")
f = header_item.font()
f.setPixelSize(13)
header_item.setFont(f)
self.setHorizontalHeaderItem(self.columns_dict['Init'], header_item)
header_item = QTableWidgetItem("Value")
f = header_item.font()
f.setPixelSize(13)
header_item.setFont(f)
self.setHorizontalHeaderItem(self.columns_dict['Value'], header_item)
if 'Timestamp' in self.columns_dict.keys():
header_item = QTableWidgetItem("Timestamp")
f = header_item.font()
f.setPixelSize(13)
header_item.setFont(f)
self.setHorizontalHeaderItem(self.columns_dict['Timestamp'],
QTableWidgetItem("Timestamp"))
self.setHorizontalHeaderItem(self.columns_dict['Reconnect'],
QTableWidgetItem("R"))
header_item)
header_item = QTableWidgetItem("R")
f = header_item.font()
f.setPixelSize(13)
header_item.setFont(f)
self.setHorizontalHeaderItem(self.columns_dict['Reconnect'],
header_item)
self.setFocusPolicy(Qt.NoFocus)
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.setSelectionMode(QAbstractItemView.NoSelection)
@@ -2065,14 +2099,20 @@ class CAQTableWidget(QTableWidget):
value = value * self.scale_factor
_value = self.pv_gateway[_row].format_display_value(value)
qtwi = QTableWidgetItem(str(_value) + " ")
f = qtwi.font()
f.setPointSize(8)
qtwi.setFont(f)
qtwi.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
#qtwi.setEditTriggers(QAbstractItemView.AllEditTriggers)
self.setItem(_row, self.columns_dict['Value'], qtwi)
#self.item(_row, self.columns_dict['Value']).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
#self.item(_row, self.columns_dict['Value']).setEditTriggers(QAbstractItemView.AllEditTriggers)
self.item(_row, self.columns_dict['Value']).setTextAlignment(
Qt.AlignRight | Qt.AlignVCenter)
if 'Timestamp' in self.columns_dict.keys():
_handle = self.pv_gateway[_row].handle
_pvd = self.pv_gateway[_row].cafe.getPVCache(_handle)
@@ -2108,6 +2148,8 @@ class CAQTableWidget(QTableWidget):
_prop = self.pv_gateway[_row].qt_dynamic_property_get()
if _prop == self.pv_gateway[_row].READBACK_ALARM:
if alarm_severity == self.pv_gateway[_row].cyca.SEV_MAJOR:
@@ -2152,6 +2194,10 @@ class CAQTableWidget(QTableWidget):
elif _prop == self.pv_gateway[_row].READBACK_STATIC:
self.item(_row, self.columns_dict['Value']).setBackground(
QColor(self.pv_gateway[_row].bg_readback))
#self.item(_row, self.columns_dict['Value']).setBackground(
# QColor("#ffffe1"))
#self.item(_row, self.columns_dict['Value']).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
if 'Timestamp' in self.columns_dict.keys():
self.item(_row, self.columns_dict['Timestamp']).setBackground(
QColor(self.pv_gateway[_row].bg_readback))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff