Skip to content

Commit 4ebf7c5

Browse files
committed
Network Explorer: Clear selection on new network (on none)
1 parent ec534c9 commit 4ebf7c5

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

orangecontrib/network/widgets/OWNxExplorer.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,12 +506,14 @@ def set_checkboxes(value):
506506
if self.positions is None:
507507
set_actual_edges()
508508
self.set_random_positions()
509+
self.clear()
509510
self.graph.reset_graph()
510511
self.relayout(True)
511512
else:
512513
self.graph.update_point_props()
513514
self.update_marks()
514515
self.update_selection_buttons()
516+
self.unconditional_commit()
515517

516518
def init_attr_values(self):
517519
super().init_attr_values()
@@ -527,7 +529,7 @@ def randomize(self):
527529

528530
def set_random_positions(self):
529531
if self.network is None:
530-
self.position = None
532+
self.positions = None
531533
else:
532534
self.positions = np.random.uniform(size=(self.number_of_nodes, 2))
533535

@@ -564,6 +566,10 @@ def send_data(self):
564566
else:
565567
Outputs.distances.send(distances.submatrix(sorted(selected_indices)))
566568

569+
def clear(self):
570+
super().clear()
571+
self.nSelected = 0
572+
567573
def get_coordinates_data(self):
568574
if self.positions is not None:
569575
return self.positions.T

orangecontrib/network/widgets/tests/test_OWNxExplorer.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import unittest
2+
from unittest.mock import Mock
23

34
import numpy as np
45

@@ -36,7 +37,6 @@ def test_too_many_labels(self):
3637

3738
def test_subset_selection(self):
3839
# test if selecting from the graph works
39-
4040
self.send_signal(self.widget.Inputs.network, self.network)
4141
self.assertEqual(self.widget.nSelected, 0)
4242
self.send_signal(self.widget.Inputs.node_data, self.data)
@@ -96,6 +96,17 @@ def test_input_subset(self):
9696
sub_mask = self.widget.get_subset_mask()
9797
self.assertIsNone(sub_mask)
9898

99+
def test_clear_selection_on_no_data(self):
100+
self.widget.relayout = Mock()
101+
self.send_signal(self.widget.Inputs.network, self.network)
102+
self.widget.graph.selection_select(np.arange(0, 5))
103+
self.assertEqual(self.widget.nSelected, 5)
104+
self.assertIsNotNone(self.widget.selection)
105+
self.send_signal(self.widget.Inputs.network, None)
106+
self.assertEqual(self.widget.nSelected, 0)
107+
self.assertIsNone(self.widget.selection)
108+
self.assertIsNone(self.get_output(self.widget.Outputs.selected_data))
109+
99110

100111
if __name__ == "__main__":
101112
unittest.main()

0 commit comments

Comments
 (0)