Skip to content

Commit 99f3e41

Browse files
authored
Merge pull request #10 from TheJacksonLaboratory/dev
Fix bugs with user interface
2 parents 18a7118 + bff9796 commit 99f3e41

File tree

2 files changed

+41
-33
lines changed

2 files changed

+41
-33
lines changed

src/napari_activelearning/_interface.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,17 @@ def clear_layer_channel(self):
100100
while self._curr_scale_le_list:
101101
item = self._curr_scale_le_list.pop()
102102
self.edit_scale_lyt.removeWidget(item)
103+
item.deleteLater()
103104

104105
while self._curr_labels_list:
105106
item = self._curr_labels_list.pop()
106107
self.edit_scale_lyt.removeWidget(item)
108+
item.deleteLater()
107109

108110
while self._curr_power_spn_list:
109111
item = self._curr_power_spn_list.pop()
110112
self.edit_scale_lyt.removeWidget(item)
113+
item.deleteLater()
111114

112115
def update_spin_boxes(self):
113116
self.clear_layer_channel()
@@ -129,7 +132,7 @@ def update_spin_boxes(self):
129132
0)
130133

131134
scale_le.textChanged.connect(
132-
partial(self._set_patch_size)
135+
self._set_patch_size
133136
)
134137
power_spn.valueChanged.connect(
135138
partial(self._modify_size, ax_idx=ax_idx)
@@ -771,7 +774,8 @@ def focus_region(self, label: Optional[QTreeWidgetItem] = None,
771774
super(LabelsManagerWidget, self).focus_region(label,
772775
edit_focused_label)
773776

774-
self.edit_labels_btn.setEnabled(self._active_label is not None)
777+
self.edit_labels_btn.setEnabled(self._active_label is not None
778+
and not edit_focused_label)
775779
self.remove_labels_btn.setEnabled(self._active_label is not None)
776780
self.remove_labels_group_btn.setEnabled(
777781
self._active_label_group is not None
@@ -785,7 +789,7 @@ def focus_region(self, label: Optional[QTreeWidgetItem] = None,
785789
def edit_labels(self):
786790
editing = super(LabelsManagerWidget, self).edit_labels()
787791
self.commit_btn.setEnabled(editing)
788-
self.edit_labels_btn.setEnabled(editing)
792+
self.edit_labels_btn.setEnabled(not editing)
789793

790794
def commit(self):
791795
super(LabelsManagerWidget, self).commit()

src/napari_activelearning/_labels.py

+34-30
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ def acquisition_val(self, new_acquisition_val: float):
6060
self._acquisition_val = new_acquisition_val
6161
self.setText(0, str(self._acquisition_val))
6262

63+
def __gt__(self, other_label):
64+
return self._acquisition_val > other_label._acquisition_val
65+
6366

6467
class LabelGroup(QTreeWidgetItem):
6568
_layer_channel = None
@@ -208,20 +211,21 @@ def remove_labels(self):
208211

209212
self._active_label_group.removeChild(self._active_label)
210213
if not self._active_label_group.childCount():
211-
self.remove_labels_group(self._active_label_group)
214+
self.remove_labels_group()
212215

213-
self._active_label = None
216+
self._requires_commit = False
217+
self.commit()
214218

215219
def remove_labels_group(self):
216220
if self._active_label_group is None:
217221
return
218222

219223
self.labels_group_root.removeChild(self._active_label_group)
220-
self._active_label_group = None
224+
self._requires_commit = False
225+
self.commit()
221226

222227
def navigate(self, delta_patch_index=0, delta_image_index=0):
223-
if self._requires_commit:
224-
self.commit()
228+
self.commit()
225229

226230
self._active_label_group = self._active_label.parent()
227231
patch_index = self._active_label_group.indexOfChild(
@@ -403,40 +407,40 @@ def edit_labels(self):
403407
return True
404408

405409
def commit(self):
406-
if not self._requires_commit:
407-
return
408-
409-
edit_data = None
410-
if self._active_edit_layer:
411-
edit_data = self._active_edit_layer.data
412-
413410
segmentation_channel_layer = None
414411
segmentation_channel_data = None
415-
if self._active_layers_group:
416-
segmentation_channel = self._active_layers_group.child(0)
417-
segmentation_channel_layer = segmentation_channel.layer
418-
if isinstance(segmentation_channel.layer.data, MultiScaleData):
419-
segmentation_channel_data = segmentation_channel_layer.data[0]
420-
else:
421-
segmentation_channel_data = segmentation_channel_layer.data
422-
423-
if isinstance(self._transaction, ts.Transaction):
424-
self._transaction.commit_async()
425-
elif (self._active_label.position is not None
426-
and segmentation_channel_data is not None):
427-
segmentation_channel_data[self._active_label.position] = edit_data
412+
edit_data = None
428413

429-
if segmentation_channel_layer:
430-
segmentation_channel_layer.refresh()
431-
segmentation_channel_layer.visible = True
414+
if self._requires_commit:
415+
if self._active_edit_layer:
416+
edit_data = self._active_edit_layer.data
417+
418+
if self._active_layers_group:
419+
segmentation_channel = self._active_layers_group.child(0)
420+
segmentation_channel_layer = segmentation_channel.layer
421+
if isinstance(segmentation_channel.layer.data, MultiScaleData):
422+
segmentation_channel_data =\
423+
segmentation_channel_layer.data[0]
424+
else:
425+
segmentation_channel_data = segmentation_channel_layer.data
426+
427+
if isinstance(self._transaction, ts.Transaction):
428+
self._transaction.commit_async()
429+
elif (self._active_label.position is not None
430+
and segmentation_channel_data is not None):
431+
segmentation_channel_data[self._active_label.position] =\
432+
edit_data
432433

433434
viewer = napari.current_viewer()
434435
if (self._active_edit_layer
435436
and self._active_edit_layer in viewer.layers):
436437
viewer.layers.remove(self._active_edit_layer)
437438

439+
if segmentation_channel_layer:
440+
segmentation_channel_layer.refresh()
441+
segmentation_channel_layer.visible = True
442+
viewer.layers.selection.add(segmentation_channel_layer)
443+
438444
self._transaction = None
439445
self._active_edit_layer = None
440-
441446
self._requires_commit = False
442-
viewer.layers.selection.add(segmentation_channel_layer)

0 commit comments

Comments
 (0)