Skip to content

Commit 6e95d9b

Browse files
committed
adds alarm table sorting
1 parent 9ba89d5 commit 6e95d9b

File tree

1 file changed

+96
-44
lines changed

1 file changed

+96
-44
lines changed

artisanlib/main.py

+96-44
Original file line numberDiff line numberDiff line change
@@ -3031,7 +3031,7 @@ def redraw(self, recomputeAllDeltas=True, smooth=False):
30313031
if self.DeltaETBflag or self.DeltaBTBflag:
30323032
if True: # recomputeAllDeltas:
30333033
tx = numpy.array(self.timeB)
3034-
dtx = numpy.diff(self.timeB) / 60.
3034+
# dtx = numpy.diff(self.timeB) / 60.
30353035
with numpy.errstate(divide='ignore'):
30363036
# z1 = numpy.diff(self.stemp1B) / dtx
30373037
nt1 = numpy.array(self.stemp1B)
@@ -10150,9 +10150,9 @@ def generateFilename(self,prefix=""):
1015010150
#automatation of filename when saving a file through keyboard shortcut. Speeds things up for batch roasting.
1015110151
def automaticsave(self):
1015210152
try:
10153-
title = None
10154-
if aw.qmc.title != "" and aw.qmc.title != QApplication.translate("Scope Title", "Roaster Scope",None, QApplication.UnicodeUTF8):
10155-
title = aw.qmc.title
10153+
# title = None
10154+
# if aw.qmc.title != "" and aw.qmc.title != QApplication.translate("Scope Title", "Roaster Scope",None, QApplication.UnicodeUTF8):
10155+
# title = aw.qmc.title
1015610156
if self.qmc.autosavepath and self.qmc.autosaveflag:
1015710157
filename = self.generateFilename(prefix=self.qmc.autosaveprefix)
1015810158
oldDir = u(QDir.current())
@@ -24031,7 +24031,6 @@ def HOTTOP_BTET(self):
2403124031
return tx,t1,t2 # time, ET (chan2), BT (chan1)
2403224032

2403324033
def HOTTOP_HF(self):
24034-
tx = aw.qmc.timeclock.elapsed()/1000.
2403524034
return aw.qmc.hottop_TX,aw.qmc.hottop_MAIN_FAN * 10,aw.qmc.hottop_HEATER # time, Fan (chan2), Heater (chan1)
2403624035

2403724036
def MODBUS(self):
@@ -30428,6 +30427,36 @@ def viewmode(self):
3042830427
####################### ALARM DIALOG #####################
3042930428
############################################################
3043030429

30430+
class MyTableWidgetItemQLineEdit(QTableWidgetItem):
30431+
def __init__(self, sortKey):
30432+
#call custom constructor with UserType item type
30433+
QTableWidgetItem.__init__(self, "", QTableWidgetItem.UserType)
30434+
self.sortKey = sortKey
30435+
30436+
#Qt uses a simple < check for sorting items, override this to use the sortKey
30437+
def __lt__(self, other):
30438+
return self.sortKey.text() < other.sortKey.text()
30439+
30440+
class MyTableWidgetItemQCheckBox(QTableWidgetItem):
30441+
def __init__(self, sortKey):
30442+
#call custom constructor with UserType item type
30443+
QTableWidgetItem.__init__(self, "", QTableWidgetItem.UserType)
30444+
self.sortKey = sortKey
30445+
30446+
#Qt uses a simple < check for sorting items, override this to use the sortKey
30447+
def __lt__(self, other):
30448+
return self.sortKey.isChecked() < other.sortKey.isChecked()
30449+
30450+
class MyTableWidgetItemQComboBox(QTableWidgetItem):
30451+
def __init__(self, sortKey):
30452+
#call custom constructor with UserType item type
30453+
QTableWidgetItem.__init__(self, "", QTableWidgetItem.UserType)
30454+
self.sortKey = sortKey
30455+
30456+
#Qt uses a simple < check for sorting items, override this to use the sortKey
30457+
def __lt__(self, other):
30458+
return str(self.sortKey.currentText()) < str(other.sortKey.currentText())
30459+
3043130460
class AlarmDlg(ArtisanDialog):
3043230461
def __init__(self, parent = None):
3043330462
super(AlarmDlg,self).__init__(parent)
@@ -30541,7 +30570,9 @@ def clearalarms(self):
3054130570
aw.qmc.alarmaction = []
3054230571
aw.qmc.alarmbeep = []
3054330572
aw.qmc.alarmstrings = []
30573+
self.alarmtable.setSortingEnabled(False)
3054430574
self.alarmtable.setRowCount(0)
30575+
self.alarmtable.setSortingEnabled(True)
3054530576

3054630577
def alarmson(self,flag):
3054730578
for i in range(len(aw.qmc.alarmflag)):
@@ -30564,26 +30595,29 @@ def addalarm(self):
3056430595
aw.qmc.alarmaction.append(0)
3056530596
aw.qmc.alarmbeep.append(0)
3056630597
aw.qmc.alarmstrings.append(QApplication.translate("Label","Enter description",None, QApplication.UnicodeUTF8))
30598+
self.alarmtable.setSortingEnabled(False)
3056730599
nalarms = self.alarmtable.rowCount()
3056830600
self.alarmtable.setRowCount(nalarms + 1)
3056930601
self.setalarmtablerow(nalarms)
3057030602
self.alarmtable.resizeColumnsToContents()
3057130603
self.alarmtable.resizeRowsToContents()
3057230604
# improve width of Qlineedit columns
30573-
self.alarmtable.setColumnWidth(1,50)
3057430605
self.alarmtable.setColumnWidth(2,50)
30575-
self.alarmtable.setColumnWidth(4,50)
30576-
self.alarmtable.setColumnWidth(5,80)
30577-
self.alarmtable.setColumnWidth(7,40)
30606+
self.alarmtable.setColumnWidth(3,50)
30607+
self.alarmtable.setColumnWidth(5,50)
30608+
self.alarmtable.setColumnWidth(6,80)
30609+
self.alarmtable.setColumnWidth(8,40)
3057830610
header = self.alarmtable.horizontalHeader()
3057930611
header.setStretchLastSection(False)
3058030612
self.deselectAll()
3058130613
# select newly added row i.e. the last one
3058230614
self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(nalarms,0,nalarms,self.alarmtable.columnCount()-1),True)
3058330615
header.setStretchLastSection(True)
3058430616
self.markNotEnabledAlarmRows()
30617+
self.alarmtable.setSortingEnabled(True)
3058530618

3058630619
def insertalarm(self):
30620+
self.alarmtable.setSortingEnabled(False)
3058730621
nalarms = self.alarmtable.rowCount()
3058830622
if nalarms:
3058930623
# check for selection
@@ -30606,20 +30640,22 @@ def insertalarm(self):
3060630640
self.setalarmtablerow(selected_row)
3060730641
self.alarmtable.resizeColumnsToContents()
3060830642
# improve width of Qlineedit columns
30609-
self.alarmtable.setColumnWidth(1,50)
3061030643
self.alarmtable.setColumnWidth(2,50)
30611-
self.alarmtable.setColumnWidth(4,50)
30612-
self.alarmtable.setColumnWidth(5,80)
30613-
self.alarmtable.setColumnWidth(7,40)
30644+
self.alarmtable.setColumnWidth(3,50)
30645+
self.alarmtable.setColumnWidth(5,50)
30646+
self.alarmtable.setColumnWidth(6,80)
30647+
self.alarmtable.setColumnWidth(8,40)
3061430648
header = self.alarmtable.horizontalHeader()
3061530649
header.setStretchLastSection(False)
3061630650
self.deselectAll()
3061730651
# select newly inserted item
3061830652
self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(selected_row,0,selected_row,self.alarmtable.columnCount()-1),True)
3061930653
header.setStretchLastSection(True)
3062030654
self.markNotEnabledAlarmRows()
30655+
self.alarmtable.setSortingEnabled(True)
3062130656

3062230657
def deletealarm(self):
30658+
self.alarmtable.setSortingEnabled(False)
3062330659
nalarms = self.alarmtable.rowCount()
3062430660
if nalarms:
3062530661
# check for selection
@@ -30661,6 +30697,7 @@ def deletealarm(self):
3066130697
self.alarmtable.setRowCount(nalarms - 1)
3066230698
self.deselectAll()
3066330699
self.markNotEnabledAlarmRows()
30700+
self.alarmtable.setSortingEnabled(True)
3066430701

3066530702
def importalarms(self):
3066630703
aw.fileImport(QApplication.translate("Message", "Load Alarms",None, QApplication.UnicodeUTF8),self.importalarmsJSON)
@@ -30764,9 +30801,9 @@ def savealarms(self):
3076430801
aw.qmc.alarmbeep = [0]*nalarms
3076530802
aw.qmc.alarmstrings = [""]*nalarms
3076630803
for i in range(nalarms):
30767-
flag = self.alarmtable.cellWidget(i,0)
30804+
flag = self.alarmtable.cellWidget(i,1)
3076830805
aw.qmc.alarmflag[i] = int(flag.isChecked())
30769-
guard = self.alarmtable.cellWidget(i,1)
30806+
guard = self.alarmtable.cellWidget(i,2)
3077030807
try:
3077130808
guard_value = int(str(guard.text())) - 1
3077230809
except:
@@ -30775,7 +30812,7 @@ def savealarms(self):
3077530812
aw.qmc.alarmguard[i] = guard_value
3077630813
else:
3077730814
aw.qmc.alarmguard[i] = -1
30778-
negguard = self.alarmtable.cellWidget(i,2)
30815+
negguard = self.alarmtable.cellWidget(i,3)
3077930816
try:
3078030817
negguard_value = int(str(negguard.text())) - 1
3078130818
except:
@@ -30784,27 +30821,27 @@ def savealarms(self):
3078430821
aw.qmc.alarmnegguard[i] = negguard_value
3078530822
else:
3078630823
aw.qmc.alarmnegguard[i] = -1
30787-
timez = self.alarmtable.cellWidget(i,3)
30824+
timez = self.alarmtable.cellWidget(i,4)
3078830825
aw.qmc.alarmtime[i] = aw.qmc.menuidx2alarmtime[timez.currentIndex()]
30789-
offset = self.alarmtable.cellWidget(i,4)
30826+
offset = self.alarmtable.cellWidget(i,5)
3079030827
if offset and offset != "":
3079130828
aw.qmc.alarmoffset[i] = max(0,aw.qmc.stringtoseconds(str(offset.text())))
30792-
atype = self.alarmtable.cellWidget(i,5)
30829+
atype = self.alarmtable.cellWidget(i,6)
3079330830
aw.qmc.alarmsource[i] = int(str(atype.currentIndex())) - 3
30794-
cond = self.alarmtable.cellWidget(i,6)
30831+
cond = self.alarmtable.cellWidget(i,7)
3079530832
aw.qmc.alarmcond[i] = int(str(cond.currentIndex()))
30796-
temp = self.alarmtable.cellWidget(i,7)
30833+
temp = self.alarmtable.cellWidget(i,8)
3079730834
try:
3079830835
aw.qmc.alarmtemperature[i] = int(str(temp.text()))
3079930836
except:
3080030837
aw.qmc.alarmtemperature[i] = 0
30801-
action = self.alarmtable.cellWidget(i,8)
30838+
action = self.alarmtable.cellWidget(i,9)
3080230839
aw.qmc.alarmaction[i] = int(str(action.currentIndex() - 1))
30803-
beepWidget = self.alarmtable.cellWidget(i,9)
30840+
beepWidget = self.alarmtable.cellWidget(i,10)
3080430841
beep = beepWidget.layout().itemAt(1).widget()
3080530842
if beep and beep != None:
3080630843
aw.qmc.alarmbeep[i] = int(beep.isChecked())
30807-
description = self.alarmtable.cellWidget(i,10)
30844+
description = self.alarmtable.cellWidget(i,11)
3080830845
aw.qmc.alarmstrings[i] = u(description.text())
3080930846
except Exception as ex:
3081030847
_, _, exc_tb = sys.exc_info()
@@ -30923,32 +30960,45 @@ def setalarmtablerow(self,i):
3092330960
#text description
3092430961
descriptionedit = QLineEdit(u(aw.qmc.alarmstrings[i]))
3092530962
descriptionedit.setCursorPosition(0)
30926-
self.alarmtable.setCellWidget(i,0,flagComboBox)
30927-
self.alarmtable.setCellWidget(i,1,guardedit)
30928-
self.alarmtable.setCellWidget(i,2,negguardedit)
30929-
self.alarmtable.setCellWidget(i,3,timeComboBox)
30930-
self.alarmtable.setCellWidget(i,4,timeoffsetedit)
30931-
self.alarmtable.setCellWidget(i,5,typeComboBox)
30932-
self.alarmtable.setCellWidget(i,6,condComboBox)
30933-
self.alarmtable.setCellWidget(i,7,tempedit)
30934-
self.alarmtable.setCellWidget(i,8,actionComboBox)
30935-
self.alarmtable.setCellWidget(i,9,beepWidget)
30936-
self.alarmtable.setCellWidget(i,10,descriptionedit)
30963+
self.alarmtable.setItem (i, 0, QTableWidgetItem(str(i)))
30964+
self.alarmtable.setCellWidget(i,1,flagComboBox)
30965+
self.alarmtable.setItem (i, 1, MyTableWidgetItemQCheckBox(flagComboBox))
30966+
self.alarmtable.setCellWidget(i,2,guardedit)
30967+
self.alarmtable.setItem (i, 2, MyTableWidgetItemQLineEdit(guardedit))
30968+
self.alarmtable.setCellWidget(i,3,negguardedit)
30969+
self.alarmtable.setItem (i, 3, MyTableWidgetItemQLineEdit(negguardedit))
30970+
self.alarmtable.setCellWidget(i,4,timeComboBox)
30971+
self.alarmtable.setItem (i, 4, MyTableWidgetItemQComboBox(timeComboBox))
30972+
self.alarmtable.setCellWidget(i,5,timeoffsetedit)
30973+
self.alarmtable.setItem (i, 5, MyTableWidgetItemQLineEdit(timeoffsetedit))
30974+
self.alarmtable.setCellWidget(i,6,typeComboBox)
30975+
self.alarmtable.setItem (i, 6, MyTableWidgetItemQComboBox(typeComboBox))
30976+
self.alarmtable.setCellWidget(i,7,condComboBox)
30977+
self.alarmtable.setItem (i, 7, MyTableWidgetItemQComboBox(condComboBox))
30978+
self.alarmtable.setCellWidget(i,8,tempedit)
30979+
self.alarmtable.setItem (i, 8, MyTableWidgetItemQLineEdit(tempedit))
30980+
self.alarmtable.setCellWidget(i,9,actionComboBox)
30981+
self.alarmtable.setItem (i, 9, MyTableWidgetItemQComboBox(actionComboBox))
30982+
self.alarmtable.setCellWidget(i,10,beepWidget)
30983+
self.alarmtable.setItem (i, 10, MyTableWidgetItemQCheckBox(beepWidget.layout().itemAt(1).widget()))
30984+
self.alarmtable.setCellWidget(i,11,descriptionedit)
30985+
self.alarmtable.setItem (i, 11, MyTableWidgetItemQLineEdit(descriptionedit))
3093730986

3093830987
# puts a gray background on alarm rows that have already been fired
3093930988
def markNotEnabledAlarmRows(self):
3094030989
for i in range(self.alarmtable.rowCount()):
30941-
for j in range(10):
30990+
for j in range(11):
3094230991
if aw.qmc.alarmstate[i]:
30943-
self.alarmtable.setItem(i,j,QTableWidgetItem())
30992+
#self.alarmtable.setItem(i,j,QTableWidgetItem())
3094430993
self.alarmtable.item(i,j).setBackgroundColor(QColor(191, 191, 191))
3094530994

3094630995
def createalarmtable(self):
3094730996
try:
3094830997
self.alarmtable.clear()
3094930998
self.alarmtable.setTabKeyNavigation(True)
30950-
self.alarmtable.setColumnCount(11)
30951-
self.alarmtable.setHorizontalHeaderLabels([QApplication.translate("Table","Status",None, QApplication.UnicodeUTF8),
30999+
self.alarmtable.setColumnCount(12)
31000+
self.alarmtable.setHorizontalHeaderLabels([QApplication.translate("Table","Nr",None, QApplication.UnicodeUTF8),
31001+
QApplication.translate("Table","Status",None, QApplication.UnicodeUTF8),
3095231002
QApplication.translate("Table","If Alarm",None, QApplication.UnicodeUTF8),
3095331003
QApplication.translate("Table","But Not",None, QApplication.UnicodeUTF8),
3095431004
QApplication.translate("Table","From",None, QApplication.UnicodeUTF8),
@@ -30966,21 +31016,24 @@ def createalarmtable(self):
3096631016
self.alarmtable.setShowGrid(True)
3096731017
nalarms = len(aw.qmc.alarmtemperature)
3096831018
self.alarmtable.verticalHeader().setResizeMode(2)
31019+
self.alarmtable.verticalHeader().setVisible(False)
31020+
self.alarmtable.setSortingEnabled(False)
3096931021
if nalarms:
3097031022
self.alarmtable.setRowCount(nalarms)
3097131023
#populate table
3097231024
for i in range(nalarms):
3097331025
self.setalarmtablerow(i)
3097431026
self.alarmtable.resizeColumnsToContents()
3097531027
# improve width of Qlineedit columns
30976-
self.alarmtable.setColumnWidth(1,50)
3097731028
self.alarmtable.setColumnWidth(2,50)
30978-
self.alarmtable.setColumnWidth(4,50)
30979-
self.alarmtable.setColumnWidth(5,80)
30980-
self.alarmtable.setColumnWidth(7,40)
31029+
self.alarmtable.setColumnWidth(3,50)
31030+
self.alarmtable.setColumnWidth(5,50)
31031+
self.alarmtable.setColumnWidth(6,80)
31032+
self.alarmtable.setColumnWidth(8,40)
3098131033
header = self.alarmtable.horizontalHeader()
3098231034
header.setStretchLastSection(True)
3098331035
self.markNotEnabledAlarmRows()
31036+
self.alarmtable.setSortingEnabled(True)
3098431037
except Exception as ex:
3098531038
_, _, exc_tb = sys.exc_info()
3098631039
aw.qmc.adderror((QApplication.translate("Error Message","Exception:",None, QApplication.UnicodeUTF8) + " createalarmtable() %1").arg(str(ex)),exc_tb.tb_lineno)
@@ -31664,7 +31717,6 @@ def checkrampsoakmode(self):
3166431717
else:
3166531718
msg = aw.fujipid.message2send(aw.ser.controlETpid[1],3,aw.fujipid.PXR["rampsoakmode"][1],1)
3166631719
currentmode = aw.fujipid.readoneword(msg)
31667-
currentmode = 0
3166831720
aw.fujipid.PXR["rampsoakmode"][0] = currentmode
3166931721
if currentmode == 0:
3167031722
mode = ["0",

0 commit comments

Comments
 (0)