@@ -3031,7 +3031,7 @@ def redraw(self, recomputeAllDeltas=True, smooth=False):
3031
3031
if self.DeltaETBflag or self.DeltaBTBflag:
3032
3032
if True: # recomputeAllDeltas:
3033
3033
tx = numpy.array(self.timeB)
3034
- dtx = numpy.diff(self.timeB) / 60.
3034
+ # dtx = numpy.diff(self.timeB) / 60.
3035
3035
with numpy.errstate(divide='ignore'):
3036
3036
# z1 = numpy.diff(self.stemp1B) / dtx
3037
3037
nt1 = numpy.array(self.stemp1B)
@@ -10150,9 +10150,9 @@ def generateFilename(self,prefix=""):
10150
10150
#automatation of filename when saving a file through keyboard shortcut. Speeds things up for batch roasting.
10151
10151
def automaticsave(self):
10152
10152
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
10156
10156
if self.qmc.autosavepath and self.qmc.autosaveflag:
10157
10157
filename = self.generateFilename(prefix=self.qmc.autosaveprefix)
10158
10158
oldDir = u(QDir.current())
@@ -24031,7 +24031,6 @@ def HOTTOP_BTET(self):
24031
24031
return tx,t1,t2 # time, ET (chan2), BT (chan1)
24032
24032
24033
24033
def HOTTOP_HF(self):
24034
- tx = aw.qmc.timeclock.elapsed()/1000.
24035
24034
return aw.qmc.hottop_TX,aw.qmc.hottop_MAIN_FAN * 10,aw.qmc.hottop_HEATER # time, Fan (chan2), Heater (chan1)
24036
24035
24037
24036
def MODBUS(self):
@@ -30428,6 +30427,36 @@ def viewmode(self):
30428
30427
####################### ALARM DIALOG #####################
30429
30428
############################################################
30430
30429
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
+
30431
30460
class AlarmDlg(ArtisanDialog):
30432
30461
def __init__(self, parent = None):
30433
30462
super(AlarmDlg,self).__init__(parent)
@@ -30541,7 +30570,9 @@ def clearalarms(self):
30541
30570
aw.qmc.alarmaction = []
30542
30571
aw.qmc.alarmbeep = []
30543
30572
aw.qmc.alarmstrings = []
30573
+ self.alarmtable.setSortingEnabled(False)
30544
30574
self.alarmtable.setRowCount(0)
30575
+ self.alarmtable.setSortingEnabled(True)
30545
30576
30546
30577
def alarmson(self,flag):
30547
30578
for i in range(len(aw.qmc.alarmflag)):
@@ -30564,26 +30595,29 @@ def addalarm(self):
30564
30595
aw.qmc.alarmaction.append(0)
30565
30596
aw.qmc.alarmbeep.append(0)
30566
30597
aw.qmc.alarmstrings.append(QApplication.translate("Label","Enter description",None, QApplication.UnicodeUTF8))
30598
+ self.alarmtable.setSortingEnabled(False)
30567
30599
nalarms = self.alarmtable.rowCount()
30568
30600
self.alarmtable.setRowCount(nalarms + 1)
30569
30601
self.setalarmtablerow(nalarms)
30570
30602
self.alarmtable.resizeColumnsToContents()
30571
30603
self.alarmtable.resizeRowsToContents()
30572
30604
# improve width of Qlineedit columns
30573
- self.alarmtable.setColumnWidth(1,50)
30574
30605
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)
30578
30610
header = self.alarmtable.horizontalHeader()
30579
30611
header.setStretchLastSection(False)
30580
30612
self.deselectAll()
30581
30613
# select newly added row i.e. the last one
30582
30614
self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(nalarms,0,nalarms,self.alarmtable.columnCount()-1),True)
30583
30615
header.setStretchLastSection(True)
30584
30616
self.markNotEnabledAlarmRows()
30617
+ self.alarmtable.setSortingEnabled(True)
30585
30618
30586
30619
def insertalarm(self):
30620
+ self.alarmtable.setSortingEnabled(False)
30587
30621
nalarms = self.alarmtable.rowCount()
30588
30622
if nalarms:
30589
30623
# check for selection
@@ -30606,20 +30640,22 @@ def insertalarm(self):
30606
30640
self.setalarmtablerow(selected_row)
30607
30641
self.alarmtable.resizeColumnsToContents()
30608
30642
# improve width of Qlineedit columns
30609
- self.alarmtable.setColumnWidth(1,50)
30610
30643
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)
30614
30648
header = self.alarmtable.horizontalHeader()
30615
30649
header.setStretchLastSection(False)
30616
30650
self.deselectAll()
30617
30651
# select newly inserted item
30618
30652
self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(selected_row,0,selected_row,self.alarmtable.columnCount()-1),True)
30619
30653
header.setStretchLastSection(True)
30620
30654
self.markNotEnabledAlarmRows()
30655
+ self.alarmtable.setSortingEnabled(True)
30621
30656
30622
30657
def deletealarm(self):
30658
+ self.alarmtable.setSortingEnabled(False)
30623
30659
nalarms = self.alarmtable.rowCount()
30624
30660
if nalarms:
30625
30661
# check for selection
@@ -30661,6 +30697,7 @@ def deletealarm(self):
30661
30697
self.alarmtable.setRowCount(nalarms - 1)
30662
30698
self.deselectAll()
30663
30699
self.markNotEnabledAlarmRows()
30700
+ self.alarmtable.setSortingEnabled(True)
30664
30701
30665
30702
def importalarms(self):
30666
30703
aw.fileImport(QApplication.translate("Message", "Load Alarms",None, QApplication.UnicodeUTF8),self.importalarmsJSON)
@@ -30764,9 +30801,9 @@ def savealarms(self):
30764
30801
aw.qmc.alarmbeep = [0]*nalarms
30765
30802
aw.qmc.alarmstrings = [""]*nalarms
30766
30803
for i in range(nalarms):
30767
- flag = self.alarmtable.cellWidget(i,0 )
30804
+ flag = self.alarmtable.cellWidget(i,1 )
30768
30805
aw.qmc.alarmflag[i] = int(flag.isChecked())
30769
- guard = self.alarmtable.cellWidget(i,1 )
30806
+ guard = self.alarmtable.cellWidget(i,2 )
30770
30807
try:
30771
30808
guard_value = int(str(guard.text())) - 1
30772
30809
except:
@@ -30775,7 +30812,7 @@ def savealarms(self):
30775
30812
aw.qmc.alarmguard[i] = guard_value
30776
30813
else:
30777
30814
aw.qmc.alarmguard[i] = -1
30778
- negguard = self.alarmtable.cellWidget(i,2 )
30815
+ negguard = self.alarmtable.cellWidget(i,3 )
30779
30816
try:
30780
30817
negguard_value = int(str(negguard.text())) - 1
30781
30818
except:
@@ -30784,27 +30821,27 @@ def savealarms(self):
30784
30821
aw.qmc.alarmnegguard[i] = negguard_value
30785
30822
else:
30786
30823
aw.qmc.alarmnegguard[i] = -1
30787
- timez = self.alarmtable.cellWidget(i,3 )
30824
+ timez = self.alarmtable.cellWidget(i,4 )
30788
30825
aw.qmc.alarmtime[i] = aw.qmc.menuidx2alarmtime[timez.currentIndex()]
30789
- offset = self.alarmtable.cellWidget(i,4 )
30826
+ offset = self.alarmtable.cellWidget(i,5 )
30790
30827
if offset and offset != "":
30791
30828
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 )
30793
30830
aw.qmc.alarmsource[i] = int(str(atype.currentIndex())) - 3
30794
- cond = self.alarmtable.cellWidget(i,6 )
30831
+ cond = self.alarmtable.cellWidget(i,7 )
30795
30832
aw.qmc.alarmcond[i] = int(str(cond.currentIndex()))
30796
- temp = self.alarmtable.cellWidget(i,7 )
30833
+ temp = self.alarmtable.cellWidget(i,8 )
30797
30834
try:
30798
30835
aw.qmc.alarmtemperature[i] = int(str(temp.text()))
30799
30836
except:
30800
30837
aw.qmc.alarmtemperature[i] = 0
30801
- action = self.alarmtable.cellWidget(i,8 )
30838
+ action = self.alarmtable.cellWidget(i,9 )
30802
30839
aw.qmc.alarmaction[i] = int(str(action.currentIndex() - 1))
30803
- beepWidget = self.alarmtable.cellWidget(i,9 )
30840
+ beepWidget = self.alarmtable.cellWidget(i,10 )
30804
30841
beep = beepWidget.layout().itemAt(1).widget()
30805
30842
if beep and beep != None:
30806
30843
aw.qmc.alarmbeep[i] = int(beep.isChecked())
30807
- description = self.alarmtable.cellWidget(i,10 )
30844
+ description = self.alarmtable.cellWidget(i,11 )
30808
30845
aw.qmc.alarmstrings[i] = u(description.text())
30809
30846
except Exception as ex:
30810
30847
_, _, exc_tb = sys.exc_info()
@@ -30923,32 +30960,45 @@ def setalarmtablerow(self,i):
30923
30960
#text description
30924
30961
descriptionedit = QLineEdit(u(aw.qmc.alarmstrings[i]))
30925
30962
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))
30937
30986
30938
30987
# puts a gray background on alarm rows that have already been fired
30939
30988
def markNotEnabledAlarmRows(self):
30940
30989
for i in range(self.alarmtable.rowCount()):
30941
- for j in range(10 ):
30990
+ for j in range(11 ):
30942
30991
if aw.qmc.alarmstate[i]:
30943
- self.alarmtable.setItem(i,j,QTableWidgetItem())
30992
+ # self.alarmtable.setItem(i,j,QTableWidgetItem())
30944
30993
self.alarmtable.item(i,j).setBackgroundColor(QColor(191, 191, 191))
30945
30994
30946
30995
def createalarmtable(self):
30947
30996
try:
30948
30997
self.alarmtable.clear()
30949
30998
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),
30952
31002
QApplication.translate("Table","If Alarm",None, QApplication.UnicodeUTF8),
30953
31003
QApplication.translate("Table","But Not",None, QApplication.UnicodeUTF8),
30954
31004
QApplication.translate("Table","From",None, QApplication.UnicodeUTF8),
@@ -30966,21 +31016,24 @@ def createalarmtable(self):
30966
31016
self.alarmtable.setShowGrid(True)
30967
31017
nalarms = len(aw.qmc.alarmtemperature)
30968
31018
self.alarmtable.verticalHeader().setResizeMode(2)
31019
+ self.alarmtable.verticalHeader().setVisible(False)
31020
+ self.alarmtable.setSortingEnabled(False)
30969
31021
if nalarms:
30970
31022
self.alarmtable.setRowCount(nalarms)
30971
31023
#populate table
30972
31024
for i in range(nalarms):
30973
31025
self.setalarmtablerow(i)
30974
31026
self.alarmtable.resizeColumnsToContents()
30975
31027
# improve width of Qlineedit columns
30976
- self.alarmtable.setColumnWidth(1,50)
30977
31028
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)
30981
31033
header = self.alarmtable.horizontalHeader()
30982
31034
header.setStretchLastSection(True)
30983
31035
self.markNotEnabledAlarmRows()
31036
+ self.alarmtable.setSortingEnabled(True)
30984
31037
except Exception as ex:
30985
31038
_, _, exc_tb = sys.exc_info()
30986
31039
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):
31664
31717
else:
31665
31718
msg = aw.fujipid.message2send(aw.ser.controlETpid[1],3,aw.fujipid.PXR["rampsoakmode"][1],1)
31666
31719
currentmode = aw.fujipid.readoneword(msg)
31667
- currentmode = 0
31668
31720
aw.fujipid.PXR["rampsoakmode"][0] = currentmode
31669
31721
if currentmode == 0:
31670
31722
mode = ["0",
0 commit comments