Closed rodolakis closed 8 months ago
The Add button does not appear to have similar problem. But if I try to remove a curve, I get a similar issue:
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
doPlot called with action: add, args: ('add', {'Y': [1, 6, 12], 'X': 0})
[]
Traceback (most recent call last):
File "/Users/fannysimoes/src/mdaviz/mdaviz/chartview.py", line 307, in update_basic_math
x = self.line2D[current_label][1]
~~~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'mda_0006: 29idb:ca12:read (a.u.)'
['mda_0006: 29idb:ca12:read (a.u.)', 'mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0002: S:SRcurrentAI.VAL (mA)']
['mda_0002: S:SRcurrentAI.VAL (mA)']
['mda_0002: S:SRcurrentAI.VAL (mA)']
[]
Traceback (most recent call last):
File "/Users/fannysimoes/src/mdaviz/mdaviz/chartview.py", line 319, in updateBasicMathInfo
x = self.line2D[current_label][1]
~~~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'mda_0002: S:SRcurrentAI.VAL (mA)'
['mda_0002: S:SRcurrentAI.VAL (mA)']
Application quitting ...
This could should have been caught by:
def updateBasicMathInfo(self, *args):
if self.curveBox.count():
Adding: if self.curveBox.count() and list(self.line2D.keys()):
seems to fix that.
Tried many things but nothing I could do works:
try:
self.curveBox.currentTextChanged.disconnect(self.updateBasicMathInfo)
except TypeError:
# If there was no connection, this will catch the exception
pass
self.curveBox.currentTextChanged.connect(self.updateBasicMathInfo)
or a flag:
self.isCurveBoxConnected = False
self.setupConnections()
[...]
def setupConnections(self):
# Ensure the signal is connected only once
if not self.isCurveBoxConnected:
self.curveBox.currentTextChanged.connect(self.updateBasicMathInfo)
self.isCurveBoxConnected = True
But the same behavior continues. In the output below we can see that it does keep old connections (one of which has 3 curves instead of just the one). I am lost @prjemian :(
(mdaviz) (base) iMac:mdaviz fannysimoes$ mdaviz
Settings are saved in: /Users/fannysimoes/.config/BCDA-APS/mdaviz.ini
Application started ...
Folder path: '/Users/fannysimoes/src/mdaviz/mdaviz/data/test_folder1'
Selected file: mda_0006.mda
doPlot called with action: replace, args: ('replace', {'X': 0, 'Y': [1]})
['mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: add, args: ('add', {'Y': [1, 7], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)']
doPlot called with action: add, args: ('add', {'Y': [1, 7, 11], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
doPlot called with action: replace, args: ('replace', {'Y': [1, 7, 11], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: 29idb:ca10:read (a.u.)']
doPlot called with action: replace, args: ('replace', {'Y': [1, 7, 11], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: 29idb:ca10:read (a.u.)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
doPlot called with action: replace, args: ('replace', {'Y': [1], 'X': 0})
['mda_0006: S:SRcurrentAI.VAL (mA)', 'mda_0006: 29idb:ca2:read (a.u.)', 'mda_0006: 29idb:ca10:read (a.u.)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
['mda_0006: S:SRcurrentAI.VAL (mA)']
Note that initially, I did not have that connector. I was updating the info for the selected curve in subsequent method, but since it kept coming everywhere the selected curve changes, it seemed more elegant to have a signal/slot connection to update the info every time the QComboBox selection changes. But maybe that was a bad idea after all.
if I try to disconnect replace button:
I get crazy trigger: