Skip to content

Commit 03b4981

Browse files
authored
Merge pull request #235 from zhujun98/fix_bug_in_data_source_tree
Fix bug in data source tree
2 parents 1598f3b + 166b7fd commit 03b4981

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

docs/images/data_source_tree.png

25.2 KB
Loading

extra_foam/gui/ctrl_widgets/data_source_widget.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,17 @@ def setData(self, index, value, role=None) -> bool:
281281
self.dataChanged.emit(index.sibling(i, 0),
282282
index.siblingAtRow(i))
283283
self.source_item_toggled_sgn.emit(
284-
False,
285-
f'{item_sb.name()} {item_sb.ppt()}')
284+
False, f'{item_sb.name()} {item_sb.ppt()}')
286285
break
287286

288287
item.setChecked(value)
289288
else: # role == Qt.EditRole
289+
old_src_name = item.name()
290+
old_ppt = item.ppt()
290291
item.setData(value, index.column())
292+
# remove registered item with the old device ID and property
293+
self.source_item_toggled_sgn.emit(
294+
False, f'{old_src_name} {old_ppt}')
291295

292296
main_det = config["DETECTOR"]
293297
ctg = item.parent().name()

extra_foam/gui/ctrl_widgets/tests/test_data_source_widget.py

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -212,23 +212,35 @@ def testDataSourceTreeModelPs(self, control_sources, pipeline_sources):
212212
spy = QtTest.QSignalSpy(model.source_item_toggled_sgn)
213213
# change device ID
214214
model.setData(model.index(0, 2, dssc_ctg), 'A+', Qt.EditRole)
215-
self.assertEqual(1, len(spy))
216-
self.assertTrue(spy[0][0])
217-
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a', '[None, None]', '', 1), spy[0][1])
215+
self.assertEqual(2, len(spy))
216+
# check signal for deleting old source
217+
self.assertFalse(spy[0][0])
218+
self.assertEqual('A a', spy[0][1])
219+
# check signal for adding new source
220+
self.assertTrue(spy[1][0])
221+
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a', '[None, None]', '', 1), spy[1][1])
218222

219223
spy = QtTest.QSignalSpy(model.source_item_toggled_sgn)
220224
# change property
221225
model.setData(model.index(0, 3, dssc_ctg), 'a-', Qt.EditRole)
222-
self.assertEqual(1, len(spy))
223-
self.assertTrue(spy[0][0])
224-
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a-', '[None, None]', '', 1), spy[0][1])
226+
self.assertEqual(2, len(spy))
227+
# check signal for deleting old source
228+
self.assertFalse(spy[0][0])
229+
self.assertEqual('A+ a', spy[0][1])
230+
# check signal for adding new source
231+
self.assertTrue(spy[1][0])
232+
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a-', '[None, None]', '', 1), spy[1][1])
225233

226234
spy = QtTest.QSignalSpy(model.source_item_toggled_sgn)
227235
# change slicer
228236
model.setData(model.index(0, 4, dssc_ctg), '::2', Qt.EditRole)
229-
self.assertEqual(1, len(spy))
230-
self.assertTrue(spy[0][0])
231-
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a-', '[None, None, 2]', '', 1), spy[0][1])
237+
self.assertEqual(2, len(spy))
238+
# check signal for deleting old source
239+
self.assertFalse(spy[0][0])
240+
# deleting does not check slicer
241+
# check signal for adding new source
242+
self.assertTrue(spy[1][0])
243+
self.assertTupleEqual(('DSSC', 'A+', '[]', 'a-', '[None, None, 2]', '', 1), spy[1][1])
232244

233245
spy = QtTest.QSignalSpy(model.source_item_toggled_sgn)
234246
# change a DSSC source
@@ -313,9 +325,13 @@ def testDataSourceTreeModelPs(self, control_sources, pipeline_sources):
313325
spy = QtTest.QSignalSpy(model.source_item_toggled_sgn)
314326
# change slicer
315327
model.setData(model.index(1, 5, xgm_ctg), '-1, 1', Qt.EditRole)
316-
self.assertEqual(1, len(spy))
317-
self.assertTrue(spy[0][0])
318-
self.assertTupleEqual(('XGM', 'XA', '[]', 'flux', '', '(-1.0, 1.0)', 0), spy[0][1])
328+
self.assertEqual(2, len(spy))
329+
# delete old source
330+
self.assertFalse(spy[0][0])
331+
# deleting does not check range
332+
# add new source
333+
self.assertTrue(spy[1][0])
334+
self.assertTupleEqual(('XGM', 'XA', '[]', 'flux', '', '(-1.0, 1.0)', 0), spy[1][1])
319335

320336
@patch.dict(config._data, {"PULSE_RESOLVED": False})
321337
@patch.object(ConfigWrapper, "pipeline_sources", new_callable=PropertyMock)

0 commit comments

Comments
 (0)